Kappa ATSC平台设置父母锁后菜单System Lock打到off无效,寄菜单System Lock设置off后退出到DTV之前加锁的节目还是需要输入秘钥才能观看节目,解决方法在接收到的E_APP_CMD_ZUI_CHANGE_PARENTCTRL_LEVEL和E_APP_CMD_TV_CHG_PARENTCTRL_LEVEL命令模式下判断条件增加stSysSetting.g_systermlock为true或false不同情况下分别设置加锁或解锁: 
 
static MS_BOOL _appMenu_CommandRcv(AppCommand *pCommand) 
{ 
     ...... 
    switch (pCommand->eCmd) 
    { 
        ......     
        case E_APP_CMD_ZUI_CHANGE_PARENTCTRL_LEVEL: 
        { 
            ...... 
#if (defined ATSC_STYLE&&defined VCHIP_ENABLE) 
                    if((vchiplock)&&(stSysSetting.g_systermlock == TRUE)) 
#else 
            if (stBlockSysSetting.u8ParentalControl <= u8RatingLevel 
                    && (stBlockSysSetting.u8ParentalControl != 3) ) 
#endif 
            { 
                g_u8Parenttrol = TRUE; 
                tvview_AVDisable(); 
#if (defined DVBT_STYLE||defined (DVBT2_STYLE)||defined ATSC_STYLE) 
                MApp_ZUI_Parentctrl_show(TRUE); 
#endif 
            } 
 
#if (defined ATSC_STYLE&&defined VCHIP_ENABLE) 
                    if((!vchiplock|| g_u8ParenttrolPwdStatus)&&(stSysSetting.g_systermlock == FALSE)) 
#else 
            else if(stBlockSysSetting.u8ParentalControl == 3 || stBlockSysSetting.u8ParentalControl > u8RatingLevel || g_u8ParenttrolPwdStatus) 
#endif 
            { 
                if(g_u8Parenttrol) 
                { 
                    g_u8Parenttrol = FALSE; 
                    tvview_Enable(); 
#if (defined DVBT_STYLE||defined (DVBT2_STYLE)||defined ATSC_STYLE) 
                    MApp_ZUI_Parentctrl_show(FALSE); 
#endif 
                } 
 
            } 
            break; 
        } 
        case E_APP_CMD_TV_CHG_PARENTCTRL_LEVEL: 
        { 
            if (_eAppStateMenu == E_APP_STAT_RUNNING) 
            { 
 
                if((MApp_ZUI_GetActiveOSD() == E_OSD_MANUAL_SCAN)||(MApp_ZUI_GetActiveOSD() == E_OSD_MENU_PHOTO_CONFIG)\ 
                    ||(MApp_ZUI_GetActiveOSD() == E_OSD_MENU_MOVIE_CONFIG)||(MApp_ZUI_GetActiveOSD() == E_OSD_MENU_PVR_FORMAT)\ 
                    ||(MApp_ZUI_GetActiveOSD() == E_OSD_MENU_PVR_DEVICE)||(MApp_ZUI_GetActiveOSD() == E_OSD_MENU_MEDIA_PLAY_SIMPLE_START_PVR)\ 
                    ||(MApp_ZUI_GetActiveOSD() == E_OSD_SCANNING)||(MApp_ZUI_GetActiveOSD() == E_OSD_AUTO_TUNING)) 
                { 
                    break; 
                } 
 
                MS_BLOCKSYS_SETTING         stBlockSysSetting; 
                eSERVICETYPE eServiceType = MApi_DB_CM_GetCurrentServiceType(); 
                MS_U16 wCurrentPosition = MApi_DB_CM_GetCurrentPosition( eServiceType ); 
 
                App_GetBlockData(&stBlockSysSetting); 
 
#if (defined ATSC_STYLE&&defined VCHIP_ENABLE) 
                            if (vchiplock&& wCurrentPosition == ((pTV_CMD_DATA_TV_CHG_PARENTCTRL)pCommand->u8Data)->u16ProgID 
                                            && !g_u8ParenttrolPwdStatus && (stSysSetting.g_systermlock == TRUE)) 
 
#else 
                if (stBlockSysSetting.u8ParentalControl <= 
                        ((pTV_CMD_DATA_TV_CHG_PARENTCTRL)pCommand->u8Data)->u8Level 
                        && wCurrentPosition == ((pTV_CMD_DATA_TV_CHG_PARENTCTRL)pCommand->u8Data)->u16ProgID 
                        && (stBlockSysSetting.u8ParentalControl != 3) && !g_u8ParenttrolPwdStatus) 
#endif 
                { 
                     MApp_Set_PASSWD_Chk_Flag(FALSE); 
                    g_u8Parenttrol = TRUE; 
                    tvview_AVDisable(); 
#if (defined DVBT_STYLE||defined (DVBT2_STYLE)||defined ATSC_STYLE) 
                    MApp_ZUI_Parentctrl_show(TRUE); 
#endif 
                } 
#if (defined ATSC_STYLE&&defined VCHIP_ENABLE) 
                else if((!vchiplock || g_u8ParenttrolPwdStatus)&&(stSysSetting.g_systermlock == FALSE)) 
#else 
                else if(stBlockSysSetting.u8ParentalControl > 
                        ((pTV_CMD_DATA_TV_CHG_PARENTCTRL)pCommand->u8Data)->u8Level 
#if 0 // todo (MS_Customer_SEL == Customer_BUSH) 
                        || stBlockSysSetting.u8ParentalControl  == EN_F4_ParentalControl_Off || g_u8ParenttrolPwdStatus) 
#else 
                        || stBlockSysSetting.u8ParentalControl  == 3 || g_u8ParenttrolPwdStatus) 
#endif 
                { 
#if 0 // todo (MS_Customer_SEL == Customer_BUSH) 
                    if(stBlockSysSetting.u8ParentalControl == EN_F4_LockSystem_ALL) 
                    { 
                        break; 
                    } 
#endif 
                    //if(g_u8Parenttrol) 
                    { 
                        MApp_Set_PASSWD_Chk_Flag(TRUE); 
                        g_u8Parenttrol = FALSE; 
                        tvview_Enable(); 
#if (defined DVBT_STYLE||defined (DVBT2_STYLE)||defined ATSC_STYLE) 
                          MApp_ZUI_Parentctrl_show(FALSE); 
#endif 
                    } 
 
                } 
            } 
            break; 
        } 
        ...... 
    } 
} 
 
 |