首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
CMMB标准紧急广播m务的研究与应用
来源:本站整理  作者:佚名  2009-11-17 10:02:59




2 EBP客户端在终端上的设计实现
2.1 EBP客户端的设计模型
    本EBP(Emergeney Broadcasting Protocol,紧急广播协议)客户端从解析到展现一共分为以下4层,如图3所示。

    EBP解析层:主要负责从CMMB协议栈提供的位于0时隙(MF_ID=0)中表标识为0x10的复用子帧中解析出紧急广播消息,并且抽象出相应的数据结构供上层使用。该层可编译成库,在移植时可以不作修改。
    EBP本地管理层:主要负责已经接收的紧急广播消息本地相关的管理,如保存、获取已接收的紧急广播消息,删除过期的紧急广播消息等。该层在移植时需要做少量适配相应终端文件系统的工作。
    接口抽象层:根据以上2层抽象出供用户UI层使用的统一接口。用户UI层使用的所有接口都通过该层提供,并保持不变,在一定程度上减少了用户UI层的移植工作。用户UI层:主要负责紧急广播消息数据对用户的展现。针对不同的终端,如支持CMMB技术的手机、游戏机、PDA、车载GPS、MP4,其屏幕大小、分辨率、支持的UI系统等都可能存在差异,所以将本EBP客户端移植到不同终端上时主要工作便是移植该层。抽象接口层、EBP本地管理层、EBP解析层构成了EBP客户端的核心。
2.2 EBP客户端的处理流程
    (1)关键消息
    ①需要CMMB协议栈通知的消息:MSG_EBP_COME。当CMMB协议栈发现有紧急广播消息时,给EBP客户端发送预先定义好的MSG_EBP_COME消息。
    ②EBP客户端核心给UI发送的消息:a.EBP_RECEIVE_OK,客户端成功接收到新的紧急广播消息,需要UI展现层做相应的展现;b.EBP_RECEIVE_TIMEOUT,客户端接收紧急广播消息超时失败。
    (2)关键数据结构
    ①EBP_Index:紧急广播索引,图3所示的本地管理层通过该数据结构来管理本地保存的紧急广播消息。
    ②EBP_Table:紧急广播表,对应图2所示的表标识为0x10的控制信息表的格式,图3的解析层中第1次初步解析出的数据用该结构保存。
    ③EBP_MessageInfo:非触发消息,图3的解析层中解析出的非触发消息用该结构保存。
    ④EBP_TriggerInfo:触发消息,图3的解析层中解析出的触发消息用该结构保存。
    ⑤EBF_MsgInfo:紧急广播消息,由于1个紧急广播消息只可能是触发或者非触发中的1种,为了逻辑上和流程上便于处理,该结构联合上述结构3、4,统一为1个结构。
    ⑥EBP:对本地管理层暴露的紧急广播消息结构,对EBP_MsgInfo的封装,加上一些上层需要用到的属性域。
    ⑦EBP_CURSOR:本地管理层定义的数据结构,供接口层使用,通过该结构访问响应的紧急广播消息。
    ⑧EBP_LangContent:存储非触发紧急广播消息中的语种相关信息。
    ⑨EBP_Ext:存储非触发紧急广播消息中辅助信息的相关内容。
    (3)关键接口
    (D int32_t ebp_receive_data(uint8_t*path);功能:接收紧急广播表。
    ②static int32_t ebp_table_decoder(uint8_t*bur,int32_t len);
    功能:解析紧急广播表。
    ③static int32_t ebp_message_decoder(uint8_t* *buf_adr,uint32_t len);
    功能:解析紧急广播具体内容。
    ④CMMB_EBP_CURSOR ebp_create_cursor(void_t);
    功能:创建游标。
    ⑤CMMB_EBP_CURSOR ebp_get_nextcur(EBP_CURSOR cur);
    功能:获取当前游标cur游标的下一个游标。
    ⑥int8_t ebp_getebp(EBP_CURSOR cur,EBP_MESSAGE*msg);
    功能:获取cur游标对应的紧急广播消息具体内容填充在输出参数msg中。
    ⑦static int32_t ebp_checkout(void_t);
    功能:检查索引并删除过期EBP索引及相关文件。
    ⑧int8_t ebp_cancel_receive(void_t);
    功能:取消紧急广播消息接收。
    ⑨int32_t ebp_set_curfreq_ebpupdate(uint32_t cur_freq);
    功能:设置频点cur_freq的紧急广播消息更新序号。
    ⑩static int8_t ebp_read_sared_ebp(EBP*ebp,EBP_Index*index)
    功能:读取本地保存的紧急广播。
    ⑩int32_t ebp_suspend();
    功能:阻塞紧急广播消息接收线程。
    ⑩int32_t ebp_active(void_t*param);
    功能:激活紧急广播消息接收线程。
    (4)主要流程
    本EBP客户端主要流程分为以下几步:
    ①本客户端启动后,等待CMMB协议栈发送MSG_EBP_COME消息。收到该消息后,表明当前CMMB网络中有紧急广播消息。EBP客户端使用ebp_receive_data(uint8_t*path)接口接收紧急广播表。该接口同时设置标志位,在其进行紧急广播消息接收的过程中,暂不响应新的MSG_EBP_COME消息。
    ②用ebp_table_decoder接口对紧急广播表进行解析,得到1组EBP_Table数据。
    ③用ebp_message_decoder接口对EBP_Table数据进行进一步解析,得到1组EBP_MessageInfo或EBP_TriggerInfo数据,并检查删除已经接收过的消息,然后将新收到的紧急广播消息封装为EBP结构,并加入到已接收的EBP链上。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:40,074.22000 毫秒