设为首页收藏本站

数字电视开发论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

快捷登录

胜天工科技销售各种数字电视信号调制卡胜天工科技销售各种数字电视信号码流卡

【游客、新手、注册会员的区别】 【积分策略和会员晋级说明】 【发帖和附件上传规则】 【如何下载感兴趣的资料】 【如何获取梦游币】 【侵权资料处理及免责说明】
查看: 1419|回复: 1

[M3202] 分组中节目的显示的内容由recreate_prog_view()函数研究

[复制链接]
  • TA的每日心情
    开心
    昨天 10:25
  • 签到天数: 2161 天

    [LV.Master]伴坛终老

    新浪微博达人勋

    发表于 2016-2-18 15:15:40 | 显示全部楼层 |阅读模式
    分享到:
    消息来自- 北京
    分组中节目的显示什么内容,由recreate_prog_view()函数完成。

    /* create view group flag */
    #define VIEW_ALL                        0x0100
    #define VIEW_SINGLE_SAT        0x0200
    #define VIEW_SINGLE_TP        0x0300
    #define VIEW_FAV_GROUP        0x0400
    #define VIEW_SINGLE_CH        0x0500
    #define VIEW_ALL_CH                0x0600
    #define VIEW_BOUQUIT_ID        0x0700
    #define VIEW_CUSTOM_ID        0x0800
    #define VIEW_CAS                        0x0900
    #define VIEW_PROVIDER          0x0a00

    函数change_group()中
    if(group_type==ALL_SATE_GROUP_TYPE)
            {
                    PRINTF("========Change to ALL_SATE_GROUP_TYPE\n");
                    recreate_prog_view(VIEW_ALL|cur_chan_mode,0);
            }
            else if(group_type==SATE_GROUP_TYPE)
            {
                    get_sat_at(group_pos,VIEW_ALL,&s_node);
                    recreate_prog_view(VIEW_SINGLE_SAT|cur_chan_mode,s_node.sat_id);
                    PRINTF("========Change to SATE_GROUP_TYPE(%d,%s)\n",group_pos,s_node.sat_name);
            }
            else if(group_type==LOCAL_GROUP_TYPE)
            {
                   
                     recreate_prog_view(VIEW_BOUQUIT_ID|cur_chan_mode, sys_data->local_group_id[group_pos]);

                    PRINTF("========Change to LOCAL_GROUP_TYPE(%d)\n",group_pos);
            }

            else
            {
                    PRINTF("========Change to FAV_GROUP_TYPE(%d)\n",group_pos);
                    recreate_prog_view(VIEW_FAV_GROUP|cur_chan_mode,group_pos);
            }


    1. INT32 recreate_prog_view(UINT16 create_flag, UINT32 param)
    2. {
    3.         INT32 ret = DB_SUCCES;

    4.         DB_ENTER_MUTEX();
    5.         ret = DB_create_view(TYPE_PROG_NODE, (DB_VIEW *)&db_view,(db_filter_t)create_prog_view_filter, NULL, create_flag, param);

    6.         db_unsave_data_changed();
    7.         DB_RELEASE_MUTEX();
    8.         return ret;

    9. }
    复制代码

    过滤的条件就是create_flag,也就是下面DB_create_view()函数的filter_mode

    1. INT32 DB_create_view(UINT8 type, DB_VIEW *v_attr,db_filter_t filter, db_filter_pip pip_filter, UINT16 filter_mode, UINT32 filter_param)
    2. {
    3.         return DO_create_view(type,v_attr,filter, pip_filter,  filter_mode,filter_param);
    4. }
    复制代码
  • TA的每日心情
    开心
    昨天 10:25
  • 签到天数: 2161 天

    [LV.Master]伴坛终老

    新浪微博达人勋

     楼主| 发表于 2016-2-18 16:29:55 | 显示全部楼层
    消息来自- 北京
    在db_interface.c里
    static BOOL create_prog_view_filter(UINT32 id, UINT32 addr, UINT16 create_mode,UINT32 param)


            if ((create_mode&0xFF00)==VIEW_SINGLE_SAT)
            {
                    ret = ((id&NODE_ID_SET_MASK) == (param<<(NODE_ID_PG_BIT+NODE_ID_TP_BIT)));
            }
            else if ((create_mode&0xFF00)==VIEW_SINGLE_TP)
            {
                    ret = ((id&NODE_ID_TP_MASK)==(param<<NODE_ID_PG_BIT));
            }
            else if ((create_mode&0xFF00)== VIEW_FAV_GROUP)
            {
                    ret = (((node.fav_group[0]>>param)&0x01)==1);
            }
    #if (SYS_PROJECT_FE == PROJECT_FE_DVBC)
            else if((create_mode&0xFF00)== VIEW_BOUQUIT_ID)
            {
                    ret = (node.bouquet_id==param);
            }
    #endif




    上面这个函数被UINT16 get_prog_num(UINT16 filter_mode,UINT32 param)调用,通过提供过滤条件,得到prog_num
    您需要登录后才可以回帖 登录 | 注册 新浪微博登陆

    本版积分规则

    嗨!您好:
    欢迎来到数字电视开发论坛。
    我的名字叫梦梦
    很高兴能够为您服务!
    如果已经注册【立即登录】
    还没有账号请【注册】
    嗨!您好:
    欢迎来到数字电视开发论坛。
    我的名字叫梦梦
    很高兴能够为您服务!
    如果已经注册【立即登录】
    还没有账号请

    QQ|小黑屋|手机版|Archiver|数字电视开发网 ( 京ICP备16008897号-5   

    GMT+8, 2018-8-22 06:11 , Processed in 0.152594 second(s), 32 queries , Gzip On.

    Powered by Discuz! X3.1

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表