/******************************************************************** ** File Name: system_app_dvb.c ** ** File Description: This file implements dvb system application ** ** Copyright(c) 2009 Sunplus Technologies - All Rights Reserved ** ** History Information Description ** Date Author Modification ** 2009/03/12 James Create ********************************************************************/ /******************************************************************** Including Files ********************************************************************/ #include #include #include #include #include "umf_debug.h" #define DVB_GUI_OBJECT_TABLE_DEFINE_HERE #include "app_guiobj_mute.h" #include "sysapp_if.h" #include "main_app.h" #include "app_event.h" #include "app_dvb_event.h" #include "sysapp_table.h" #include "app_global.h" #include "app_gui.h" #include "app_audio.h" #include "app_factory.h" #include "app_database.h" #include "al_time.h" #include "app_area_info.h" #include "app_video.h" #include "al_fw.h" #include "gl_timer.h" #include "app_data_setting.h" #include "board_config.h" #include "app_dvb_epg.h" #include "app_prog_list.h" #include "dvb_app.h" #include "app_file_psi_listeners.h" #include "app_guiobj_mainmenu.h" #include "app_guiobj_feature.h" #include "app_guiobj_scan_process.h" #include "app_guiobj_fm_factory.h" #include "app_guiobj_cul_fm_HotelSetting.h" #include "app_guiobj_fm_MultiplePanel.h" #include "app_guiobj_fm_factory.h" #include "app_guiobj_source.h" #include "app_guiobj_sleeptimer.h" #include "app_guiobj_adjust.h" #include "app_guiobj_date_time.h" #include "dvb_guiobj_table.h" #include "mid_playback.h" #include "mid_display.h" #include "mid_dtv_display.h" #include "dvb_dr.h" #include "mid_dvbmon.h" #include "mid_ota.h" #include "mid_siutil.h" #include "mid_siutil_dvb.h" #include "mid_siutil_13818.h" #include "mid_common.h" #include "mid_psimon.h" #include "app_dvb_prefername.h" #include "app_guiobj_dtv_proginfo.h" #include "app_dvb_playback.h" #include "app_dvb_parental_lock.h" #include "app_scan_api.h" #include "app_scan_save.h" #include "app_guiobj_fm_Hotel_Mode_Adj.h" #include "app_systime.h" #include "app_guiobj_dtv_epg.h" #include "app_guiobj_language.h" #include "ap_extern.h" #include "mid_sub_dtv_interface.h" #ifdef SUPPORT_ETHERNET #include "app_dvb_network.h" #endif #ifdef CONFIG_SUPPORT_MHEG5 #include "app_dvb_mheg5.h" #include "app_guiobj_dtv_mheg5.h" #endif #ifdef CONFIG_SUPPORT_TTX #include "al_teletext.h" #include "app_guiobj_teletext.h" #endif #ifdef CONFIG_SUPPORT_SUBTITLE #include "al_subtitle.h" #include "app_guiobj_subtitle.h" #endif #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE #include "mid_dtv_scan.h" #endif #ifdef SUPPORT_SCART_TV #include "drv_scart.h" #endif #ifdef SUPPORT_CONAX_CAS #include "conaxca_interface.h" #include "dvb_ca_conax_utilities.h" #include "app_guiobj_dtv_ca_pin_confim.h" #endif #ifdef CONFIG_CI_SUPPORT #include "app_dvb_ci_mmi.h" #include "app_ciplus_op.h" #endif #include "app_guiobj_dtv_proginfo.h" #include "app_guiobj_dtv_multiaud.h" #include "app_guiobj_channel.h" #include "app_guiobj_dtv_lcn_conflict_menu.h" #include "app_guiobj_dtv_playback.h" #include "app_menumgr.h" #ifdef CONFIG_SUPPORT_OTA_UPGRADE #include "mid_otamon.h" #include "app_guiobj_dtv_ota_upgrade_prompt.h" #include "app_dvb_ota_listeners.h" #include "app_guiobj_dtv_ota_upgrade_progress.h" #endif #ifdef CONFIG_SUPPORT_USB_UPGRADE #include "app_usb_upgrade.h" #endif #include "app_prog_list.h" #include "app_dvb_prog_manager.h" #include "app_scart.h" #ifdef CONFIG_SUPPORT_PVR #include "app_guiobj_dtv_partitionlist.h" #include "app_guiobj_dtv_pvr_recdurationtime.h" #include "app_guiobj_dtv_pvr_rec.h" #include "app_guiobj_dtv_pvr_playinfo.h" #include "app_guiobj_dtv_pvrrec_info.h" #include "mid_recorder.h" #include "mid_tspl.h" #include "pvrparser.h" #include "mid_tspl_parser.h" #include "mid_partition_list.h" #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE) #include "mid_upgrade.h" #endif #ifdef CONFIG_MEDIA_ENABLE //#include "MM_music_playback_gui.h" #endif #endif #include "main_app_external.h" #include "al_prog_reminder.h" #include "app_guiobj_auto_search.h" #include "app_guiobj_dtv_pvr_playinfo.h" #include "app_guiobj_dtv_partitionlist.h" #include "app_power_control.h" #include "app_clone_data.h" //#include "system_utils.h" #ifdef SUPPORT_CEC_TV #include "umf_cec.h" #endif #include "app_guiobj_hdmilink.h" #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT #include "app_guiobj_satsystem.h" #include "mid_sat_antenna.h" #endif #include "app_sysset.h" #include "app_guiobj_cul_fm_factorySetting_new.h" #ifdef SUPPORT_LED_FLASH #include "app_led_control.h" #endif #include "app_sysset.h" #ifdef CELLO_cello #include "app_guiobj_auto_installation_cello.h" #endif #ifdef N32_GAME_SUPPORT #include "app_clone_data.h" #endif #ifdef SUPPORT_HKC_FACTORY_REMOTE #ifdef CONFIG_ATV_SUPPORT #include "app_atv_playback.h" #endif #endif #include "app_guiobj_favnet.h" #include "audio_ioctl.h" #include "drv_dtv_external.h" #include "drv_dtv_common.h" #include "mid_dtv_display.h" #ifdef CONFIG_SUPPORT_MHEG5 #include "mid_mheg5.h" #endif #ifdef CONFIG_CIPLUS_SUPPORT #include "mid_dtvci.h" #endif #include "app_console.h" #ifdef CONFIG_QSD #include "app_guiobj_cul_fm_factorySetting_new.h" #endif #include "unicode.h" #include "cust_nvm_cfg.h" #include "app_factory_flash_access.h" #include "app_guiobj_dtv_prognum.h" /******************************************************************** Macros ********************************************************************/ #define DVB_DEBUG #ifdef DVB_DEBUG #define dvb_printf(fmt, arg...) UMFDBG(0,"[DVB App]"fmt, ##arg) #else #define dvb_printf(fmt, arg...) ((void) 0) #endif #define PVR_DEBUG #ifdef PVR_DEBUG #undef PVR_DEBF #define PVR_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg) #else #undef PVR_DEBF #define PVR_DEBF(fmt, arg...) ((void) 0) #endif //#define FW_DEBUG #ifdef FW_DEBUG #define FW_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg) #else #define FW_DEBF(fmt, arg...) ((void) 0) #endif #ifdef SUPPORT_SUBTITLE_ON_PG #define ON_DATA_APPLICATION_DECISION(b)\ ((b&OSD2CTRLMDL_SUB)>0? (OSD2CTRLMDL_SUB|(b&OSD2CTRLMDL_MH5)):(b&OSD2CTRLMDL_TTX)) #else #define ON_DATA_APPLICATION_DECISION(b)\ ((b&OSD2CTRLMDL_SUB)>0? OSD2CTRLMDL_SUB:((b&OSD2CTRLMDL_MH5)>0? OSD2CTRLMDL_MH5:(b&OSD2CTRLMDL_TTX))) #endif #define AP_FMW_DFP_NAME_BUFF_SIZE (32<<10) #ifdef SUPPORT_DYNAMIC_MULTIPLEXES #define MAX_TMP_PROG_SIZE 100 #endif #define DTV_TRUE 1 #define DTV_FALSE 0 #define DVB_10_MINUTES (5400)//5400*100 ms(9 min) #define NOT_USED(p) ((void)(p)) /******************************************************************** Type definitions ********************************************************************/ enum { DATA_APP_UNSTABLE = 0, // si information doesn't find yet DATA_APP_LANUCHABLE = (1 << 1), // the module has data, DATA_APP_NOT_FOUND = (1 << 2), // no data found for this application DATA_APP_EXECUTABLE = (1 << 7), // there is data, and it can be shown } enDataAppModuleState; typedef struct DvbPrivateData_t_ { //user define private data UINT32 dUserData; } DvbPrivateData_t; typedef void (*SysTimeFunc)(void); /******************************************************************** Function Declare ********************************************************************/ #ifdef CONFIG_CIPLUS_SUPPORT extern INT32 APP_DVB_CI_CiInit(void); static Boolean g_isMute = FALSE; #endif #ifdef AC_ON_AUTO_GET_TIME extern Boolean g_fBackgroundGetTime; #endif extern UINT8 AL_FLASH_GetColorLUTALL(ColorLUT_t* bColorLUTValue); extern int APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(UINT32 u32Mode); extern void _APP_GUIOBJ_3DMenu_GetForce2DAnother(UINT32 *u32Force2D); extern void _APP_GUIOBJ_3DMenu_SetForce2DAnother(UINT32 u32Force2D); static INT32 _DVBApp_OnCreate(void **ppPrivateData); static INT32 _DVBApp_OnDestroy(void **ppPrivateData); static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam); static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam); static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData); static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam); extern void _APP_GUIOBJ_Sound_SetMuteStatus(); extern UINT8 gIsFactoryResetting; static INT32 _DVBApp_Zapping( UINT8 bServiceType, AL_RecHandle_t hProgHdl, UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo); static INT32 _DVBApp_CloseAllMenu(void); #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK extern void SourceLock_Set_Hotkey_Flag(bool g_SourceLock_flag); #endif extern Boolean gUSBUpgradeBinIsSupperBin; #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK static bool g_fmSourceLock_flag = FALSE; #endif /******************************************************************** Global Variables ********************************************************************/ SysAppInstDef stDvbInst = { SYS_APP_DVB, _DVBApp_OnCreate, _DVBApp_OnDestroy, _DVBApp_OnRun, _DVBApp_OnTerminate, _DVBApp_OnTimerUpdate, _DVBApp_OnEvent, SYSTEM_IDLE, //system state. Dvb_GUI_Obj_List, //GUI object table DVB_GUIOBJ_MAX, //GUI object table size NULL, //System Application Infrastructure (should not be modified) NULL //System Application private data (created in OnInitialize function) }; #ifdef CONFIG_CI_SUPPORT UINT32 g_CI_IgnoreGuiObjID[] = { DVB_GUIOBJ_EPG, DVB_GUIOBJ_CHNLIST, DVB_GUIOBJ_FAVLIST, DVB_GUIOBJ_MULTIAUD, DVB_GUIOBJ_SCAN_PROCESS, #ifdef CONFIG_SUPPORT_TTX DVB_GUIOBJ_TTX, #endif #ifdef CONFIG_SUPPORT_SUBTITLE DVB_GUIOBJ_SUBTITLEMENU, #endif APP_GUIOBJ_SOURCE, }; UINT32 g_CI_HideGuiObjID[] = { DVB_GUIOBJ_PROGINFO, DVB_GUIOBJ_PROGNUM, }; #endif #ifdef CONFIG_SUPPORT_3D_EN extern UINT8 bSet3DMode; #endif /*Static Variables*/ static PopmsgParam_t stPopupWaitingList[PLAYBACK_POPUP_MAX-PLAYBACK_POPUP_NONE]; static UINT32 g_dCurPopup = PLAYBACK_POPUP_NONE; static UINT32 g_u32OldPopup = PLAYBACK_POPUP_NONE; static UINT32 g_u32NoSignalTimer = 0; static UINT32 g_u32NoSignalSleepTimer = 0; static UINT32 g_u32PopupWaitingList = 0; static UINT8 g_PauseState = FALSE; static UINT8 g_SetPQFlag = FALSE; static bool bSetUnMuteFlag = FALSE; static bool g_bMidHasUnmute = FALSE; static Prog_ScrambleStatus_t g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW; static bool g_bTempSerFlag = FALSE; #ifdef CONFIG_SUPPORT_OTA_UPGRADE static bool g_bOTAFlag = FALSE; #endif #ifdef SUPPORT_DTV_SHOW_BLUESCREEN static bool g_bIsBlueScreen = FALSE; #endif static bool g_bForceProcessEventCbk = FALSE; #ifdef CONFIG_SUPPORT_PVR AL_SCH_sched_id_t stoprec_id = AL_SCH_INVALID_ID; AL_SCH_sched_id_t chsrc_id = AL_SCH_INVALID_ID; static Boolean g_bIsCHUp = FALSE; static Boolean g_bIsNumKey = FALSE; static AL_RecHandle_t g_ProgHandle; static UINT8 g_u8BGTimeshiftStart = 0; static MID_REC_MODE g_eCheckRecMode = MID_REC_MODE_MAX; //for auto mode speed not enough popup AL_RecHandle_t g_ProgHandleB4Rec; static Boolean g_bTvRadioSwap = FALSE; //for timer rec to swap TV RADIO static Boolean g_bPVRSwitchSource = FALSE; AL_SCH_sched_id_t g_dReminderId; AL_PR_details_t g_stDetails; AL_PR_details_t g_stOldDetails; AL_DB_ERecordType_t g_eRecType; AL_PR_type_t g_remtype = AL_PR_INVALID_REM; static APP_Favorite_t FavType = APP_FAVORITE_NONE; static Boolean g_bIsPlaykey = TRUE;/*pTPRegion_Area; // 1. get new service list from other tp. AL_PSI_Monitor_GetOtherTpServList(srvbuf, srvnamebuf, &num); for (sindex = 0; sindex < num; sindex++) { UINT8 IsFreqFoundInTable = 0; AL_MultiplexDetail_t stTSInfo; AL_ServiceDetail_t stServInfo; AL_RecHandle_t hTp = 0; AL_RecHandle_t hProg = 0; static AL_RecHandle_t hParentHdl = AL_DB_INVALIDHDL; INT32 u32Freq = 0; if (srvbuf == NULL || srvnamebuf == NULL) { break; } // 2. looking for the Tp's parameters from area table for (i = (area->SectNum - 1); i >= 0; i--) { for (j = (pTemp[i].SectTPCount - 1); j >= 0; j--) { u32Freq = pTemp[i].StartFreq + pTemp[i].stBandWidth.eBandWidth.BaseBandWidth * j * 1000; if (srvbuf[sindex].uiFreq == u32Freq || srvbuf[sindex].uiFreq - 166 == u32Freq || srvbuf[sindex].uiFreq + 167 == u32Freq) { IsFreqFoundInTable = 1; break; } } if (IsFreqFoundInTable) { break; } } if (IsFreqFoundInTable == 0) { dvb_printf(" Inexpected error! freq. doesn't find \n"); break; } // 3. check if the TP presents already memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t)); if (AL_DBTYPE_DVB_T == eDBType) { stTSInfo.stDVBTMultiplex.uiFreqK = u32Freq; stTSInfo.stDVBTMultiplex.ucBandwidth = pTemp[i].stBandWidth.eBandWidth.BaseBandWidth; stTSInfo.stDVBTMultiplex.ucAreaIndex = u32CurrentArea; stTSInfo.stDVBTMultiplex.usTsId = srvbuf[sindex].usTsId; #ifdef SUPPORT_HIERARCHY_MODE stTSInfo.stDVBTMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode; #endif } else if (AL_DBTYPE_DVB_C == eDBType) { stTSInfo.stDVBCMultiplex.uiFreqK = u32Freq; //stTSInfo.stDVBCMultiplex.ucBandwidth = pTemp[i].BandWidth; //stTSInfo.stDVBCMultiplex.ucAreaIndex = u32CurrentArea; stTSInfo.stDVBCMultiplex.usTsId = srvbuf[sindex].usTsId; #ifdef SUPPORT_HIERARCHY_MODE //stTSInfo.stDVBCMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode; #endif } else if (AL_DBTYPE_DVB_S == eDBType) { stTSInfo.stDVBSMultiplex.usFreqM = u32Freq; //stTSInfo.stDVBSMultiplex.ucBandwidth = pTemp[i].BandWidth; //stTSInfo.stDVBCMultiplex.ucAreaIndex = u32CurrentArea; stTSInfo.stDVBSMultiplex.usTsId = srvbuf[sindex].usTsId; #ifdef SUPPORT_HIERARCHY_MODE //stTSInfo.stDVBCMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode; #endif } if (AL_DBTYPE_DVB_T == eDBType) { if (AL_DB_INVALIDHDL == hParentHdl) { AL_NetworkDetail_t stRootNet; stRootNet.stDVBTNetwork.usNetId = 1; memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6); AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hParentHdl); } } else { hParentHdl = AL_DB_INVALIDHDL; } dvb_printf("[%s]Get parent network handle: 0x%02x\n", __FUNCTION__, hParentHdl); AL_DB_AddRecord(eDBType, AL_RECTYPE_DVBMULTIPLEX, &stTSInfo, hParentHdl, &hTp); // 4. add service to database memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t)); #ifdef NEW_FONT al_uint32 u32CodePage = 0xff; al_uint8 *pExtText = al_null; al_int32 i32Len = 0; i32Len = DB_DVB_MAX_CHNAME_LEN; AL_Event_GetCodePage(&u32CodePage, srvbuf[sindex].pucname, &i32Len); if (u32CodePage == 0xff) { AL_Event_GetDefaultCodePage(&u32CodePage); } pExtText = UNI_StringToUtf8(u32CodePage, srvbuf[sindex].pucname, &i32Len, FALSE); memset(srvbuf[sindex].pucname, 0, DB_DVB_MAX_CHNAME_LEN); i32Len = i32Len < DB_DVB_MAX_CHNAME_LEN? i32Len : DB_DVB_MAX_CHNAME_LEN -1; memcpy(srvbuf[sindex].pucname, pExtText, i32Len);//service name //printf("[%s:%d] u32CodePage : %d, u32Len: %d\n",__FUNCTION__,__LINE__, u32CodePage, i32Len); free(pExtText); pExtText = al_null; #endif if (AL_DBTYPE_DVB_T == eDBType) { memcpy(stServInfo.stDVBTServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1); stServInfo.stDVBTServ.usOrigNetId = srvbuf[sindex].usOrgNetId; stServInfo.stDVBTServ.usServiceId = srvbuf[sindex].usServiceId; stServInfo.stDVBTServ.usTsId = srvbuf[sindex].usTsId; stServInfo.stDVBTServ.usProgNo = srvbuf[sindex].usProgNum; #ifdef SUPPORT_LCN stServInfo.stDVBTServ.usOrgLcn = srvbuf[sindex].usProgNum; #endif } else if (AL_DBTYPE_DVB_C == eDBType) { memcpy(stServInfo.stDVBCServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1); stServInfo.stDVBCServ.usOrigNetId = srvbuf[sindex].usOrgNetId; stServInfo.stDVBCServ.usServiceId = srvbuf[sindex].usServiceId; stServInfo.stDVBCServ.usTsId = srvbuf[sindex].usTsId; stServInfo.stDVBCServ.usProgNo = srvbuf[sindex].usProgNum; #ifdef SUPPORT_LCN stServInfo.stDVBCServ.usOrgLcn = srvbuf[sindex].usProgNum; #endif } else if (AL_DBTYPE_DVB_S == eDBType) { memcpy(stServInfo.stDVBSServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1); stServInfo.stDVBSServ.usOrigNetId = srvbuf[sindex].usOrgNetId; stServInfo.stDVBSServ.usServiceId = srvbuf[sindex].usServiceId; stServInfo.stDVBSServ.usTsId = srvbuf[sindex].usTsId; stServInfo.stDVBSServ.usProgNo = srvbuf[sindex].usProgNum; #ifdef SUPPORT_LCN stServInfo.stDVBSServ.usOrgLcn = srvbuf[sindex].usProgNum; #endif } AL_Serv_SearchKey_t stSearchKey; memset(&stSearchKey, 0, sizeof(AL_Serv_SearchKey_t)); stSearchKey.eDBType = eDBType; stSearchKey.eRecType = AL_RECTYPE_DVBMULTIPLEX; stSearchKey.u32Frequency = srvbuf[sindex].uiFreq; stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_FREQ; AL_DB_SearchRecords((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey, (al_void *)&stSearchKey, eDBType, AL_RECTYPE_DVBMULTIPLEX, 1, 0, al_null, al_null, &hParentHdl); dvb_printf("[%s]Get parent multiplex handle: 0x%02x\n", __FUNCTION__, hParentHdl); AL_DB_AddRecord(eDBType, srvbuf[sindex].ucServiceType, &stServInfo, hParentHdl, &hProg); } SAFE_FREE(srvbuf); SAFE_FREE(srvnamebuf); if (num) { //SORT_PARA stSortPara; UINT8 bLcnOnOff; bLcnOnOff = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData)); bLcnOnOff = g_stSysInfoData.LcnOnOff; if (bLcnOnOff == LCN_ON) { AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBTV, AL_DB_SORTBY_SERVTYPE, al_true); AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBRADIO, AL_DB_SORTBY_SERVTYPE, al_true); } } } #endif static AL_RecHandle_t _DVBApp_GetNextAvailableServiceEx(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t Hprog) { AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL; AL_DB_ERecordType_t eRecType; AL_DB_EDBType_t eDBType; AL_RecHandle_t hCurTPHdl = Hprog; DBServAttrib_t stAttribute; AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl); hNextProgHdl = AL_DB_INVALIDHDL; while (AL_SUCCESS == AL_DB_GetChildRecord(hCurTPHdl, &hNextProgHdl) && hNextProgHdl != AL_DB_INVALIDHDL) { AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eRecType); memset(&stAttribute, 0, sizeof(DBServAttrib_t)); AL_DB_QueryDetailFieldByName(hNextProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute); if((eRecType==eServiceType)&&(stAttribute.unStable == al_false)&&(stAttribute.delete== al_false) && (stAttribute.notvisible == al_false)) { return hNextProgHdl; } } if(hNextProgHdl!=AL_DB_INVALIDHDL) { dvb_printf("Get Next Service Successfully!\n"); } else { dvb_printf("Get Next Service Failed!\n"); } return hNextProgHdl; } AL_RecHandle_t DVBApp_GetNextAvailableService(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t hCurrProgHdl) { AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { if(eServiceType == AL_RECTYPE_DVBTV) { eServiceType = AL_RECTYPE_DVBRADIO; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { eServiceType = AL_RECTYPE_DVBDATA; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { dvb_printf("DATABASE Empty!!!\n\n"); } } } else if(eServiceType == AL_RECTYPE_DVBRADIO) { eServiceType = AL_RECTYPE_DVBTV; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { eServiceType = AL_RECTYPE_DVBDATA; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { dvb_printf("DATABASE Empty!!!\n\n"); } } } else { eServiceType = AL_RECTYPE_DVBTV; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { eServiceType = AL_RECTYPE_DVBRADIO; hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl); if(hNextProgHdl == AL_DB_INVALIDHDL) { dvb_printf("DATABASE Empty!!!\n\n"); } } } } if(hNextProgHdl == AL_DB_INVALIDHDL) { dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Failed!!!\n\n"); } else { dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Successfully!!!\n\n"); } return hNextProgHdl; } void DVBApp_RemoveUnstableService(void) { AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hPrevProgHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL; AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); DBServAttrib_t stAttribute; al_uint16 usTsId = 0xffff; al_uint16 usOrigNetId = 0xffff; al_uint16 usServiceId = 0xffff; APP_DVB_Playback_GetCurrServiceType(eNetType); //add for Background scan fail will show DATABASE_EMPTY begin bool g_bScanSuccessFlag = FALSE; hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType); hCurrTpHdl = hCurrProgHdl; AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl); hServHdl = AL_DB_INVALIDHDL; while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl) && hServHdl != AL_DB_INVALIDHDL) { memset(&stAttribute, 0, sizeof(DBServAttrib_t)); if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute)) { continue; } if(stAttribute.delete == al_true) { continue; } if(stAttribute.unStable == al_false)// Background scan SUCCESS { g_bScanSuccessFlag = al_true; break; } } if(g_bScanSuccessFlag == al_false) { printf("[%s:%d] background scan failed\n",__FUNCTION__,__LINE__); hServHdl = AL_DB_INVALIDHDL; while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl) && hServHdl != AL_DB_INVALIDHDL) { memset(&stAttribute, 0, sizeof(DBServAttrib_t)); if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute)) { continue; } if(stAttribute.unStable == al_true) { stAttribute.unStable = al_false; } AL_DB_UpdateDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute); } SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0); return; // if Background scan fail,don't remove Prog } //add for Background scan fail will show DATABASE_EMPTY end hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType); hCurrTpHdl = hCurrProgHdl; memset(&stAttribute, 0, sizeof(DBServAttrib_t)); AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute); if (stAttribute.unStable == al_true) { hNextProgHdl = DVBApp_GetNextAvailableService(eNetType,eServiceType,hCurrProgHdl); } AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl); #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT extern Boolean bT2HideScanProgUnstableFlag; if (bT2HideScanProgUnstableFlag)//for DVB-T2 { AL_RecHandle_t hTempTPHandle = AL_DB_INVALIDHDL; AL_RecHandle_t hProg = AL_DB_INVALIDHDL; AL_MultiplexDetail_t ts; AL_DB_QueryDetail(hCurrTpHdl, &ts); hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType); AL_MultiplexDetail_t stTSInfo; memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t)); hTempTPHandle = AL_DB_INVALIDHDL; if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle)) { do { if (AL_SUCCESS == AL_DB_QueryDetail(hTempTPHandle, &stTSInfo)) { if (stTSInfo.stDVBTMultiplex.ucTp_dvb_type == EDVB_DELIVER_TYPE_T2) { if(ABSV(ts.stDVBTMultiplex.uiFreqK,stTSInfo.stDVBTMultiplex.uiFreqK)<(stTSInfo.stDVBTMultiplex.ucBandwidth*500)) { hProg = AL_DB_INVALIDHDL; while (AL_DB_GetChildRecord(hTempTPHandle, &hProg) == AL_SUCCESS && hProg != AL_DB_INVALIDHDL) { memset(&stAttribute, 0, sizeof(DBServAttrib_t)); if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute)) { continue; } if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId))) { printf("Get service info failed!!!\n"); } if(stAttribute.unStable == al_true) { dvb_printf("====unStable remove! hProg=0x%x====\n", hProg); if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS) { AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId); hProg = AL_DB_INVALIDHDL; } else { printf("remove service failed!!!\n"); } if(hPrevProgHdl != AL_DB_INVALIDHDL) { if(hProg == hPrevProgHdl) { APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL); hPrevProgHdl = AL_DB_INVALIDHDL; } } hProg = AL_DB_INVALIDHDL; } } } } } } while(AL_DB_GetRecord(AL_DB_REQ_GETNEXT, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle) == AL_SUCCESS); } bT2HideScanProgUnstableFlag = FALSE; } else #endif { hServHdl = AL_DB_INVALIDHDL; hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType); while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl) && hServHdl != AL_DB_INVALIDHDL) { memset(&stAttribute, 0, sizeof(DBServAttrib_t)); if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute)) { continue; } if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId))) { printf("Get service info failed!!!\n"); } if(stAttribute.unStable == al_true) { if (AL_DB_RemoveRecord(hServHdl) == AL_SUCCESS) { AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId); } else { printf("remove service failed!!!\n"); } if(hPrevProgHdl != AL_DB_INVALIDHDL) { if(hServHdl == hPrevProgHdl) { APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL); hPrevProgHdl = AL_DB_INVALIDHDL; } } hServHdl = AL_DB_INVALIDHDL; } } } #ifdef SUPPORT_LCN AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData)); #ifdef SUPPORT_DVBS_LCN if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)) #else if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)) #endif { DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel(); LCN_PreJudgeLCN(); LCN_QueryLCNConflict(pLcnConf); if (pLcnConf->ConfCount > 0) { LCN_AutoAssignConflictLCN(); } LCN_PostJudgeLCN(); } #endif LCN_FreeLCNConflict(); LCN_FreeTRNDDictionary(); APP_DVB_ChannelOrderChecking(); APP_DVB_DataSavingToDB(eNetType); #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { if ((hNextProgHdl != AL_DB_INVALIDHDL) && (hNextProgHdl != hCurrProgHdl)) { AL_DB_GetRecordType(hNextProgHdl, &eNetType, &eServiceType); APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hNextProgHdl); APP_DVB_Playback_SetCurrServiceType(eNetType,eServiceType); } dvb_printf("===lxl test %s is called. now PVR is playing ===\n", __FUNCTION__); return; } #endif if ((hNextProgHdl != AL_DB_INVALIDHDL) && (hNextProgHdl != hCurrProgHdl)) { _DVBApp_Zapping(eServiceType, hNextProgHdl, TRUE, 0, TRUE); } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0); } } static void _DVBApp_SimulcaseDispose(UINT32 u32Param) { AL_RecHandle_t hProgHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL; AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL; AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); al_bool bPlay = al_false; al_uint16 usTsId = 0xffff; al_uint16 usOrigNetId = 0xffff; al_uint16 usServiceId = 0xffff; hProgHdl = (AL_RecHandle_t)u32Param; APP_DVB_Playback_GetCurrServiceType(eNetType); hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType); if (hCurrProgHdl == hProgHdl) { hCurrTpHdl = hCurrProgHdl; AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl); while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)) { if ((hServHdl == AL_DB_INVALIDHDL) || (hServHdl == hProgHdl)) { continue; } bPlay = al_true; _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE); } if (!bPlay) { if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, eServiceType, &hServHdl)) && (hServHdl != AL_DB_INVALIDHDL)) { if (hServHdl == hProgHdl) { if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eNetType, eServiceType, &hServHdl)) { _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE); } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL); } } else { _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE); } } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL); } } } if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId))) { printf("Get service info failed!!!\n"); } if (AL_DB_RemoveRecord(hProgHdl) == AL_SUCCESS) { AL_Event_UnLockChannels(eNetType, usOrigNetId, usTsId, usServiceId); } else { printf("remove service failed!!!\n"); } APP_DVB_DataSavingToDB(eNetType); } static void _DVBApp_ServiceMove(void) { UINT16 u16CurServiceId = 0; AL_PsiMon_NewSrvPosition_t stNewLoction; UINT16 i = 0; UINT16 u16TpNumber = 0; UINT16 u16TsId = 0; AL_RecHandle_t itphdl = AL_DB_INVALIDHDL; AL_RecHandle_t hProg = AL_DB_INVALIDHDL; AL_MultiplexDetail_t stTSInfo; AL_DB_EDBType_t eNetType = AL_DBTYPE_MAX; AL_ServiceDetail_t stServInfo; APP_Source_Type_t eSourType = APP_SOURCE_MAX; AL_DB_ERecordType_t service_type = AL_RECTYPE_MAX; APP_GUIOBJ_Source_GetCurrSource(&eSourType); APP_Database_GetCurrentDBType(eSourType, &eNetType); memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t)); memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t)); hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA)); AL_DB_QueryDetail(hProg, (al_void *)&stServInfo); if (eNetType == AL_DBTYPE_DVB_C) { u16CurServiceId = stServInfo.stDVBCServ.usServiceId; } else if (eNetType == AL_DBTYPE_DVB_T) { u16CurServiceId = stServInfo.stDVBTServ.usServiceId; } else if (eNetType == AL_DBTYPE_DVB_S) { u16CurServiceId = stServInfo.stDVBSServ.usServiceId; } AL_PSI_Monitor_GetNewSrvPosition(&stNewLoction); if (u16CurServiceId != stNewLoction.usOldServiceId) { //the program has changed, no need to do anything return; } AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBMULTIPLEX, (al_uint32 *)&u16TpNumber); for (i = 0; i < u16TpNumber; i++) { APP_Database_GetHandleByIndex(eNetType, AL_RECTYPE_DVBMULTIPLEX, i, &itphdl); AL_DB_QueryDetail(itphdl, (al_void *)&stTSInfo); if (eNetType == AL_DBTYPE_DVB_C) { u16TsId = stTSInfo.stDVBCMultiplex.usTsId; } else if (eNetType == AL_DBTYPE_DVB_S) { u16TsId = stTSInfo.stDVBSMultiplex.usTsId; } else { u16TsId = stTSInfo.stDVBTMultiplex.usTsId; } if(stNewLoction.usTsId == u16TsId) { break; } } if (i == u16TpNumber) { return; } if (APP_DVB_ProgMgr_Query(&service_type, &hProg, stNewLoction.usOrgNetId, stNewLoction.usTsId, stNewLoction.usServiceId) == AL_SUCCESS) { //the service will be remove after remove procedure } else { if (eNetType == AL_DBTYPE_DVB_C) { #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT stServInfo.stDVBCServ.usOrigNetId = stNewLoction.usOrgNetId; stServInfo.stDVBCServ.usTsId = stNewLoction.usTsId; stServInfo.stDVBCServ.usServiceId = stNewLoction.usServiceId; AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usOrigNetId), FIELD_SIZEOF(SCDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId)); AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usTsId), FIELD_SIZEOF(SCDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId)); AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usServiceId), FIELD_SIZEOF(SCDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId)); service_type = g_stTVInfoData.DVBC_ServType; #endif } else if (eNetType == AL_DBTYPE_DVB_T) { #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT stServInfo.stDVBTServ.usOrigNetId = stNewLoction.usOrgNetId; stServInfo.stDVBTServ.usTsId = stNewLoction.usTsId; stServInfo.stDVBTServ.usServiceId = stNewLoction.usServiceId; AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usOrigNetId), FIELD_SIZEOF(STDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId)); AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usTsId), FIELD_SIZEOF(STDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId)); AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usServiceId), FIELD_SIZEOF(STDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId)); service_type = g_stTVInfoData.DVBT_ServType; #endif } else if (eNetType == AL_DBTYPE_DVB_S) { #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT stServInfo.stDVBSServ.usOrigNetId = stNewLoction.usOrgNetId; stServInfo.stDVBSServ.usTsId = stNewLoction.usTsId; stServInfo.stDVBSServ.usServiceId = stNewLoction.usServiceId; AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usOrigNetId), FIELD_SIZEOF(SDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId)); AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usTsId), FIELD_SIZEOF(SDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId)); AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usServiceId), FIELD_SIZEOF(SDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId)); service_type = g_stTVInfoData.DVBS_ServType; #endif } hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, service_type); } APP_DVB_Playback_SetNextServiceType(service_type); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP, hProg); } #ifdef MP4_SUB_PREFER_LANG static void _DVBApp_SetMp4SubcodepagebyPreferLang(void) { int dret = 0; LANGName_t eMp4SubCodePage = 0; eMp4SubCodePage = Dvb_GetCurMP4FontCodePage(Dvb_GetCurMP4CodePageType(NULL), NULL); dret = FMW_SetSUBTOSDCodePage((int)eMp4SubCodePage); return ; } #endif static INT32 _DVBApp_BackgroundMonitor_Init(void) { MID_Status_t ret = MID_ERR_FAILURE; #if defined(CONFIG_SUPPORT_OTA_UPGRADE) OtaMonComCallback_t callback; callback._pfMonDSICallbk = APP_DVB_OTACallback; callback._pfMonONIDCallb = APP_DVB_CheckIsONIDMatched; callback._pfMonEXITCallb = APP_DVB_OTAMonExitCallback; callback._pfMonStateCallbk = APP_DVB_NotifyOTAState; ret = MID_OtaMonInit(callback); if (MID_OTA_OtaMonThreadDataMutexCreate() == GL_SUCCESS) { MID_OTA_GetOTAInitInfo_FromFlah(); dvb_printf("Ota Mutex Create success \n"); #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE MID_OtaMonUntInit(APP_DVB_OTASECallback); #endif } else { dvb_printf("Ota Mutex Create Failed \n"); } if (MID_SUCCESS != ret) { return SP_ERR_FAILURE; } #endif #ifdef CONFIG_SUPPORT_MHEG5 MHEG5APP_Init(); MHEG5APP_RegistCallback(APP_DVB_Mheg5_Callback); #ifdef CONFIG_SUPPORT_MHEG5_ICS AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData)); MHEG5_ICS_SetPinStatus(g_stFeatureData.ChildLock); if(g_stSysInfoData.progrmADSwitch == AUDIO_AD_ON) { MHEG5_SetAudioDescPref(TRUE); } else { MHEG5_SetAudioDescPref(FALSE); } if(g_stUserInfoData.Subtitle == APP_SWITCH_ON) { MHEG5_SetSubtitlePref(TRUE); } else { MHEG5_SetSubtitlePref(FALSE); } U8BIT *primaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO); primaryAudio = primaryAudio ? primaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO); U8BIT *secondaryAudio = NULL; #ifdef SUPPORT_2ND_PREFER_AUDIO secondaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO); secondaryAudio = secondaryAudio ? secondaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO); #endif U8BIT *primarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE); primarySubtitle = primarySubtitle ? primarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE); U8BIT *secondarySubtitle = NULL; #ifdef SUPPORT_2ND_PREFER_SUBTITLE secondarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE); secondarySubtitle = secondarySubtitle ? secondarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE); #endif MHEG5_ICS_SetPrefAudioLang((char*)primaryAudio, (char*)secondaryAudio); MHEG5_ICS_SetPrefSubtLang((char*)primarySubtitle, (char*)secondarySubtitle); #endif #endif #ifdef CONFIG_CI_SUPPORT #ifndef CONFIG_CIPLUS_SUPPORT //extern void MID_CI_DateTimeUpdate(void * pData); //AddTDTMonitoringListener(MON_LISTENER_ID_CODE_FINAL, MID_CI_DateTimeUpdate); #endif #endif if (MID_SUCCESS != ret) { return SP_ERR_FAILURE; } return SP_SUCCESS; } static void _DVBApp_EpgInit(void) { UINT8 u8SysSet; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); #ifndef CONFIG_EPG_LANG_DEFAULT_BY_OSDLANG u8SysSet = g_stFeatureData.DigitalTTLang; #else u8SysSet = g_stFeatureData.OSDLang; #endif APP_DVB_EPG_SetEpgLanguage(u8SysSet); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); u8SysSet = g_stChannelData.Country; if (u8SysSet >= MAX_AREA) { u8SysSet = 0; } AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8SysSet)); #ifdef CONFIG_DVB_SYSTEM if (APP_Area_SupportDtg()) { AL_Event_SetDTGSupport(al_true); } else #endif { AL_Event_SetDTGSupport(al_false); } } #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT)) static al_bool _DVBApp_SerMatch(al_void const *pRec, al_void const *pRecToAdd) { bool matchFlag = FALSE; al_uint8 area = 0; AL_ServiceDetail_t *ServInfor = (AL_ServiceDetail_t *)pRec; AL_ServiceDetail_t *AddServInfor = (AL_ServiceDetail_t *)pRecToAdd; AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX; APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); area = g_stChannelData.Country; #ifdef SUPPORT_DELETE_SAME_SERVICES int u16DeleteSameServices = 0;//0: default(expect: Russia need save same services) 1: on(keep current method) 2: off(save same services) AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData)); u16DeleteSameServices = g_stFactoryUserData.Function.n_Funct_DeleteSameServices; if (2 == u16DeleteSameServices)// 2: save same services { matchFlag = 0; } else #endif { switch (area) { #ifdef CONFIG_DVB_SYSTEM case AREA_ENGLAND: /* ** Refer to page 37 fo NorDig Unified ver 2.1: ** A service is uniquely identified by its DVB triplet (original_network_id, transport_stream_id and ** service_id) in all NorDig compliant terrestrial networks, except for the Norwegian terrestrial network, ** where only original_network_id and service_id are used to identify a service. */ case AREA_NORWAY: if (AL_DBTYPE_DVB_T == eDBType) { matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId) && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId) && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_C == eDBType) { matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId) && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId) && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_S == eDBType) { matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId) && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId) && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType)); } break; #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE case AREA_FRANCE: if (AL_DBTYPE_DVB_T == eDBType) { matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId) && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId) && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_C == eDBType) { matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId) && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId) && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_S == eDBType) { matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId) && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId) && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType)); } break; #endif case AREA_ITALY: case AREA_SPAIN: case AREA_NETHERLANDS: case AREA_FINLAND: case AREA_SWEDEN: case AREA_DENMARK: #endif #ifdef CONFIG_AUS_DVB_SYSTEM case AREA_AUSTRALIA: case AREA_NEW_ZEALAND: case AREA_SINGAPORE: case AREA_AUS_OTHER: if (AL_DBTYPE_DVB_T == eDBType) { matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId) && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId) && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId) && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_C == eDBType) { matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId) && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId) && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId) && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_S == eDBType) { matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId) && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId) && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId) && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType)); } break; #endif #ifdef SUPPORT_DELETE_SAME_SERVICES #if defined (CONFIG_DVB_SYSTEM) case AREA_RUSSIA: if (0 == g_stFactoryUserData.Function.n_Funct_DeleteSameServices) { matchFlag = 0; } #endif #endif default: if (AL_DBTYPE_DVB_T == eDBType) { matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId) && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId) && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId) && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_C == eDBType) { matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId) && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId) && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId) && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType)); } else if (AL_DBTYPE_DVB_S == eDBType) { matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId) && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId) && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId) && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType)); } break; } } if (matchFlag) { FW_DEBF("[%s:%d] matchFlag @@@@@@@@@@@@@@@@@@@@@@@@@\n",__FUNCTION__,__LINE__); FW_DEBF("[%s:%d] usOrigNetId: %d, %d; usServiceId: %d, %d; usTsId: %d, %d; eTvRadioType: %d, %d\n", __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usOrigNetId, AddServInfor->stDVBSServ.usOrigNetId, ServInfor->stDVBSServ.usServiceId, AddServInfor->stDVBSServ.usServiceId, ServInfor->stDVBSServ.usTsId, AddServInfor->stDVBSServ.usTsId, ServInfor->stDVBSServ.eTvRadioType, AddServInfor->stDVBSServ.eTvRadioType); FW_DEBF("[%s:%d] usDataPID: %d, %d; usStrmID: %d, %d; usStrmID: %d, %d; usECMPID: %d, %d; usCompTag: %d, %d \n", __FUNCTION__,__LINE__,ServInfor->stDVBSServ.stVideoPid.usDataPID, AddServInfor->stDVBSServ.stVideoPid.usDataPID, ServInfor->stDVBSServ.stVideoPid.usStrmID, AddServInfor->stDVBSServ.stVideoPid.usStrmID, ServInfor->stDVBSServ.stVideoPid.usCodec, AddServInfor->stDVBSServ.stVideoPid.usCodec, ServInfor->stDVBSServ.stVideoPid.usECMPID, AddServInfor->stDVBSServ.stVideoPid.usECMPID, ServInfor->stDVBSServ.stVideoPid.usCompTag, AddServInfor->stDVBSServ.stVideoPid.usCompTag); FW_DEBF("[%s:%d] usPcrPid: %d, %d; stAudioPid[0].usDataPID: %d, %d; stAudioPid[1].usDataPID: %d, %d; stAudioPid[2].usDataPID: %d, %d\n", __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usPcrPid, AddServInfor->stDVBSServ.usPcrPid, ServInfor->stDVBSServ.stAudioPid[0].usDataPID, AddServInfor->stDVBSServ.stAudioPid[0].usDataPID, ServInfor->stDVBSServ.stAudioPid[1].usDataPID, AddServInfor->stDVBSServ.stAudioPid[1].usDataPID, ServInfor->stDVBSServ.stAudioPid[2].usDataPID, AddServInfor->stDVBSServ.stAudioPid[2].usDataPID); } return matchFlag; } #endif #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT static al_bool _DVBApp_TPMatch_S(al_void const *pRecToAdd, al_void *pRec) { AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec; AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd; return ((TPInfor->stDVBSMultiplex.usFreqM == AddTPInfor->stDVBSMultiplex.usFreqM) && (TPInfor->stDVBSMultiplex.ucSkew == AddTPInfor->stDVBSMultiplex.ucSkew)); #ifdef SUPPORT_HIERARCHY_MODE //&& (TPInfor->stDVBSMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode) #endif } #endif #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT static al_bool _DVBApp_TPMatch_T(al_void const *pRecToAdd, al_void *pRec) { AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec; AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd; return ((TPInfor->stDVBTMultiplex.usOrigNetId == AddTPInfor->stDVBTMultiplex.usOrigNetId) && (TPInfor->stDVBTMultiplex.usTsId == AddTPInfor->stDVBTMultiplex.usTsId) && (TPInfor->stDVBTMultiplex.uiFreqK == AddTPInfor->stDVBTMultiplex.uiFreqK) #ifdef SUPPORT_HIERARCHY_MODE && (TPInfor->stDVBTMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode) #endif ); } #endif #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT static al_bool _DVBApp_TPMatch_C(al_void const *pRecToAdd, al_void *pRec) { AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec; AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd; return ((TPInfor->stDVBCMultiplex.usOrigNetId == AddTPInfor->stDVBCMultiplex.usOrigNetId) && (TPInfor->stDVBCMultiplex.usTsId == AddTPInfor->stDVBCMultiplex.usTsId) && (TPInfor->stDVBCMultiplex.uiFreqK == AddTPInfor->stDVBCMultiplex.uiFreqK) //&& (TPInfor->stDVBCMultiplex.ucAreaIndex == AddTPInfor->stDVBCMultiplex.ucAreaIndex) #ifdef SUPPORT_HIERARCHY_MODE //&& (TPInfor->stDVBCMultiplex.ucHierarchyMode == AddTPInfor->stDVBCMultiplex.ucHierarchyMode) #endif ); } #endif #if defined( CONFIG_DVB_SYSTEM_DVBS_SUPPORT) static al_bool _DVBApp_NetworkMatch_S(al_void const *pRecToAdd, al_void *pRec) { AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec; AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd; return (((NetInfor->stDVBSNetwork.ucEastWest == AddNetInfor->stDVBSNetwork.ucEastWest && NetInfor->stDVBSNetwork.iLongitude == AddNetInfor->stDVBSNetwork.iLongitude) && NetInfor->stDVBSNetwork.uiLNBFreq == AddNetInfor->stDVBSNetwork.uiLNBFreq) //|| !strcmp((char *)NetInfor->stDVBSNetwork.szNetName, (char *)AddNetInfor->stDVBSNetwork.szNetName) ); } #endif #if defined (CONFIG_DVB_SYSTEM_DVBT_SUPPORT) static al_bool _DVBApp_NetworkMatch_T(al_void const *pRecToAdd, al_void *pRec) { AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec; AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd; return (NetInfor->stDVBTNetwork.usNetId == AddNetInfor->stDVBTNetwork.usNetId); } #endif #if defined (CONFIG_DVB_SYSTEM_DVBC_SUPPORT) static al_bool _DVBApp_NetworkMatch_C(al_void const *pRecToAdd, al_void *pRec) { AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec; AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd; return (NetInfor->stDVBCNetwork.usNetId == AddNetInfor->stDVBCNetwork.usNetId); } #endif #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT void DVBApp_LoadCustomerDB(AL_DB_EDBType_t eDBType) { #ifdef CONFIG_DVB_SYSTEM_DVBS_DEFAULT_DATABASE al_void *pDefDBBakStart = NULL; al_uint32 uiDefDBBakSize = 0; al_uint32 dArea = 0; dvb_printf("[%s:%d] Load DVB-S Default Database Data to Database\n", __FUNCTION__, __LINE__); if (eDBType == AL_DBTYPE_DVB_S) { CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_false); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); dArea = g_stChannelData.Country; if (dArea == AREA_AUSTRIA) { uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_AUT_DB"); pDefDBBakStart = malloc(uiDefDBBakSize); if (pDefDBBakStart == al_null) { goto Leave; } if (Cmd_LookupFlashtableAddr((al_uint8*)"S_AUT_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize)) { goto LeaveWithFree; } } else if (dArea == AREA_GERMANY) { uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_DEU_DB"); pDefDBBakStart = malloc(uiDefDBBakSize); if (pDefDBBakStart == al_null) { goto Leave; } if (Cmd_LookupFlashtableAddr((al_uint8*)"S_DEU_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize)) { goto LeaveWithFree; } } else { uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_OTH_DB"); pDefDBBakStart = malloc(uiDefDBBakSize); if (pDefDBBakStart == al_null) { goto Leave; } if (Cmd_LookupFlashtableAddr((al_uint8*)"S_OTH_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize)) { goto LeaveWithFree; } } if (Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBS, al_false, uiDefDBBakSize, (UINT8 *)pDefDBBakStart)) { dvb_printf("[%s:%d] NVM Write Error~\n", __FUNCTION__, __LINE__); } LeaveWithFree: free(pDefDBBakStart); Leave: CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_true); } #else DVBApp_LoaddefaultDB(AL_DBTYPE_DVB_S); #endif } void DVBApp_LoaddefaultDB(AL_DB_EDBType_t eDBType) { AL_NetworkDetail_t stNetInfo; AL_MultiplexDetail_t stTPInfo; if (eDBType == AL_DBTYPE_DVB_S) { const SDBNetworkInfo_t *pNewNetTableInfo; const APP_DVBS_NetTP_table *pNewTPTableInfo; AL_RecHandle_t hNet = AL_DB_INVALIDHDL; AL_RecHandle_t hTp = AL_DB_INVALIDHDL; al_uint32 i = 0; al_uint32 j = 0; APP_Area_GetNetTbl(&pNewNetTableInfo); APP_Area_GetTpNetTbl(&pNewTPTableInfo); for(; i < APP_Area_GetNetTblSize(); i++) { memcpy(&stNetInfo.stDVBSNetwork, pNewNetTableInfo + i, sizeof(SDBNetworkInfo_t)); AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBNETWORK, &stNetInfo, AL_DB_INVALIDHDL, &hNet); for (j=0; j < APP_Area_GetTpNetTblSize(); j++) { if ((pNewTPTableInfo+j)->u32SateIndex == i) { memset(&stTPInfo.stDVBSMultiplex, 0, sizeof (SDBMultiplexInfo_t)); memcpy(&stTPInfo.stDVBSMultiplex, &(pNewTPTableInfo+j)->stTPinfo, sizeof (SDBMultiplexInfo_t)); AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBMULTIPLEX, &stTPInfo, hNet, &hTp); } } } } } void DVBApp_RemoveAllService(AL_DB_EDBType_t eDBType) { AL_RecHandle_t hNet = AL_DB_INVALIDHDL; AL_RecHandle_t hProg = AL_DB_INVALIDHDL; AL_RecHandle_t hTPHandle = AL_DB_INVALIDHDL; al_uint16 usTsId = 0xffff; al_uint16 usOrigNetId = 0xffff; al_uint16 usServiceId = 0xffff; if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eDBType, AL_RECTYPE_DVBNETWORK, &hNet)) { do { while (AL_DB_GetChildRecord(hNet, &hTPHandle) == AL_SUCCESS) { while (AL_DB_GetChildRecord(hTPHandle, &hProg) == AL_SUCCESS) { if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId)) || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId))) { printf("Get service info failed!!!\n"); } if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS) { AL_Event_UnLockChannels(eDBType, usOrigNetId, usTsId, usServiceId); } else { printf("remove service failed!!!\n"); } hProg = AL_DB_INVALIDHDL; } } }while (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eDBType, AL_RECTYPE_DVBNETWORK, &hNet)); } } #endif #ifdef SUPPORT_FACTORY_AUTO_TEST static void _DVBApp_PrestoreProgram(AL_DB_EDBType_t eDBType) { AL_Return_t enRet = AL_SUCCESS; NOT_USED(enRet); static AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL; AL_NetworkDetail_t stRootNet; AL_RecHandle_t hProg = AL_DB_INVALIDHDL; AL_RecHandle_t hProg1 = AL_DB_INVALIDHDL; AL_RecHandle_t hProg2 = AL_DB_INVALIDHDL; #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT AL_RecHandle_t hProg3 = AL_DB_INVALIDHDL; #endif AL_RecHandle_t hTp = AL_DB_INVALIDHDL; AL_MultiplexDetail_t ts; AL_ServiceDetail_t Program; AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C); AL_DB_Reset(AL_DBTYPE_DVB_C, al_true); AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID); AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM); memset(&ts, 0, sizeof(AL_MultiplexDetail_t)); ts.stDVBCMultiplex.uiFreqK = 121000; ts.stDVBCMultiplex.usSymRateK = 6875; ts.stDVBCMultiplex.ucQamSize = AL_QAM_64; ts.stDVBCMultiplex.usEMMPID = 0x1FFF; ts.stDVBCMultiplex.usNetId = 0x1234; ts.stDVBCMultiplex.usOrigNetId = 0x1234; ts.stDVBCMultiplex.usTsId = 0x1234; //AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, AL_DB_INVALIDHDL, &hTp); memset(&stRootNet, 0, sizeof(AL_NetworkDetail_t)); stRootNet.stDVBCNetwork.usNetId = 1; memcpy(stRootNet.stDVBCNetwork.szNetName, "Dummy",6); hNetHdl = AL_DB_INVALIDHDL; AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl); AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp); memset(&Program, 0, sizeof(AL_ServiceDetail_t)); Program.stDVBCServ.eSDTSrvType = AL_RECTYPE_DVBTV; Program.stDVBCServ.eTvRadioType= AL_RECTYPE_DVBTV; Program.stDVBCServ.szProgName[0] = 0; Program.stDVBCServ.usOrigNetId = 0x1111; Program.stDVBCServ.usServiceId = 0x1111; Program.stDVBCServ.usTsId = 0x1111; Program.stDVBCServ.usProgNo = 0x1; Program.stDVBCServ.usPMTPid= 0x1F55; Program.stDVBCServ.stVideoPid.usDataPID = 0x1F40; Program.stDVBCServ.stAudioPid[0].usDataPID= 0x1F41; enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBTV, &Program, hTp, &hProg); APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_C,AL_RECTYPE_DVBTV,hProg); #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S); AL_DB_Reset(AL_DBTYPE_DVB_S, al_true); AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID); AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM); DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S); extern AL_RecHandle_t APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto(void); hTp = APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto(); memset(&Program, 0, sizeof(AL_ServiceDetail_t)); Program.stDVBSServ.eSDTSrvType = AL_RECTYPE_DVBTV; Program.stDVBSServ.eTvRadioType= AL_RECTYPE_DVBTV; Program.stDVBSServ.szProgName[0] = 0; Program.stDVBSServ.usOrigNetId = 0x4321; Program.stDVBSServ.usServiceId = 0x4321; Program.stDVBSServ.usTsId = 0x4321; Program.stDVBSServ.usProgNo = 0x1; Program.stDVBSServ.usPMTPid= 0x1F55; Program.stDVBSServ.stVideoPid.usDataPID = 0x1F40; Program.stDVBSServ.stAudioPid[0].usDataPID= 0x1F41; enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBTV, &Program, hTp, &hProg); APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_S,AL_RECTYPE_DVBTV,hProg); #endif AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T); AL_DB_Reset(AL_DBTYPE_DVB_T, al_true); AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID); AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM); //dvb -t hNetHdl = AL_DB_INVALIDHDL; hTp = AL_DB_INVALIDHDL; stRootNet.stDVBTNetwork.usNetId = 1; memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6); enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl); memset(&ts, 0, sizeof(AL_MultiplexDetail_t)); ts.stDVBTMultiplex.uiFreqK = 474000; ts.stDVBTMultiplex.ucBandwidth = 8; ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO; AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp); memset(&Program, 0, sizeof(AL_ServiceDetail_t)); Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV; Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV; Program.stDVBTServ.szProgName[0] = 0; Program.stDVBTServ.usOrigNetId = 0x2222; Program.stDVBTServ.usServiceId = 0x2222; Program.stDVBTServ.usTsId = 0x2222; Program.stDVBTServ.usProgNo = 0x1; Program.stDVBTServ.usPMTPid= 0x1F55; Program.stDVBTServ.stVideoPid.usDataPID = 0x1F40; Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1F41; enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV, &Program, hTp, &hProg1); memset(&ts, 0, sizeof(AL_MultiplexDetail_t)); ts.stDVBTMultiplex.uiFreqK = 666000; ts.stDVBTMultiplex.ucBandwidth = 8; ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO; AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp); memset(&Program, 0, sizeof(AL_ServiceDetail_t)); Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV; Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV; Program.stDVBTServ.szProgName[0] = 0; Program.stDVBTServ.usOrigNetId = 0x0000; Program.stDVBTServ.usServiceId = 0x0001; Program.stDVBTServ.usTsId = 0x0001; Program.stDVBTServ.usProgNo = 0x2; Program.stDVBTServ.usPMTPid= 0x0080; Program.stDVBTServ.stVideoPid.usDataPID = 0x0064; Program.stDVBTServ.stAudioPid[0].usDataPID= 0x0065; enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV, &Program, hTp, &hProg2); #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT memset(&ts, 0, sizeof(AL_MultiplexDetail_t)); ts.stDVBTMultiplex.uiFreqK = 770000; ts.stDVBTMultiplex.ucBandwidth = 8; ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO; ts.stDVBTMultiplex.ucTp_dvb_type = EDVB_DELIVER_TYPE_T2; AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp); memset(&Program, 0, sizeof(AL_ServiceDetail_t)); Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV; Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV; Program.stDVBTServ.szProgName[0] = 0; Program.stDVBTServ.usOrigNetId = 0x3333; Program.stDVBTServ.usServiceId = 0x3333; Program.stDVBTServ.usTsId = 0x3333; Program.stDVBTServ.usProgNo = 0x3; Program.stDVBTServ.usPMTPid= 0x3333; Program.stDVBTServ.usPlpId = 0; Program.stDVBTServ.stVideoPid.usDataPID = 0x5354; Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1303; enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV, &Program, hTp, &hProg3); #endif AL_FW_SwitchDBModule(eDBType); APP_DVB_Playback_SetCurrentRFTypeByNetType(eDBType); APP_DVB_Playback_SetCurrServiceType(eDBType, AL_RECTYPE_DVBTV); APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_T,AL_RECTYPE_DVBTV,hProg1); dvb_printf("\nfunction:%s,enRet:%d\n",__FUNCTION__,enRet); enRet = enRet;//fix [-Werror=unused-but-set-variable] } #endif static void _DVBApp_SWInit(void) { AL_PR_Init_Param_t Init_param= { .MaxNumOfReminders = AL_PR_MAX_NO_REMINDERS, .app_schd_time[0] = PR_NOTIFY_TIME_IN_SEC, /*reserves*/ .app_schd_time[1] = 0, .app_schd_time[2] = 0 }; AL_PR_SetInitParam(&Init_param); AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX; #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)\ ||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT)) AL_DB_RecDupliChkFunc_t stMatchFuc; stMatchFuc.pServMatch = (AL_DB_RecordMatchFunc)_DVBApp_SerMatch; #endif #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT Ant_UsalsSetting_UserLocation_st UserLocal; #endif #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_T; stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_T; AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_T, &stMatchFuc); #endif #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_C; stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_C; AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_C, &stMatchFuc); #endif #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_S; stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_S; AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_S, &stMatchFuc); #endif APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType); switch (eDBType) { case AL_DBTYPE_DVB_T: AL_FW_Init(FW_DVB_T_INIT, NULL, NULL); break; case AL_DBTYPE_DVB_C: AL_FW_Init(FW_DVB_C_INIT, NULL, NULL); break; case AL_DBTYPE_DVB_S: #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT AL_FW_Init(FW_DVB_S_INIT, NULL, NULL); #endif break; default: break; } #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT MID_SatCtrl_Init(TUNER_ID_MAIN); APP_GUIOBJ_DVB_SatSys_GetUserLocation(&UserLocal); MID_SatCtrl_SetUsalsLocation(MOTORSEL_USER,&UserLocal,NULL); #endif #ifndef SUPPORT_LCN_ONOFF do { UINT8 bLcnSetting, u8AreaIdx; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData)); bLcnSetting = g_stSysInfoData.LcnOnOff; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); u8AreaIdx = g_stChannelData.Country; u8AreaIdx = u8AreaIdx; // avoid warning error if (! (bLcnSetting & LCN_ONOFF_CHANGED)) //mean use the default { // For the first time boot up, the flash data has not initiated yet #ifdef SUPPORT_LCN APP_Area_GetDefaultAreaInfoLCN(eDBType, u8AreaIdx, &bLcnSetting); #endif g_stSysInfoData.LcnOnOff = bLcnSetting; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff), sizeof(g_stSysInfoData.LcnOnOff),&(g_stSysInfoData.LcnOnOff)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff), sizeof(g_stSysInfoData.LcnOnOff)); } } while(0); #endif // EPG setup _DVBApp_EpgInit(); UINT32 area = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); area = g_stChannelData.Country; DVBApp_ResetDvbSpecRule(area); #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetAutoTestOnOff() == TRUE) { _DVBApp_PrestoreProgram(eDBType); } else #endif { APP_Factory_HotelModePowerOnChan(); } #ifdef MP4_SUB_PREFER_LANG _DVBApp_SetMp4SubcodepagebyPreferLang(); #endif // Monitor init if (_DVBApp_BackgroundMonitor_Init() == SP_SUCCESS) { dvb_printf("_DVBApp_BackgroundMonitor_Init() success\n"); } else { dvb_printf("_DVBApp_BackgroundMonitor_Init() fail\n"); } // APP_Database_InitListTypeName(); //AUDIF_Set_OutputMode(OUTPUT_DOWNMIX_MODE, dwmix_L0R0); //AUDIF_Set_OutputMode(OUT_RFModeK3, RF_outmode); //AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464); #if (defined(CONFIG_DRAMSIZE) && (CONFIG_DRAMSIZE == 64)) || (defined (CONFIG_SUPPORT_64M_DTV)) APP_Source_Type_t eCurrSrc = APP_SOURCE_MAX; APP_GUIOBJ_Source_GetCurrSource(&eCurrSrc); if (eCurrSrc == APP_SOURCE_MAX || eCurrSrc == APP_SOURCE_MEDIA || eCurrSrc == APP_SOURCE_MEDIA1) { AL_FW_DeActiveDBModule(eDBType); } #endif } static void _DVBApp_DTV_main_program(void *data) { _DVBApp_SWInit(); } static INT32 _DVBApp_ToggleVideoState(void) { AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType(); UINT8 u8ProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, AL_DB_INVALIDHDL); if (MID_PlaybackIsPlaying() == TRUE) { /*AV is playing, need to stop*/ if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED) { #ifndef PLAY_VIDEO_FOR_ALLSRV AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eDBType); if (eServiceType == AL_RECTYPE_DVBRADIO) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, (PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF)); } else #endif { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, (PLAYBACK_STOP_SUBTITLE | PLAYBACK_STOP_MHEG5)); } } } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0); } return SP_SUCCESS; } static void _DVBApp_ShowPopup(DVB_DVBAppPopMsgType_t ePopType) { UINT32 u32GuiObj = 0; PopmsgParam_t stPopup; AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX; APP_Source_Type_t eSourType = APP_SOURCE_MAX; AL_ServiceDetail_t stService; #ifdef CONFIG_QSD //Chip test mode doesn't need to show no signal OSD if(ePopType == DVB_APP_POP_MSG_NO_SIGNAL) { return; } #endif #if (defined (CONFIG_SUPPORT_PVR) || defined(CONFIG_CONFIRM_AUTO_UPGRADE)) UINT32 dMsgType = 0; APP_GUIOBJ_PopMsg_GetMsgDialogType(&dMsgType); #endif #ifdef CONFIG_CONFIRM_AUTO_UPGRADE if (dMsgType == POPMSG_CONFIRM_START_AUTO_UPGRADE) { switch (ePopType) { case DVB_APP_POP_MSG_RADIO_CHANNEL: case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT: case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE: case DVB_APP_POP_MSG_SCRAMBLE: case DVB_APP_POP_MSG_PARENTAL_LOCK: case DVB_APP_POP_MSG_NO_SIGNAL: case DVB_APP_POP_MSG_TEMPSERVICE: case DVB_APP_POP_MSG_CHECKPWD: case DVB_APP_POP_MSG_DATABASE_EMPTY: dvb_printf("\n\n%d. auto upgrade pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType); return; default: break; } } #endif #ifdef CONFIG_SUPPORT_PVR if (dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME || dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM) { switch (ePopType) { case DVB_APP_POP_MSG_TEMPSERVICE: case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE: case DVB_APP_POP_MSG_NOT_AVAILABLE: dvb_printf("\n\n%d.PVR reminder Pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType); return; default: break; } } #endif for (u32GuiObj = 0; u32GuiObj < DVB_GUIOBJ_MAX; u32GuiObj++) { if (u32GuiObj == DVB_GUIOBJ_PLAYBACK #ifdef CONFIG_SUPPORT_SUBTITLE || u32GuiObj == DVB_GUIOBJ_SUBTITLE #endif #ifdef CONFIG_SUPPORT_TTX || u32GuiObj == DVB_GUIOBJ_TTX #endif #ifdef CONFIG_SUPPORT_MHEG5 || u32GuiObj == DVB_GUIOBJ_MHEG5 #endif || u32GuiObj == DVB_GUIOBJ_PROGINFO || u32GuiObj == DVB_GUIOBJ_POPMSG || u32GuiObj == DVB_GUIOBJ_FREEZE || u32GuiObj == APP_GUIOBJ_MUTE || u32GuiObj == APP_GUIOBJ_BANNER //|| u32GuiObj == APP_GUIOBJ_ADJUST //|| u32GuiObj == APP_GUIOBJ_AMPLIFIERVOLUME #ifdef CONFIG_SUPPORT_PVR || u32GuiObj == DVB_GUIOBJ_PVR_REC || u32GuiObj == DVB_GUIOBJ_PVR_PAUSE || u32GuiObj == DVB_GUIOBJ_PVR_PLAYINFO || u32GuiObj == DVB_GUIOBJ_PVRREC_INFO || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAY || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAYINFO #endif ) { continue; } if(ePopType == DVB_APP_POP_MSG_OVERMAXVOLUME && u32GuiObj == APP_GUIOBJ_ADJUST) { continue; } if (ePopType != DVB_APP_POP_MSG_KEYLOCK) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, u32GuiObj)) { return; } } } if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) &&(g_dCurPopup == POPMSG_CONFIRM_FLIP)) { return; } memset(&stPopup, 0x0, sizeof(PopmsgParam_t)); switch (ePopType) { case DVB_APP_POP_MSG_DATABASE_EMPTY: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_DATABASE_EMPTY; break; case DVB_APP_POP_MSG_CHECK_ANTENNA_INPUT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT; break; case DVB_APP_POP_MSG_INVALID_INPUT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_INPUT; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_NOT_AVAILABLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NOT_AVAILABLE; stPopup.extend.stPrompt.iTimeout = 2; break; #ifdef CONFIG_SUPPORT_SUBTITLE case DVB_APP_POP_MSG_NO_SUBTITLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_SUBTITLE; stPopup.extend.stPrompt.iTimeout = 2; break; #endif #ifdef CONFIG_SUPPORT_TTX case DVB_APP_POP_MSG_NO_TTX: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_TTX; stPopup.extend.stPrompt.iTimeout = 2; break; #endif case DVB_APP_POP_MSG_CHECKPWD: stPopup.eType = POPMSG_TYPE_PWD; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED; break; case DVB_APP_POP_MSG_TEMPSERVICE: #ifdef CONFIG_SUPPORT_MHEG5 if ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) && APP_Area_SupportDtg() /*&& (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)*/) { if(APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE) { stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5; break; }else return; } else if ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED) && APP_Area_SupportDtg()) { return; } #endif stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; APP_Database_GetCurrentDBType(eSourType, &eDBType); AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)), (al_void *)&stService); if (((AL_DBTYPE_DVB_T == eDBType) && (1 == stService.stDVBTServ.stProgAttrib.svrnotrun)) || ((AL_DBTYPE_DVB_C == eDBType) && (1 == stService.stDVBCServ.stProgAttrib.svrnotrun)) || ((AL_DBTYPE_DVB_S == eDBType) && (1 == stService.stDVBSServ.stProgAttrib.svrnotrun))) { stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING; } else { stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE; } break; case DVB_APP_POP_MSG_NO_SIGNAL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_NO_SIGNAL; break; case DVB_APP_POP_MSG_PARENTAL_LOCK: stPopup.eType = POPMSG_TYPE_PWD; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED; break; case DVB_APP_POP_MSG_SCRAMBLE: #ifdef CONFIG_CIPLUS_SUPPORT #if 0 // TODO: MHEG5 if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)|| APP_DVB_Mheg5_IsRunning()) { return; } #endif #endif stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SCRAMBLED; break; case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE; break; #ifdef CONFIG_CI_SUPPORT case DVB_APP_POP_MSG_CI_CAM_INIT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT; stPopup.extend.stPrompt.iTimeout = 60; break; case DVB_APP_POP_MSG_CI_CAM_INIT_OK: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT_OK; stPopup.extend.stPrompt.iTimeout = 3; break; #ifndef CONFIG_TV_NEW_UI case DVB_APP_POP_MSG_CI_CAM_ERROR: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_ERROR; stPopup.extend.stPrompt.iTimeout = 3; break; #endif case DVB_APP_POP_MSG_CI_CAM_REMOVED: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_REMOVED; stPopup.extend.stPrompt.iTimeout = 3; break; #ifdef CONFIG_CIPLUS_SUPPORT case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_SUCC; stPopup.extend.stPrompt.iTimeout = 5; break; case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_FAILED; stPopup.extend.stPrompt.iTimeout = 8; break; #endif case DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_SUCC; stPopup.extend.stPrompt.iTimeout = 8; break; case DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_FAILED; stPopup.extend.stPrompt.iTimeout = 8; break; case DVB_APP_POP_MSG_CI_PASS_HDCP_PASS: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_PASS; stPopup.extend.stPrompt.iTimeout = 8; break; case DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_FAIL; stPopup.extend.stPrompt.iTimeout = 8; break; case DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_PASS; stPopup.extend.stPrompt.iTimeout = 8; break; case DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_FAIL; stPopup.extend.stPrompt.iTimeout = 8; break; #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card case DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_INFORM_USER_REMOVE_CAM; stPopup.extend.stPrompt.iTimeout = 3; break; #endif #endif case DVB_APP_POP_MSG_NEW_SERVICE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_ADD_SRV; stPopup.extend.stPrompt.iTimeout = 3; break; case DVB_APP_POP_MSG_SERVICE_REMOVE: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType= GUI_OBJECT_POST_EVENT|GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_CONFIRM_REMOVE_SRV; break; case DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV; break; case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT: #ifdef CONFIG_SUPPORT_MHEG5 if (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED) { return; } #endif stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT; break; case DVB_APP_POP_MSG_DB_SAVE_IN_PROGRESS: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_CHN_UP_DOWN | POPMSG_EXIT_EPG | POPMSG_EXIT_MENU | POPMSG_EXIT_SOURCE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_SAVING_DATA; stPopup.extend.stPrompt.iTimeout = 20; break; #ifdef CONFIG_SUPPORT_PVR case DVB_APP_POP_MSG_REC_INIT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_REC; stPopup.extend.stPrompt.iTimeout = 1; break; case DVB_APP_POP_MSG_TIMESHIFT_INIT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_TIMESHIFT; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_REC_ENTER_NOT_VALID: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_REC_WRITE_ERROR: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_REC_WRITE_ERR; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_TIMESHIFT; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_REC_REQUIRE_FORMAT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_REQUIRE_FORMAT_DISK; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_REC_PARTITION_NOT_SET: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_NOT_SET; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_DISK_CHECKING: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_CHECKING; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_DISK_FULL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_FULL; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_NO_STORAGE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_USBCARD_DEVICE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_FOUNDDEVICE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_FOUNDDEVICE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_REC_NTFS_DIRTY: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_NTFS_DIRTY; stPopup.extend.stPrompt.iTimeout = 3; break; case DVB_APP_POP_MSG_REC_SCRAMBLE_CHANNEL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC_SCRAMBLE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_REC_START: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_RECORD; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_MHEG_FOR_REC: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_THIFT_TO_REC; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_UPDATE_TSID: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_CONFIRM_FIND_NEW_TSID; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_START: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_TIMESHIFT; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_STOP: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_REC_FOR_MHEG: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_STOP: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_STOP_FOR_RECALL: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_PVR_REMIDER: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME; stPopup.extend.stConfirm.u8Default = POPMSG_YES; stPopup.extend.stConfirm.iTimeout = DVBApp_GetReminderTime2Show()+1; break; case DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_REMINDER; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_TIMER_OUT_OF_DATE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_TIMER_OUT_OF_DATE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_SYSTEM_TIME_CHANGED; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_SUCCESSFUL; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_ENABLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_ENABLE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_PVR_DISABLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_DISABLE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_INSERT_USB: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INSERT_USB; stPopup.extend.stPrompt.iTimeout = 3; break; case DVB_APP_POP_MSG_INVALID_USB: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_USB; stPopup.extend.stPrompt.iTimeout = 3; break; case DVB_APP_POP_MSG_INSERT_USB_CONFIRM: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INSERT_USB; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; case DVB_APP_POP_MSG_INVALID_USB_CONFIRM: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INVALID_USB; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; #endif case DVB_APP_POP_MSG_CHANNEL_DELETED: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CHANNEL_DELETED; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_EPG_ENABLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_ENABLE; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_EPG_DISABLE: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_DISABLE; stPopup.extend.stPrompt.iTimeout = 2; break; #ifdef SUPPORT_CONAX_CAS case DVB_APP_POP_MSG_NO_CARD_INSERTERD: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_CARD_INSERTERD; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_INCORRECT_CONAX_CARD: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CONAX_CARD; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_INCORRECT_CARD: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CARD; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_CARD_PROBIEM_CHEAKCAED: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CARD_PROBIEM_CHEAKCAED; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_NO_ACCESS: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_GEOGRAPHICAL_BLACKOUT; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_NETWORK_BLOCK; stPopup.extend.stPrompt.iTimeout = 2; break; #endif case DVB_APP_POP_MSG_RADIO_CHANNEL: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_RADIO_CHANNEL; break; case DVB_APP_POP_MSG_NO_RADIO: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_RADIO; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_NO_DTVORDATA: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_DTVORDATA; stPopup.extend.stPrompt.iTimeout = 2; break; #ifdef CONFIG_SUPPORT_MHEG5 case DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5: stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ; stPopup.u32GuiObjID = DVB_GUIOBJ_PLAYBACK; stPopup.extend.stConfirm.eConfirmType = PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5; stPopup.extend.stConfirm.u8Default = POPMSG_NO; break; #endif case DVB_APP_POP_MSG_KEYLOCK: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_KEYLOCK; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_OVERMAXVOLUME: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT; stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_OVER_MAXVOLUME; stPopup.extend.stPrompt.iTimeout = 2; break; #ifdef N32_GAME_SUPPORT case DVB_APP_POP_MSG_IMPORTING_GAME: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ; stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_IMPORTING_GAME; stPopup.extend.stPrompt.iTimeout = 2; break; case DVB_APP_POP_MSG_NO_SIZE_FOR_GAME: stPopup.eType = POPMSG_TYPE_PROMPT; stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE; stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ; stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_NO_SIZE_FOR_GAME; stPopup.extend.stPrompt.iTimeout = 2; break; #endif default: return; } if (stDvbInst.bAppState == SYSTEM_IDLE) { return; } DVBApp_SchedulePopup(stPopup); } static INT32 _DVBApp_CheckPopupDisplay(void) { UINT32 dCheckFlag; if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--) { if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE))) { DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]); break; } } } return 0; } static INT32 _DVBApp_HidePopupDisplay(void) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); } APP_MenuMgr_SetMsgPopup(FALSE); g_u32OldPopup = PLAYBACK_POPUP_NONE; if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } g_dCurPopup = PLAYBACK_POPUP_NONE; return SP_SUCCESS; } static al_void _DVBApp_SendServRefleshMsg(al_void) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR, APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR, APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0); } } static INT32 _DVBApp_Zapping( UINT8 bServiceType, AL_RecHandle_t hProgHdl, UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo) { AL_DB_EDBType_t eOldDBType = APP_GUIOBJ_DVB_Playback_GetPrevNetType(); AL_DB_ERecordType_t eOldServiceType = APP_DVB_Playback_GetCurrServiceType(eOldDBType); AL_RecHandle_t hOldProgHdl; AL_RecHandle_t hNextProgHdl = hProgHdl; APP_Source_Type_t eSourType = APP_SOURCE_MAX; APP_GUIOBJ_Source_GetCurrSource(&eSourType); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); } #ifdef CONFIG_CI_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU); } g_Audio_Scramble_Counter = 0; g_VIP_FINISH_Flg = FALSE; #endif hOldProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eOldDBType, eOldServiceType); if (AL_DB_INVALIDHDL != hNextProgHdl) { AL_ServiceDetail_t ServInfor; DBServAttrib_t stProgAttrib; AL_DB_EDBType_t eDBType; AL_DB_ERecordType_t eServiceType; #ifdef CONFIG_CIPLUS_SUPPORT if (g_isMute) { g_isMute = FALSE; dvb_printf("%s, %d, valid program handle unmute all!\n", __FUNCTION__, __LINE__); APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV); APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV); } #endif AL_DB_QueryDetail(hNextProgHdl, &ServInfor); AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eServiceType); if (AL_DBTYPE_DVB_T == eDBType) { stProgAttrib = ServInfor.stDVBTServ.stProgAttrib; } else if (AL_DBTYPE_DVB_C == eDBType) { stProgAttrib = ServInfor.stDVBCServ.stProgAttrib; } else if (AL_DBTYPE_DVB_S == eDBType) { stProgAttrib = ServInfor.stDVBSServ.stProgAttrib; } if (!(stProgAttrib.delete == al_true)) { if ((hNextProgHdl != hOldProgHdl) || (bServiceType != eOldServiceType) || (bForce == TRUE) #ifdef CONFIG_CIPLUS_SUPPORT || APP_DVB_CI_GetIsPlaybackPMT() #endif #ifdef CHECK_HIDDEN_SERVICE || ((stProgAttrib.notvisible == al_true) != 0) #endif ) { #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { PVR_DEBF("\n==========stop recorder to zapping!====\n"); if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode()) { DVBApp_StopRecord(); } else { DVBApp_StopTimeshift(FALSE); } } #endif #if 0/*moved to _APP_GUIOBJ_DVB_Playback_Stop() by xm.zeng on 2013/3/26.*/ #ifdef CONFIG_SUPPORT_SUBTITLE AL_Subtitle_Reset(); #endif #ifdef CONFIG_SUPPORT_TTX AL_TTX_Stop(); AL_TTX_Reset(); #endif #endif/*end*/ if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType); APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType); MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (g_stUserInfoData.Subtitle == APP_SWITCH_ON) { #ifdef CONFIG_DTV_SUPPORT AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX; if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE) { AL_Subtitle_SetFreeze(FALSE); } #endif } #endif } DVBApp_ClearStatus(); if (u32Paramter == FW_MONITOR_REPLACE_SERVICE) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_ZAPPING_WITH_REPLACE, (UINT32)hNextProgHdl); } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_ZAPPING, (UINT32)hNextProgHdl); } } } /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/ if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) #ifdef SUPPORT_FACTORY_AUTO_TEST || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING) #endif ) { return SP_SUCCESS; } /*End*/ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); if((!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB)) #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar)) #endif ) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { if (bShowInfo == TRUE) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1); } else { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } if (!(APP_MenuMgr_Exist_Main_Menu())) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif _DVBApp_CloseAllMenu(); if (bShowInfo == TRUE) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0); } } } if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) { if (bShowInfo == TRUE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } } } } else { #ifdef CONFIG_CIPLUS_SUPPORT if (APP_CIPLUS_IsProfileSource()) { APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV); APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV); g_isMute = TRUE; if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } if (!(APP_MenuMgr_Exist_Main_Menu())) { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0); } } } else #endif { #ifdef SPECIAL_CHNORDER_FOR_SPAIN SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0); #else _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT); #endif } } _DVBApp_CheckPopupDisplay(); return SP_SUCCESS; } static INT32 _DVBApp_DestroyPartialObjects(UINT8 *pMenuFlag) { UINT32 i; UINT32 u32TotalObj; UINT8 u8FilteredObj = 0; UINT32 u32GuiObjID[DVB_GUIOBJ_MAX]; if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1) { return SP_ERR_FAILURE; } for (i = 0; i <= u32TotalObj - 1; i++) { if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, i , &u32GuiObjID[u8FilteredObj]) == -1) { return SP_ERR_FAILURE; } if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_PLAYBACK) #ifdef CONFIG_SUPPORT_SUBTITLE || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SUBTITLE) #endif #ifdef CONFIG_SUPPORT_MHEG5 || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_MHEG5) #endif || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FREEZE) || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_MUTE) #ifdef CONFIG_KEYPAD_SINGLE_REUSE || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_SINGLEKEYPAD) #endif ) { continue; } else if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNMGR) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVMGR) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SCAN_PROCESS) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNRENAME) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPG) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNLIST) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVLIST) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPGEXTEND) #ifdef CONFIG_CI_SUPPORT || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_MENU) || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_ENQ) #endif ) { *pMenuFlag = TRUE; } u8FilteredObj++; } SYSAPP_GOBJ_DestroyPartialGUIObjects(SYS_APP_DVB, u32GuiObjID, u8FilteredObj); return SP_SUCCESS; } static void _DVBApp_Exit_All_Menu(void) { UINT8 bMenuFlag = 0; al_bool bHasValidServ = al_false; al_uint8 bSignalState = al_false; AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { DVBApp_ResetPopup_Channel(); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } #ifdef OSD_GAME_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME, APP_DVB_INTRA_EVENT_OSD_GAME_EXIT, (UINT32)NULL); } #endif if (APP_MenuMgr_Exist_Main_Menu()) { bMenuFlag = 1; APP_MenuMgr_Exit_Main_Menu(); } if (APP_MenuMgr_Exist_Factory_Menu()) { bMenuFlag = 1; APP_MenuMgr_Exit_Factory_Menu(); } #ifdef CONFIG_SUPPORT_OTA_UPGRADE if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS) && (!APP_MenuMgr_Exist_Main_Menu())) { bMenuFlag = TRUE; } #endif if (g_u32OldPopup == PLAYBACK_POPUP_NONE) { if (_DVBApp_DestroyPartialObjects(&bMenuFlag) == SP_ERR_FAILURE) { SYSAPP_GOBJ_DestroyAllGUIObject(SYS_APP_DVB); } } bHasValidServ = AL_DB_HasVisibleService(eNetType); if (bMenuFlag) { #if 0 if (TotalNum > 0) { al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) && (MID_PlaybackIsPlaying() == TRUE)) { //DVBApp_ResetPopup_Channel(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL); } else { if (eServiceType == AL_RECTYPE_DVBRADIO) { //DVBApp_ResetPopup_Channel(); if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState()) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); } if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)) { #ifdef CONFIG_SUPPORT_MHEG5 if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) #endif { _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL); } } } else { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_SCRAMBLED) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE); } } } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); //DVBApp_ResetPopup_Channel(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY); } #endif } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } } AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); } DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL); if (bHasValidServ) { #ifdef CONFIG_CIPLUS_SUPPORT if (APP_CIPLUS_IsProfileSource()) { if (g_isMute) { return ; } } #endif _DVBApp_ToggleVideoState(); if (g_bMidHasUnmute) { DVBApp_CheckProgramType(TRUE); } } _DVBApp_CheckPopupDisplay(); } static void _DVBApp_ExitAll(void) { #ifdef CONFIG_SUPPORT_MHEG5 UINT32 u32TotalObj = 0; if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1) { u32TotalObj = 0; } #endif _DVBApp_Exit_All_Menu(); #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_TIME_ON_OSD if (u32TotalObj == 3) #else if (u32TotalObj == 2) #endif { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0); } } #ifdef SUPPORT_SUBTITLE_ON_PG else if ((u32TotalObj == 4) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0); } } #endif #endif } static INT32 _DVBApp_CloseAllMenu(void) { INT32 u32GuiObj = 0; UINT32 u32GuiObjID; UINT32 u32TotalObj; _DVBApp_HidePopupDisplay(); if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) != SYSTEM_APP_SUCCESS) { return SP_ERR_FAILURE; } for (u32GuiObj =(INT32)(u32TotalObj - 1); u32GuiObj >= 0; u32GuiObj--) { if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, u32GuiObj , &u32GuiObjID) != SYSTEM_APP_SUCCESS) { return SP_ERR_FAILURE; } if ((u32GuiObjID == DVB_GUIOBJ_PLAYBACK) #ifdef CONFIG_SUPPORT_SUBTITLE ||(u32GuiObjID == DVB_GUIOBJ_SUBTITLE) #endif #ifdef CONFIG_SUPPORT_MHEG5 ||(u32GuiObjID == DVB_GUIOBJ_MHEG5) #endif ||(u32GuiObjID == DVB_GUIOBJ_FREEZE) ||(u32GuiObjID == APP_GUIOBJ_MUTE) #ifdef CONFIG_SUPPORT_PVR || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAY) || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAYINFO) #endif #ifdef CONFIG_KEYPAD_SINGLE_REUSE || (u32GuiObjID == APP_GUIOBJ_SINGLEKEYPAD) #endif ) { continue; } SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, u32GuiObjID); } #ifdef CONFIG_SUPPORT_TTX if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } #endif return SP_SUCCESS; } #ifdef CONFIG_SUPPORT_PVR /* g_bMidHasUnmute , we need modify this flag before play record file when dtv play locked radio */ void DVBAPP_Pvr_fileplay_Setflag(Boolean flag) { g_bMidHasUnmute = flag; } AL_SCH_sched_id_t DVBAPP_Pvr_GetStopTimer_id(void) { return stoprec_id; } void DVBApp_Pvr_SetStopTimer_id(void) { stoprec_id = AL_SCH_INVALID_ID; } void DVBApp_SetBGTimeshift(UINT8 u8StartInterval) { if (u8StartInterval > 0) { g_u8BGTimeshiftStart = u8StartInterval; } else { g_u8BGTimeshiftStart = 0; } } static int DVBApp_CheckDiskSpeedAgain(int defpartition) { int Speed_State; dvb_printf(" %s \n\n",__FUNCTION__); MID_RecorderSetDefaultPartition(defpartition, MID_REC_PARTITION_SET_FORCE); Speed_State = MID_RecorderGetPartitionSpeed(defpartition); return Speed_State; } static INT32 DVBApp_CheckForRecord(MID_REC_MODE eRecMode) { int Speed_State; INT32 iRet = 0; INT32 iPtListIdx = -1; //al_bool SOURCE_HD = FALSE; al_uint8 bSignalState = al_false; al_bool bHasValidServ = al_false; UINT8 u8ProgLockState = FALSE; g_eCheckRecMode = eRecMode; //move this action to here for mantis:22619 start AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); //move this action to here for mantis:22619 end u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED) { if(MID_REC_MODE_MANUAL == eRecMode) { #ifndef SUPPORT_SPEC_PVR_RECORD _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); return SP_ERR_FAILURE; #endif } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID); return SP_ERR_FAILURE; } } bHasValidServ = AL_DB_HasVisibleService(eNetType); if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) || (DVBApp_CheckServiceNotAvailable() == TRUE) || !bHasValidServ) { if (MID_REC_MODE_AUTO == eRecMode) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } else { if (eRecMode == MID_REC_MODE_MANUAL) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); } else if (eRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID); } } return SP_ERR_FAILURE; } iRet = APP_GUIOBJ_DVB_PvrRec_IsReadyToRecord(); if (iRet != PVR_MSG_SUCCESS) { switch (iRet) { case PVR_MSG_FAIL_DISK_CHECKING: _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_CHECKING); if (MID_REC_MODE_AUTO == eRecMode) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } break; case PVR_MSG_FAIL_PARTITION_NOT_SET: if (MID_REC_MODE_AUTO == eRecMode) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_PARTITION_NOT_SET); } break; case PVR_MSG_FAIL_NO_STORAGE: _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE); break; case PVR_MSG_FAIL_NTFS_DIRTY: _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_NTFS_DIRTY); break; case PVR_MSG_FAIL_NO_FREE_SPACE: _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL); break; case PVR_MSG_FAIL_H264_IN_PS_FORMAT: _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); break; case PVR_MSG_SCRAMBLE_CHANNEL: if (MID_REC_MODE_AUTO == eRecMode) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } else if (MID_REC_MODE_MANUAL== eRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC== eRecMode)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID); } break; default: if (MID_REC_MODE_AUTO == eRecMode) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); } break; } return SP_ERR_FAILURE; } MID_RecorderGetDefaultPartition(&iPtListIdx); Speed_State = MID_RecorderGetPartitionSpeed(iPtListIdx); #ifdef REMIND_SPEED_NOT_ENOUGH al_uint8 SOURCE_HD = FALSE; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_HDCONTENT, &SOURCE_HD); if (SOURCE_HD) { if ((Speed_State < MID_REC_SPEED_HDRECORD) && (eRecMode == MID_REC_MODE_MANUAL)) { #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately #endif { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH return SP_ERR_FAILURE; } } else if ((Speed_State < MID_REC_SPEED_HDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH return SP_ERR_FAILURE; } } else { if ((Speed_State < MID_REC_SPEED_SDRECORD) && (eRecMode == MID_REC_MODE_MANUAL)) { #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately #endif { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH return SP_ERR_FAILURE; } } else if ((Speed_State < MID_REC_SPEED_SDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH return SP_ERR_FAILURE; } } #else if (Speed_State == MID_REC_SPEED_TOOLOW) { if ((Speed_State = DVBApp_CheckDiskSpeedAgain(iPtListIdx)) == MID_REC_SPEED_TOOLOW) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_REQUIRE_FORMAT); //POPUP REC SPEED NOT ENOUGH return SP_ERR_FAILURE; } } #endif //move this action to here for mantis:22619 start if (MID_REC_MODE_AUTO == eRecMode) { _DVBApp_CloseAllMenu(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT); } //move this action to here for mantis:22619 end return SP_SUCCESS; } INT32 DVBApp_StartRecord(MID_REC_MODE eRecMode) { INT32 iRet; if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { return SP_ERR_FAILURE; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS)) { return SP_ERR_FAILURE; } #ifdef CONFIG_SUPPORT_OTA_UPGRADE if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS)) { return SP_ERR_FAILURE; } #endif if (DVBApp_CheckForRecord(eRecMode) != SP_SUCCESS) { dvb_printf("[%s %d]invalid to enter rec/timeshift!!! [off]\n",__FUNCTION__,__LINE__); return SP_ERR_FAILURE; } #ifdef CONFIG_SUPPORT_MHEG5 DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5); #endif /* disable timer record */ APP_GUIOBJ_DVB_PvrRec_SetDurationTime(0);//means not timer record //zhongbaoxing added for mantis 142788 @20110720 if (MID_REC_MODE_MANUAL == eRecMode) { MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL); #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if(APP_WAKEUP_GetBootFlag() == TRUE) { printf("[debug ]%s %d\n",__FUNCTION__,__LINE__); printf("REC Mode Chang to MID_REC_MODE_UNATTENDED\n\n\n"); MID_Recorder_SetRecMode(MID_REC_MODE_UNATTENDED); } #endif iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord(); if (iRet != PVR_MSG_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); MID_Recorder_SetRecMode(MID_REC_MODE_MAX); APP_GUIOBJ_DVB_PvrRec_RegUninitCallback(); #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif return SP_ERR_FAILURE; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)) { AL_Subtitle_SetFreeze(FALSE); } #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); MID_PlaybackStreamResume(1); g_PauseState = FALSE; } _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0); #ifdef SUPPORT_FREE_RECORD_TIME if (APP_GUIOBJ_DVB_PvrRec_GetTimerRecord() == FALSE) { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); AL_SCH_details_t sch_detail; al_uint32 CurTimeInSec = 0; AL_Time_GetCurTimeInSecs(&CurTimeInSec); memset(&sch_detail, 0, sizeof(AL_SCH_details_t)); sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH; sch_detail.sch_snooze = 0; sch_detail.sch_time = CurTimeInSec + g_stFeatureData.FreeRecordTime*60; //for mantis 0156382 sch_detail.sch_user_para = 0; PVR_DEBF("event_end_time_insec = %d\n", sch_detail.sch_time); PVR_DEBF("current time = %d\n", CurTimeInSec); AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null); APP_GUIOBJ_DVB_PvrRec_SetDurationTime(g_stFeatureData.FreeRecordTime*60); } #endif } else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == eRecMode) { MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC); iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord(); if (iRet != PVR_MSG_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); MID_Recorder_SetRecMode(MID_REC_MODE_MAX); APP_GUIOBJ_DVB_PvrRec_RegUninitCallback(); #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif return SP_ERR_FAILURE; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)) { AL_Subtitle_SetFreeze(FALSE); } #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); MID_PlaybackStreamResume(1); g_PauseState = FALSE; } _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE); #else SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0); #endif } else if (MID_REC_MODE_AUTO == eRecMode) { MID_Recorder_SetRecMode(MID_REC_MODE_AUTO); iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord(); if (iRet != PVR_MSG_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); MID_Recorder_SetRecMode(MID_REC_MODE_MAX); APP_GUIOBJ_DVB_PvrRec_RegUninitCallback(); #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif return SP_ERR_FAILURE; } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT); } } #ifdef SUPPORT_LED_FLASH APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, LED_FLASH_TIMER_RECODER); #endif return SP_SUCCESS; } INT32 DVBApp_StopRecord(void) { AL_SCH_sched_id_t StopId= AL_SCH_INVALID_ID; AL_SCH_sched_id_t DurId= AL_SCH_INVALID_ID; StopId = DVBAPP_Pvr_GetStopTimer_id(); if (StopId != AL_SCH_INVALID_ID) { //UnSchedule stop timer AL_SCH_UnScheduleEvent(&StopId); DVBApp_Pvr_SetStopTimer_id(); } DurId = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID(); if (DurId != AL_SCH_INVALID_ID) { //UnSchedule duration timer AL_SCH_UnScheduleEvent(&DurId); APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID(); } /* //need modify kai.wang extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset); extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param); int iOffset = 0; if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS) { APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset); #ifdef SUB_CUSTOMER_Tianle if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, APP_GLOBAL_EVENT_REFRESH_DATA, 0); } #else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, APP_GLOBAL_EVENT_REFRESH_DATA, 0); } #endif } */ #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD if ((DVBAPP_Pvr_GetRECPlayFlag()) && (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift(); } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { APP_GUIOBJ_DVB_PvrRec_StopRecord(); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME); } #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY //check for standby recorder for the case stop rec unnormally //sent to man app to call APP_WAKEUP_CompleteNotify(); MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF); #endif #ifdef SUPPORT_LED_FLASH APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0); #endif APP_GUIOBJ_DVB_PvrRecInfo_SetDiskFull(FALSE); #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif int u8MidRecState; al_uint8 u8AutoTimeShift; u8MidRecState = MID_RecorderState(); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift)); u8AutoTimeShift = g_stFeatureData.AutoTimeShift; if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift && u8MidRecState == MID_REC_STATUS_STOP) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } return SP_SUCCESS; } INT32 DVBApp_StopTimeshift(Boolean bIsStopRec) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift(); if (bIsStopRec) { #ifdef SUPPORT_LED_FLASH APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0); #endif char szPtName[20]; int sdDefPtIdx = 0; MID_RecorderGetDefaultPartition(&sdDefPtIdx); MID_PartitionList_GetMountName(sdDefPtIdx, szPtName); MID_RecorderStop(); MID_RecorderSetProgHandle(0); MID_Recorder_SetRecMode(MID_REC_MODE_MAX); MID_RecorderDeleteTSPLFiles(); //delete TSPL buffer when Timeshift without Timeshift to Record enabled MID_Recorder_DeleteTShistIfExist(szPtName); } return SP_SUCCESS; } static UINT8 DVBApp_CheakFocusPopOnlyForRECicon(void) { //For the problem: REC icon can not show when there are only some pops focused under REC UINT8 Flag = 0; INT32 iFocusedIndex = 0; if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { return Flag; } if (DVB_GUIOBJ_POPMSG == iFocusedIndex) { if(DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL) ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE) ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING) ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE) ||DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED)) { Flag = 1; } } return Flag; } static INT32 _DVBApp_Recorder_PauseResume(void) { int iFocusedIndex; if (MID_RecorderState() == MID_REC_STATUS_PAUSE) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex) || DVBApp_CheakFocusPopOnlyForRECicon()) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } } if (MID_RecorderState() == MID_REC_STATUS_START) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE); if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode()) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0); #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD if(DVBAPP_Pvr_GetRECPlayFlag()) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL); } #endif } } } return SP_SUCCESS; } void DVBApp_SetPVRSwitchSRC(Boolean Switch) { g_bPVRSwitchSource = Switch; } Boolean DVBApp_GetPVRSwitchSRC(void) { return g_bPVRSwitchSource; } void DVBApp_SetTVRadioSwap(Boolean IsSwap) { g_bTvRadioSwap = IsSwap; } Boolean DVBApp_GetTVRadioSwap(void) { return g_bTvRadioSwap; } AL_RecHandle_t DVBApp_GetSCHProgHandle(void) { return g_stDetails.rem_details.handle; } UINT32 DVBApp_GetTimerRECStartTime(void) { return g_stDetails.start_local_time_secs; } UINT32 DVBApp_GetReminderTime2Show(void) { al_uint32 CurTimeInSec = 0; AL_Time_GetCurTimeInSecs(&CurTimeInSec); if (g_stDetails.start_local_time_secs > CurTimeInSec) { return (g_stDetails.start_local_time_secs-CurTimeInSec); } else { return 1;//show 1 sec } } UINT32 DVBApp_PVRRec_SetTimerCancle(void) { AL_PR_details_t stDetails; if (g_stDetails.snooze_time_secs == 0) { AL_PR_Delete(g_dReminderId); } else { memset(&stDetails, 0x0, sizeof(AL_PR_details_t)); memcpy(&stDetails, &g_stDetails, sizeof(AL_PR_details_t)); stDetails.start_local_time_secs = stDetails.start_local_time_secs + stDetails.snooze_time_secs; stDetails.rem_details.event_end_time_insec = stDetails.rem_details.event_end_time_insec + stDetails.snooze_time_secs; if (AL_PR_Modify(&stDetails, g_dReminderId) != AL_SUCCESS) { dvb_printf("\n[%s]reschedule the reminder fail\n",__FUNCTION__); return SP_ERR_FAILURE; } } return SP_SUCCESS; } void DVBApp_SetRemType(AL_PR_type_t remtype) { g_remtype = remtype; } AL_PR_type_t DVBApp_GetRemType(void) { return g_remtype; } void _DVBApp_PVR_UpdateState(void) { UINT8 u8AutoTimeShift; UINT8 u8MidRecState; INT32 I32DefPartition; u8MidRecState = MID_RecorderState(); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift)); u8AutoTimeShift = g_stFeatureData.AutoTimeShift; AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE) if (Mid_CmnUpgradeIsUpgradeing()== TRUE) { if ( MID_RecorderIsCurRecording() == DRV_SUCCESS) { dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__); dvb_printf("System is upgradeing........\n\n\n"); DVBApp_StopTimeshift(TRUE); } if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO) { dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__); dvb_printf("System is upgradeing........\n\n\n"); u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF; } } if((g_dCurPopup== POPMSG_CONFIRM_ERASE_WHOLE_FLASH) #ifdef CONFIG_SUPPORT_USB_AUTO_UPGRADE || (g_dCurPopup == POPMSG_CONFIRM_START_AUTO_UPGRADE) #endif ) { if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO) { dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__); dvb_printf("confirm if upgrade........\n\n\n"); u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF; } } #endif if ((g_u8BGTimeshiftStart > 0) && (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) && (u8MidRecState == MID_REC_STATUS_STOP) ) { if (--g_u8BGTimeshiftStart == 0) { if ((MID_RecorderGetDefaultPartition(&I32DefPartition) != MID_REC_FS_OK) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL; } else { UINT8 u8ProgLockState = FALSE; u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL); if ((u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED) || (MID_TSPLParser_GetThreadState() == TRUE) || (DVBApp_CheckServiceNotAvailable() == TRUE) ) { g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL; } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } PVR_DEBF("[%s: %d] ============start BG timeshift!!! \n", __FUNCTION__, __LINE__); //DVBApp_ResetPopup_Channel(); if (DVBApp_StartRecord(MID_REC_MODE_AUTO) == SP_ERR_FAILURE) { g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL; } } } } } if (u8MidRecState != MID_REC_STATUS_STOP) { int iFocusedIndex; AL_RecHandle_t hRecProg; AL_RecHandle_t hCurProg; AL_DB_EDBType_t DBType = AL_DBTYPE_MAX; UINT8 u8MIDRecMode; APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType); hCurProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA); hRecProg = MID_RecorderGetProgHandle(); u8MIDRecMode = MID_Recorder_GetRecMode(); if ((hCurProg != hRecProg || (APP_IsScan_Running()== TRUE))&& ( MID_RecorderIsCurRecording() == DRV_SUCCESS)) { PVR_DEBF("\n\n\n[%s: %d]============== program/TS change!!\n\n\n", __FUNCTION__, __LINE__); if (MID_REC_MODE_MANUAL == u8MIDRecMode) { DVBApp_StopRecord(); } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) || (MID_REC_MODE_AUTO == u8MIDRecMode)) { DVBApp_StopTimeshift(FALSE); if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } } return; } // deal with PAUSE/REC/TIMESHIFT menu flow if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex) || DVBApp_CheakFocusPopOnlyForRECicon()) //reshow PVR menu { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { return; } if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) { if ((u8MidRecState == MID_REC_STATUS_PAUSE) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0); } else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))) { APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu(); } } else if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState())) { if ((u8MidRecState == MID_REC_STATUS_PAUSE) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0); } else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))) { APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu(); } } else if ((MID_REC_MODE_MANUAL == u8MIDRecMode) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))) { if (u8MidRecState == MID_REC_STATUS_START) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0); #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD if((DVBAPP_Pvr_GetRECPlayFlag()) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL); } #endif } else if (u8MidRecState == MID_REC_STATUS_PAUSE) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD if((DVBAPP_Pvr_GetRECPlayFlag()) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL); } #endif } } } if ((MID_REC_STATUS_PAUSE == u8MidRecState) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))//show pause menu { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex) || DVBApp_CheakFocusPopOnlyForRECicon()) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0); } } else if (MID_REC_STATUS_START == u8MidRecState) //hide pause menu { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE); if (MID_REC_MODE_MANUAL == u8MIDRecMode) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0); #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD if((DVBAPP_Pvr_GetRECPlayFlag()) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL); } #endif } } } } else //rec stop, destroy all pvr menu { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } } } #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC static void _DVBApp_StopRECForTimerConfirmDone(UINT32 dParam) { AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T; AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T; AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV; AL_RecHandle_t CurrentProgHandle; al_uint32 u32CurrentTime = 0; UINT8 u8MIDRecMode = MID_Recorder_GetRecMode(); /* get timer program */ AL_DB_GetRecordType(g_stDetails.rem_details.handle, &DBType_ret, &RecType); /* get current program handele */ AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C) { DBType_Current = AL_DBTYPE_DVB_C; } else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T) { DBType_Current = AL_DBTYPE_DVB_T; } else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S) { DBType_Current = AL_DBTYPE_DVB_S; } CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA); if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC) ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC)) { AL_Time_GetCurTimeInSecs(&u32CurrentTime); dvb_printf("================ current time %d\n",u32CurrentTime); dvb_printf("================ rec end time %d\n", g_stDetails.rem_details.event_end_time_insec); if (u32CurrentTime > (g_stDetails.rem_details.event_end_time_insec-10)) { /* if the left time is less than 10Sec. not to respond the confirm */ _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMER_OUT_OF_DATE); return; } } /* zap prog */ if (g_stDetails.rem_details.handle != CurrentProgHandle) { PVR_DEBF("handle ==== %d\n", g_stDetails.rem_details.handle); PVR_DEBF(" CurrentProgHandle ==== %d\n", CurrentProgHandle); g_ProgHandleB4Rec = g_stDetails.rem_details.handle; if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { if (u8MIDRecMode == MID_REC_MODE_MANUAL) DVBApp_StopRecord(); else DVBApp_StopTimeshift(TRUE); } _DVBApp_CloseAllMenu(); #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM) APP_RFType_en eRFType = APP_RF_TYPE_DVB_T; if (DBType_Current != g_stDetails.db_type) { if (g_stDetails.db_type == AL_DBTYPE_DVB_T) { eRFType = APP_RF_TYPE_DVB_T; } else if (g_stDetails.db_type == AL_DBTYPE_DVB_C) { eRFType = APP_RF_TYPE_DVB_C; } else if (g_stDetails.db_type == AL_DBTYPE_DVB_S) { eRFType = APP_RF_TYPE_DVB_S; } APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType, g_stDetails.rem_details.handle); } else #endif { _DVBApp_Zapping(RecType, g_stDetails.rem_details.handle, FALSE, 0, TRUE); } } if (g_stDetails.rem_type == AL_PR_EVT_REM) { if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { if (u8MIDRecMode == MID_REC_MODE_MANUAL) DVBApp_StopRecord(); else DVBApp_StopTimeshift(TRUE); } DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime(); if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS) { APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE); DVBApp_SetTVRadioSwap(FALSE); g_ProgHandleB4Rec = 0; return; } //APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(g_stDetails.rem_details.event_end_time_insec); } if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER) ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER)) { DVBApp_SetTVRadioSwap(FALSE); g_ProgHandleB4Rec = 0; #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if(APP_WAKEUP_GetBootFlag() == TRUE) { APP_WAKEUP_RealPowerUp(); } #endif } } #endif Boolean g_PVR_TimerRecStart = FALSE; Boolean DVBApp_PVRDEMUX_GetTimerRECFLag(void) { return g_PVR_TimerRecStart; } void DVBApp_PVRDEMUX_SetTimerRECFLag(Boolean bFlag) { g_PVR_TimerRecStart = bFlag; } void DVBApp_PVRDEMUX_StartTimerREC(void) { if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS) { APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE); DVBApp_SetTVRadioSwap(FALSE); g_ProgHandleB4Rec = 0; #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY //sent to man app to call APP_WAKEUP_CompleteNotify() MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF); #endif //need modify kai.wang /*extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset); extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param); int iOffset = 0; if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS) { APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset); }*/ } return ; } #endif #ifdef TEAC_BLUE_KEY_FUNCTION APP_Panel_PowerSequenceType_e _DVB_GetPanelControlType(void) { return g_eAppPanelOnOff; } void _DVB_SetPanelControlType(APP_Panel_PowerSequenceType_e eType) { g_eAppPanelOnOff = eType; } #endif static INT32 _DVBApp_OnCreate(void **ppPrivateData) { dvb_printf(" %s is called.\n", __FUNCTION__); _DVBApp_DTV_main_program(NULL); DvbPrivateData_t *pDvbPrivateData = (DvbPrivateData_t *) GL_MemAlloc(sizeof(DvbPrivateData_t)); memset(pDvbPrivateData, 0x00, sizeof(DvbPrivateData_t)); pDvbPrivateData->dUserData = 0; (*ppPrivateData) = (void *)pDvbPrivateData; stDvbInst.bAppState = SYSTEM_IDLE; return 0; } static INT32 _DVBApp_OnDestroy(void **ppPrivateData) { dvb_printf(" %s is called.\n", __FUNCTION__); SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB); GL_MemFree((*ppPrivateData)); (*ppPrivateData) = NULL; return 0; } static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam) { dvb_printf(" %s is called.\n", __FUNCTION__); #if 0 //set ttx codepage when open create ttx. UINT32 u32DTVTTXZone = 0; #endif AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0, sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0, sizeof(APP_SETTING_Variational_t), &(g_stVariationalData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_MULTIMEDIA, 0, sizeof(APP_SETTING_Multimedia_t), &(g_stMultiMediaData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t), &(g_stSetupData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); stDvbInst.bAppState = SYSTEM_RUNNING; dvb_printf(" Dvbt state is %d.\n", stDvbInst.bAppState); if (dParam == 0) { #ifdef SHOW_LOGO_NOSIGNAL // init show logo #ifdef JPEG_LOGO LOGO_Init(); extern char *pu32LMA; extern unsigned int pu32LMASize; LOGO_SetParam((const UINT8 *)pu32LMA, pu32LMASize); //LOGO_SetShowPicLogoPlane(Logo_VPP_PLANE); //LOGO_StartUp_Pic_Show_AlignOrigin(gpAL_PanelDisplayDesc->Size.wHorSize, gpAL_PanelDisplayDesc->Size.wVerSize); #else extern const unsigned char DVDTitle[]; extern const int DVDTitleSize; LOGO_Init(); LOGO_SetParam(DVDTitle, DVDTitleSize); #endif #else //mute screen to black or user define color #endif } APP_GUIOBJ_PopMs_SetCloseFun(DVBApp_ClosePopup); APP_GuiMgr_Set_Menu() ; APP_GuiMgr_SwitchShareMenu(SYS_APP_DVB); // AUDIF_Set_OutputMode(OUT_RFModeK3, 0); // AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464); #ifdef SUPPORT_CONAX_CAS //DVB_Conax_Init(); CONAX_MMI_CallbackInit(); #endif SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_DVB_ONRUN | PASS_TO_SYSAPP,TRUE); dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32()); return 0; } static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam) { dvb_printf(" %s is called., time: %d\n", __FUNCTION__,GL_GetRtc32()); #ifdef CONFIG_CI_SUPPORT g_Audio_Scramble_Counter = 0; g_VIP_FINISH_Flg = FALSE; #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)) { AL_Subtitle_SetFreeze(FALSE); } #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE); } /* Release program list of dvb service */ APP_Sysset_Reset_list(APP_DVB_Playback_GetCurrentNetType()); SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB); g_u32OldPopup = PLAYBACK_POPUP_NONE; APP_GuiMgr_UnInitDvbOSD2(); stDvbInst.bAppState = SYSTEM_IDLE; #ifdef CONFIG_SUPPORT_PVR MID_TSPLParser_UnInit(); #endif dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32()); return 0; } static void _DVBApp_Process_Unmute(void) { UINT8 RegionIdx = 0; ColorLUT_t stColorLUTValue; APP_Source_Type_t eSourType = APP_SOURCE_MAX; APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX; if ((g_bMidHasUnmute == TRUE) && (bSetUnMuteFlag == TRUE)) { if (g_SetPQFlag == FALSE) { g_SetPQFlag = TRUE; /*set PQ param*/ AL_FLASH_GetColorLUTALL(&stColorLUTValue); for(RegionIdx = 0; RegionIdx= 3)//3*100ms { APP_GUIOBJ_Source_SetSourceTransState(FALSE); g_u8SourceTrastTimer = 0; } } /*Set timer to clear zapping state avoid dvb app not received tuner locke or tuner unlock message result in not clear the flag*/ if (APP_GUIOBJ_DVB_Playback_GetZappingState()) { g_u8ZappingTimer++; if (g_u8ZappingTimer >= 2)//3*100ms { APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE); g_u8ZappingTimer = 0; } } //Polling DSP to detect audio channel num change. g_AdioChnPolTime++; if (g_AdioChnPolTime >= 10)//10*100ms = 1s { APP_Audio_PollingAudioChnannelNum(); g_AdioChnPolTime = 0; } #ifdef CONFIG_TESTAUTOREBOOT { FW_mode_t FW_Module = FW_NORMAL_VIEW_MODE; AL_FW_GetFWModule(&FW_Module); /*don't enable autoreboot while searching channel and update*/ if (FW_Module == FW_CHAN_SRCH_MODE || FW_Module == FW_UPGRADE_MODE) { ir_autoreboot_disable(); } } #endif #ifdef CONFIG_CI_SUPPORT if (g_Audio_Scramble_Counter>0) { if (g_VIP_FINISH_Flg)//Mean video has been descramble. { g_VIP_FINISH_Flg = 0; g_Audio_Scramble_Counter = 0; } else { g_Audio_Scramble_Counter--; if (g_Audio_Scramble_Counter==0) { g_bNoSteamData = FALSE; { #ifdef CONFIG_SUPPORT_TTX if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL); } #ifdef CONFIG_SUPPORT_PVR UINT8 u8MidRecState; u8MidRecState = MID_RecorderState(); if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED; DVBApp_CheckProgramType(TRUE); } } } else { if (g_VIP_FINISH_Flg==TRUE) { g_VIP_FINISH_Flg = 0; } } #endif #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE) /*Cello spec: Home Mode Open*/ if(APP_GUIOBJ_AutoInstall_GetOpenHomeModeFlag()) { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if((g_stUserInfoData.AutoInstalledHomeMode) &&(!g_stUserInfoData.AutoInstalled)) { #ifdef CONFIG_SUPPORT_USB_UPGRADE if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) #endif { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_OPEN_HOMEMODE|PASS_TO_SYSAPP, 0); } } } #endif APP_GUIOBJ_Source_GetCurrSource(&eSourType); if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex)) { _DVBApp_CheckPopupDisplay(); } AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL; MID_PlaybackGetCurProgHandle(al_null, &hTempHdl); #ifdef PLAY_VIDEO_FOR_ALLSRV DBPIDInfo_t stVideoPid; memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t)); AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid); #endif if (!bHasValidServ && (hTempHdl == AL_DB_INVALIDHDL)) { g_bTempSerFlag = FALSE; if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex)) { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData)); if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) && !g_stFactoryUserData.n_FactSet_BurningMode) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); DVBApp_ResetPopup_Channel(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY); DVBApp_CheckProgramType(FALSE); } } #ifdef CONFIG_TESTAUTOREBOOT #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL ir_autoreboot_enable(); #endif #endif #ifdef CONFIG_SUPPORT_PVR if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif { return 0; } } else if (bMonitorState == al_true) { if (bSignalState == AL_DVB_MONITOR_VALUE_FALSE) { g_bTempSerFlag = FALSE; if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))|| !(APP_MenuMgr_Exist_Factory_Menu())) { g_u32NoSignalTimer ++; #ifndef SUPPORT_NO_SIGNAL_NOTSTANDBY g_u32NoSignalSleepTimer ++; #endif } #ifdef CONFIG_SUPPORT_PVR if(MID_TSPLParser_GetThreadState() == TRUE) { g_u32NoSignalSleepTimer = 0; } #endif /*2.1.10 Input factory auto test mode close no signal standby function*/ #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetAutoTestOnOff() == TRUE) { g_u32NoSignalTimer = 0; g_u32NoSignalSleepTimer = 0; } #endif if (g_u32NoSignalSleepTimer == DVB_10_MINUTES) { g_u32NoSignalSleepTimer = 0; if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO) && (APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == FALSE)) { APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(TRUE); } SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL); } if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection) { NoSignalTimer = 45; } else { NoSignalTimer = 15; } if (g_u32NoSignalTimer >= NoSignalTimer)//15*100ms { if ((eSourType == APP_SOURCE_DTV) || (eSourType == APP_SOURCE_RADIO)) { #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video UINT32 u32PEState = MID_TSPL_MODE_STOP; if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS) { if (MID_TSPL_MODE_STOP == u32PEState) { if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0); } } } else #endif if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)) { #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderState() != MID_REC_STATUS_STOP) { PopmsgType_t eType = POPMSG_TYPE_NONE; APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (eType != POPMSG_TYPE_CONFIRM) {//not to send no signal event to clear comfirm type popmsg SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0); } } else #endif { if(!(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED))) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0); } } } } } } } else { g_u32NoSignalTimer = 0; MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL; progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL); #ifdef CONFIG_SUPPORT_PVR if (g_bNoSteamData == TRUE || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING) { if ( MID_RecorderState()== MID_REC_STATUS_START ) { if ((MID_TSPLParser_GetThreadState() != TRUE) && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE)) { //printf("pause\n\n\n"); MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } } if (!(g_bNoSteamData == TRUE || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING) && g_bIsPlaykey == TRUE) { if ( MID_RecorderState()== MID_REC_STATUS_PAUSE) { //printf("start \n\n\n"); MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } #endif if (DVBApp_CheckServiceNotAvailable() == TRUE) { //set video and audio mute for temp service if (g_bTempSerFlag == FALSE) { DVBApp_CheckProgramType(FALSE); g_bTempSerFlag = TRUE; DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex)) { #ifdef SUPPORT_DISABLE_H264 if (progstate == MID_PLAYBK_PROG_STATE_VIDEO_MPEG4) { if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT); } } else if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))//mantis43634:not available & scramble service show scramble { if(APP_Get_DTVHiddenScanState() != TRUE) { if(APP_DVB_Playback_GetCAModeByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == al_true) { if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE); } } } else if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)) { if(APP_Get_DTVHiddenScanState() != TRUE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE); } } } #else if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))//mantis43634:not available & scramble service show scramble { if(APP_Get_DTVHiddenScanState() != TRUE) { if(APP_DVB_Playback_GetCAModeByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == al_true) { if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE); } } } else if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)) { if(APP_Get_DTVHiddenScanState() != TRUE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE); } } } #endif } } else { if (g_bNoSteamData == TRUE || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING) { AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType(); AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL; MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL; hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO)); if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED)) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); } eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl); if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED)) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); } } g_bTempSerFlag = FALSE; if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL); } #ifdef PLAY_VIDEO_FOR_ALLSRV if ((stVideoPid.usDataPID&0x1fff) == 0x1fff) #else if (eServiceType == AL_RECTYPE_DVBRADIO) #endif { if ((!APP_GUIOBJ_DVB_Playback_GetShowLogoState()) && (progstate == MID_PLAYBK_PROG_STATE_NORMAL) #ifdef CONFIG_SUPPORT_PVR && !(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif ) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); } } if (SYSTEM_APP_NO_FOCUSED_GUIOBJ != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex)) { if (g_u8PopScrambleMsgTimer!=0) { g_u8PopScrambleMsgTimer = 0; } } if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex)) { if (progstate == MID_PLAYBK_PROG_STATE_LOCKED) { if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD) #ifdef CONFIG_SUPPORT_PVR && (APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs) == FALSE) #endif ) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } } else if (progstate == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \ ||progstate == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \ || (progstate == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED && #ifdef PLAY_VIDEO_FOR_ALLSRV ((stVideoPid.usDataPID&0x1fff) == 0x1fff) #else eServiceType == AL_RECTYPE_DVBRADIO #endif )) { g_u8PopScrambleMsgTimer ++; if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE)&&g_u8PopScrambleMsgTimer>8) { if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d g_u8PopScrambleMsgTimer=%d######\n",__FUNCTION__,__LINE__,g_u8PopScrambleMsgTimer); _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE); g_u8PopScrambleMsgTimer = 0; } } else if ((eServiceType == AL_RECTYPE_DVBRADIO) #ifdef PLAY_VIDEO_FOR_ALLSRV && ((stVideoPid.usDataPID&0x1fff) == 0x1fff) #endif &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))) { #ifdef CONFIG_SUPPORT_MHEG5 Boolean testA; Boolean testB; Boolean testC; Boolean testD; testA = !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5); testB = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED); testC = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE); testD = APP_Area_SupportDtg(); //dvb_printf("a %d, b %d, c %d, d %d\n",testA, testB, testC, testD); if (testA || (testB && testC && testD)) #endif { if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL); } } } } #ifdef CONFIG_SUPPORT_PVR else if(((dFocusedIndex == DVB_GUIOBJ_PVR_PLAYINFO) || (dFocusedIndex == DVB_GUIOBJ_PVRREC_INFO)) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) && (eServiceType == AL_RECTYPE_DVBRADIO) #ifdef PLAY_VIDEO_FOR_ALLSRV && ((stVideoPid.usDataPID&0x1fff) == 0x1fff) #endif ) { #ifdef CONFIG_SUPPORT_MHEG5 if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) || ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) && (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE) && (APP_Area_SupportDtg()))) #endif { if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL); } } } else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG) && (progstate == MID_PLAYBK_PROG_STATE_LOCKED) && APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs)==FALSE ) { if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } } #endif #ifdef CONFIG_SUPPORT_MHEG5 Boolean testA = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED); Boolean testB = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == TRUE); Boolean testC = (APP_Area_SupportDtg()); Boolean testD = (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)); #ifdef CONFIG_SUPPORT_PVR Boolean testE = (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_STOP); Boolean testF = (MID_Recorder_GetRecMode() != MID_REC_MODE_MANUAL); #endif //dvb_printf("a %d, b %d, c %d, d %d, e %d, f %d\n",testA,testB,testC,testD,testE, testF); if (testA && testB && testC && testD #ifdef CONFIG_SUPPORT_PVR && testE && testF #endif ) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } #endif #ifdef CONFIG_SUPPORT_MHEG5 if(progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE) { if((APP_Area_SupportDtg())&&(APP_DVB_Mheg5_GetMheg5DisplayStatus() != TRUE)) { if(!DVBApp_IsPopupExist(DVB_APP_POP_MSG_TEMPSERVICE)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE); } } } #endif } } } /*Unmute dispose*/ if (bSetUnMuteFlag) { #if 1 if (g_bMidHasUnmute) { _DVBApp_Process_Unmute(); } else { AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t RecordType = AL_RECTYPE_DVBTV; UINT32 total_prog = 0; RecordType = APP_DVB_Playback_GetCurrServiceType(eNetType); AL_DB_GetRecordsTotalNum(eNetType, RecordType, &total_prog); if (total_prog > 0) { INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL; i16ProgState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL); if ((i16ProgState != MID_PLAYBK_PROG_STATE_NORMAL) && (i16ProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)) { DVBApp_CheckProgramType(FALSE); bSetUnMuteFlag = FALSE; } } } #else //zhongbaoxing moved to _DVBApp_Process_Unmute for mantis 143820 @20110801 g_u8SetUnMuteTimer ++; if (g_u8SetUnMuteTimer == unMute_Check_timer) { if (g_SetPQFlag == FALSE) { g_SetPQFlag = TRUE; /*set PQ param*/ eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); APP_Video_SetPictureMode( g_stPictureData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex); APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPictureData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex); APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR); } DVBApp_CheckProgramType(TRUE); g_u8SetUnMuteTimer = 0; bSetUnMuteFlag = FALSE; if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } } #endif } #ifdef CONFIG_SUPPORT_MHEG5 INT32 fStatus = 0; Boolean fVideoState = FALSE; MHEG5APP_GetMh5Status(&fStatus); MHEG5APP_GetMh5VideoStatus(&fVideoState); if ((fStatus & MHEG5APP_STATUS_MID_ON) == MHEG5APP_STATUS_MID_ON) { if (fVideoState == FALSE) { if (APP_GetPlaybackPauseState() == TRUE) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)) { AL_Subtitle_SetFreeze(FALSE); } #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } } } #endif #ifdef CONFIG_SUPPORT_PVR AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL) if((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.PVRFunction)) #elif defined(SUPPORT_PVR_ONOFF) AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t), &(g_stSetupData)); if(g_stSetupData.PVROnOff) #endif { _DVBApp_PVR_UpdateState(); } #endif #ifdef CONFIG_SUPPORT_SSU_UPGRADE unsigned int SsuEchWakeTimer; static al_uint32 timer; //dvb_printf("autoupgrade_sate %d\n",autoupgrade_sate); if (autoupgrade_sate== AU_GetTime) { al_uint32 CurTimeInSec; AL_Time_GetCurTimeInSecs(&CurTimeInSec); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, OTAWakeupTime), sizeof(g_stUserInfoData.OTAWakeupTime),&SsuEchWakeTimer); SsuEchWakeTimer -= CurTimeInSec; timer = SsuEchWakeTimer*10; if (timer > 0) { autoupgrade_sate = AU_TimeCom; } else { autoupgrade_sate = AU_MAX; } } if (autoupgrade_sate == AU_TimeCom) { timer--; //dvb_printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%d\n",timer); if (timer <= 0) { autoupgrade_sate = AU_GoToUpgrade; } } if (autoupgrade_sate == AU_GoToUpgrade) { //dvb_printf(" go to auto grade\n"); autoupgrade_sate = AU_MAX; UINT16 u16ONID_SSU = 0xffff; UINT16 u16TSID_SSU = 0xffff; MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_ONID,(UINT8 *)&u16ONID_SSU); MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_TSID,(UINT8 *)&u16TSID_SSU); if ((u16ONID_SSU == 0xffff && u16TSID_SSU == 0xffff) ||(u16ONID_SSU == 0x0 && u16TSID_SSU == 0x0)) { //dvb_printf("[don't find linkage descriptor, so try again]%s %d\n",__FUNCTION__,__LINE__); autoupgrade_sate = AU_GoToUpgrade; } else { APP_GUIOBJ_DVB_OTAPrompt_StartOTAMon(); } } #endif #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS) { UINT8 ttxtimer = APP_GetTTXTimer(); if(ttxtimer > 0) { ttxtimer--; APP_SetTTXTimer(ttxtimer); if(ttxtimer == 0)//time is 8s { AL_TTX_Reset(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } } } } #endif return 0; } #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5) void DVBApp_ApplyAppMMIDisplay(void) { APP_SETTING_UserInfo_t stUserInfoData; E_APPMMI_SMG eSMG; E_APPMMI_SSM eSSM; /* Get subtitle setting */ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData)); /* Get SSM and SMG */ eSSM = MID_DTVCI_GetAppMMISSM(); eSMG = MID_DTVMHEG_GetAppMMISMG(); if( MID_DTVCI_GetAppMMIStatus() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) ) { dvb_printf("%s AppMMI is 'on' Subtitle is '%s' SSM_%s SMG_%s\n",__FUNCTION__, stUserInfoData.Subtitle ? "on":"off", eSSM == APPMMI_SSM_NONE ? "NONE/2": eSSM == APPMMI_SSM_0 ? "0":"1", eSMG == APPMMI_SMG_NONE ? "NONE" : eSMG == APPMMI_SMG_TRUE ? "TRUE" : "FALSE" ); if( eSSM == APPMMI_SSM_0 ) { dvb_printf("subtitle osd off\n"); mid_sub_dtv_show(0); dvb_printf("mheg osd on\n"); MHEG5OSD_DisplayEnable(TRUE); } else if( eSSM == APPMMI_SSM_1 ) { if( stUserInfoData.Subtitle ) { dvb_printf("mheg off\n"); DVBApp_DataApplicationSwitch( OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5); dvb_printf("subtitle on\n"); DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB); } } else // eSSM is APPMMI_SSM_2 or APPMMI_SSM_NONE { if( eSMG == APPMMI_SMG_TRUE ) { if( stUserInfoData.Subtitle ) { dvb_printf("mheg osd off\n"); MHEG5OSD_DisplayEnable(FALSE); dvb_printf("subtitle on\n"); DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB); dvb_printf("subtitle osd on\n"); mid_sub_dtv_show(1); } else { dvb_printf("mheg osd on\n"); MHEG5OSD_DisplayEnable(TRUE); } } else // eSMG == APPMMI_SMG_FALSE or APPMMI_SMG_NONE { if( stUserInfoData.Subtitle ) { dvb_printf("mheg osd on\n"); MHEG5OSD_DisplayEnable(TRUE); dvb_printf("subtitle osd off\n"); mid_sub_dtv_show(0); } else { dvb_printf("mheg osd on\n"); MHEG5OSD_DisplayEnable(TRUE); } } } } else { dvb_printf("%s AppMMI is 'off'\n",__FUNCTION__); } } #endif #ifdef SUPPORT_ATS static UINT8 uGetDemodinfoOn = 0; GL_Task_t ATSTask; static UINT8 ATSTaskExistFlag = 0; void _APP_ATS_Get_Demodinfo_ThreadControl(void *pData) { ATSTaskExistFlag = 1; bool bNeedPrint = TRUE; while(uGetDemodinfoOn==1) { GL_TaskSleep(500); UINT32 u16SNR=0; FrontendCmd_t front; front.cmd = FRONTEND_CMD_GET_SIGNAL_SNR; front.param = &u16SNR; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); u16SNR = u16SNR/10; UINT32 u16BER=0; front.cmd = FRONTEND_CMD_GET_SIGNAL_BER; front.param = &u16BER; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); if(u16BER != 0xFFFF) u16BER = u16BER/10; UINT32 u16PER=0; front.cmd = FRONTEND_CMD_GET_SIGNAL_PER; front.param = &u16PER; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); UINT32 u16UBC=0; front.cmd = FRONTEND_CMD_GET_SIGNAL_UBC; front.param = &u16UBC; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); UINT32 u16SSI=0; front.cmd = FRONTEND_CMD_GET_SIGNAL_STRENGTH; front.param = &u16SSI; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); UINT32 u16SQI=0; front.cmd = FRONTEND_CMD_GET_SIGNAL_QUALITY; front.param = &u16SQI; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); UINT32 IsDemodLock=0; front.cmd = FRONTEND_CMD_GET_DEMOD_LOCK_STATUS; front.param = (void *)&IsDemodLock; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); //ATS:lock xx SNR xxx BER xxxxx PER xxxxx UBC xxxxx SSI xxx SQI xxx if(bNeedPrint == TRUE) { char cLen[80]; sprintf(cLen, "ATS:lock %2d SNR %3d BER %5d PER %5d UBC %5d SSI %3d SQI %3d\n", IsDemodLock,u16SNR,u16BER,u16PER,u16UBC,u16SSI,u16SQI); con_echo_sfu(80, (UINT8 *)cLen); } if(IsDemodLock == 0) bNeedPrint = FALSE; else bNeedPrint = TRUE; } if(uGetDemodinfoOn == 0) { ATSTaskExistFlag = 0; GL_TaskSelfDelete(); } } UINT32 APP_ATS_Get_Demodinfo_On() { if(ATSTaskExistFlag == 0) { GL_Status_t ret = GL_FAILURE; ret = GL_TaskCreate("ATSGetDemodinfo", _APP_ATS_Get_Demodinfo_ThreadControl, NULL, 4, 32, FALSE, &ATSTask); if (ret != GL_SUCCESS) { return AL_FAILURE; } ret = GL_TaskActivate(ATSTask); if (ret != GL_SUCCESS) { return AL_FAILURE; } } return AL_SUCCESS; } #endif static INT32 _DVBApp_OnGlobalEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam) { al_bool bHasValidServ = al_false; al_uint8 bSignalState = al_false; PopmsgParam_t stPopup; UINT32 dGuiObj = DVB_GUIOBJ_EPG; UINT8 u8HotelMode; UINT8 u8MainUIEn; AL_DB_ERecordType_t NextServiceType = 0; UINT32 u32TotalNum = 0; AL_RecHandle_t hProg; AL_RecHandle_t hCurProg; #ifdef CONFIG_SUPPORT_MHEG5 int sdRet; #endif UINT32 dAppIndex = 0; MID_DISP_MUTE_ST eMuteSt = 0; #ifdef SUPPORT_SOURCE_DVBTCS UINT32 RFtype = APP_RF_TYPE_DVB_MAX; UINT32 StringId = 0; #endif #ifdef CONFIG_SUPPORT_3D_EN APP_Video_Image3DAction_t ePicture3DState = APP_VIDEO_IMAGE_3D_DISABLED; #endif APP_Source_Type_t eSourType = APP_SOURCE_MAX; APP_Source_Type_t eMidSourType = APP_SOURCE_MAX; AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); AL_RecHandle_t hCurrProgHandle = AL_DB_INVALIDHDL; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData)); if (g_stFactoryUserData.n_FactSet_BurningMode == al_true) { return SP_SUCCESS; } #ifdef CONFIG_SUPPORT_MHEG5 sdRet = 0; #endif dMessage = (dMessage&~PASS_TO_SYSAPP); dvb_printf("%d. dMessage = 0x%x(%d)event received.\n", __LINE__, dMessage,(dMessage&0xfff)); #ifdef CONFIG_SUPPORT_MHEG5 int iFocusedIndex; #endif #ifdef CONFIG_SUPPORT_TTX al_uint8 *pref_iso639 = al_null; #endif eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); hCurProg = hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType); APP_GUIOBJ_Source_GetCurrSource(&eSourType); APP_GUIOBJ_Source_GetMidSource(&eMidSourType, NULL); UINT8 bAutoInstall = FALSE; #ifdef IR_PLAYPAUE_COMBINE if (dMessage == UI_EVENT_PLAY) { dMessage = UI_EVENT_PLAY_PAUSE; } if (dMessage == UI_EVENT_PLAY_PAUSE) { dMessage = UI_EVENT_PAUSE; } #endif AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); u8HotelMode = g_stFactoryHotelData.HotelModeOnOff; u8MainUIEn = g_stFactoryHotelData.MainUIOperation; if (u8HotelMode == 1) { if (u8MainUIEn == 1) { if (dMessage == UI_EVENT_MENU) { return 0; } } } if ((g_stFactoryHotelData.HotelModeOnOff == 1) && (g_stFactoryHotelData.AspectRatioLock == 1)) { if (dMessage == UI_EVENT_ASPECT) { dMessage = UI_EVENT_NULL; } } #ifdef CONFIG_SUPPORT_PVR UINT8 u8AutoTimeShift; UINT8 u8MidRecState; UINT8 u8MIDRecMode; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift)); u8AutoTimeShift = g_stFeatureData.AutoTimeShift; u8MidRecState = MID_RecorderState(); u8MIDRecMode = MID_Recorder_GetRecMode(); #ifdef SUPPORT_PLAY_PAUSE_KEY_START_REC if ((MID_REC_STATUS_STOP == u8MidRecState) && (dMessage == UI_EVENT_PLAY_PAUSE) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { dMessage = UI_EVENT_REC; } #endif #endif #if defined(SUPPORT_PVR_ONOFF) || defined(SUPPORT_EPG_ONOFF) AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t), &(g_stSetupData)); #endif #ifdef SUPPORT_CEC_TV if (CECTV_GetCECEnable()==CECTV_ENABLE) { //active source if(dMessage==UI_EVENT_TVRADIO) { dvb_printf("========================UI_EVENT_TVRADIO========================"); // no need to notice cec change src //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS); } if(dMessage==UI_EVENT_MUTE) { dvb_printf("\n\n=============CEC Send Audio Mute===============\n\n"); //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()) { if(g_u32Mutekeydelaytime >= MUTE_KEY_INTERVAL) { cec_RemoteControlPassThrough(CECTV_KEY_MUTE); cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE); g_u32Mutekeydelaytime = 0; } } } if(dMessage==UI_EVENT_VOL_UP) { dvb_printf("========================UI_EVENT_VOL_UP========================"); //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_UP<<8|0x05);//UCP VOL_DN Function if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()) { if (dParam & IR_EVENT_REPEAT_TYPE) { cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP); } else if (dParam & IR_EVENT_REPEAT_END) { cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE); } else { cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP); cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE); } } } if(dMessage==UI_EVENT_VOL_DN) { dvb_printf("========================UI_EVENT_VOL_DN========================"); //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_DOWN<<8|0x05);//UCP VOL_DN Function if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()) { if (dParam & IR_EVENT_REPEAT_TYPE) { cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN); } else if (dParam & IR_EVENT_REPEAT_END) { cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE); } else { cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN); cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE); } } } } #endif #ifdef TEAC_BLUE_KEY_FUNCTION if (_DVB_GetPanelControlType() == APP_PANEL_POWER_DOWN && (dMessage >= UI_EVENT_0 && dMessage < UI_EVENT_NULL) && (dMessage != UI_EVENT_POWER)) { //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP); //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT, // g_stSetupData.HomeMode.Backlight[g_stSetupData.HomeMode.Type]); _DVB_SetPanelControlType(APP_PANEL_POWER_UP); return GUI_OBJECT_NO_POST_ACTION; } #endif switch (dMessage) { case APP_DVB_GLOBAL_EVENT_SCAN_DONE: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS, APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0); } else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) { SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0); } else { APP_GUIOBJ_ScanProcess_ScanDone(NULL, 1); } break; case APP_DVB_GLOBAL_EVENT_DVB_ONRUN: dvb_printf(" APP_DVB_GLOBAL_EVENT_DVB_ONRUN event received\n"); g_u32NoSignalTimer = 0; g_u32NoSignalSleepTimer = 0; /*#ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { DVBApp_StopRecord(); } else { DVBApp_StopTimeshift(TRUE); } } #endif*/ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, ITEM_OFFSET(APP_SETTING_Channel_t, Country), sizeof(g_stChannelData.Country), &(g_stChannelData.Country)); DVBApp_ResetDvbSpecRule(g_stChannelData.Country); #ifdef CONFIG_MEDIA_ENABLE /*#ifdef CONFIG_SUPPORT_PVR #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if(APP_WAKEUP_GetBootFlag()==FALSE) #endif { if (MM_Music_GetPanelControlType() == APP_PANEL_POWER_DOWN) //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP); } #endif*/ #endif /*Change Source*/ UINT32 Indexmm = TOTAL_SYS_APP_SIZE; while(MAINAPP_GetActiveSystemAppIndex(&Indexmm) !=MAIN_APP_SUCCESS) { GL_TaskSleep(1); } if ((SP_SUCCESS != APP_GUIOBJ_Source_SetMidSource(NULL)) || (APP_IsScan_Running())) { #ifdef CONFIG_SUPPORT_PVR DVBApp_SetPVRSwitchSRC(FALSE); #endif return SP_ERR_FAILURE; } #ifdef CONFIG_SUPPORT_PVR int iPtListIdx = -1; extern int _RecorderList_Callback(MID_PVRRecListParseMsg_t dPVRRecListCallbackType); MID_TSPLParser_RegisterPvrRecListCallback((PVRRecListCallbackFunc)_RecorderList_Callback); if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK) { /* aps new don't support NTFS fs */ if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE) { MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition } } else //for mantis 0180617, refresh mid PVR file list when change from other source { static char szPtName[MID_PTLIST_MAX_PARTITIONNAME]; MID_PartitionList_GetMountName(iPtListIdx, szPtName); extern Boolean MID_Recorder_DeleteTShistIfExist(char *szPtName); if(MID_Recorder_DeleteTShistIfExist(szPtName)==TRUE) { PVR_DEBF("Delete TSHIFT FILE [OK]\n"); } extern Boolean MID_Recorder_DeleteIllegalPVR(char *szPtName); if(MID_Recorder_DeleteIllegalPVR(szPtName)==TRUE) { PVR_DEBF("Delete Illegal PVR [OK]\n"); } MID_TSPLParser_Init(szPtName); } DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); #endif eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA)) { eServiceType = AL_RECTYPE_DVBTV; } /* Check Service Type */ { UINT32 u32TotalChnCount = 0; AL_DB_ERecordType_t eTempServiceType = eServiceType; if(eServiceType != AL_RECTYPE_DVBTV) { AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount); if(!u32TotalChnCount) { eTempServiceType = AL_RECTYPE_DVBTV; AL_DB_GetRecordsTotalNum(eNetType, eTempServiceType, &u32TotalChnCount); if(!u32TotalChnCount) { if(eServiceType == AL_RECTYPE_DVBRADIO) { AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount); if(u32TotalChnCount) { eTempServiceType = AL_RECTYPE_DVBDATA; } } else if(eServiceType == AL_RECTYPE_DVBDATA) { AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount); if(u32TotalChnCount) { eTempServiceType = AL_RECTYPE_DVBRADIO; } } } } } else { AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount); if(!u32TotalChnCount) { AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount); if(u32TotalChnCount) { eTempServiceType = AL_RECTYPE_DVBDATA; } else { AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount); if(u32TotalChnCount) { eTempServiceType = AL_RECTYPE_DVBRADIO; } } } } eServiceType = eTempServiceType; APP_DVB_Playback_SetCurrServiceType(eNetType, eServiceType); } /*create playback and mute guiobject*/ if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, 0); } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MUTE, 0); } if (TRUE == APP_GUIOBJ_DVB_FavNet_GetSelect()) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0); break; } } /* change source to net, it will destroy `mute' icon * so, judge `mute' state, show icon */ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if (g_stUserInfoData.Mute == TRUE) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, APP_GUIOBJ_MUTE, APP_INTRA_EVENT_SHOW_MUTE, SHOW_MUTE_ON_TV); } bAutoInstall = g_stUserInfoData.AutoInstalled; if (bAutoInstall && (FALSE ==gIsFactoryResetting)) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) { //Close all menu before show Auto Installation menu _DVBApp_CloseAllMenu(); #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetAutoTestOnOff() == FALSE) #endif { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0); } } } #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetAutoTestOnOff() == TRUE) { extern void APP_SetPoweronEnterVersion(UINT8 value); extern UINT8 APP_GetPoweronEnterVersion(void); if(APP_GetPoweronEnterVersion() == 1) { APP_SetPoweronEnterVersion(0); if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1); Factory_Ver_Debug(); } } } #endif hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType); #ifdef CONFIG_SUPPORT_PVR if (DVBApp_GetPVRSwitchSRC() == TRUE) { eServiceType = g_eRecType; APP_DVB_Playback_SetNextServiceType(eServiceType); hProg = DVBApp_GetSCHProgHandle(); } #endif if (APP_MenuMgr_Exist_Scan_Menu()) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_SET_SOURCE_COMPLETE, 0); } else { #if 0 /*modify by qinhe for mantis 0011833*/ AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &TotalNum); #else bHasValidServ = AL_DB_HasVisibleService(eNetType); #endif if (bHasValidServ) { #ifdef SUPPORT_CONSOLE_AUTO_TEST UINT32 uChnNo = 0; if(TRUE == APP_Factory_CheckNeedSetChannelByNum(&uChnNo)) { App_SetDTVProg_ByChannelNum(uChnNo); } else #endif { if (hProg == AL_DB_INVALIDHDL) { AL_RecHandle_t hTpHdl = AL_DB_INVALIDHDL; AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl); if (hTpHdl != AL_DB_INVALIDHDL) { hProg = APP_DVB_PLAYBACK_GetFirstProgHdlofLowestService(); AL_DB_GetRecordType(hProg, &eNetType, &eServiceType); APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hProg); APP_DVB_Playback_SetNextServiceType(eServiceType); } } if (hProg == AL_DB_INVALIDHDL) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) { if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) #ifdef SUPPORT_CONSOLE_AUTO_TEST && !g_stFactoryUserData.uFacPMode #endif ) { DVBApp_ResetPopup_Channel(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY); } } } else { DBServAttrib_t stAttribute; memset(&stAttribute, 0, sizeof(stAttribute)); AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute); if(stAttribute.unStable == al_true) { DVBApp_RemoveUnstableService(); } else { _DVBApp_Zapping(eServiceType, hProg, TRUE, 0, TRUE); } /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/ if (!dParam) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)) { break; } } /*End*/ AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE) { #ifdef PLAY_VIDEO_FOR_ALLSRV if (DVBApp_CheckHasVideo() == FALSE) #else if (eServiceType == AL_RECTYPE_DVBRADIO) #endif { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); } if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL); } } else { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); #if 0 //zhongbaoxing removed for mantis 171528 @20120307 if (eServiceType == AL_RECTYPE_DVBRADIO) { if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState()) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); } #ifdef CONFIG_SUPPORT_MHEG5 if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) #endif { _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL); } } else #else if (eServiceType != AL_RECTYPE_DVBRADIO) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } #endif } } } } else { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) { if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY)) { DVBApp_ResetPopup_Channel(); if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY); DVBApp_CheckProgramType(FALSE); } } } } #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT DRV_Frontend_Connect_Type_t tPreFrontendType = FRONTEND_CONNECT_TYPE_MAX; if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_S)) { MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_GET_CONNECT_TYPE, (void *)&tPreFrontendType); if (tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S && tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S2) { MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_SET_S, NULL); } } #endif #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT DRV_Frontend_Connect_Type_t tPreFrontendType_t = FRONTEND_CONNECT_TYPE_MAX; FrontendCmd_t front; if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_T)) { front.cmd = FRONTEND_CMD_GET_CONNECT_TYPE; front.param = (void *)&tPreFrontendType_t; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); if (tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T && tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T2) { front.cmd = FRONTEND_CMD_SET_T; front.param = NULL; ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front); } } #endif #ifdef SUPPORT_DTV_SHOW_BLUESCREEN al_uint8 bMonitorState = al_false; al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if ((g_stSetupData.BlueScreen == APP_SWITCH_ON) &&((!bHasValidServ) ||!((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)))) { #ifdef CONFIG_DVB_SYSTEM APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE); #endif MID_DISP_DTVSetVideoMute(0,0,255); } #endif _DVBApp_CheckPopupDisplay(); } #ifdef CONFIG_SUPPORT_PVR if(DVBApp_GetPVRSwitchSRC()) { DVBApp_SetPVRSwitchSRC(FALSE); if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead { AL_Return_t ret; memset(&g_stDetails,0,sizeof(AL_PR_details_t)); ret = AL_PR_GetById(g_dReminderId, &g_stDetails); if (ret == AL_SUCCESS) { DVBApp_PVRRec_SetTimerCancle(); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stDetails); } } } #endif break; case APP_DVB_GLOBAL_EVENT_OBJECT_OPEN: if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam & 0XFFFF)) { #ifdef CONFIG_CI_SUPPORT if (((dParam & 0XFFFF) == DVB_GUIOBJ_CI_MENU) || ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ)) { UINT32 i; UINT8 CouldOpen = TRUE; for (i = 0; i < sizeof(g_CI_IgnoreGuiObjID) / sizeof(g_CI_IgnoreGuiObjID[0]); i++) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_IgnoreGuiObjID[i])) { CouldOpen = FALSE; if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU) && ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ)) { CouldOpen = TRUE; } } } if (CouldOpen == FALSE) { break; } for (i = 0; i < sizeof(g_CI_HideGuiObjID) / sizeof(g_CI_HideGuiObjID[0]); i++) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_HideGuiObjID[i])) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, g_CI_HideGuiObjID[i]); } } g_u32OldPopup = PLAYBACK_POPUP_NONE; _DVBApp_HidePopupDisplay(); if((dParam&0XFFFF) == DVB_GUIOBJ_CI_MENU) { _DVBApp_CloseAllMenu(); #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } extern Boolean APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist(void); if (APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist()) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO, APP_DVB_INTRA_EVENT_PVR_FILEPLAYINFO_HIDE_MENU, 0); } #endif } } #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dParam & 0XFFFF, dParam >> 16); } break; case APP_DVB_GLOBAL_EVENT_OBJECT_CLOSE: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, dParam); } break; case APP_DVB_GLOBAL_EVENT_CLOSE_POPUP: DVBApp_ClosePopup(dParam, UI_EVENT_NULL); break; case APP_DVB_GLOBAL_EVENT_EXIT_ALL_MENU: #ifdef CONFIG_CIPLUS_SUPPORT_PVR //CI MMI case, when PIN code is passed, do not close all UI. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) break; #endif _DVBApp_Exit_All_Menu(); break; #ifdef CONFIG_CI_SUPPORT case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ON_INIT: _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT); break; case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_INIT_OK: _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM)); _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT_OK); break; #ifndef CONFIG_TV_NEW_UI case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ERROR: _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_ERROR); break; #endif case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_REMOVED: _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM)); _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_REMOVED); break; #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card case APP_DVB_GLOBAL_EVENT_POPMSG_INFORM_USER_REMOVE_CAM: _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM); break; #endif case APP_DVB_GLOBAL_EVENT_CI_REDRAW_ALL_CAM: SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_ALL_CAM, dParam); break; case APP_DVB_GLOBAL_EVENT_CI_CAM_ON_INIT: SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam); break; case APP_DVB_GLOBAL_EVENT_CI_CAM_NOT_INSERT: SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_NOT_INSERT, dParam); break; case APP_DVB_GLOBAL_EVENT_CI_CAM_INIT_OK: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)) { DVBApp_ResetPopup_Channel(); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM)); SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_INIT_OK, dParam); break; case APP_DVB_GLOBAL_EVENT_CI_REDRAW_MENU: SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_MENU, dParam); break; #ifdef CONFIG_CIPLUS_SUPPORT case APP_DVB_GLOBAL_EVENT_CI_AUTH_PROGRESS: SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_AUTH_PROGRESS, dParam); break; #endif #endif case APP_GLOBAL_EVENT_OPEN_HOMEMODE: #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE) AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if((g_stUserInfoData.AutoInstalledHomeMode) &&(!g_stUserInfoData.AutoInstalled)) { if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) #ifdef CONFIG_SUPPORT_USB_UPGRADE &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) #endif ) { //Close all menu before show Auto Installation menu _DVBApp_CloseAllMenu(); #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetAutoTestOnOff() == FALSE) #endif { APP_GUIOBJ_AutoInstall_SetOpenHomeModeFlag(FALSE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, INSTALL_FROM_ONLYFORHOMEMODE); } } } #endif break; case APP_GLOBAL_EVENT_POPMSG_PWD: {dvb_printf("APP_GLOBAL_EVENT_POPMSG_PWD is received,Unlock success!!\n\n"); g_SetPQFlag = TRUE; APP_DVB_Playback_SetUnlock(TRUE); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState == AL_DVB_MONITOR_VALUE_INVAILED)//tuner locked { al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE; AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState); } SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0); if (APP_GetPlaybackPauseState() == TRUE) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { MID_PlaybackStreamPause(1); } } DVBApp_CheckProgramType(TRUE); #ifdef CONFIG_SUPPORT_MHEG5 dvb_printf("\n [set mheg5 flag] APP_GLOBAL_EVENT_POPMSG_PWD@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif #ifdef CONFIG_SUPPORT_PVR AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T; AL_RecHandle_t CurrentProgHandle; UINT32 CurrentTime; AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C) { DBType_Current = AL_DBTYPE_DVB_C; } else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T) { DBType_Current = AL_DBTYPE_DVB_T; } else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S) { DBType_Current = AL_DBTYPE_DVB_S; } CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA); AL_Time_GetCurTimeInSecs(&CurrentTime); if (CurrentProgHandle == g_stDetails.rem_details.handle && CurrentTime g_stDetails.start_local_time_secs) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), (UINT32)&g_stDetails); } #endif } break; case APP_DVB_GLOBAL_EVENT_START_PLAYBACK: SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0); break; case APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK: { MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL; AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX; AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL; if (AL_SUCCESS != APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType)) { dvb_printf("Get DBType error!!!\n"); break; } hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA)); if (hCurrPrgHdl == AL_DB_INVALIDHDL) { dvb_printf("Get current program handle error!!!\n"); break; } eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl); if((APP_DVB_ParentalLock_GetPrtRatinglock()) &&(eProgState != MID_PLAYBK_PROG_STATE_LOCKED)) { break; } } SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, dParam); break; #ifdef CONFIG_SUPPORT_PVR case APP_GLOBAL_EVENT_PVRREC_CHANGESOURCE: DVBApp_SetPVRSwitchSRC(FALSE); DVBApp_SetTVRadioSwap(FALSE); if (eServiceType != g_eRecType) { _DVBApp_Exit_All_Menu(); if (stoprec_id != AL_SCH_INVALID_ID) { AL_SCH_UnScheduleEvent(&stoprec_id); APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID(); } #if 0 //for mantis 199484/209573, don't return to the last program after timer record DVBApp_SetTVRadioSwap(TRUE); #endif if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS) { dvb_printf("PVRREC Change sevice type fail!!!!!!!!!!\n"); } } break; case APP_GLOBAL_EVENT_PVR_REMINDER: { PVR_DEBF("Reminder \n\n"); AL_Return_t ret; AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T; AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV; al_uint32 CurTimeInSec = 0; AL_Time_GetCurTimeInSecs(&CurTimeInSec); g_dReminderId = dParam; memset(&g_stDetails,0,sizeof(AL_PR_details_t)); ret = AL_PR_GetById(g_dReminderId, &g_stDetails); if (ret != AL_SUCCESS) { memset(&g_stDetails,0,sizeof(AL_PR_details_t)); dvb_printf("AL_PR_GetById Error\n"); break; } /*Only storage the current REC type for start prompted pop*/ DVBApp_SetRemType(g_stDetails.rem_type); DBType_ret = APP_DVB_Playback_GetCurrentNetType(); if (DBType_ret == g_stDetails.db_type) { /* if RF type diff, change RF type on APP_DVB_GLOBAL_EVENT_PVRSCH*/ //APP_WAKEUP_Recorder_SetTimeout(); AL_DB_GetRecordType(g_stDetails.rem_details.handle, &DBType_ret, &RecType); if (RecType == AL_RECTYPE_DVBTV) { g_eRecType = AL_RECTYPE_DVBTV; } else if (RecType == AL_RECTYPE_DVBRADIO) { g_eRecType = AL_RECTYPE_DVBRADIO; } } _DVBApp_CloseAllMenu(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER); } break; case APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM: _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM); break; case APP_DVB_GLOBAL_EVENT_PVR_EXPIRE: { //stop recording; AL_SCH_sched_id_t Stop_id = AL_SCH_INVALID_ID; AL_SCH_sched_id_t Schedule_id = dParam; AL_SCH_details_t sch_details; AL_SCH_GetScheduleDetails(&dParam, &sch_details); PVR_DEBF("hProg ================= 0x%x\n", sch_details.sch_user_para); PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__); PVR_DEBF("stop record is call\n"); Stop_id = stoprec_id; if (stoprec_id == AL_SCH_INVALID_ID) { Stop_id = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID(); } if (Schedule_id != Stop_id) { //if expire timer ID no match, ignor it. break; } else { //if duration is less then 5s, we will consider this stop timer is wrong INT32 g_RecTime; MID_RecorderGetStreamTime(&g_RecTime); if (g_RecTime < 5) { break; } } if (u8MidRecState != MID_REC_STATUS_STOP) { PVR_DEBF("==========timer stop recorder!====\n"); DVBApp_StopRecord(); } #if 0 //for mantis 199484, don't return to the last program after timer record AL_Return_t ret; AL_PR_details_t details; AL_DB_EDBType_t DBType = APP_DVB_Playback_GetCurrentNetType(); AL_SCH_sched_id_t ref_id = AL_PR_MAX_NO_REMINDERS; AL_SCH_sched_id_t ret_id_first = AL_PR_MAX_NO_REMINDERS; ret = AL_PR_Get(DBType, AL_PR_REC_FIRST, AL_PR_EVT_REM | AL_PR_SRV_REM, ref_id, &ret_id_first); if (ret == AL_SUCCESS) { AL_PR_GetById(ret_id_first, &details); /*if the comming minute will start recording, no need to change back to last channel*/ /*CurTimeInSec sometimes has a delay, so minus 2 sec here*/ if ((CurTimeInSec > details.start_local_time_secs - 60) && (CurTimeInSec - 2 < details.start_local_time_secs)) { break; } } if (DVBApp_GetTVRadioSwap() == TRUE) { _DVBApp_CloseAllMenu(); DVBApp_SetTVRadioSwap(FALSE); if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS) { dvb_printf("PVR EXPIRE Change sevice type fail!!!!!!!!!!\n"); } break; } if (g_ProgHandleB4Rec != 0) { _DVBApp_CloseAllMenu(); AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T; AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV; AL_DB_GetRecordType(g_ProgHandleB4Rec, &DBType_ret, &RecType); #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM) APP_RFType_en eRFType = APP_RF_TYPE_DVB_T; AL_DB_EDBType_t DBType_Current = APP_DVB_Playback_GetCurrentNetType(); if (DBType_Current != DBType_ret) { if (details.db_type == AL_DBTYPE_DVB_T) { eRFType = APP_RF_TYPE_DVB_T; } else if (details.db_type == AL_DBTYPE_DVB_C) { eRFType = APP_RF_TYPE_DVB_C; } else if (details.db_type == AL_DBTYPE_DVB_S) { eRFType = APP_RF_TYPE_DVB_S; } APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType, g_ProgHandleB4Rec); } else #endif { _DVBApp_Zapping(RecType, g_ProgHandleB4Rec, FALSE, 0, TRUE); } g_ProgHandleB4Rec = 0; } #endif } break; case APP_DVB_GLOBAL_EVENT_PVRSCH: { if (DVBApp_GetPVRSwitchSRC() == TRUE) { //resend the timer PVR start message if source change is not finish SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), dParam); return 0; } AL_PR_details_t details; memcpy((UINT8 *)&details, (UINT8 *)dParam, sizeof(AL_PR_details_t)); AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T; AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T; AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV; AL_RecHandle_t CurrentProgHandle; /* get remider program */ AL_DB_GetRecordType(details.rem_details.handle, &DBType_ret, &RecType); /* get current program handele */ AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C) { DBType_Current = AL_DBTYPE_DVB_C; } else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T) { DBType_Current = AL_DBTYPE_DVB_T; } else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S) { DBType_Current = AL_DBTYPE_DVB_S; } CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA); g_ProgHandleB4Rec = 0; if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY); } /* zap prog */ if (details.rem_details.handle != CurrentProgHandle) { PVR_DEBF("handle ==== 0x%x\n", details.rem_details.handle); PVR_DEBF(" CurrentProgHandle ==== 0x%x\n", CurrentProgHandle); g_ProgHandleB4Rec = CurrentProgHandle; if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC DVBApp_ResetPopup_Channel(); //close all menu before timer rec _DVBApp_CloseAllMenu(); g_ProgHandleB4Rec = 0; if (details.rem_type == AL_PR_SRV_REM) { if (u8MIDRecMode == MID_REC_MODE_MANUAL) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER); } break; } else { if (u8MIDRecMode == MID_REC_MODE_MANUAL) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC); } break; } #endif if (u8MIDRecMode == MID_REC_MODE_MANUAL) DVBApp_StopRecord(); else DVBApp_StopTimeshift(TRUE); } _DVBApp_CloseAllMenu(); #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM) APP_RFType_en eRFType = APP_RF_TYPE_DVB_T; if (DBType_Current != details.db_type) { if (details.db_type == AL_DBTYPE_DVB_T) { eRFType = APP_RF_TYPE_DVB_T; } else if (details.db_type == AL_DBTYPE_DVB_C) { eRFType = APP_RF_TYPE_DVB_C; } else if (details.db_type == AL_DBTYPE_DVB_S) { eRFType = APP_RF_TYPE_DVB_S; } APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType, details.rem_details.handle); } else #endif { _DVBApp_Zapping(RecType, details.rem_details.handle, FALSE, 0, FALSE); } if (details.rem_type == AL_PR_EVT_REM) { DVBApp_PVRDEMUX_SetTimerRECFLag(TRUE); } } /* recorder */ if (details.rem_type == AL_PR_EVT_REM) { DVBApp_ResetPopup_Channel(); //close all menu before timer rec _DVBApp_CloseAllMenu(); if (MID_RecorderIsCurRecording() == DRV_SUCCESS)//for spec, stop current recording and start timer rec { if (u8MIDRecMode == MID_REC_MODE_MANUAL) DVBApp_StopRecord(); else DVBApp_StopTimeshift(TRUE); } AL_DB_GetRecordsTotalNum(DBType_ret, RecType, &u32TotalNum); if (u32TotalNum == 0) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); } if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__); } else { AL_RecHandle_t hProg = AL_DB_INVALIDHDL; if (MID_PlaybackGetCurProgHandle(NULL, &hProg) != MID_SUCCESS) { PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__); PVR_DEBF("Error, get current program handle failed...\n"); hProg = AL_DB_INVALIDHDL; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(TRUE); _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime(); #ifdef DEMUX_CONTROL_TEST /*if DVBApp_PVRDEMUX_GetTimerRECFLag == FALSE * rec current program, * else * demux maybe don't start. so please wait... * see DVBApp_PVRDEMUX_GetTimerRECFLag == TRUE * */ if (DVBApp_PVRDEMUX_GetTimerRECFLag() == FALSE) { PVR_DEBF("\n\n\n[debug rec current program] %s %d\n\n\n",__FUNCTION__,__LINE__); DVBApp_PVRDEMUX_StartTimerREC(); } #else DVBApp_PVRDEMUX_StartTimerREC(); #endif //when event change, we must save it as soon as possible .for 0165167. by kai.wang AL_PR_Update(0, 0); //end AL_SCH_details_t sch_detail; al_uint32 CurTimeInSec = 0; //test AL_Time_GetCurTimeInSecs(&CurTimeInSec); memset(&sch_detail, 0, sizeof(AL_SCH_details_t)); sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH; sch_detail.sch_snooze = 0; /*when A event end time is B event start time, need take 5s to stop and start flow.*/ if (AL_PR_CheckEvtEndTime(details.rem_details.event_end_time_insec) == TRUE) { sch_detail.sch_time = details.rem_details.event_end_time_insec - 5; //for mantis 0156382 } else { sch_detail.sch_time = details.rem_details.event_end_time_insec; } sch_detail.sch_user_para = (al_uint32)hProg; printf("event_end_time_insec = %d\n", sch_detail.sch_time); printf("current time = %d\n", CurTimeInSec); AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null); APP_GUIOBJ_DVB_PvrRec_SetDurationTime(details.rem_details.event_end_time_insec - CurTimeInSec); //zhongbaoxing added for mantis 142788 @20110720 PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__); } } else { DVBApp_SetTVRadioSwap(FALSE); g_ProgHandleB4Rec = 0; #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if(APP_WAKEUP_GetBootFlag() == TRUE) { APP_WAKEUP_RealPowerUp(); } #endif } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift)); if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } } break; case APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE: #ifdef SUB_CUSTOMER_Tianle if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0); } #else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0); } #endif break; case APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE: AL_SCH_Handle_Time_Change(dParam); UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG; APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType); if ((POPMSG_CONFIRM_REC_REMIDER_TIME == u32PopMsgDialogType) ||(POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == u32PopMsgDialogType)) { al_uint32 CurTimeInSec = 0; if (AL_Time_GetCurTimeInSecs(&CurTimeInSec) == AL_SUCCESS) { if ((DVBApp_GetTimerRECStartTime() > CurTimeInSec+PR_NOTIFY_TIME_IN_SEC) ||(CurTimeInSec > DVBApp_GetTimerRECStartTime()+PR_NOTIFY_TIME_IN_SEC)) { //system time changed, cancle the REMINDER cut down pop _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED); } } } break; case APP_GLOGAL_EVENT_PVR_ASKFORSTANDBY: if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER, 0); } break; case APP_GLOGAL_EVENT_PVR_TIMESHIFT_STANDBY: _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY); break; case APP_GLOBAL_EVENT_PVR_INSERT_USB_POP: _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB); break; case APP_GLOBAL_EVENT_PVR_INVALID_USB_POP: _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB); break; case APP_GLOBAL_EVENT_PVR_INSERT_USB_CONFIRM: _DVBApp_CloseAllMenu(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB_CONFIRM); break; case APP_GLOBAL_EVENT_PVR_INVALID_USB_CONFIRM: _DVBApp_CloseAllMenu(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB_CONFIRM); break; #endif case FW_MONITOR_TUNER_LOCKED: dvb_printf(" FW_MONITOR_TUNER_LOCKED event received\n"); #ifdef DEMUX_CONTROL_TEST SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, FW_MONITOR_TUNER_LOCKED, 0); #else APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE); APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);//waitting for 3D function completed,then open video. #endif #ifdef CONFIG_SUPPORT_3D_EN UINT32 value = TV_IDS_String_On; _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value); DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET; UINT32 u32Mode = 0; AL_DB_ERecordType_t eRecordType; #if 1 Boolean bShowLogo = DTV_FALSE; bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState(); #endif MID_PlaybackGetCurProgHandle(&eRecordType, al_null); if ((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == TRUE)) { APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF); } else { MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt); if (DISP_3D_STATUS_RESET == e3DModeChangeSt) { APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF); } else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt) { APP_GUIOBJ_3DMenu_GetMode(&u32Mode); if(value == TV_IDS_String_On) { //set 3D mode to Off APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode); _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On); } else { APP_GUIOBJ_3DMenu_SetMode(u32Mode); } } else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt) { APP_GUIOBJ_3DMenu_GetMode(&u32Mode); if(value == TV_IDS_String_On) { if(u32Mode == TV_IDS_String_3DMODE_2D23D) { APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode); _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On); } else { if(bSet3DMode == DTV_TRUE) { bSet3DMode = DTV_FALSE; } else { APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF); } } //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On); } else if(u32Mode == TV_IDS_String_3DMODE_2D23D)//Force 2D is off { APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_2D23D); } else //if(u32Mode == TV_IDS_String_3DMODE_2D23D) { if(bSet3DMode == DTV_TRUE) { bSet3DMode = DTV_FALSE; } else { APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF); } } } } #endif /* modify by qinhe for mantis 0011315 */ //APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); //MID_DISP_DTVInformDisplayPipe(); #ifdef CONFIG_SUPPORT_PVR /*< modify by kai.wang*/ //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_GOOD); if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif //DVBApp_CheckProgramType(TRUE); /*close Standby menu*/ //AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO)) { if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO); if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE) { APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_ATV, (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP); } } } #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS) APP_SetTTXTimer(0); #endif #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } #endif break; case APP_GLOBAL_EVENT_CREATE_FATNET: if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0); } break; #ifdef CONFIG_SUPPORT_MHEG5 case APP_DVB_GLOBAL_EVENT_MHEG5_EXIST: case APP_DVB_GLOBAL_EVENT_MHEG5_NOT_EXIST: DVBApp_CheckProgramType(TRUE); break; case APP_DVB_GLOBAL_EVENT_MHEG5_BOOT_CAROUSEL_CHANGE: { al_bool bPsiMonState = FALSE; AL_RecHandle_t hCurrProgHdl = MID_PsiMonQueryCurrentProgHdl(); AL_PSI_Monitor_GetState(&bPsiMonState); if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { APP_DVB_Mheg5_Stop(MHEG5_STOP_ALL); APP_DVB_Mheg5_Start(0); } if (bPsiMonState) { AL_PSI_Monitor_Stop(FALSE, FALSE); if (hCurrProgHdl != AL_DB_INVALIDHDL) { AL_PSI_Monitor_Start(hCurrProgHdl, FALSE); } } } break; #ifdef CONFIG_SUPPORT_MHEG5_ICS case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_SHOW: AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if(g_stFeatureData.ChildLock == APP_SYSTEMLOCK_ON) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } else { MHEG5_ICS_NotifyGuidanceResponse(TRUE); } break; case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_HIDE: break; case APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: if(MHEG5_ICS_IsRunning() == FALSE) { if(dParam) { dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: show\n"); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } else { dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: hide\n"); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); } } break; #endif #endif case FW_MONITOR_TUNER_UNLOCKED: //MID_PlaybackStartAVChannel(eServiceType, hProg); #ifdef CONFIG_QSD // To echo message with DTV has no signal for chip test using. con_dbg_echo('G', 'O'); con_dbg_echo('O', 'D'); #endif dvb_printf(" FW_MONITOR_TUNER_UNLOCKED event received\n"); if (APP_GUIOBJ_DVB_Playback_GetZappingState()) { APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE); } DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL); /* reset set unmute flag */ bSetUnMuteFlag = FALSE; g_bMidHasUnmute = FALSE; g_SetPQFlag = FALSE; //g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED; #ifdef SUPPORT_DTV_SHOW_BLUESCREEN g_bIsBlueScreen = FALSE; #endif { AL_DB_ERecordType_t eRecordType; if (MID_SUCCESS == MID_PlaybackGetCurProgHandle(&eRecordType, al_null)) { if (eRecordType == AL_RECTYPE_DVBTV) { if ((MID_PlaybackIsPauseState() == 0) #ifdef CONFIG_SUPPORT_PVR && (DRV_SUCCESS != MID_RecorderIsCurRecording()) && (!MID_TSPLParser_GetThreadState()) #endif ) { //zhongbaoxing added for mantis 0166730 @20120224 APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType); //MID_PlaybackClearScreenNow(); //note: this function is no use anymore because of the bandwidth issue. } #ifdef CONFIG_SUPPORT_3D_EN APP_StorageSource_Type_t eStorageSourTypeT = APP_STORAGE_SOURCE_MAX; eStorageSourTypeT = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType); UINT32 value = TV_IDS_String_On; _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value); DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET; UINT32 u32Mode = 0; MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt); if (DISP_3D_STATUS_RESET == e3DModeChangeSt) { APP_GUIOBJ_3DMenu_GetMode(&u32Mode); if(bSet3DMode == DTV_TRUE) { bSet3DMode = DTV_FALSE; } else { switch(u32Mode) { case TV_IDS_String_3DMODE_OFF: case TV_IDS_String_3DMODE_AUTO: case TV_IDS_String_3DMODE_2D23D: case TV_IDS_String_3DMODE_SBS3D: case TV_IDS_String_3DMODE_SBSH3D: case TV_IDS_String_3DMODE_TAB3D: case TV_IDS_String_3DMODE_FP3D: u32Mode = SPAL_PQ_3DMODE_OFF; break; default: u32Mode = SPAL_PQ_3DMODE_OFF; break; } //APP_GUIOBJ_3DMenu_SetMode(u32Mode); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); } } else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt) { APP_GUIOBJ_3DMenu_GetMode(&u32Mode); if(value == TV_IDS_String_On) { //set 3D mode to Off // _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D), &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D)); } else { //dvb_printf("\n\n\n\n@@@@@@DTV No signal Always On\n\n\n"); switch(u32Mode) { case TV_IDS_String_3DMODE_OFF: u32Mode = SPAL_PQ_3DMODE_OFF; break; case TV_IDS_String_3DMODE_AUTO: u32Mode = SPAL_PQ_3DMODE_ATUO; break; case TV_IDS_String_3DMODE_2D23D: u32Mode = SPAL_PQ_3DMODE_2D3D; break; case TV_IDS_String_3DMODE_SBS3D: u32Mode = SPAL_PQ_3DMODE_SBS3D; break; case TV_IDS_String_3DMODE_TAB3D: u32Mode = SPAL_PQ_3DMODE_TAB3D; break; case TV_IDS_String_3DMODE_FP3D: u32Mode = SPAL_PQ_3DMODE_FP3D; break; default: u32Mode = SPAL_PQ_3DMODE_ATUO; break; } //APP_GUIOBJ_3DMenu_SetMode(u32Mode); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); } } else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt) { APP_GUIOBJ_3DMenu_GetMode(&u32Mode); if(value == TV_IDS_String_On) { //set 3D mode to Off //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D), &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D)); } else if(u32Mode != TV_IDS_String_3DMODE_2D23D) { //APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_OFF; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); } else { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_2D3D; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D), sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D)); } } #endif } } } #ifdef CONFIG_SUPPORT_PVR /*< modify by kai.wang*/ //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_BAD); if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif //if (APP_Area_SupportDtg()) if(APP_Get_DTVHiddenScanState()!=TRUE) { AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType(); AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA)); AL_PSI_Monitor_Stop(FALSE, FALSE); if (hCurrProgHdl != AL_DB_INVALIDHDL) { AL_PSI_Monitor_Start(hCurrProgHdl, FALSE); } } if (APP_GetPlaybackPauseState() == TRUE) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (g_stUserInfoData.Subtitle == APP_SWITCH_ON) { #ifdef CONFIG_DTV_SUPPORT AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX; if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE) { AL_Subtitle_SetFreeze(FALSE); } #endif } #endif } #ifdef CONFIG_SUPPORT_TTX #ifndef CONFIG_SUPPORT_TTX_DISP_FOR_AUS if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } AL_TTX_Reset(); #else APP_SetTTXTimer(80);//8s #endif #endif if (stDvbInst.bAppState != SYSTEM_RUNNING) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD); } #ifdef CONFIG_SUPPORT_SUBTITLE if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); } #endif #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME); } #endif if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection) { DVBApp_CheckProgramType(FALSE); } else { DVBApp_CheckProgramType(TRUE); } #ifdef AC_ON_AUTO_GET_TIME if (g_fBackgroundGetTime == TRUE) { APP_WAKEUP_SetBootFlag(FALSE); dvb_printf("\n ----- tuner unlock, back ground get time fail!!!\n"); MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } #endif break; case FW_EPG_NOWNEXT_UPDATE_EVENT: g_bForceProcessEventCbk = FALSE; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if(g_stFeatureData.ChildLock) { #if 0 //add for 0196870 if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } } #endif al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) { UINT8 rating = 0; AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL; al_uint16 usServiceId = 0xffff; al_uint16 usOrigNetId = 0xffff; al_uint16 usTsId = 0xffff; AL_Event_Details_t event_cur; memset(&event_cur, 0, sizeof(AL_Event_Details_t)); MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHdl); AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId); AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId); AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId); AL_Event_GetCurrNextEventsForCurrRating(eNetType, usOrigNetId, usTsId, usServiceId, &event_cur, NULL); rating = event_cur.event_rating; APP_DVB_ParentalLock_GetValidParentalRating(&rating); if(APP_DVB_ParentalLock_CheckPrtRating(&rating)) { APP_DVB_Playback_SetUnlock(FALSE); APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); #ifndef PLAY_VIDEO_FOR_ALLSRV if (eServiceType == AL_RECTYPE_DVBRADIO) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF)); } else #endif { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, (PLAYBACK_STOP_SUBTITLE|PLAYBACK_STOP_MHEG5)); } /*#ifdef SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE) { DVBApp_StopTimeshift(FALSE); } #else DVBApp_StopRecord(); #endif } else { #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not DVBApp_StopTimeshift(FALSE); #else DVBApp_StopTimeshift(TRUE); #endif } } #endif*/ if (!APP_MenuMgr_Exist_Main_Menu()) { UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG; APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType); if((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE) /*#ifdef SUPPORT_PVR && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT) && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC) && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT) #endif*/ ) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } } } } } if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND, FW_EPG_NOWNEXT_UPDATE_EVENT, 0); } else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_EPG, FW_EPG_NOWNEXT_UPDATE_EVENT, 0); } else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, FW_EPG_NOWNEXT_UPDATE_EVENT, 0); } break; case FW_MONITOR_STREAM_NO_DATA: dvb_printf(" FW_MONITOR_STREAM_NO_DATA event received\n"); /* reset set unmute flag */ g_UnsupportVideo = FALSE; g_bNoSteamData = TRUE; bSetUnMuteFlag = FALSE; g_bMidHasUnmute = FALSE; g_SetPQFlag = FALSE; #ifdef SUPPORT_DTV_SHOW_BLUESCREEN g_bIsBlueScreen = FALSE; #endif /* add by qin.he on 2014/07/22 for mantis 23864 */ #ifndef CONFIG_DTMB_SYSTEM if(APP_Get_DTVHiddenScanState()!=TRUE) { AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType(); AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA)); AL_PSI_Monitor_Stop(FALSE, FALSE); if (hCurrProgHdl != AL_DB_INVALIDHDL) { AL_PSI_Monitor_Start(hCurrProgHdl, FALSE); } } #endif if(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE) { break; } #ifdef CONFIG_SUPPORT_MHEG5 if ((APP_Area_SupportDtg()) && (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED)) { break; } else #endif #ifdef CONFIG_CIPLUS_SUPPORT if (MID_DTVCI_GetAppMMIStatus()) { break; } else #endif { #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif if (APP_GetPlaybackPauseState() == TRUE) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (g_stUserInfoData.Subtitle == APP_SWITCH_ON) { #ifdef CONFIG_DTV_SUPPORT AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX; if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE) { AL_Subtitle_SetFreeze(FALSE); } #endif } #endif } DVBApp_CheckProgramType(TRUE); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL); } break; case FW_MONITOR_STREAM_UNSUPPORT_DATA: g_UnsupportVideo = TRUE; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if (g_stUserInfoData.Mute == FALSE) { APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__); break; } APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE); #endif g_bNoSteamData = FALSE; #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif DVBApp_CheckProgramType(TRUE); #ifndef PLAY_VIDEO_FOR_ALLSRV if (eServiceType == AL_RECTYPE_DVBRADIO) { //DVBApp_CheckProgramType(TRUE); } else #endif { APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR) { #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif } #ifdef CONFIG_SUPPORT_INDONESIA_EWS if(DVBApp_GetReciveEWS()) { DVBApp_SetReciveEWS(FALSE); SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_INDONESIA_EWS_UPDATE|PASS_TO_SYSAPP, 0); } #endif break; case FW_MONITOR_STREAM_INVALID_DATA: g_UnsupportVideo = FALSE; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); #ifdef CONFIG_SUPPORT_PVR #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if (APP_WAKEUP_GetBootFlag() == TRUE) { APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX); } else #endif #endif { if (g_stUserInfoData.Mute == FALSE) { APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } } case FW_MONITOR_STREAM_HAS_DATA: g_UnsupportVideo = FALSE; dvb_printf(" FW_MONITOR_STREAM_HAS_DATA event received\n"); #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__); break; } APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE); #endif g_bNoSteamData = FALSE; #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif DVBApp_CheckProgramType(TRUE); #ifndef PLAY_VIDEO_FOR_ALLSRV if (eServiceType == AL_RECTYPE_DVBRADIO) { //DVBApp_CheckProgramType(TRUE); } else #endif { APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR) { #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif } break; case FW_MONITOR_PARENTAL_LOCKED: dvb_printf("FW_MONITOR_PARENTAL_LOCKED received!!\n"); #ifdef SUPPORT_DTV_SHOW_BLUESCREEN g_bIsBlueScreen = FALSE; #endif g_bMidHasUnmute = FALSE; if (APP_GUIOBJ_DVB_Playback_GetPlayState() == TRUE) { APP_DVB_ParentalLock_SetPrtRatinglock(TRUE); #ifndef PLAY_VIDEO_FOR_ALLSRV if (eServiceType == AL_RECTYPE_DVBRADIO ) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP), ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF )); } else #endif { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP), ( PLAYBACK_STOP_SUBTITLE |PLAYBACK_STOP_MHEG5 )); } #ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE) { DVBApp_StopTimeshift(FALSE); } #else DVBApp_StopRecord(); #endif } else { #ifdef SUPPORT_SPEC_PVR_RECORD//TEAC allow record while the program locked, however the others did not DVBApp_StopTimeshift(FALSE); #else DVBApp_StopTimeshift(TRUE); #endif } } #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif #endif if (APP_GetPlaybackPauseState() == TRUE) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (g_stUserInfoData.Subtitle == APP_SWITCH_ON) { #ifdef CONFIG_DTV_SUPPORT AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX; if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE) { AL_Subtitle_SetFreeze(FALSE); } #endif } #endif } DVBApp_CheckProgramType(TRUE); } break; case FW_MONITOR_PARENTAL_UNLOCKED: dvb_printf("FW_MONITOR_PARENTAL_UNLOCKED is received!!\n"); g_SetPQFlag = TRUE; APP_DVB_ParentalLock_SetPrtRatinglock(FALSE); if (APP_GUIOBJ_DVB_Playback_GetPlayState() == FALSE) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0); } DVBApp_CheckProgramType(TRUE); #ifdef CONFIG_SUPPORT_MHEG5 DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif break; case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE: dvb_printf("FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE is received!!\n"); g_bScrambleFlag = PROG_STATUS_ONLY_AUDIO_SCRAMBLED; g_bNoSteamData = FALSE; DVBApp_CheckProgramType(TRUE); break; case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE: g_UnsupportVideo = FALSE; #ifdef CONFIG_CI_SUPPORT if (IsCAMExist()==FALSE) { printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,No CAM Inserted!\n\n"); g_bNoSteamData = FALSE; { #ifdef CONFIG_SUPPORT_TTX if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL); } #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED; DVBApp_CheckProgramType(TRUE); } else { printf("\n\n\n\nYibin.wang F=%s,L=%d==============================\n\n\n\n",__FUNCTION__,__LINE__); printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,CAM Inserted,Waiting 1sec!\n\n"); g_Audio_Scramble_Counter = AUDIO_SCRAMBLE_COUNT; } #else //CONFIG_CI_SUPPORT { printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,No CAM Inserted!\n\n"); g_bNoSteamData = FALSE; { #ifdef CONFIG_SUPPORT_TTX if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL); } #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED; DVBApp_CheckProgramType(TRUE); } #endif break; case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE: printf("\n\n\nFW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE is received!!\n\n"); g_bNoSteamData = FALSE; g_UnsupportVideo = FALSE; { #ifdef CONFIG_SUPPORT_TTX if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL); } #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif g_bScrambleFlag = PROG_STATUS_AUDIO_VIDEO_SCRAMBLED; DVBApp_CheckProgramType(TRUE); break; case FW_MONITOR_SERVICE_NO_SCRAMBLE: printf("\n\n\nFW_MONITOR_SERVICE_NO_SCRAMBLE is received!!\n\n"); #ifdef CONFIG_CIPLUS_SUPPORT if (APP_CIPLUS_IsProfileSource()) { if (g_isMute) { break; } } #endif #ifdef CONFIG_CI_SUPPORT if (g_Audio_Scramble_Counter!=0) { g_VIP_FINISH_Flg = TRUE; g_Audio_Scramble_Counter = 0; } #if 1 else { if (g_VIP_FINISH_Flg==TRUE) { g_VIP_FINISH_Flg = FALSE; } } #endif #endif g_bNoSteamData = FALSE; g_bScrambleFlag = PROG_STATUS_SCRAMBLE_CLEAR; DVBApp_CheckProgramType(TRUE); #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif /*add by xm.zeng on 2013/9/23. sometimes the video is freezed, subtitle is updated.*/ if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef CONFIG_SUPPORT_MHEG5 printf("\n [set mheg5 flag] FW_MONITOR_SERVICE_NO_SCRAMBLE@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif } break; case FW_MONITOR_AUDIO_UPDATE: dvb_printf("FW_MONITOR_AUDIO_UPDATE is received!!\n"); APP_GUIOBJ_DVB_MultiAud_Update(MULTIAUDIO_UPDATE); #ifdef CONFIG_SUPPORT_PVR if (APP_GUIOBJ_DVB_PvrRec_PidRemap() != PVR_MSG_SUCCESS) { dvb_printf("\n MultiAud_Update to remap pid fail!!!\n"); } #endif DVBApp_CheckProgramType(TRUE); break; case FW_MONITOR_TELETEXT_UPDATE: dvb_printf("FW_MONITOR_TELETEXT_UPDATE is received !!\n\n"); #ifdef CONFIG_SUPPORT_TTX eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); #ifndef PLAY_VIDEO_FOR_ALLSRV if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO) { break; } else #endif { /**< get digital TTX language index from EEPROM */ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang), sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang)); pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT); if(pref_iso639 == al_null) { pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT); } if((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))) { break; } if(AL_TTX_Stop() == AL_SUCCESS) { AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639); } #ifdef CONFIG_SUPPORT_SUBTITLE /**< get current subtitle on/off status from EEPROM */ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if(g_stUserInfoData.Subtitle == 1) { MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE; progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL); /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/ if((progstate != MID_PLAYBK_PROG_STATE_NORMAL) && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC) && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)) { break; } if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB); } } #endif } #endif break; case FW_MONITOR_SUBTITLE_UPDATE: dvb_printf(" FW_MONITOR_SUBTITLE_UPDATE is received !!\n\n"); #ifdef CONFIG_SUPPORT_SUBTITLE eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); #ifndef PLAY_VIDEO_FOR_ALLSRV if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO) { break; } else #endif { /**< get current subtitle on/off status from EEPROM */ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if(g_stUserInfoData.Subtitle == 1) { MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE; progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL); /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/ if((progstate != MID_PLAYBK_PROG_STATE_NORMAL) && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC) && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)) { break; } #ifdef CONFIG_SUPPORT_TTX if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))) #endif { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB); } } } #endif break; case APP_DVB_GLOBAL_EVENT_OSD2_UPDATE: dvb_printf("APP_DVB_GLOBAL_EVENT_OSD2_UPDATE is received!!\n\n"); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked { al_uint8 u8DVBMonState = AL_DVB_MONITOR_VALUE_TRUE; AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &u8DVBMonState); } #ifdef CONFIG_SUPPORT_PVR if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { break; } #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE | OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB); break; //zhongbaoxing added for mantis 0164871 @20120105 +++ #ifdef CONFIG_SUPPORT_MHEG5 case APP_DVB_GLOBAL_EVENT_CLEAR_POPUP: if (TRUE == APP_DVB_Mheg5_GetMheg5DisplayStatus()) { AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked { al_uint8 DVBMonState = AL_DVB_MONITOR_VALUE_TRUE; AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &DVBMonState); } } DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); break; #endif #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5) case APP_DVB_GLOBAL_EVENT_CI_START_MHEG5: { dvb_printf("APP_DVB_GLOBAL_EVENT_CI_START_MHEG5\n"); APP_DVB_Mheg5_SetMheg5DisplayStatus(TRUE); } break; case APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5: { dvb_printf("APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5\n"); APP_SETTING_UserInfo_t stUserInfoData; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData)); /* Stop MHEG Engine if it's enabled */ if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5); } /* Enable Subtitle if it was open */ if (stUserInfoData.Subtitle) { dvb_printf("Turn on subtitle\n"); DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB); } /* Enable Subtitle OSD if is was disable */ mid_sub_dtv_show(1); /* Reset variable */ APP_DVB_Mheg5_SetMheg5DisplayStatus(FALSE); } break; case APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS: { dvb_printf("APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS\n"); DVBApp_ApplyAppMMIDisplay(); } break; case APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE: { dvb_printf("APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE\n"); DVBApp_ApplyAppMMIDisplay(); } break; #endif #ifdef CONFIG_SUPPORT_MHEG5 case FM_DTV_AUDIO_STARTED: case FM_DTV_AUDIO_SAMPLE_STOPPED: case FM_DTV_AUDIO_STOPPED: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, 0); } break; #endif case FW_MONITOR_SERTYPE_CHANGED: MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle); if (hCurrProgHandle != AL_DB_INVALIDHDL) { AL_DB_ERecordType_t eSrvType = (AL_DB_ERecordType_t)dParam; APP_DVB_Playback_SetCurrServiceType(eNetType, eSrvType); APP_DVB_Playback_SetCurrentProgHandle(eNetType,eSrvType,hCurrProgHandle); } _DVBApp_SendServRefleshMsg(); SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_MONITOR_UPDATE_SERVICE,0); break; case FW_MONITOR_REMOVE_SERVICE: //_DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_REMOVE); if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME) #ifdef CONFIG_SUPPORT_PVR || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT) #endif ) { if(DVBApp_GetUnstableState() == FALSE) { DVBApp_SetUnstableState(TRUE); } dvb_printf("Post Process The Unstable Services\n\n"); break; } DVBApp_RemoveUnstableService(); // here not break case FW_MONITOR_ADD_SERVICE: case FW_MONITOR_UPDATE_SERLCN: //_DVBApp_ShowPopup(DVB_APP_POP_MSG_NEW_SERVICE); #ifdef SUPPORT_LCN /* force process LCN if added service by PSI Monitor */ #ifdef SUPPORT_DVBS_LCN if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S) #else if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C) #endif { DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel(); LCN_PreJudgeLCN(); LCN_QueryLCNConflict(pLcnConf); if (pLcnConf->ConfCount > 0) { LCN_AutoAssignConflictLCN(); } LCN_PostJudgeLCN(); } #endif APP_DVB_ChannelOrderChecking(); APP_DVB_DataSavingToDB(eNetType); _DVBApp_SendServRefleshMsg(); break; #ifdef SUPPORT_DYNAMIC_MULTIPLEXES case FW_MONITOR_OTHERTP_SERVICE_FOUND: { UINT16 u16Num; AL_PSI_Monitor_GetOtherTpServList(NULL,NULL,&u16Num); _DVBApp_ShowPopup(DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE); } break; #endif case FW_MONITOR_SERVICE_MOVE: _DVBApp_ServiceMove(); break; case FW_MONITOR_REPLACE_SERVICE: { dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__); AL_RecHandle_t hReplaceProg = AL_DB_INVALIDHDL; hReplaceProg = (AL_RecHandle_t)dParam; _DVBApp_Zapping(eServiceType, hReplaceProg, TRUE, FW_MONITOR_REPLACE_SERVICE, TRUE); } break; case FW_MONITOR_REPLACE_SIMULCASE_SERVICE: dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SIMULCASE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__); _DVBApp_SimulcaseDispose(dParam); break; #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY case FW_MONITOR_TS_CHANGED: dvb_printf("[%s:%d] FW_MONITOR_TS_CHANGED !!!!!!!!!!!!!!!!\n\n",__FUNCTION__,__LINE__); #ifdef CONFIG_SUPPORT_PVR if (MID_REC_MODE_MANUAL == u8MIDRecMode) { DVBApp_StopRecord(); } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) || (MID_REC_MODE_AUTO == u8MIDRecMode)) { DVBApp_StopTimeshift(TRUE); if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } } #endif if(APP_Get_DTVHiddenScanState()!=TRUE) { if (APP_MenuMgr_Exist_Factory_Menu()) { APP_MenuMgr_Exit_Factory_Menu(); } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); #ifdef CONFIG_DVB_SYSTEM if((g_stChannelData.Country == AREA_NORWAY) && ((dParam & 0xFFFF) != 0x2242)) { dvb_printf("[%s:%d]no scan for ts change , county = %d, OriNetId = 0x%x \n",__FUNCTION__,__LINE__,g_stChannelData.Country,dParam); break; } #endif if(APP_Get_DTVTSChangeNeedScanState(dParam)!=TRUE) { dvb_printf("[%s:%d]no scan for ts change ,\n",__FUNCTION__,__LINE__); break; } APP_DTV_ScanProcess_TSChange(); } break; #endif case FW_MONITOR_NEW_TSID: //case UI_EVENT_RED: /* pop up msg for user to start channel search */ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); #ifdef CONFIG_DVB_SYSTEM if (AREA_NORWAY == g_stChannelData.Country) { _DVBApp_Exit_All_Menu(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_UPDATE_TSID); } #endif //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, FW_MONITOR_NEW_TSID, 0); break; case FW_MONITOR_TIME_UPDATE: { al_uint32 TimeInSec = 0; AL_Time_t time; memset(&time, 0, sizeof(time)); AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day); AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec); AL_Time_DateToSecs(&time, &TimeInSec); tv_SetBaseTimetoSystem(TimeInSec); } #ifdef CONFIG_SUPPORT_PVR #ifdef SUB_CUSTOMER_Tianle if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, APP_GLOBAL_EVENT_REFRESH_DATA, 0); } #else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, APP_GLOBAL_EVENT_REFRESH_DATA, 0); } #endif #endif break; case FW_MONITOR_FIND_NEW_TPLIST: { /* got the freq list which need tune */ dvb_printf("Receive Freq change msg from afw! dvb_app received message which notice PSI Monitor has found some new freqs which need tune!!!!!!\n"); _DVBApp_Exit_All_Menu(); APP_DTV_ScanSetFreqList(dParam); APP_GUIOBJ_ScanProcess_SetCurrentSearchMode(SEARCH_D_FULL_FREQ_LIST_MODE); APP_DTV_ScanProcess_Start(SEARCH_D_FULL_FREQ_LIST_MODE); } break; case APP_DVB_GLOBAL_EVENT_NO_SIGNAL: #ifdef CONFIG_QSD // TV doesn't need to show no signal osd for qsd chip test. return 0; #endif DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL); if (MID_PlaybackIsPauseState() == 0) // move to here for mantis 0158116 { #ifndef SUPPORT_DTV_SHOW_BLUESCREEN //MID_PlaybackClearScreenNow(); #endif } #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif #if 0 if(APP_Get_DTVHiddenScanState()!=TRUE) { MID_PsiMonStop(FALSE); MID_PsiMonStart(); } #else if(APP_Get_DTVHiddenScanState()!=TRUE) { AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType(); AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA)); AL_PSI_Monitor_Stop(FALSE, FALSE); if (hCurrProgHdl != AL_DB_INVALIDHDL) { AL_PSI_Monitor_Start(hCurrProgHdl, FALSE); } } #endif /* if TT Menu exist, first close it */ #ifdef CONFIG_SUPPORT_TTX if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } #endif if (stDvbInst.bAppState != SYSTEM_RUNNING) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } #ifdef CONFIG_SUPPORT_SUBTITLE if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); } #endif if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } #ifdef SUPPORT_DTV_SHOW_BLUESCREEN if (g_stSetupData.BlueScreen == APP_SWITCH_ON) { g_bIsBlueScreen = TRUE; } #endif DVBApp_CheckProgramType(TRUE); break; case APP_GLOBAL_EVENT_SET_UNMUTE: { AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); if (eServiceType == AL_RECTYPE_DVBRADIO || eServiceType == AL_RECTYPE_DVBDATA) { APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } else { APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } break; } case APP_DVB_GLOBAL_EVENT_SET_UNMUTE: dvb_printf(" APP_DVB_GLOBAL_EVENT_SET_UNMUTE event received\n"); /* dtv, search all, when switch to scan analog, tvfe will send show snow525, * but current source is dtv, so FormatChangeCallback() will send this message, * judge here, when scan, do nothing, has side effect? */ if (!AL_CS_IsStop()) { break; } #if 0//shiting.liao mark for 0020236:stop mheg5 ts,first show "no signal",then program stop at last picture /* add by qinhe for signal present message received too late */ { MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL; progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL); if ((g_bNoSteamData == FALSE) && (progstate != MID_PLAYBK_PROG_STATE_TEMP_SERVICE) && (progstate != MID_PLAYBK_PROG_STATE_NOT_RUNNING)) { al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE; AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState); } } #endif if ((APP_SOURCE_DTV == eMidSourType) || (APP_SOURCE_RADIO == eMidSourType)) { g_bMidHasUnmute = TRUE; bSetUnMuteFlag = TRUE; DVBApp_CheckProgramType(TRUE); if(APP_SOURCE_DTV == eMidSourType) { #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5) DVBApp_ApplyAppMMIDisplay(); #endif } } break; case APP_DVB_GLOBAL_EVENT_SERVICE_NOT_AVAILABLE_CLEAR: #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL); } #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg()) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5); } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif DVBApp_CheckProgramType(TRUE); break; case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT: case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT_CLEAR: case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK: case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK_CLEAR: case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE: case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE_CLEAR: #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif if (g_bMidHasUnmute) //zhongbaoxing added for mantis 0150118 @20110905 { DVBApp_CheckProgramType(TRUE); } break; #if 0 //Have been the new approach to replace. case APP_DVB_GLOBAL_EVENT_SCRAMBLE: g_bScrambleFlag = PROG_STATUS_SCRAMBLED; #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_START) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif DVBApp_CheckProgramType(TRUE); break; case APP_DVB_GLOBAL_EVENT_SCRAMBLE_CLEAR: g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW; #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); } _DVBApp_Recorder_PauseResume(); #endif if (g_bMidHasUnmute) { DVBApp_CheckProgramType(TRUE); } break; #endif case FW_MONITOR_UPDATE_SERVICE: #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState != MID_REC_STATUS_STOP) { AL_RecHandle_t hProg = 0; AL_DB_EDBType_t DBType = AL_DBTYPE_MAX; AL_ServiceDetail_t stServInfo; APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType); hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA); if (AL_SUCCESS == AL_DB_QueryDetail(hProg, (al_void *)&stServInfo)) { if (DBType == AL_DBTYPE_DVB_T) { if (stServInfo.stDVBTServ.stProgAttrib.scramble == al_true) { if (MID_RecorderState() == MID_REC_STATUS_START) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } else { if (MID_RecorderState() == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } } else if (DBType == AL_DBTYPE_DVB_C) { if (stServInfo.stDVBCServ.stProgAttrib.scramble == al_true) { if (MID_RecorderState() == MID_REC_STATUS_START) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } else { if (MID_RecorderState() == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } } else if (DBType == AL_DBTYPE_DVB_S) { if (stServInfo.stDVBSServ.stProgAttrib.scramble == al_true) { if (MID_RecorderState() == MID_REC_STATUS_START) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } else { if (MID_RecorderState() == MID_REC_STATUS_PAUSE) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); } } } } } #endif break; #ifdef SUPPORT_CONAX_CAS case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS: _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS); break; case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_GEOGRAPHICAL_BLOCKOUT: _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT); break; case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_NETWORKBLOCK: _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK); break; case APP_DVB_GLOBAL_EVENT_CONAX_CA_ORDER: case APP_DVB_GLOBAL_EVENT_CONAX_CA_ACCEPT_VIEW: case APP_DVB_GLOBAL_EVENT_CONAX_CA_TOKEN_ACCESS: case APP_DVB_GLOBAL_EVENT_CONAX_CA_MATURITY_LOCK: if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); } #ifdef CONFIG_CI_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU); } #endif _DVBApp_HidePopupDisplay(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM, dMessage); } break; case APP_DVB_GLOBAL_EVENT_CONAX_CA_HAVE_MESSAGE: if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); } #ifdef CONFIG_CI_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU); } #endif DVBApp_HidePopupDisplay(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP, dMessage); } break; #endif #ifdef SUPPORT_CEC_TV case APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS: CECTV_HDMIPortStatus(dParam); break; #endif #if defined(CONFIG_HEADPHONE_DETECT_BY_ISR) || defined(CONFIG_HPDET_BY_SWTIMER) case APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN: APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugIn); APP_Audio_SetMuteSpeakerWithoutAMP(TRUE); APP_Audio_SetMuteAMP(TRUE); #ifdef SUPPORT_GPIO_HPDET APP_Audio_SetMuteDACSpeak(FALSE); APP_Audio_Set_HPMuteGpio(TRUE); #else APP_Audio_SetMuteDACSpeak(TRUE); #endif APP_Audio_SetMuteDACHeadohone(FALSE); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); bHasValidServ = AL_DB_HasVisibleService(eNetType); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER) { #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if (APP_WAKEUP_GetBootFlag() == FALSE) #endif { APP_Audio_SetMuteSpeakerWithoutAMP(FALSE); } } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0, sizeof(APP_SETTING_Variational_t), &(g_stVariationalData)); APP_Audio_SetVolume(g_stVariationalData.Volume); break; case APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT: APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugOut); #ifdef SUPPORT_GPIO_HPDET APP_Audio_Set_HPMuteGpio(FALSE); #endif APP_Audio_SetMuteDACHeadohone(TRUE); APP_Audio_SetMuteSpeakerWithoutAMP(TRUE); APP_Audio_SetMuteDACSpeak(FALSE); APP_Audio_SetMuteAMP(FALSE); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); bHasValidServ = AL_DB_HasVisibleService(eNetType); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER) { #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if (APP_WAKEUP_GetBootFlag() == FALSE) #endif { APP_Audio_SetMuteSpeakerWithoutAMP(FALSE); } } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0, sizeof(APP_SETTING_Variational_t), &(g_stVariationalData)); APP_Audio_SetVolume(g_stVariationalData.Volume); break; #endif #ifdef CONFIG_QSD case APP_GLOBAL_EVENT_QSD_MEDIA_PLAY: { _DVBApp_CloseAllMenu(); DVBApp_ResetPopup_Channel(); void MM_MediaQsd_SetTestFlag(BOOLEAN bFlag, UINT32 dParam); MM_MediaQsd_SetTestFlag(TRUE, dParam); #ifdef CONFIG_MULTIMEDIA1_SUPPORT { MediaSourceNumber_e MediaType = 0; UINT8 u8Port; int i32Cnt = MID_PartitionList_GetMountedCount(); if (i32Cnt > 0) { u8Port = MID_PartitionList_GetMountPort(0); extern MediaSourceNumber_e MM_HomePage_GetMediaSourceNumberbyPort(UINT8 u8Port); MediaType = MM_HomePage_GetMediaSourceNumberbyPort(u8Port); if (MediaType == MEDIA_ONE) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA); } else if (MediaType == MEDIA_TWO) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA1); } } } #else APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA); #endif } break; case APP_GLOBAL_EVENT_QSD_SET_SOURCE: _DVBApp_CloseAllMenu(); DVBApp_ResetPopup_Channel(); APP_GUIOBJ_Source_SetAppSource(dParam); break; #endif case UI_EVENT_MENU: AutoUpgrade = FALSE; if (APP_MenuMgr_Exist_Main_Menu() || APP_MenuMgr_Exist_Factory_Menu() || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { if (APP_GetPlaybackPauseState() == TRUE) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0); } _DVBApp_Exit_All_Menu(); } else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)) { if (MID_PlaybackIsPauseState()) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0); } _DVBApp_Exit_All_Menu(); bHasValidServ = AL_DB_HasVisibleService(eNetType); if (bHasValidServ) { if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar)) #endif ) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0); } } } else { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif #ifdef CONFIG_SUPPORT_MHEG5 //Gahu:D0304 if( eSourType == APP_SOURCE_DTV ) { #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if( g_stUserInfoData.Subtitle == DVB_SWITCH_OFF ) #endif { DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 ); } } #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } #ifdef CONFIG_BANDWIDTH_LIMIT_WHEN_MENU_OPEN Cmd_VipAdjust(VIP_MENU_IS_OPEN,1); #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MAINMENU, FIRST_ENTER_MAINMENU); } break; case UI_EVENT_SOURCE: #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState != MID_REC_STATUS_STOP) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE); break; } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE); break; } } else #endif { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)) { #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SOURCE); } else #endif { _DVBApp_Exit_All_Menu(); } } else { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0); } } break; #ifdef CONFIG_MEDIA_ENABLE case UI_EVENT_SRC_USB: { #ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode)) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY); } break; } #endif _DVBApp_CloseAllMenu(); #ifdef SUPPORT_CEC_TV if (CECTV_GetCECEnable()==CECTV_ENABLE) { CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS); } #endif DVBApp_ResetPopup_Channel(); if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA)) { dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n"); } } break; #endif case UI_EVENT_TV_DVD: #ifdef CONFIG_ATV_SUPPORT DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD); #else _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); #endif break; #ifdef CONFIG_SUPPORT_PVR #ifdef SUPPORT_PVR_ONOFF case UI_EVENT_PVR_ONOFF: if ((MID_REC_STATUS_STOP != u8MidRecState) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t), &(g_stSetupData)); if (g_stSetupData.PVROnOff) { g_stSetupData.PVROnOff = 0; AL_PR_DeleteAllSch(eNetType, AL_PR_EVT_REM | AL_PR_SRV_REM); g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift),&(g_stFeatureData.AutoTimeShift)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift)); _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISABLE); } else { g_stSetupData.PVROnOff = 1; _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_ENABLE); } AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff), sizeof(g_stSetupData.PVROnOff), &(g_stSetupData.PVROnOff)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff), sizeof(g_stSetupData.PVROnOff)); } break; #endif #endif #ifdef SUPPORT_EPG_ONOFF case UI_EVENT_EPG_ONOFF: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t), &(g_stSetupData)); if (g_stSetupData.EPGOnOff) { g_stSetupData.EPGOnOff = 0; _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_DISABLE); } else { g_stSetupData.EPGOnOff = 1; _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_ENABLE); } AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff), sizeof(g_stSetupData.EPGOnOff), &(g_stSetupData.EPGOnOff)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff), sizeof(g_stSetupData.EPGOnOff)); } break; #endif #if 1//ll.jing mark for new fm case UI_EVENT_FAC_HOTEL: if (APP_MenuMgr_Exist_Factory_Menu()) { _DVBApp_Exit_All_Menu(); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_HOTELSETTING, ENTER_HOTELSET_NOTFROM_FACTORYMENU); } } break; #endif #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK case UI_EVENT_FAC_SOURCE_LOCK: g_fmSourceLock_flag = TRUE; SourceLock_Set_Hotkey_Flag(g_fmSourceLock_flag); if (APP_MenuMgr_Exist_Factory_Menu()) { _DVBApp_Exit_All_Menu(); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)) { _DVBApp_CloseAllMenu(); DVBApp_ResetPopup_Channel(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_SOURCELOCK, ENTER_HOTELSET_NOTFROM_FACTORYMENU); } } break; #endif case UI_EVENT_OPEN_FACTORY: if (APP_MenuMgr_Exist_Factory_Menu()) { _DVBApp_Exit_All_Menu(); } else { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 0); } break; case UI_EVENT_FACTORY: if (APP_MenuMgr_Exist_Factory_Menu()) { _DVBApp_Exit_All_Menu(); } else { #ifdef SUPPORT_HKC_FACTORY_REMOTE if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))||((dParam == UI_EVENT_HKC_FACTORYMENU)&&(g_stFactoryUserData.n_FactSet_FactoryRemote == 1))) #else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)) #endif { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 0); } } break; #ifdef CONFIG_SUPPORT_USB_UPGRADE case UI_EVENT_CHECK_UPGRADE: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) { dvb_printf("upgrade is running!"); break; } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_PASSWORD); } } break; #endif case UI_EVENT_POWER: #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { if (!APP_GUIOBJ_DVB_PvrRec_GetDurationTime()) { DVBApp_StopRecord(); } } else { DVBApp_StopTimeshift(TRUE); } } #endif MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); break; case UI_EVENT_EPG: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif #ifdef SUPPORT_EPG_ONOFF if (!g_stSetupData.EPGOnOff) { break; } #endif dGuiObj = DVB_GUIOBJ_EPG; if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND))) { _DVBApp_Exit_All_Menu(); } else { _DVBApp_Exit_All_Menu(); bHasValidServ = AL_DB_HasVisibleService(eNetType); if (bHasValidServ) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } break; case UI_EVENT_AUDIO: #ifdef CONFIG_SUPPORT_PVR if (MID_TSPLParser_GetThreadState()) { UINT32 u32PlayState = MID_TSPL_MODE_STOP; MID_TSPLParser_GetPlayState(&u32PlayState, NULL); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD); } else if (u32PlayState == MID_TSPL_MODE_PLAY) { _DVBApp_HidePopupDisplay(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } #ifdef CONFIG_SUPPORT_SUBTITLE if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); } #endif dvb_printf("...Create PVR multi audio menu.\n"); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD, 0); } break; } else #endif { UINT8 u8ProgLockState = FALSE; u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL); if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED) { break; } bHasValidServ = AL_DB_HasVisibleService(eNetType); if (bHasValidServ) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD, 0); } } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } break; case UI_EVENT_MUTE: #ifdef SUPPORT_CEC_TV AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink) #ifdef SUPPORT_AMPLIFIER_CONTROL &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl) #endif &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()&& APP_Check_CEC_DEVICE_Status()) { if (CECTV_GetCECEnable() == CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && g_u32MuteIconHandle >= MUTE_KEY_INTERVAL) { /* if (APP_Get_HDMICEC_AMP_Mute_Status() == FALSE) APP_Set_HDMICEC_AMP_Mute_Status(TRUE); else APP_Set_HDMICEC_AMP_Mute_Status(FALSE); APP_GUIOBJ_Mute_MuteKeyHandler(); */ g_u32MuteIconHandle = 0; break; } else if(g_u32MuteIconHandle < MUTE_KEY_INTERVAL)//Don't handle mute icon { break; } } #endif APP_Set_HDMICEC_TV_Mute_Status(!APP_Get_HDMICEC_TV_Mute_Status()); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO)) { APP_GUIOBJ_SleepTimer_Reset(); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO); } APP_GUIOBJ_Mute_MuteKeyHandler(); break; #ifdef SUPPORT_CEC_TV case DMN_EVENT_CECTV_SET_MUTE_STATUS: AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink) #ifdef SUPPORT_AMPLIFIER_CONTROL &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl) #endif &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()) { if (CECTV_GetCECEnable()==CECTV_ENABLE) { if( (dParam & 0x80) != 0) //reopen TV, the amp vol status must sinc.So if amp is mute state, tv need to set mute state. { APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE); } APP_Process_CECTV_Mute_Status(dParam); } } break; case DMN_EVENT_CECTV_SET_SYSTEMAUDIO_STATUS: APP_Process_CECTV_Control_Status_From_Amp(dParam); break; case DMN_EVENT_CECTV_SET_DEVICE_OSDNAME: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE) #ifdef SUPPORT_CEC_TV ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_HDMI_LINK) #endif ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU) ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC)) { break; } DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_CEC_DEVICE_INSERT, 0); break; #endif case UI_EVENT_EXIT: #ifdef CONFIG_SUPPORT_PVR #ifdef SUPPORT_PVR_ICON_HIDE if (u8MidRecState == MID_REC_STATUS_START && !(APP_MenuMgr_Exist_Main_Menu())) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_EXIT, 0); } break; } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_EXIT, 0); } break; } } #endif #endif case UI_EVENT_RETURN: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) && dMessage != UI_EVENT_EXIT) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif #ifdef CONFIG_SUPPORT_PVR #ifdef SUPPORT_TEAC_PVR_ICON_CTRL if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO, 0); break; } #endif if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { if (APP_MenuMgr_Exist_Main_Menu()) { APP_MenuMgr_Exit_Main_Menu(); } break; } #endif AutoUpgrade = FALSE; _DVBApp_ExitAll(); break; case UI_EVENT_CH_UP: case UI_EVENT_CH_DN: g_bIsFav = FALSE; #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState != MID_REC_STATUS_STOP) { g_bIsNumKey = FALSE; if (dMessage == UI_EVENT_CH_UP) { g_bIsCHUp = TRUE; } else { g_bIsCHUp = FALSE; } if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE); break; } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE); break; } } else #endif { /* judge is database empty or not */ al_uint32 TotalNum = 0; ServiceGroupType_t group_type; APP_EProgListType_t eCurProglist = ProgListType_Normal; AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL; al_int8 s8Navigate = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0, sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData)); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0, sizeof(APP_SETTING_Variational_t), &(g_stVariationalData)); group_type = g_stTVInfoData.ChnListType; #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection) { if (SERVICEGROUP_FREE == group_type) { eCurProglist = ProgListType_Free; } else if (SERVICEGROUP_SCRAMB == group_type) { eCurProglist = ProgListType_Scramb; } else if (SERVICEGROUP_SATELLITE == group_type) { eCurProglist = ProgListType_Satellite; APP_DVB_Playback_GetCurrentSat(&hNetHdl, NULL); } } #endif if (SERVICEGROUP_USER == group_type) { eCurProglist = ProgListType_User; } #ifdef CONFIG_CIPLUS_SUPPORT if (APP_CIPLUS_IsProfileSource()) { eCurProglist = ProgListType_CIPlus; group_type = SERVICEGROUP_CIPLUS; } #endif APP_Database_InitChnList(APP_Database_ConvertGroup2ChnListType(group_type), hNetHdl, eCurProglist); TotalNum = APP_Database_GetChnListSize(); APP_Database_UninitChnList(); if (TotalNum == 0) { /* show not available */ _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } if (dMessage == UI_EVENT_CH_UP) { s8Navigate = 1; } else if (dMessage == UI_EVENT_CH_DN) { s8Navigate = -1; } #ifdef CONFIG_CIPLUS_SUPPORT if (APP_CIPLUS_IsProfileSource()) { hProg = APP_DVB_PLAYBACK_CI_GetNextProgHdl(s8Navigate); if (AL_DB_INVALIDHDL == hProg) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE); break; } } else #endif { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, s8Navigate, APP_FAVORITE_NONE); } if (hProg != AL_DB_INVALIDHDL) { AL_DB_EDBType_t db_type; AL_DB_ERecordType_t record_type; AL_DB_GetRecordType(hProg, &db_type, &record_type); if (db_type == AL_DBTYPE_DVB_ATV) { _DVBApp_CloseAllMenu(); break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif /*#ifdef CONFIG_SUPPORT_PVR if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP)) { DVBApp_StopTimeshift(FALSE); } #endif*/ #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY AL_RecHandle_t hCurTPHdl = hCurProg; AL_RecHandle_t hNextTPHdl = hProg; AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl); AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl); if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl)) { APP_ScanProcess_Stop(); APP_SetSrcChgFlag(TRUE); while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop())) { GL_TaskSleep(50); } APP_SetSrcChgFlag(FALSE); } #endif _DVBApp_Zapping(record_type, hProg, FALSE, 0, TRUE); /*#ifdef CONFIG_SUPPORT_PVR if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP)) { DVBApp_StopTimeshift(TRUE); } DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); #endif*/ } else { DVBApp_CheckProgramType(TRUE); } break; } case UI_EVENT_RECALL: { //_DVBApp_CloseAllMenu(); #ifdef CONFIG_CIPLUS_SUPPORT if (APP_CIPLUS_IsProfileSource()) { break; } #endif UINT32 u32TotalChnCount = 0; DBServAttrib_t stAttribute; eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA)) { eServiceType = AL_RECTYPE_DVBTV; } AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount); if(!u32TotalChnCount) { AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount); if(!u32TotalChnCount) { AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount); } } hProg = APP_DVB_Playback_GetPrevProg(eNetType); if (hProg != AL_DB_INVALIDHDL) { memset(&stAttribute, 0, sizeof(DBServAttrib_t)); AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute); } if ((hCurProg!=hProg)&&(hProg != AL_DB_INVALIDHDL)&& u32TotalChnCount && (stAttribute.delete == FALSE)) { #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState != MID_REC_STATUS_STOP) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_RECALL); break; } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL); break; } } #endif AL_DB_GetRecordType(hProg, NULL, &NextServiceType); if (eServiceType == NextServiceType) { #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY AL_RecHandle_t hCurTPHdl = hCurProg; AL_RecHandle_t hNextTPHdl = hProg; AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl); AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl); if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl)) { APP_ScanProcess_Stop(); APP_SetSrcChgFlag(TRUE); while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop())) { GL_TaskSleep(50); } APP_SetSrcChgFlag(FALSE); } #endif _DVBApp_Zapping(NextServiceType, hProg, FALSE, 0, TRUE); } #ifdef CHANGE_SOURCE_BY_RECALL_KEY else if (APP_DVB_Playback_SwapServiceType(eNetType, &NextServiceType, &u32TotalNum) == AL_SUCCESS) { ; } #endif else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } break; case APP_DVB_GLOBAL_EVENT_ZAPPING: #ifdef CONFIG_SUPPORT_PVR if (u8MidRecState != MID_REC_STATUS_STOP) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); if (hCurProg == dParam) { break; } else if(AL_DB_INVALIDHDL == dParam) { #ifdef SPECIAL_CHNORDER_FOR_SPAIN SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0); #else _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT); #endif break; } else { g_ProgHandle = dParam; g_bIsNumKey = TRUE; if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE); break; } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE); break; } } } } #endif #if 0 if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } #endif _DVBApp_Zapping(eServiceType, dParam, FALSE, 0, TRUE); break; #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY case APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE: dvb_printf("[%s:%d] APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE !!!!!!!!!!\n\n",__FUNCTION__,__LINE__); if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST) //||(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR) //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME) #ifdef CONFIG_SUPPORT_PVR //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT) #endif ) { if(DVBApp_GetUnstableState() == FALSE) { DVBApp_SetUnstableState(TRUE); } dvb_printf(" Post Process The Unstable Services\n\n"); break; } if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR); } else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR); } #ifdef CONFIG_SUPPORT_PVR else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT); } #endif DVBApp_RemoveUnstableService(); break; #endif #ifdef CONFIG_SUPPORT_MHEG5 case APP_DVB_GLOBAL_EVENT_MHEG_ZAPPING: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_MHEG_ZAPPING, dParam); break; #endif case UI_EVENT_ENTER: #ifdef CONFIG_SUPPORT_PVR #ifdef SUPPORT_PVR_ICON_HIDE if (u8MidRecState == MID_REC_STATUS_START) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_ENTER, 0); } break; } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_ENTER, 0); } break; } } #endif #endif #ifdef CELLO_REMOTE_KEY #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_CHLIST, 0); #else { bHasValidServ = AL_DB_HasVisibleService(eNetType); if (!bHasValidServ) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } } #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif #if 0 if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { _DVBApp_CloseAllMenu(); } else { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0); } #endif #endif break; #ifdef CELLO_REMOTE_KEY case UI_EVENT_INITIAL: DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0); break; case UI_EVENT_DTV: DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_T, AL_DB_INVALIDHDL); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV); break; case UI_EVENT_SATELLITE: DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV); break; case UI_EVENT_CABLE: DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV); break; case UI_EVENT_DVD: if(eSourType != APP_SOURCE_DVD) { #ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode)) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY); } break; } #endif DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD); } break; case UI_EVENT_HDMI: if(eSourType != APP_SOURCE_HDMI && eSourType != APP_SOURCE_HDMI1 && eSourType != APP_SOURCE_HDMI2) { #ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode)) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY); } break; } #endif DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI); } break; #endif case UI_EVENT_CHLIST: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { _DVBApp_CloseAllMenu(); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0); } } break; case UI_EVENT_FAV: #ifdef CONFIG_DVB_SYSTEM AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); if (AREA_NORWAY == g_stChannelData.Country) { break; } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { _DVBApp_CloseAllMenu(); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0); } } break; case UI_EVENT_FAV_UP: case UI_EVENT_FAV_DN: { UINT32 TotalNum = 0; AL_DB_EDBType_t DBType; AL_DB_ERecordType_t CurSerType = AL_RECTYPE_DVBTV; APP_Favorite_t FavType = APP_FAVORITE_1; g_bIsFav = TRUE; DBType = APP_DVB_Playback_GetCurrentNetType(); CurSerType = APP_DVB_Playback_GetCurrServiceType(DBType); FavType = APP_GUIOBJ_DVB_Playback_GetFavType(); if ((FavType <= APP_FAVORITE_NONE) || (FavType >= APP_FAVORITE_MAX)) { FavType = APP_FAVORITE_1; APP_GUIOBJ_DVB_Playback_SetFavType(FavType); APP_GUIOBJ_DVB_Playback_StoreFavType(); } do { /* search next fav list type */ APP_Database_InitChnList(APP_DB_CHNLISTTYPE_DIGITAL, AL_DB_INVALIDHDL, APP_Database_ConvertFavType2List(FavType)); TotalNum = APP_Database_GetChnListSize(); APP_Database_UninitChnList(); if (((FavType == APP_GUIOBJ_DVB_Playback_GetFavType()) && (TotalNum > 0)) || (TotalNum > 1)) { break; } FavType++; if (FavType == APP_FAVORITE_MAX) { FavType = APP_FAVORITE_1; } }while(FavType != APP_GUIOBJ_DVB_Playback_GetFavType()); if (FavType == APP_FAVORITE_MAX) { APP_GUIOBJ_DVB_Playback_SetFavType(APP_FAVORITE_1); APP_GUIOBJ_DVB_Playback_StoreFavType(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } APP_GUIOBJ_DVB_Playback_SetFavType(FavType); APP_GUIOBJ_DVB_Playback_StoreFavType(); if (TotalNum < 2) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } #ifdef CONFIG_SUPPORT_PVR if ((u8MidRecState != MID_REC_STATUS_STOP) && (APP_PVR_TIMESHIFT_AUTO != u8AutoTimeShift)) { g_bIsNumKey = FALSE; if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) { if (dMessage == UI_EVENT_FAV_UP) { g_bIsCHUp = TRUE; } else { g_bIsCHUp = FALSE; } _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE); break; } else if (MID_REC_MODE_MANUAL == u8MIDRecMode) { if (dMessage == UI_EVENT_FAV_UP) { g_bIsCHUp = TRUE; } else { g_bIsCHUp = FALSE; } _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE); break; } } else #endif { if (dMessage == UI_EVENT_FAV_UP) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, 1, FavType); } else { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, -1, FavType); } if (hProg != AL_DB_INVALIDHDL) { AL_DB_EDBType_t db_type; AL_DB_ERecordType_t record_type; AL_DB_GetRecordType(hProg, &db_type, &record_type); if (db_type == AL_DBTYPE_DVB_ATV) { _DVBApp_CloseAllMenu(); break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif /*#ifdef CONFIG_SUPPORT_PVR if ((APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) && (u8MidRecState != MID_REC_STATUS_STOP)) { DVBApp_StopTimeshift(TRUE); } #endif*/ _DVBApp_Zapping(CurSerType, hProg, FALSE, 0, TRUE); /*#ifdef CONFIG_SUPPORT_PVR DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); #endif*/ } else { DVBApp_CheckProgramType(TRUE); } break; } } break; case UI_EVENT_DISPLAY: { #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif bHasValidServ = AL_DB_HasVisibleService(eNetType); #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { dvb_printf(" rec info is exist \n"); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } else #endif { if (bHasValidServ) { #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.ShowInfoBar)) break; #endif #ifdef PLAY_VIDEO_FOR_ALLSRV AL_RecHandle_t hTempHdl; MID_PlaybackGetCurProgHandle(al_null, &hTempHdl); DBPIDInfo_t stVideoPid; memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t)); AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid); #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); #ifdef PLAY_VIDEO_FOR_ALLSRV if (DVBApp_CheckHasVideo() == FALSE) #else if (eServiceType == AL_RECTYPE_DVBRADIO) #endif { if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState()) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0); } } if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0); _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } else if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \ ||APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \ ||(APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED #ifdef PLAY_VIDEO_FOR_ALLSRV &&((stVideoPid.usDataPID&0x1fff) == 0x1fff) #else && eServiceType == AL_RECTYPE_DVBRADIO #endif )) { if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d ######\n",__FUNCTION__,__LINE__); _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE); } else if ((eServiceType == AL_RECTYPE_DVBRADIO) &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)) #ifdef PLAY_VIDEO_FOR_ALLSRV &&((stVideoPid.usDataPID&0x1fff) == 0x1fff) #endif ) { #ifdef CONFIG_SUPPORT_MHEG5 if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) #endif { if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL); } } } } else { dvb_printf("[%s %d]\n", __FUNCTION__, __LINE__); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0); if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } } } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } } break; case UI_EVENT_TEXT: { #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { // do this action at ui_event_freeze #if 0 if( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE) ) //Gahu:D0326 { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); g_PauseState = FALSE; } #endif // do this action at ui_event_freeze break; } } } #endif #ifdef CONFIG_SUPPORT_TTX #ifdef CONFIG_SUPPORT_PVR if (MID_TSPLParser_GetThreadState()) { al_bool bTtSignalStatus = al_false; AL_TTX_GetSignalStatus(&bTtSignalStatus); if (bTtSignalStatus == al_true) { dvb_printf("call create dtv ttx menu!\n"); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); #ifdef CONFIG_SUPPORT_SUBTITLE UINT8 onoff = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); onoff = g_stUserInfoData.Subtitle; if (onoff == TRUE) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #endif } else { if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { _DVBApp_CloseAllMenu(); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); g_PauseState = FALSE; #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #endif } #ifdef CONFIG_SUPPORT_SUBTITLE DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0); } } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_TTX); } break; } #endif #endif UINT8 u8ProgLockState = FALSE; AL_ServiceDetail_t SerInfor; AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle( eNetType, (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)), &SerInfor); if (AL_DBTYPE_DVB_T == eNetType) { if (SerInfor.stDVBTServ.stProgAttrib.parental_lock == al_true) { u8ProgLockState = TRUE; } } else if (AL_DBTYPE_DVB_C == eNetType) { if (SerInfor.stDVBCServ.stProgAttrib.parental_lock == al_true) { u8ProgLockState = TRUE; } } else if (AL_DBTYPE_DVB_S == eNetType) { if (SerInfor.stDVBSServ.stProgAttrib.parental_lock == al_true) { u8ProgLockState = TRUE; } } if ((u8ProgLockState == TRUE && APP_DVB_Playback_IsUnlock() == FALSE) && (g_u32OldPopup == PLAYBACK_POPUP_PWD_LOCKED || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))) { break; } MID_PlaybackProgState_t GetProgState; GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL); /*if digital programs are locked, pressing TT key is not Available*/ if((GetProgState != MID_PLAYBK_PROG_STATE_NORMAL) && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC) && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)) { break; } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) || DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } #ifdef CONFIG_SUPPORT_TTX al_bool bTtSignalStatus = al_false; AL_TTX_GetSignalStatus(&bTtSignalStatus); #endif #ifndef CONFIG_SUPPORT_MHEG5 Boolean bIgnoreCheckTTX = TRUE; #endif if (APP_Area_SupportDtg() #ifdef CONFIG_SUPPORT_MHEG5 && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) #else && (!bIgnoreCheckTTX) //Also deal with Teletext flow if MHEG5 isn't supported. #endif ) { #ifdef CONFIG_SUPPORT_MHEG5 dvb_printf("There is MHEG5 service existed.\n"); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); g_PauseState = FALSE; } SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } else { #ifdef CONFIG_SUPPORT_PVR if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_MHEG); break; } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) || (MID_REC_MODE_AUTO == u8MIDRecMode)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG); break; } #endif #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if (g_stUserInfoData.Subtitle != 0) //Subtitle has been opened. { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5); } #endif } #endif } #ifdef CONFIG_SUPPORT_TTX else if (bTtSignalStatus == al_true) { eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n"); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); #ifdef CONFIG_SUPPORT_SUBTITLE UINT8 onoff = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); onoff = g_stUserInfoData.Subtitle; if (onoff == TRUE) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); } #endif } else { _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); g_PauseState = FALSE; #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #endif } #ifdef CONFIG_SUPPORT_SUBTITLE DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); #endif dvb_printf("@@@@@@ TTX is Signal,Cestroy ttx menu!\n"); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0); } } #endif else { #ifdef CONFIG_SUPPORT_TTX if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)) { dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n"); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX); } else #endif { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } } break; #ifdef SUPPORT_CLOCKINFO_SHOW case UI_EVENT_DEVLIST: //UI_EVENT_DEVLIST clock key { /*if digital programs are locked, pressing clock key is not Available*/ MID_PlaybackProgState_t GetProgState; GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL); if ((GetProgState == MID_PLAYBK_PROG_STATE_LOCKED) \ || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED) \ ||(GetProgState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED) \ || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED)) { break; } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } if (eSourType == APP_SOURCE_DTV) { #if 0 if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK)) { //dvb_printf("close clock menu!\n"); SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK); } else { al_bool bTtSignalStatus = 0; AL_TTX_GetSignalStatus(&bTtSignalStatus); if ((bTtSignalStatus == TRUE) && (_DTVAPP_Check_TTClock_HasValidData() == SP_SUCCESS)) { //dvb_printf("open clock menu!\n"); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK, 0); } else { //dvb_printf("no clock!\n"); _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } #endif } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } } break; #endif case UI_EVENT_SUBTITLE: #ifdef CONFIG_SUPPORT_PVR if (MID_TSPLParser_GetThreadState()) { UINT32 u32PEState = MID_TSPL_MODE_STOP; MID_TSPLParser_GetPlayState(&u32PEState, NULL); if (u32PEState != MID_TSPL_MODE_PLAY) { break; } #ifdef CONFIG_SUPPORT_SUBTITLE UINT32 SubTotalNum = 0; #ifdef CONFIG_SUPPORT_TTX al_uint32 TTXSubtitleTotalNum = 0; #endif if(AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS #ifdef CONFIG_SUPPORT_TTX || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS) #endif ) { if(SubTotalNum > 0) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_HidePopupDisplay(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD); } APP_GUIOBJ_SubTitle_SetTSFMode(TRUE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0); } break; } #ifdef CONFIG_SUPPORT_TTX else if (TTXSubtitleTotalNum > 0) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_HidePopupDisplay(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD); } APP_GUIOBJ_SubTitle_SetTSFMode(TRUE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0); } break; } #endif } #endif _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } #endif { UINT8 u8ProgLockState = MID_PLAYBK_PROG_STATE_REPLACE; u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL); if((u8ProgLockState != MID_PLAYBK_PROG_STATE_NORMAL) && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_AVC) && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)) { break; } AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (MID_PlaybackIsPauseState() || (bSignalState != AL_DVB_MONITOR_VALUE_TRUE) || (DVBApp_CheckServiceNotAvailable() == TRUE) || (u8ProgLockState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED)\ ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED)\ ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } #ifdef CONFIG_SUPPORT_SUBTITLE UINT32 SubTotalNum = 0; #ifdef CONFIG_SUPPORT_TTX al_uint32 TTXSubtitleTotalNum = 0; #endif if ((AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS) #ifdef CONFIG_SUPPORT_TTX || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS) #endif ) { if (SubTotalNum > 0) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_HidePopupDisplay(); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } APP_GUIOBJ_SubTitle_SetTSFMode(FALSE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0); } } #ifdef CONFIG_SUPPORT_TTX else if (TTXSubtitleTotalNum > 0) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_HidePopupDisplay(); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } APP_GUIOBJ_SubTitle_SetTSFMode(FALSE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0); } } #endif else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE); } } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE); } #else _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); #endif } break; case UI_EVENT_VOL_DN: case UI_EVENT_VOL_UP: #ifdef SUPPORT_CEC_TV AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink) #ifdef SUPPORT_AMPLIFIER_CONTROL &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl) #endif && (APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && (APP_GUIOBJ_Source_GetAmplifierPort() != 0) && APP_Check_CEC_DEVICE_Status()) { if (CECTV_GetCECEnable()==CECTV_ENABLE) { if(dMessage == UI_EVENT_VOL_UP) { APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_UP); } else if(dMessage == UI_EVENT_VOL_DN) { APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_DOWN); } DVBApp_VolumeKeyHandler(dMessage,TRUE); break; } } #endif DVBApp_VolumeKeyHandler(dMessage,FALSE); break; case UI_EVENT_ASPECT: #ifdef CONFIG_SUPPORT_PVR /*if (MID_TSPLParser_GetThreadState() == TRUE) { UINT32 u32PEState = MID_TSPL_MODE_PLAY; MID_TSPLParser_GetPlayState(&u32PEState, NULL); if (u32PEState == MID_TSPL_MODE_PAUSE) { break; } }*/ if (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_PAUSE) { break; } #endif if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode && (!MID_TSPLParser_GetThreadState()) #endif ) { break; } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1) { dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__); break; } MID_DISP_DTVGetVideoMute(&eMuteSt); if ((eMuteSt == MID_DISP_MUTE) || (eMuteSt == MID_DISP_MUTE_BY_APP) || (eMuteSt == MID_DISP_MUTE_BY_TVFE) ||(eMuteSt == MID_DISP_MUTE_BY_VIP)) { #ifdef CONFIG_SUPPORT_MHEG5 al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) && APP_Area_SupportDtg()))) { break; } #else break; #endif } { bHasValidServ = AL_DB_HasVisibleService(eNetType); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if ((bHasValidServ && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) #ifndef PLAY_VIDEO_FOR_ALLSRV && (eServiceType != AL_RECTYPE_DVBRADIO) #endif ) #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode || (MID_TSPLParser_GetThreadState()) #endif ) { #ifdef CONFIG_SUPPORT_PVR if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif { _DVBApp_CloseAllMenu(); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { if (eSourType == APP_SOURCE_DTV) { #ifdef CONFIG_SUPPORT_SUBTITLE UINT8 tmpIdx = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); tmpIdx = g_stUserInfoData.Subtitle; if (tmpIdx == DVB_SWITCH_ON) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif } #endif #ifdef CONFIG_SUPPORT_MHEG5 #ifdef CONFIG_SUPPORT_SUBTITLE if (tmpIdx == DVB_SWITCH_OFF) #endif { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); } #endif } SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); g_PauseState = FALSE; } break; #ifdef SUPPORT_FACTORY_AUTO_TEST case UI_EVENT_KEYPAD_DOWN: case UI_EVENT_KEYPAD_UP: case UI_EVENT_KEYPAD_SOURCE: case UI_EVENT_KEYPAD_LEFT: case UI_EVENT_KEYPAD_RIGHT: case UI_EVENT_KEYPAD_POWER: case UI_EVENT_KEYPAD_MENU: { extern int APP_Factory_GetAutoTestOnOff(void); if(APP_Factory_GetAutoTestOnOff() == TRUE) { if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB,APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage); } } } break; #endif #ifdef CELLO_REMOTE_KEY case UI_EVENT_PIC_ASPECT: #endif case UI_EVENT_PIC_MOD: if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) #ifdef CONFIG_SUPPORT_PVR &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif ) { break; } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1) { dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__); break; } #if 0 TVFE_GetAPPMuteFlag(&bAPPMuteEn); TVFE_GetTvfeMuteFlag(&bTvfeMuteEn); if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE)) { #ifdef CONFIG_SUPPORT_MHEG5 al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) && APP_Area_SupportDtg()))) { break; } #else break; #endif } if ((eServiceType == AL_RECTYPE_DVBRADIO) #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY) #endif ) { break; //zhongbaoxing added for mantis bug 0136063 @20110525 } TotalNum = DVBApp_Get_TotalNumber(); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)) #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY) #endif ) #endif { #ifdef CONFIG_SUPPORT_PVR if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif { _DVBApp_CloseAllMenu(); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage); } break; case UI_EVENT_SLEEP: if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) #ifdef CONFIG_SUPPORT_PVR &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif ) { break; } #if 0 TVFE_GetAPPMuteFlag(&bAPPMuteEn); TVFE_GetTvfeMuteFlag(&bTvfeMuteEn); if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE)) { #ifdef CONFIG_SUPPORT_MHEG5 al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) && APP_Area_SupportDtg()))) { break; } #else break; #endif } #endif { #ifdef CONFIG_SUPPORT_PVR if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif { _DVBApp_CloseAllMenu(); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage); } break; case UI_EVENT_SND_MOD: #ifdef CELLO_REMOTE_KEY case UI_EVENT_SOUND_MTS: #endif #ifdef SUPPORT_SMODE_UNMUTE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if(g_stUserInfoData.Mute) { if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status()) { cec_RemoteControlPassThrough(CECTV_KEY_MUTE); cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE); } } _APP_GUIOBJ_Sound_SetMuteStatus(); #endif if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) #ifdef CONFIG_SUPPORT_PVR &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif ) { break; } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.SoundLock== 1) { dvb_printf("[%s] Sound Option has been Lock On!!\n",__FUNCTION__); break; } #if 0 TVFE_GetAPPMuteFlag(&bAPPMuteEn); TVFE_GetTvfeMuteFlag(&bTvfeMuteEn); if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE)) { #ifdef CONFIG_SUPPORT_MHEG5 al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED) && APP_Area_SupportDtg()))) { break; } #else break; #endif } TotalNum = DVBApp_Get_TotalNumber(); AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)) #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY) #endif ) #endif { #ifdef CONFIG_SUPPORT_PVR if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) #endif { _DVBApp_CloseAllMenu(); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage); } break; case UI_EVENT_8: case UI_EVENT_0: case UI_EVENT_1: case UI_EVENT_2: case UI_EVENT_3: case UI_EVENT_4: case UI_EVENT_5: case UI_EVENT_6: case UI_EVENT_7: case UI_EVENT_9: case UI_EVENT_10: #ifdef SUPPORT_FACTORY_AUTO_TEST if(dMessage == UI_EVENT_10) { if(APP_Factory_GetAutoTestOnOff() == TRUE) { APP_Factory_SetAutoTestSourceChange(dMessage); break; } } #endif #if 0 //def CONFIG_SUPPORT_PVR if ((u8MidRecState != MID_REC_STATUS_STOP) && (MID_REC_MODE_AUTO != u8MIDRecMode)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) { g_u32NumEvent = dMessage; g_bIsNumKey = TRUE; _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE); break; } else if (MID_REC_MODE_MANUAL == u8MIDRecMode) { g_u32NumEvent = dMessage; g_bIsNumKey = TRUE; _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE); break; } } #endif #ifdef CONFIG_SUPPORT_MHEG5 if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM); } else { _DVBApp_HidePopupDisplay(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM, (dMessage - UI_EVENT_0)); } break; #ifdef CONFIG_SUPPORT_PVR case UI_EVENT_REC: #ifdef REMINDER_OLNY_NO_RECORD break; #endif dvb_printf("UI_EVENT_REC"); #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL) if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction)) { break; } #elif defined(SUPPORT_PVR_ONOFF) if(!g_stSetupData.PVROnOff) { break; } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { dvb_printf("double rec ,goto duration"); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME, 0); } else { if (u8MidRecState == MID_REC_STATUS_STOP) { if (DVBApp_CheckForRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS) { break; } #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_REC); } else #endif { #ifndef SUPPORT_PVR_SPEC_START_NO_POP _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_START); #else dvb_printf("start record is call\n"); _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime(); _DVBApp_CloseAllMenu(); DVBApp_StartRecord(MID_REC_MODE_MANUAL); #endif } break; } #ifdef SUPPORT_SPEC_PVR_RECORD else if ((MID_REC_MODE_MANUAL != u8MIDRecMode) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { //if timeshifting, then pop to ask stop timeshift and start record _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC); } #endif } break; case UI_EVENT_STOP: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif if ((MID_REC_MODE_AUTO == u8MIDRecMode) && ((MID_REC_STATUS_START == u8MidRecState) || (!APP_GUIOBJ_DVB_PvrPlayInfo_GetStopPopFlag()))) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { break; } if (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState()) { APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift(); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } } else { if (((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))&&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP); } else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { if (MID_REC_MODE_AUTO == u8MIDRecMode) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0); } } } break; case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_FAIL: case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_SUCCESSFUL: case APP_DVB_GLOBAL_EVENT_PVR_RATING_UPDATE: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, dParam); break; } break; case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_PLAYSTATE: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0); break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0); break; } { UINT8 u8Mute = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); u8Mute = g_stUserInfoData.Mute; if (u8Mute == FALSE) { APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV); } MID_TSPLParser_Resume(); #ifdef CONFIG_SUPPORT_SUBTITLE AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); if (g_stUserInfoData.Subtitle == 1) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)) { APP_GUIOBJ_SubTitle_Start(); } } #endif } break; case APP_DVB_GLOBAL_EVENT_PVR_UPDATE_TIME: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0); break; } break; case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYDONE: case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYREADERROR: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0); break; } if ((MID_REC_MODE_AUTO == u8MIDRecMode) || (MID_REC_MODE_MANUAL == u8MIDRecMode)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO); } APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift(); } else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0); break; } APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift(); } break; case APP_DVB_GLOBAL_EVENT_SWITCH_FILEPLAY: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY); } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE) && !APP_MenuMgr_Exist_Main_Menu()) { SYSAPP_GOBJ_CreateGUIObject_WithPara( SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, dParam); } break; case APP_DVB_GLOBAL_EVENT_CLOSE_FILEPLAY: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY); } break; case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_DISK_FULL: if (MID_REC_MODE_MANUAL == u8MIDRecMode) { DVBApp_StopRecord(); } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) || (MID_REC_MODE_AUTO == u8MIDRecMode)) { DVBApp_StopTimeshift(TRUE); } _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL); break; case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_WRITE_ERR: case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE: if (MID_PartitionList_GetMountedCount() == 0) { break; } if (MID_RecorderIsCurRecording() != DRV_SUCCESS) { break; } if (MID_REC_MODE_MANUAL == u8MIDRecMode|| MID_REC_MODE_UNATTENDED == u8MIDRecMode) { DVBApp_StopRecord(); if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR); } } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) || (MID_REC_MODE_AUTO == u8MIDRecMode)) { DVBApp_StopTimeshift(TRUE); if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR); } } if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } break; case UI_EVENT_GOTO: if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO, 0); } } break; case UI_EVENT_FF: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif break; case UI_EVENT_FR: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERFR); } break; case UI_EVENT_PREV: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0); } break; case UI_EVENT_NEXT: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0); } break; case APP_DVB_GLOBAL_EVENT_REC_START_FROM_EPG: { AL_RecHandle_t hRecProg = AL_DB_INVALIDHDL; al_uint32 CurTimeInSec = 0; al_uint32 EndTimeInsec = 0; EndTimeInsec = APP_GUIOBJ_DVB_Epg_GetEndTime(); AL_Time_GetCurTimeInSecs(&CurTimeInSec); if ((CurTimeInSec+10) >= EndTimeInsec) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); } hRecProg = APP_GUIOBJ_DVB_Epg_GetRecHdl(); _DVBApp_CloseAllMenu(); if ((hRecProg != AL_DB_INVALIDHDL) && (hCurProg != hRecProg)) { AL_DB_EDBType_t db_type; AL_DB_ERecordType_t eServiceType; AL_DB_GetRecordType(hRecProg, &db_type, &eServiceType); _DVBApp_Zapping(eServiceType, hRecProg, FALSE, 0, FALSE); } _DVBApp_CloseAllMenu(); _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime(); DVBApp_StartRecord(MID_REC_MODE_MANUAL); APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(EndTimeInsec); } break; #endif case UI_EVENT_FREEZE: { MID_DISP_DTVGetVideoMute(&eMuteSt); if ((eMuteSt == MID_DISP_MUTE) || (eMuteSt == MID_DISP_MUTE_BY_APP) ||(eMuteSt == MID_DISP_MUTE_BY_TVFE) ||(eMuteSt == MID_DISP_MUTE_BY_VIP)) { break; } } /* here, judge database empty or not */ { bHasValidServ = AL_DB_HasVisibleService(eNetType); if (!bHasValidServ) { /* database empty, do nothing */ break; } } #ifdef CONFIG_SUPPORT_PVR if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_MANUAL != u8MIDRecMode)) { break; //when timeshift invalid freeze function } #endif #ifdef CONFIG_SUPPORT_MHEG5 if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_FREEZE, (UINT32)&sdRet); if (sdRet == SP_ERR_FAILURE) { break; } } } #endif { #ifdef PLAY_VIDEO_FOR_ALLSRV AL_RecHandle_t hTempHdl; MID_PlaybackGetCurProgHandle(al_null, &hTempHdl); DBPIDInfo_t stVideoPid; memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t)); AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid); if ((stVideoPid.usDataPID&0x1fff) == 0x1fff) #else if (eServiceType == AL_RECTYPE_DVBRADIO) #endif { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } } #ifdef CONFIG_SUPPORT_SUBTITLE UINT8 tmpIdx = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); tmpIdx = g_stUserInfoData.Subtitle; #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef CONFIG_SUPPORT_SUBTITLE if (tmpIdx == DVB_SWITCH_ON) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif } #endif //zhongbaoxing added for mantis 0164987 @20120117 +++ #ifdef CONFIG_SUPPORT_MHEG5 { #ifdef CONFIG_SUPPORT_SUBTITLE if (tmpIdx == DVB_SWITCH_OFF) #endif { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); } } #endif //zhongbaoxing added for mantis 0164987 @20120117 --- SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); MID_PlaybackStreamResume(1); g_PauseState = FALSE; } else { AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) { if (DVBApp_CheckServiceNotAvailable() == TRUE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } g_PauseState = TRUE; //zhongbaoxing added for mantis 0164987 @20120117 +++ #ifdef CONFIG_SUPPORT_MHEG5 //int mh5Status = 0; //MHEG5APP_GetMh5Status(&mh5Status); //if ((mh5Status&MHEG5APP_STATUS_OSD_UPDATED)) /*if( APP_DVB_Mheg5_GetBootCarouselStatus()==MHEG5_BOOT_CAROUSEL_EXISTED && APP_DVB_Mheg5_GetMheg5DisplayStatus() ) //Gahu:D0326 { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); g_PauseState = FALSE; break; } else { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5); }*/ //for mantis: 21255 #endif //zhongbaoxing added for mantis 0164987 @20120117 --- #ifdef CONFIG_SUPPORT_SUBTITLE if (tmpIdx == DVB_SWITCH_ON) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(TRUE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); #endif } #endif SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0); MID_PlaybackStreamPause(1); g_PauseState = TRUE; } } break; case UI_EVENT_TVRADIO: #ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode)) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY); } break; } #if 0 else if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_AUTO == u8MIDRecMode)) { DVBApp_StopTimeshift(TRUE); DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } #endif #endif if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS) { if(NextServiceType == AL_RECTYPE_DVBRADIO) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_RADIO); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_DTVORDATA); } } break; #ifdef CELLO_REMOTE_KEY case UI_EVENT_ATV: #endif case UI_EVENT_ATVDTV: #ifdef CONFIG_SUPPORT_PVR if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode)) { if (MID_REC_MODE_MANUAL == u8MIDRecMode) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY); } break; } #endif if ((eSourType == APP_SOURCE_DTV) || (eSourType == APP_SOURCE_RADIO)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV); } break; break; #ifdef SUPPORT_SOURCE_DVBTCS case UI_EVENT_DVBC:// For DVB-C shortcut key case UI_EVENT_RED: #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); RFtype = g_stChannelData.TV_Connection; if(RFtype != APP_RF_TYPE_DVB_C) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_C); APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId); } else { #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T); APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId); #endif } #endif break; case UI_EVENT_DVBS:// For DVB-S shortcut key case UI_EVENT_GREEN: #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); RFtype = g_stChannelData.TV_Connection; if(RFtype != APP_RF_TYPE_DVB_S) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_S); APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId); } else { #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T); APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId); #endif } #endif break; #endif #if 0//#ifdef CONFIG_SUPPORT_MHEG5 case UI_EVENT_RED: case UI_EVENT_GREEN: case UI_EVENT_BLUE: case UI_EVENT_YELLOW: if (APP_Area_SupportDtg()) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } break; #endif #ifdef TEAC_BLUE_KEY_FUNCTION case UI_EVENT_BLUE: { AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); if (eServiceType == AL_RECTYPE_DVBRADIO) { if (_DVB_GetPanelControlType()== APP_PANEL_POWER_UP) { #ifdef CONFIG_SUPPORT_MHEG5 if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) #endif { //APP_Panel_SetPowerSequence(APP_PANEL_POWER_DOWN); _DVB_SetPanelControlType(APP_PANEL_POWER_DOWN); } } else if (_DVB_GetPanelControlType()== APP_PANEL_POWER_DOWN) { //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP); _DVB_SetPanelControlType(APP_PANEL_POWER_UP); } } break; } #endif #ifdef SUPPORT_AD_DESCRIPTION case UI_EVENT_AB: { UINT8 u8Mute = 0; u8Mute = g_stUserInfoData.Mute; if (u8Mute == TRUE) { AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) { APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); } else { APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType); } g_stUserInfoData.Mute = FALSE; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute), sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute)); #ifdef SUPPORT_STORE_MUTE_FLAG AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute), sizeof(g_stUserInfoData.Mute)); #endif } SYSAPP_GOBJ_SendMsgToSingleGUIObject( SYS_APP_DVB, APP_GUIOBJ_MUTE, APP_INTRA_EVENT_HIDE_MUTE, 0); break; } break; #endif #ifdef CONFIG_SUPPORT_HELP_MENU case UI_EVENT_HELP: DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_HELP_MENU, 0); break; #endif #ifdef SUPPORT_HKC_FACTORY_REMOTE case UI_EVENT_HKC_ENTER_BURNINGMODE: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { _DVBApp_Exit_All_Menu(); g_stFactoryUserData.n_FactSet_BurningMode = 1; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(g_stFactoryUserData)); MID_TVFE_SetBurnIn(1, 0, 1); //APP_Cul_Fm_CheckAndStartBurningMode(); } break; #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT case UI_EVENT_HKC_DVBC: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0); APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL); } break; #endif #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT case UI_EVENT_HKC_DVBS: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0); APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL); } break; #endif #ifdef CONFIG_CI_SUPPORT case UI_EVENT_HKC_CIINFO: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16))); SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam); } break; #endif case UI_EVENT_HKC_DVD: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD); } break; case UI_EVENT_HKC_FACTORYMENU: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_FACTORY, UI_EVENT_HKC_FACTORYMENU); } break; case UI_EVENT_HKC_VERSION: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)) { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1); Factory_Ver_Debug(); } } break; case UI_EVENT_HKC_VOLUME80: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_Audio_SetVolume(80); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); g_stVariationalData.Volume = 80; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume)); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME); } break; case UI_EVENT_HKC_VOLUMEUP10: case UI_EVENT_HKC_VOLUMEDOWN10: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); UINT8 u8VolumeIdx = g_stVariationalData.Volume; if (dMessage == UI_EVENT_HKC_VOLUMEUP10) { u8VolumeIdx += 10; g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : u8VolumeIdx; } else if (dMessage == UI_EVENT_HKC_VOLUMEDOWN10) { g_stVariationalData.Volume = u8VolumeIdx <= 10 ? ADJUST_MIN_VALUE : u8VolumeIdx - 10; } APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume); AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume)); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME); } break; case UI_EVENT_HKC_RESET: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL); APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType); APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType); #ifdef CONFIG_ATV_SUPPORT #if (defined(CONFIG_DRAMSIZE) && (CONFIG_DRAMSIZE == 64)) || (defined (CONFIG_SUPPORT_64M_DTV)) AL_FW_ActiveDBModule(AL_DBTYPE_DVB_ATV); #endif AL_DB_Reset(AL_DBTYPE_DVB_ATV, al_true); #endif #if(defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT) AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T); AL_DB_Reset(AL_DBTYPE_DVB_T, al_true); AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID); AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM); #endif #if(defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT) AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C); AL_DB_Reset(AL_DBTYPE_DVB_C, al_true); AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID); AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM); #endif #if(defined CONFIG_DVB_SYSTEM_DVBS_SUPPORT) AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S); AL_DB_Reset(AL_DBTYPE_DVB_S, al_true); AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID); AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM); DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S); AL_DB_Sync(AL_DBTYPE_DVB_S, al_true); #endif App_Data_UserSetting_Restore(); App_Data_UserSetting_FM_Hotel_Restore(); App_Data_UserSetting_ResetLangContry_ByFMDefaultValue(); APP_Video_ResetTVSetting(); GL_TaskSleep(2000); MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } break; case UI_EVENT_HKC_RESET_DEFAULT_FAC: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { extern void _APP_GUIOBJ_FM_FactorySetting_Shipping(void); _APP_GUIOBJ_FM_FactorySetting_Shipping(); } break; case UI_EVENT_HKC_TV: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV); } break; case UI_EVENT_HKC_AV: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV); } break; case UI_EVENT_HKC_AV2: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV1); } break; case UI_EVENT_HKC_PC: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_PC); } break; case UI_EVENT_HKC_YPBPR: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR); } break; case UI_EVENT_HKC_YPBPR2: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR1); } break; case UI_EVENT_HKC_HDMI: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI); } break; case UI_EVENT_HKC_HDMI2: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI1); } break; case UI_EVENT_HKC_HDMI3: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI2); } break; case UI_EVENT_HKC_SCART: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_SCART); } break; case UI_EVENT_HKC_USB: if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1) { APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA); } break; #endif case UI_EVENT_PAUSE: case UI_EVENT_PLAY_PAUSE: #ifdef CONFIG_SUPPORT_MHEG5 #ifdef SUPPORT_SUBTITLE_ON_PG if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false) #endif if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet); if (sdRet == SP_SUCCESS) { break; } } } #endif #ifdef CONFIG_SUPPORT_PVR if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP)) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE); } #if 0//def SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD else if((MID_REC_MODE_MANUAL == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP)) { if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)) { break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { if (DVBAPP_Pvr_GetRECPlayFlag()) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL); } else { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE); } } } #else else { if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); g_bIsPlaykey = FALSE; } else if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))) { AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE) { break; } switch (APP_DVB_Playback_GetProgStateByHandle(eNetType, hProg)) { case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED: dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__); case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED: dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__); case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED: dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__); case MID_PLAYBK_PROG_STATE_TEMP_SERVICE: dvb_printf("Error: %s program state data service!\n", __FUNCTION__); case MID_PLAYBK_PROG_STATE_NOT_RUNNING: dvb_printf("Error: %s program state not running!\n", __FUNCTION__); case MID_PLAYBK_PROG_STATE_LOCKED: dvb_printf("Error: %s program state locked!\n", __FUNCTION__); return 0; default: break; } MID_RecorderPauseResume(); _DVBApp_Recorder_PauseResume(); g_bIsPlaykey = TRUE; } } #endif break; #else _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; #endif case UI_EVENT_TIMESHIFT: #ifdef REMINDER_OLNY_NO_RECORD _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; #endif #ifdef CONFIG_SUPPORT_PVR #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL) if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction)) { break; } #elif defined(SUPPORT_PVR_ONOFF) if(!g_stSetupData.PVROnOff) { break; } #endif if (u8MidRecState == MID_REC_STATUS_STOP) { if (DVBApp_CheckForRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC) != SP_SUCCESS) { break; } #ifdef CONFIG_SUPPORT_MHEG5 if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT); } else #endif // #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL #if defined(SUPPORT_TEAC_TIMESHIFT_CTRL) || defined(SUPPORT_PVR_SPEC_START_NO_POP) //for mantis 191631, TEAC spec. start timeshift immediately with no pop msg { PVR_DEBF(" ==timeshift start is called!!!== \n"); _DVBApp_CloseAllMenu(); DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC); } #else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_START); } #endif break; } else if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)) { PVR_DEBF(" dvb app stop timeshift -UI_EVENT_TIMESHIFT- \n"); _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP); } break; #else _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; #endif #ifdef CONFIG_SUPPORT_PVR case UI_EVENT_REC_LIST: #if (defined CONFIG_IR501) //case UI_EVENT_DEVLIST: #endif #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL) if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction)) { break; } #elif defined(SUPPORT_PVR_ONOFF) if(!g_stSetupData.PVROnOff) { break; } #endif if (MID_RecorderIsCurRecording() != DRV_SUCCESS) //not allow to open timerlist when recording { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } #ifdef SUB_CUSTOMER_Tianle SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, 0); #else SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, 0); #endif } break; case UI_EVENT_REC_FILE: #ifdef REMINDER_OLNY_NO_RECORD break; #endif #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL) if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction)) { break; } #elif defined(SUPPORT_PVR_ONOFF) if(!g_stSetupData.PVROnOff) { break; } #endif if (!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST))) { #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL if (u8MidRecState == MID_REC_STATUS_STOP) #endif { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, 0); } #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } #endif } else { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST); if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD); } } break; #endif /*#ifdef CONFIG_SUPPORT_PVR case APP_DVB_GLOBAL_EVENT_REC_DURATION_EXIT: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME); } break; case APP_DVB_GLOBAL_EVENT_REC_GOTO_EXIT: SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO); break; #endif*/ case APP_GLOBAL_EVENT_POPMSG_YES: #ifdef CONFIG_CIPLUS_SUPPORT if (POPMSG_CONFIRM_ASK_PROFILE_ACTION == dParam) { APP_CIPLUS_ProfileAction(FALSE); } #endif #ifdef SUPPORT_DYNAMIC_MULTIPLEXES if (dParam == PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV) { _DVBApp_NewServicesToDatabase(); } else if (dParam == PLAYBACK_POPUP_CONFIRM_REMOVE_SRV) { DVBApp_RemoveUnstableService();//zhongbaoxing added to remove not running services @20120210 } else #endif #ifdef CONFIG_SUPPORT_PVR if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME) { if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead { memset(&g_stDetails,0,sizeof(AL_PR_details_t)); memset(&g_stOldDetails,0,sizeof(AL_PR_details_t)); AL_PR_GetById(g_dReminderId, &g_stDetails); AL_PR_GetById(g_dReminderId, &g_stOldDetails); DVBApp_PVRRec_SetTimerCancle(); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stOldDetails); } } else if (dParam == POPMSG_CONFIRM_FIND_NEW_TSID) { dvb_printf("======POPMSG_CONFIRM_FIND_NEW_TSID YES\n"); #ifdef CONFIG_DTV_SUPPORT if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); APP_SetPlaybackPauseState(FALSE); } bFindNewTSID = TRUE; SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS, SEARCH_D_FULL_FREQ_MODE); #endif //APP_GUIOBJ_DVB_PartitionList_PartitionFormat(); } else if ((dParam == POPMSG_CONFIRM_START_RECORD) || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD)) { dvb_printf("start record is call\n"); _DVBApp_CloseAllMenu(); _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime(); DVBApp_StartRecord(MID_REC_MODE_MANUAL); } else if (dParam == POPMSG_CONFIRM_STOP_THIFT_TO_REC) { DVBApp_StopTimeshift(TRUE); _DVBApp_CloseAllMenu(); _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime(); DVBApp_StartRecord(MID_REC_MODE_MANUAL); } #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC else if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER) ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER) ||(dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC) ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC)) { _DVBApp_StopRECForTimerConfirmDone(dParam); } #endif else if (dParam == POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH) { INT32 iRet; dvb_printf("====== force to enter record !\n"); _DVBApp_CloseAllMenu(); _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT); MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL); iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord(); if (iRet != PVR_MSG_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); MID_Recorder_SetRecMode(MID_REC_MODE_MAX); APP_GUIOBJ_DVB_PvrRec_RegUninitCallback(); return SP_ERR_FAILURE; } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0); } else if ((dParam == POPMSG_CONFIRM_START_TIMESHIFT) || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT)) { _DVBApp_CloseAllMenu(); DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC); } else if (dParam == POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH) { INT32 iRet; PVR_DEBF("====== force to enter timeshift !\n"); _DVBApp_CloseAllMenu(); if (MID_REC_MODE_AUTO == g_eCheckRecMode) { MID_Recorder_SetRecMode(MID_REC_MODE_AUTO); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT); MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC); } iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord(); if (iRet != PVR_MSG_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID); MID_Recorder_SetRecMode(MID_REC_MODE_MAX); APP_GUIOBJ_DVB_PvrRec_RegUninitCallback(); g_eCheckRecMode = MID_REC_MODE_MAX; return SP_ERR_FAILURE; } if (MID_REC_MODE_AUTO != MID_Recorder_GetRecMode()) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0); } } else if (dParam == POPMSG_CONFIRM_STOP_RECORD) { dvb_printf("stop record is call\n"); DVBApp_SetTVRadioSwap(FALSE); g_ProgHandleB4Rec = 0; DVBApp_StopRecord(); memset(&g_stDetails,0,sizeof(AL_PR_details_t)); if(g_stUserInfoData.Subtitle == 0) DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); } else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT) { dvb_printf("stop timeshift is call\n"); DVBApp_StopTimeshift(TRUE); if(g_stUserInfoData.Subtitle == 0) DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); } else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL) { DVBApp_SetTVRadioSwap(FALSE); g_ProgHandleB4Rec = 0; DVBApp_StopRecord(); memset(&g_stDetails,0,sizeof(AL_PR_details_t)); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0); } else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE) { dvb_printf("stop record for channel change!\n"); DVBApp_StopRecord(); memset(&g_stDetails,0,sizeof(AL_PR_details_t)); { if (g_bIsNumKey) { _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE); return 0; } if (g_bIsFav == FALSE) { // normal if (TRUE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE); } else if (FALSE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE); } } else { // fav if (TRUE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType); } else if (FALSE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType); } } if (hProg != AL_DB_INVALIDHDL) { AL_DB_EDBType_t db_type; AL_DB_ERecordType_t record_type; AL_DB_GetRecordType(hProg, &db_type, &record_type); if (db_type == AL_DBTYPE_DVB_ATV) { _DVBApp_CloseAllMenu(); break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } #ifdef SUPPORT_CEC_TV if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } #endif _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE); } else { DVBApp_CheckProgramType(TRUE); } break; } } else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE) { dvb_printf("stop record for source change!\n"); DVBApp_StopRecord(); memset(&g_stDetails,0,sizeof(AL_PR_details_t)); { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)) { _DVBApp_Exit_All_Menu(); } else { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0); } break; } } else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL) { DVBApp_StopTimeshift(TRUE); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0); } else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE) { dvb_printf("stop timeshift for channel change!\n"); DVBApp_StopTimeshift(TRUE); { if (g_bIsNumKey) { _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE); return 0; } if (g_bIsFav == FALSE) { //normal if (TRUE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE); } else if (FALSE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE); } } else { // fav if (TRUE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType); } else if (FALSE == g_bIsCHUp) { hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType); } } if (hProg != AL_DB_INVALIDHDL) { AL_DB_EDBType_t db_type; AL_DB_ERecordType_t record_type; AL_DB_GetRecordType(hProg, &db_type, &record_type); if (db_type == AL_DBTYPE_DVB_ATV) { _DVBApp_CloseAllMenu(); break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } //APP_DVB_Playback_SetUnlock(FALSE); //DVBApp_ChannelChange(eServiceType, sdProgIndex); _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE); } else { DVBApp_CheckProgramType(TRUE); DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } break; } } else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE) { dvb_printf("stop timeshift for source change!\n"); DVBApp_StopTimeshift(TRUE); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift) { DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)) { _DVBApp_Exit_All_Menu(); } else { DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0); } break; } else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG) || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_EPG)) { if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG) { DVBApp_StopRecord(); } else { DVBApp_StopTimeshift(TRUE); } _DVBApp_CloseAllMenu(); bHasValidServ = AL_DB_HasVisibleService(eNetType); if (bHasValidServ) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } break; } else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST) || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CHNLIST)) { if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST) { DVBApp_StopRecord(); } else { DVBApp_StopTimeshift(TRUE); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { _DVBApp_CloseAllMenu(); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0); } } break; } else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST) || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_FAVLIST)) { if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST) { DVBApp_StopRecord(); } else { DVBApp_StopTimeshift(TRUE); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)) { _DVBApp_CloseAllMenu(); } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST); _DVBApp_CheckPopupDisplay(); } else { _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0); } } break; } else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY) || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY)) { if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY) { DVBApp_StopRecord(); } else { DVBApp_StopTimeshift(TRUE); } _DVBApp_CloseAllMenu(); DVBApp_ResetPopup_Channel(); if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA)) { dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n"); } break; } else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY) || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY)) { if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY) { DVBApp_StopRecord(); memset(&g_stDetails,0,sizeof(AL_PR_details_t)); } else { DVBApp_StopTimeshift(TRUE); } if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); } break; } else if (POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == dParam) { APP_WAKEUP_Recorder_ResetTimeout(); DVBApp_PVRRec_SetTimerCancle(); } else if (POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY == dParam) { if (u8MidRecState != MID_REC_STATUS_STOP) { if (MID_TSPLParser_GetThreadState() == FALSE) DVBApp_StopRecord(); else DVBApp_StopTimeshift(TRUE); } MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG) || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG)) { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB); g_stUserInfoData.Subtitle = 0; //OFF AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle)); if (MID_REC_MODE_MANUAL == u8MIDRecMode) { DVBApp_StopRecord(); } else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) { DVBApp_StopTimeshift(TRUE); } else if (MID_REC_MODE_AUTO == u8MIDRecMode) { g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift)); DVBApp_StopTimeshift(TRUE); } DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); } else if (POPMSG_CONFIRM_INVALID_USB == dParam) { MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } else #endif //zhongbaoxing added for mantis 0135994 @20110608 +++ #ifdef CONFIG_SUPPORT_MHEG5 if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5) { DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL); DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB); if(g_stUserInfoData.Subtitle != 0) { g_stUserInfoData.Subtitle = 0; //OFF AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle)); } DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) //Gahu:D0305 SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } else #endif //zhongbaoxing added for mantis 0135994 @20110608 --- #ifdef CONFIG_CONFIRM_AUTO_UPGRADE if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE) { DVBApp_ResetPopup_Channel();//add for 0159405 @20111114 if (!APP_MenuMgr_Exist_Main_Menu() && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))) { _DVBApp_Exit_All_Menu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE); } else if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, 0); } } else #endif #ifdef N32_GAME_SUPPORT if (dParam == POPMSG_CONFIRM_START_GAME_UPGRADE) { dvb_printf("\n!!!start ugrade game\n"); _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORTING_GAME); APP_Clone_Revert_BinFile_to_System(UPGRADE_GAME_BIN_ID); } else #endif if (POPMSG_CONFIRM_FLIP == dParam) { g_stFactoryUserData.Function.PanelSetting.n_FlipIndex = Factory_GetFlipIndex(); AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex), &(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex)); AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex)); MID_TVFE_SetPanelInverse((BOOL)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex)); //MID_DISP_DTVSetFlip((MID_DISP_FlipType_t)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex) ); // added for VIP test GL_TaskSleep(2000); APP_Sysset_Reset_System(); // APP_Panel_SetBacklightEnOnOff(FALSE);//makr for S2tek // MID_GPIO_SetGPIOOffLevel(GPIO_PANEL_ON_PIN);//makr for S2tek // system_reset();//makr for S2tek } #ifdef CONFIG_SUPPORT_USB_UPGRADE if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam) { if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM); } } #endif break; case APP_GLOBAL_EVENT_POPMSG_NO: #ifdef CONFIG_SUPPORT_MHEG5 if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5) { DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL); } else #endif #ifdef CONFIG_SUPPORT_PVR if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME) { APP_WAKEUP_Recorder_ResetTimeout(); DVBApp_PVRRec_SetTimerCancle(); //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0); } else if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM) { al_uint32 CurTimeInSec = 0; UINT32 RECStartTime = 0; AL_Time_GetCurTimeInSecs(&CurTimeInSec); RECStartTime = DVBApp_GetTimerRECStartTime(); if (RECStartTime > CurTimeInSec) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER); } } else if (dParam == POPMSG_CONFIRM_STOP_RECORD) { /*added by xm.zeng on 2014/7/3 for mantis id:0023174*/ if((g_bNoSteamData == TRUE) && (bSetUnMuteFlag == FALSE) && (g_bMidHasUnmute == FALSE)) { DVBApp_CheckProgramType(TRUE); } } if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE) { DVBApp_CheckProgramType(FALSE); } if (POPMSG_CONFIRM_INSERT_USB == dParam) { MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } #endif if (dParam == POPMSG_CONFIRM_FLIP) { DVBApp_ClosePopup(POPMSG_CONFIRM_FLIP, UI_EVENT_NULL); SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (UI_EVENT_FACTORY|PASS_TO_SYSAPP), 1); } #ifdef CONFIG_SUPPORT_USB_UPGRADE if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam) { //if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) //{ //SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM); //} } #endif #ifdef CONFIG_CONFIRM_AUTO_UPGRADE if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE) { AutoUpgrade = FALSE; if (dLastFocusedIndex != DVB_GUIOBJ_POPMSG) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dLastFocusedIndex, 0); if (dLastFocusedIndex == DVB_GUIOBJ_PROGINFO) { DVBApp_CheckProgramType(TRUE); } else { bHasValidServ = AL_DB_HasVisibleService(eNetType); if (bHasValidServ) { DVBApp_CheckProgramType(FALSE); } } } else { DVBApp_CheckProgramType(TRUE); } } #endif break; case APP_GLOBAL_EVENT_POPMSG_TIMEOUT: switch (dParam) { #ifdef CONFIG_CIPLUS_SUPPORT case POPMSG_PROMP_CIPLUS_UPGRADE_SUCC: #ifdef SUPPORT_LED_FLASH APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0); #endif break; case POPMSG_PROMP_CIPLUS_UPGRADE_FAILED: #ifdef SUPPORT_LED_FLASH APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0); #endif break; #endif default: break; } break; case APP_GLOBAL_EVENT_POPMSG_EXIT_KEY_MATCH: #ifdef CONFIG_SUPPORT_PVR if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME) { APP_WAKEUP_Recorder_ResetTimeout(); DVBApp_PVRRec_SetTimerCancle(); //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0); } #endif #ifdef CONFIG_CONFIRM_AUTO_UPGRADE if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE) { bHasValidServ = AL_DB_HasVisibleService(eNetType); AutoUpgrade = FALSE; if (bHasValidServ) { DVBApp_CheckProgramType(TRUE); } } #endif break; #ifdef CONFIG_SUPPORT_OTA_UPGRADE case DMN_EVENT_OTA_EVENT_PROMPT: if (APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_MAX || APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_FromScan) { dvb_printf("only one choice\n"); } else { APP_GUIOBJ_DVB_OTAPrompt_SetShowFlag(OtaShowPromt_MAX); if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROMPT)) { if (FALSE == DVBApp_GetOTAStatus()) { DVBApp_SetOTAStatus(TRUE); } _DVBApp_ExitAll(); SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROMPT); MID_OtaMonStop(TRUE); autoupgrade_sate = AU_MAX; } } break; case DMN_EVENT_OTA_EVENT_PROGRESS: if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS)) { if(FALSE == DVBApp_GetOTAStatus()) { DVBApp_SetOTAStatus(TRUE); } _DVBApp_ExitAll(); SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL|PLAYBACK_KEEP_DMX_FIFO); APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); APP_GUIOBJ_DVB_OTAUpgrade_RegisterUICallbk(); #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE APP_GUIOBJ_DVB_OTAPrompt_RevTimer(); /*revert wake up time in this situation*/ DVBApp_SetAU_Sate(AU_MAX); DVBApp_SetAutoUpgrade(FALSE); #endif SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS); } break; #endif case DMN_EVENT_AUTODVD_CHANGE_SOURCE: #if 1 /* Check Valid state +++*/ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData)); if (g_stFactoryUserData.n_FactSet_BurningMode == al_true) { break; } if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))|| (APP_MenuMgr_Exist_Scan_Menu()) || #ifdef CONFIG_SUPPORT_USB_UPGRADE (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) || #endif (AL_CS_IsStop() != al_true)) { break; } #endif DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam)) { dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n"); } break; case DMN_EVENT_AUTOSCART_CHANGE_SOURCE: /* Check Valid state +++*/ AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0, sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData)); if (g_stFactoryUserData.n_FactSet_BurningMode == al_true) { break; } /* recording */ /*#ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG; APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType); if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME || u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM) { #ifdef CONFIG_DVB_SYSTEM //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0); //clear SCART PlugInStatus for mantis 0204109 APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0); APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0); #endif break; } } if (u8MidRecState != MID_REC_STATUS_STOP) { #ifdef CONFIG_DVB_SYSTEM //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0); //clear SCART PlugInStatus for mantis 0204109 APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0); APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0); #endif break; } #endif*/ #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT //for mantis 0202693 if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATSYSTEM)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATEDIT)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATADD)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPEDIT)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPADD)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETLOCATION)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETPOSTION)) { // dvb_printf("\n ======%s %s %d\n",__FUNCTION__,__FUNCTION__,__LINE__); //clear SCART PlugInStatus APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0); APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0); break; } #endif if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))|| (APP_MenuMgr_Exist_Scan_Menu()) || #ifdef CONFIG_SUPPORT_USB_UPGRADE (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) || #endif (AL_CS_IsStop() != al_true)) { #ifdef CONFIG_DVB_SYSTEM APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0); #endif break; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG; APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType); if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME) { break; } } #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { break; } #endif /* Check Valid state ---*/ DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO); } #endif if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam)) { dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n"); } else { #ifdef CONFIG_DVB_SYSTEM if (dParam == APP_SOURCE_SCART) { APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0); APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0); } #endif } break; case APP_GLOBAL_EVENT_SLEEP_TIMER_INFO: if ((APP_MenuMgr_Exist_Scan_Menu()) #ifdef CONFIG_SUPPORT_USB_UPGRADE //zhongbaoxing added for mantis bug 139209 @20110623 || (APP_Data_Get_USB_Upgrade_State() == TRUE) #endif ) { APP_GUIOBJ_SleepTimer_Reset(); } else { _DVBApp_CloseAllMenu(); DVBApp_ResetPopup_Channel(); if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO)) { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO, dParam); } } break; #ifdef CONFIG_CIPLUS_SUPPORT case APP_GLOBAL_EVENT_ASK_PROFILE_ACTION: APP_DVB_CI_AskProfileAction(); break; #endif case APP_GLOBAL_EVENT_CIHDCPKEY_RESULT: if (dParam == 0xffffffff) break; UINT32 u32CIupgrade = dParam & 0xf; UINT32 u32HDCPupgrade = (dParam & 0xf0)>>4; { UINT32 u32PQupgrade = (dParam & 0xf00)>>8; if(u32PQupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORT_PQ_PASS); printf("PQ Bin import successfull !"); } } if (u32CIupgrade && u32HDCPupgrade) { // upgrade CI & HDCP if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS) { if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS) { // CI OK, HDCP OK _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_PASS); } else { // CI OK, HDCP fail _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL); } } else { if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS) { // CI fail, HDCP OK _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS); } else { // CI fail, HDCP fail _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL); } } } else if (u32CIupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE) { _DVBApp_CloseAllMenu(); // upgrade CI if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE); } } else if (u32HDCPupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE) { // upgrade HDCP if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC); } else { _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE); } } break; #ifdef CONFIG_SUPPORT_3D_EN case UI_EVENT_3D: dvb_printf("\n\n===UI_EVENT_3D [%s]====\n\n",__FUNCTION__); AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1) { dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__); break; } APP_Video_Check3DState(&ePicture3DState); if(ePicture3DState == APP_VIDEO_IMAGE_3D_DISABLED) { if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO); } _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE); break; } if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)) { Boolean bShowLogo = DTV_FALSE; bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState(); AL_DB_ERecordType_t eRecordType; MID_PlaybackGetCurProgHandle(&eRecordType, al_null); if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE)) { break; } _DVBApp_CloseAllMenu(); if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) { if (eSourType == APP_SOURCE_DTV) { #ifdef CONFIG_SUPPORT_SUBTITLE UINT8 tmpIdx = 0; AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); tmpIdx = g_stUserInfoData.Subtitle; if (tmpIdx == DVB_SWITCH_ON) { #ifdef Subtitle_Freeze AL_Subtitle_SetFreeze(FALSE); #else DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB); #endif } #endif #ifdef CONFIG_SUPPORT_MHEG5 #ifdef CONFIG_SUPPORT_SUBTITLE if (tmpIdx == DVB_SWITCH_OFF) #endif { DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5); } #endif } SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE); } if (APP_GetPlaybackPauseState() == TRUE) { MID_PlaybackStreamResume(1); g_PauseState = FALSE; } SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_3D_INFO, dMessage); dvb_printf("\n\n%s %d\n\n", __FUNCTION__, dMessage); } else { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO); } break; case APP_GLOBAL_EVENT_3D_TIMER_INFO: AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData)); APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX; eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType); if((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)) && (g_stPictureData.stPictureModeSourceTab[eStorageSourType].st3DMenu.Mode3D != SPAL_PQ_3DMODE_OFF)) { Boolean bShowLogo = DTV_FALSE; bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState(); AL_DB_ERecordType_t eRecordType; MID_PlaybackGetCurProgHandle(&eRecordType, al_null); if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE)) { break; } _DVBApp_CloseAllMenu(); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,APP_GUIOBJ_3D_INFO, dParam); } break; #endif #ifdef NET_SUPPORT case UI_EVENT_SRC_NET: if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_NET)) { dvb_printf("UI_EVENT_SRC_NET change Net Fail!!!!!!!!!\n"); } break; #endif #ifdef CONFIG_HDMI_SUPPORT_MHL case DMN_EVENT_MHL_CHANGE_SOURCE: /* Check Valid state +++*/ /* Auto install not finish */ if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) { break; } /* Scan State */ if (AL_CS_IsStop() != 1) { break; } /* ** Channel Tuning, ** Channel - Digital Manual Search, */ if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH)) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS)) #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH)) #endif #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH)) #endif ) { break; } #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { break; } #endif DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); /* Check Valid state ---*/ APP_Source_Type_t eMhlSrc; UINT8 IsMHLSoure; APP_GOBJ_Source_CheckAndGetMHLSource(&IsMHLSoure,&eMhlSrc); if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eMhlSrc)) { dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n"); } break; #endif #ifdef SUPPORT_CEC_TV case DMN_EVENT_CECTV_CHANGE_SOURCE: /* Check Valid state +++*/ /* Auto install not finish */ if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)) { break; } /* Scan State */ if (AL_CS_IsStop() != 1) { break; } /* ** Channel Tuning, ** Channel - Digital Manual Search, */ if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH)) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS)) #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH)) #endif #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT) || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH)) #endif ) { break; } #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { break; } #endif /* Check Valid state ---*/ DVBApp_ResetPopup_Channel(); _DVBApp_CloseAllMenu(); APP_Source_Type_t eSrc; APP_Video_GetCECPortMapping(dParam, &eSrc); if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eSrc)) { dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n"); } break; #endif #ifdef CONFIG_SUPPORT_PVR case DMN_EVENT_USB_HDD_ATTACHED: { int iPtListIdx = -1; DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL); dvb_printf("dvb has received DMN_EVENT_USB_HDD_ATTACHED\n\n\n\n"); //if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK) { if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE) { printf("set default partition\n\n"); MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); } } break; } case DMN_EVENT_USB_HDD_DETACHED: { int i; int MountCount; char DefPartitionName[5]; char AttchPartitionName[5]; Boolean HaveDefPartition = FALSE; int devicelen = 4; MountCount = MID_PartitionList_GetMountedCount(); APP_GUIOBJ_DVB_PartitionList_ClearPartitionInfo(); if (MountCount == 0 && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE); } if (MID_RecorderIsCurRecording() == DRV_SUCCESS) { strncpy(DefPartitionName, (char *)(MID_RecorderGetRecordingCwd()+5), devicelen); } else { char DefPartition[15]; int iPtListIdx; if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK) { iPtListIdx = 0; //set partition 0 for default partition } MID_PartitionList_GetMountName(0, DefPartition); strncpy(DefPartitionName, (char *)(DefPartition+5),devicelen); } int j; for (j = 0; j < devicelen; j++ ) { if (DefPartitionName[j] == '/') { DefPartitionName[j] = '\0'; } } for (i=0; i < MountCount; i++) { strncpy(AttchPartitionName, (char *)(MID_PartitionList_GetDevName(i)+5), devicelen ); for (j = 0; j < devicelen; j++ ) { if (AttchPartitionName[j] == '/') { AttchPartitionName[j] = '\0'; } } //printf("AttchPartitionName is %s, DefPartitionName is %s\n",AttchPartitionName,DefPartitionName); if (strncmp(DefPartitionName, AttchPartitionName, devicelen) == 0) { //printf("---------------------------------------------- %d\n",__LINE__); HaveDefPartition = TRUE; break; } } if (HaveDefPartition == FALSE) { //printf("---------------------------------------------- %d\n",__LINE__); if (MID_REC_MODE_MANUAL == u8MIDRecMode || MID_REC_MODE_UNATTENDED == u8MIDRecMode) { DVBApp_StopRecord(); } else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) || (MID_REC_MODE_AUTO == u8MIDRecMode)) { DVBApp_StopTimeshift(TRUE); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)) { #ifdef CONFIG_SUPPORT_SUBTITLE if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU); } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD); } SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY); } DVBApp_SetBGTimeshift(0); MID_TSPLParser_Init("NULL"); //for mantis 0150969, set the wrong szPtName to reset the g_sdPltCnt MID_RecorderRefreshDefaultPartition(); } break; } case DMN_EVENT_DVB_RECORDER_GFS_OK: { INT32 dFocusedIndex; if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex)) { _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL); } } break; #endif #ifdef CONFIG_SUPPORT_USB_UPGRADE case APP_GLOBAL_EVENT_USB_UPGRADE: { UINT32 dActiveSysApp = TOTAL_SYS_APP_SIZE; unsigned int dIndex; MAINAPP_GetActiveSystemAppIndex(&dIndex); if (MAINAPP_GetActiveSystemAppIndex(&dActiveSysApp) != MAIN_APP_SUCCESS) { break; } if (dActiveSysApp != SYS_APP_DVB) { break; } #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetUpgradeandAutoTestFlag() == TRUE) { AutoUpgrade = TRUE; _DVBApp_Exit_All_Menu(); DVBApp_ResetPopup_Channel();//add for 0159405 @20111114 if(dParam==1) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0); } else { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE); } break; } #endif if(dParam==1)//from fm { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0); break; } if (AL_CS_IsStop() == FALSE) { break; } } if (!APP_MenuMgr_Exist_Main_Menu() && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))) { _DVBApp_Exit_All_Menu(); DVBApp_ResetPopup_Channel();//add for 0159405 @20111114 AutoUpgrade = TRUE; #if defined(CONFIG_CONFIRM_AUTO_UPGRADE) if(FALSE == gUSBUpgradeBinIsSupperBin) { INT32 dFocusedIndex; int ret = SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_ATV, &dFocusedIndex); if (ret == SYSTEM_APP_SUCCESS) { dLastFocusedIndex = dFocusedIndex; } else if(ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { dLastFocusedIndex = DVB_GUIOBJ_MAX; } SYSAPP_GOBJ_GetLastFocusedGUIObject(SYS_APP_DVB,&dLastFocusedIndex); memset(&stPopup, 0x0, sizeof(PopmsgParam_t)); stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_AUTO_UPGRADE; stPopup.extend.stConfirm.u8Default = POPMSG_NO; DVBApp_SchedulePopup(stPopup); } else #endif { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE); } } break; #endif #ifdef N32_GAME_SUPPORT case APP_GLOBAL_EVENT_GAME_UPGRADE: if (!APP_MenuMgr_Exist_Main_Menu() && !(APP_MenuMgr_Exist_Factory_Menu())) { _DVBApp_Exit_All_Menu(); if(dParam == 0) { dvb_printf("\n!!!open confirm for game upgrade\n"); memset(&stPopup, 0x0, sizeof(PopmsgParam_t)); stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_GAME_UPGRADE; stPopup.extend.stConfirm.u8Default = POPMSG_YES; DVBApp_SchedulePopup(stPopup); } else { dvb_printf("\n!!!show popmsg not enough size to upgrade game\n"); _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIZE_FOR_GAME); } } break; #endif case APP_GLOBAL_EVENT_FLIP: if (APP_MenuMgr_Exist_Factory_Menu()) { APP_MenuMgr_Exit_Factory_Menu(); } memset(&stPopup, 0x0, sizeof(PopmsgParam_t)); stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_FLIP; stPopup.extend.stConfirm.u8Default = POPMSG_YES; DVBApp_SchedulePopup(stPopup); break; #ifdef CONFIG_SUPPORT_USB_UPGRADE case APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH: if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING); } memset(&stPopup, 0x0, sizeof(PopmsgParam_t)); stPopup.eType = POPMSG_TYPE_CONFIRM; stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL; stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS; stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_ERASE_WHOLE_FLASH; stPopup.extend.stConfirm.u8Default = POPMSG_NO; DVBApp_SchedulePopup(stPopup); break; #endif case APP_GLOBAL_EVENT_KEYLOCK: _DVBApp_ShowPopup(DVB_APP_POP_MSG_KEYLOCK); break; #ifdef CONFIG_KEYPAD_SINGLE_REUSE case APP_GLOBAL_EVENT_SINGLEKEYPAD_OPEN: SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SINGLEKEYPAD, 0); break; case APP_GLOBAL_EVENT_SINGLEKEYPAD_CLOSE: SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SINGLEKEYPAD); break; #endif case APP_GLOBAL_EVENT_OVER_MAXVOLUME: _DVBApp_ShowPopup(DVB_APP_POP_MSG_OVERMAXVOLUME); break; #ifdef SUPPORT_SFU_AUTO_TEST case APP_DVB_GLOBAL_EVENT_SET_RF_TYPE: SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0); APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL); APP_Console_TO_SUF_Respond(CON_TO_SUF_ACK); #if 0 extern void Enable_Debug_Message(UINT32 DBGStatus); Enable_Debug_Message(1< 0) { if (g_dCurPopup == u32CurPopup) { SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_POPMSG_RESET_TIMEOUT, Popup.extend.stPrompt.iTimeout); return 0; } bTimeoutFlag = 1; } break; default: return 0; } if (u32CurPopup > PLAYBACK_POPUP_NONE) { if (bTimeoutFlag == 0) { g_u32PopupWaitingList |= 1 << (u32CurPopup - PLAYBACK_POPUP_NONE); stPopupWaitingList[u32CurPopup-PLAYBACK_POPUP_NONE] = Popup; } if (u32CurPopup > g_u32OldPopup) { g_u32OldPopup = u32CurPopup; if (APP_MenuMgr_Exist_Main_Menu() || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD) #ifdef CONFIG_SUPPORT_SUBTITLE || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) #endif #ifdef CONFIG_SUPPORT_TTX || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX) #endif #ifdef CONFIG_CI_SUPPORT || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ) #endif || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL) #ifdef SUPPORT_LCN_CONFLICT_MENU || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LCN_CONFLICT_MENU) #endif || (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1) #ifdef OSD_GAME_SUPPORT || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME) #endif #ifdef SUPPORT_CONAX_CAS || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP) #endif || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR) #ifdef CONFIG_SUPPORT_3D_EN || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO) #endif ) { g_u32OldPopup = PLAYBACK_POPUP_NONE; g_dCurPopup = u32CurPopup; return 0; } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } APP_MenuMgr_SetMsgPopup(TRUE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup); g_dCurPopup = u32CurPopup; } } else { if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) && (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } #ifdef OSD_GAME_SUPPORT if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME)) { return 0; } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } APP_MenuMgr_SetMsgPopup(TRUE); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup); g_dCurPopup = u32CurPopup; } return 1; } /***************************************************************************** ** FUNCTION : DVBApp_ClosePopup ** ** DESCRIPTION : ** Close dvb popmsg ** ** PARAMETERS : ** u32ClosePopup - popmsg type ** dMessage - send message type when close popmsg ** ** RETURN VALUES: ** None *****************************************************************************/ INT32 DVBApp_ClosePopup(UINT32 u32ClosePopup, UINT32 dMessage) { UINT32 dCheckFlag; APP_MenuMgr_SetMsgPopup(FALSE); if (u32ClosePopup > PLAYBACK_POPUP_NONE) { if (u32ClosePopup == g_u32OldPopup) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } } if (dMessage != UI_EVENT_NULL) { SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup); } g_u32PopupWaitingList &= ~(1 << (u32ClosePopup - PLAYBACK_POPUP_NONE)); if (u32ClosePopup == g_u32OldPopup) { g_u32OldPopup = PLAYBACK_POPUP_NONE; g_dCurPopup = PLAYBACK_POPUP_NONE; for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--) { if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE))) { DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]); break; } } } } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } if (dMessage != UI_EVENT_NULL) { SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup); } if (g_u32OldPopup != PLAYBACK_POPUP_NONE) { g_u32OldPopup = PLAYBACK_POPUP_NONE; } g_dCurPopup = PLAYBACK_POPUP_NONE; if(u32ClosePopup == POPMSG_PROMPT_PWD_ERROR) //use g_stPopMsgParam.stParam.dParam1 to indicate that no need to pop scheculed pop. { return 1; } for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--) { if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE))) { DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]); break; } } } return 1; } /***************************************************************************** ** FUNCTION : DVBApp_ResetPopup_Channel ** ** DESCRIPTION : ** Reset all popup state ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ INT32 DVBApp_ResetPopup_Channel(void) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_REMOVE_SRV, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_PROMPT_REMOVE_SRV, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_DATABASE_EMPTY, UI_EVENT_NULL); DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL); #ifdef CONFIG_SUPPORT_MHEG5 DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL); #endif #ifdef CONFIG_SUPPORT_SUBTITLE //DVBApp_ClosePopup(POPMSG_PROMPT_NO_SUBTITLE, UI_EVENT_NULL); #endif return SP_SUCCESS; } /***************************************************************************** ** FUNCTION : DVBApp_HideMsgPopupDisplay ** ** DESCRIPTION : ** Hide popup display ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ INT32 DVBApp_HideMsgPopupDisplay(void) { g_u32OldPopup = PLAYBACK_POPUP_NONE; if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG); } return 0; } /***************************************************************************** ** FUNCTION : DVBApp_IsPopupExist ** ** DESCRIPTION : ** Judge one pop up exist ** ** PARAMETERS : ** u32TargetPopup - pop up type ** ** RETURN VALUES: ** None *****************************************************************************/ UINT8 DVBApp_IsPopupExist(UINT32 u32TargetPopup) { if (u32TargetPopup == g_u32OldPopup) { return TRUE; } else { if((u32TargetPopup > PLAYBACK_POPUP_NONE) && (g_u32PopupWaitingList & (1 << (u32TargetPopup - PLAYBACK_POPUP_NONE)))) { return TRUE; } else { return FALSE; } } } /***************************************************************************** ** FUNCTION : DVBApp_RestoreOnStandby ** ** DESCRIPTION : ** dvb restore when standby ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ void DVBApp_RestoreOnStandby(void) { extern Boolean g_bScanRunning; #ifdef SUPPORT_LCN DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel(); AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); #endif if (g_bScanRunning) { MID_ScanStop(); #ifdef SUPPORT_LCN /* force process LCN if added service by PSI Monitor */ #ifdef SUPPORT_DVBS_LCN if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S) #else if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C) #endif { LCN_PreJudgeLCN(); LCN_QueryLCNConflict(pLcnConf); dvb_printf(" $$$$$$$$$$$$$$$$$$$ %s %d pLcnConf->ConfCount = %d \n", __FUNCTION__, __LINE__, pLcnConf->ConfCount); if (pLcnConf->ConfCount > 0) { LCN_AutoAssignConflictLCN(); LCN_FreeLCNConflict(); LCN_FreeTRNDDictionary(); } } #endif AL_DB_Sync(APP_DVB_Playback_GetCurrentNetType(), al_false); } } /***************************************************************************** ** FUNCTION : DVBApp_DataApplicationSwitch ** ** DESCRIPTION : ** OSD layer 2 switch ** ** PARAMETERS : ** u32flag - switch flag ** ** RETURN VALUES: ** None *****************************************************************************/ INT32 DVBApp_DataApplicationSwitch(UINT32 u32flag) { UINT32 u32CurrentState = 0; if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_SUB)&DATA_APP_EXECUTABLE) { u32CurrentState |= OSD2CTRLMDL_SUB; } if (APP_Area_SupportDtg())//zhongbaoxing added for mantis 0168195 @20120224 { if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_MH5)&DATA_APP_EXECUTABLE) { #ifdef CONFIG_SUPPORT_PVR if (MID_RecorderState() == MID_REC_STATUS_STOP) #endif u32CurrentState |= OSD2CTRLMDL_MH5; } } if (u32flag & OSD2CTRLMDL_DISABLE) { u32CurrentState = u32flag; } else { if (u32flag & OSD2CTRLMDL_FORCE) { u32CurrentState = (u32CurrentState & u32flag) > 0 ? (u32CurrentState & u32flag) : u32CurrentState; } else { u32CurrentState = (u32CurrentState & u32flag); } } #if defined(CONFIG_SUPPORT_MHEG5_HD) && defined(CONFIG_SUPPORT_MHEG5_ICS) // The receiver must support the simultaneous presentation of MHEG-5 applications and DVB subtitles (D-Book 16.5.1.1) #else if ((u32flag & OSD2CTRLMDL_SUB) && (u32CurrentState & OSD2CTRLMDL_MH5) && (u32flag & OSD2CTRLMDL_ENABLE)) { u32CurrentState = ON_DATA_APPLICATION_DECISION(u32CurrentState); } #endif u32CurrentState |= (u32flag & (OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_DISABLE)); return _DVBApp_DataApplicationGuiObjectRefresh(u32CurrentState); } /***************************************************************************** ** FUNCTION : DVBApp_GetScrambleStatus ** ** DESCRIPTION : ** clear flag status when change source ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ Boolean DVBApp_GetScrambleStatus(void) { return g_bScrambleFlag; } #ifdef CONFIG_SUPPORT_OTA_UPGRADE /***************************************************************************** ** FUNCTION : DVBApp_GetOTAStatus ** ** DESCRIPTION : ** clear flag status when cancel or finish OTA upgrade ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ Boolean DVBApp_GetOTAStatus(void) { return g_bOTAFlag; } /***************************************************************************** ** FUNCTION : DVBApp_SetOTAStatus ** ** DESCRIPTION : ** set flag status ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ void DVBApp_SetOTAStatus(Boolean b_flag) { g_bOTAFlag = b_flag; } #endif /***************************************************************************** ** FUNCTION : DVBApp_ClearStatus ** ** DESCRIPTION : ** clear flag status when change source ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ void DVBApp_ClearStatus(void) { AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType); bSetUnMuteFlag = FALSE; if (eServiceType == AL_RECTYPE_DVBTV) { g_bMidHasUnmute = FALSE; } else if (eServiceType == AL_RECTYPE_DVBRADIO) { g_bMidHasUnmute = TRUE; } #ifdef SUPPORT_DTV_SHOW_BLUESCREEN g_bIsBlueScreen = FALSE; #endif g_SetPQFlag = FALSE; g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW; g_bAudHasUpdate = FALSE; g_UnsupportVideo = FALSE; g_bForceProcessEventCbk = TRUE; g_bNoSteamData = FALSE; g_bTempSerFlag = FALSE; #ifdef CONFIG_SUPPORT_OTA_UPGRADE DVBApp_SetOTAStatus(FALSE); #endif #ifdef CONFIG_SUPPORT_EWS if (g_NonClearEWS == FALSE) { DVBApp_ResetEWS(); } #endif } /***************************************************************************** ** FUNCTION : DVBApp_NoSignal_TimerReset ** ** DESCRIPTION : ** ** ** PARAMETERS : ** ** RETURN VALUES: ** *****************************************************************************/ void DVBApp_NoSignal_TimerReset(void) { g_u32NoSignalTimer = 0; } void DVBApp_NoSignal_StandbyTimerReset(void) { g_u32NoSignalSleepTimer = 0; } void DVBApp_CheckSrvType(al_uint8 SdtSrvType, al_uint8 SrvType, al_uint8 VideoCount, al_uint8 AudioCount, AL_DB_ERecordType_t *RetSrvType) { if (RetSrvType == al_null) { return; } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); *RetSrvType = AL_RECTYPE_DVBTV; if (SrvType != 0xff) { if (SdtSrvType == SERVICE_DIGITAL_RADIO ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO) { *RetSrvType = AL_RECTYPE_DVBRADIO; } else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV) && ((SrvType == SERVICE_DIGITAL_RADIO) || (SrvType == SERVICE_ADVANCED_DIGITAL_RADIO))) { *RetSrvType = AL_RECTYPE_DVBRADIO; } #ifdef CONFIG_DTMB_SYSTEM if (SdtSrvType == SERVICE_DATABROADCAST) { *RetSrvType = AL_RECTYPE_DVBDATA; } #endif } else { if (SdtSrvType == SERVICE_DIGITAL_RADIO ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO) { *RetSrvType = AL_RECTYPE_DVBRADIO; } else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV) && ((SdtSrvType == SERVICE_DIGITAL_RADIO) || (SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO))) { *RetSrvType = AL_RECTYPE_DVBRADIO; } #ifdef CONFIG_DTMB_SYSTEM if (SdtSrvType == SERVICE_DATABROADCAST) { *RetSrvType = AL_RECTYPE_DVBDATA; } #endif } if ((VideoCount != 0xff) && (AudioCount != 0xff) #ifdef CONFIG_DVB_SYSTEM && !APP_Area_SupportAntennaReadyHD() && !APP_Area_SupportRiks() #endif ) { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); if ((VideoCount == 0) && (AudioCount > 0) && *RetSrvType == AL_RECTYPE_DVBTV) { *RetSrvType = AL_RECTYPE_DVBRADIO; } #ifdef CONFIG_DVB_SYSTEM //mantis 186965 by changhong, for mh5 service if((VideoCount > 0) && (*RetSrvType == AL_RECTYPE_DVBDATA) && (g_stChannelData.Country != AREA_NORWAY)) { *RetSrvType = AL_RECTYPE_DVBTV; } #endif #ifdef CONFIG_DTMB_SYSTEM if (VideoCount == 0 && AudioCount == 0) { *RetSrvType = AL_RECTYPE_DVBDATA; } #endif } } void DVBApp_CheckNotVisibleBySrvType(al_uint8 SdtSrvType, al_uint8 bTempSrv, al_uint8 *bNotVisible, al_uint8 *bNotNeedSave) { if (bNotVisible == al_null || bNotNeedSave ==al_null) { return; } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData)); #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM) #if 0 if ((al_false == AL_Event_GetEDTGSupport()) && (al_false == APP_Area_SupportNorDig()) && (pstServiceInfo->usPcrPid == 0x1FFF)) { pstServiceInfo->ucServiceFlag |= SERVICE_NON_VISIBLE; } #endif if (SdtSrvType != SERVICE_NO_SDT) { if(SdtSrvType != SERVICE_DIGITAL_TELEVISION && SdtSrvType != SERVICE_DIGITAL_RADIO && SdtSrvType != SERVICE_ADVANCED_DIGITAL_RADIO && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION) { #ifdef CONFIG_DVB_SYSTEM if((g_stChannelData.Country == AREA_ENGLAND) ||(g_stChannelData.Country == AREA_IRELAND)) { if (SdtSrvType != SERVICE_DATABROADCAST) { *bNotNeedSave = al_true; } } else if(g_stChannelData.Country == AREA_ITALY) { if (SdtSrvType != SERVICE_TELETEXT && SdtSrvType != SERVICE_NOT_IN_SDT) { *bNotVisible = TRUE; } } else if (APP_Area_SupportNorDig()) { if ((g_stChannelData.Country == AREA_NORWAY) ||((SdtSrvType != SERVICE_DATABROADCAST) && (SdtSrvType != SERVICE_TELETEXT) && (SdtSrvType != SERVICE_DVB_MHP))) { *bNotVisible = TRUE; } } else #elif defined CONFIG_DTMB_SYSTEM if (SdtSrvType == SERVICE_DATABROADCAST || SdtSrvType == SERVICE_TELETEXT) { *bNotVisible = TRUE; } else #endif { if ((SdtSrvType != SERVICE_NOT_IN_SDT) && bTempSrv) { *bNotVisible = TRUE; } } } } #endif #ifdef CONFIG_DTMB_SYSTEM if (SdtSrvType == SERVICE_NVOD_REFERENCE) { *bNotVisible = TRUE; } #endif /* mantis 0141374 */ if ((SdtSrvType == SERVICE_NO_SDT)&& bTempSrv) { *bNotVisible = TRUE; } } void DVBApp_ResetDvbSpecRule(UINT8 u8Area) { #ifdef SUPPORT_LCN UINT16 LcnRule = 0; #endif #if defined(SUPPORT_LCN)||defined(SUPPOTR_NOT_ADD_SERVICE) AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType(); #endif #ifdef SUPPORT_LCN APP_Area_GetAreaInfoLcnRule(eNetType, u8Area, &LcnRule); #endif #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE Dvb_SetFreqEnlargeEnable(0); #endif #ifdef SUPPORT_LCN LCN_SetLCNRule(LcnRule); LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FOLLOW_SPEC, DB_DVB_ASSIGN_NONELCN_SEPARATE); #endif AL_Event_SetDTGSupport(FALSE); AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_EBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType); AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_EBOOK); MID_ScanSetCountryCode(APP_Area_GetCountryCode(u8Area)); //Temp mask by jun.luo @ 8/5 for fix compile errorMID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_NONE); switch (u8Area) { #ifdef CONFIG_DVB_SYSTEM case AREA_ENGLAND: AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DTG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType); AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_DBOOK); AL_Event_SetDTGSupport(TRUE); #ifdef CONFIG_SUPPORT_DTG_CERTIFICATION //Temp mask by jun.luo @ 8/5 for fix compile errorMID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_DTG); #endif break; case AREA_ITALY: AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_ZBOOK); AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_ZBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType); break; #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE case AREA_FRANCE: Dvb_SetFreqEnlargeEnable(1); break; #endif case AREA_SPAIN: #ifdef SPECIAL_CHNORDER_FOR_SPAIN AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_OCA);//Engel OCA need to save all Dupli service #endif break; case AREA_HUNGARY: break; case AREA_NETHERLANDS: break; case AREA_FINLAND: case AREA_SWEDEN: case AREA_DENMARK: case AREA_NORWAY: //case AREA_GERMANY: case AREA_IRELAND: AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType); AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_NORDIG); if(u8Area == AREA_IRELAND) { AL_Event_SetDTGSupport(TRUE); } //Temp mask by jun.luo @ 8/5 for fix compile error MID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_NORDIG); break; #endif #ifdef CONFIG_AUS_DVB_SYSTEM case AREA_AUSTRALIA: case AREA_NEW_ZEALAND: case AREA_SINGAPORE: case AREA_AUS_OTHER: AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType); break; #endif default: AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType); break; } #ifdef SUPPOTR_NOT_ADD_SERVICE if(eNetType == AL_DBTYPE_DVB_S) { AL_PSI_Monitor_NotAddService(); } #endif if (u8Area >= MAX_AREA) { u8Area = 0; } if (APP_Area_SupportDtg()) { AL_Event_SetDTGSupport(al_true); } AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8Area)); APP_GuiMgr_Set_Default_Codepage(u8Area); } Boolean DVBApp_GetForceProcessEventState(void) { return g_bForceProcessEventCbk; } /***************************************************************************** ** FUNCTION : DVBApp_fw_callback ** ** DESCRIPTION : ** ** ** PARAMETERS : ** None ** ** RETURN VALUES: ** None *****************************************************************************/ INT32 DVBApp_fw_callback(AFW_event_t event, void *param) { UINT32 message = 0xffffffff; UINT32 dParam = 0; UINT32 Index = TOTAL_SYS_APP_SIZE; if (MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&Index)) { dvb_printf("[%s: %d][Error] get active system app fail\n", __FUNCTION__, __LINE__); return SP_ERR_FAILURE; } dvb_printf(" Received event: %d from AFW module callback.\n\n",event); if (Index == SYS_APP_DVB) { switch (event) { case FW_EPG_NOWNEXT_UPDATE_EVENT: if(g_bForceProcessEventCbk) { dParam = *(UINT32 *)param; message = event|PASS_TO_SYSAPP; } else { if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) ) { return SP_ERR_FAILURE; } message = event; } break; case FW_EPG_SCHEDULE_UPDATE_EVENT: if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) ) { return SP_ERR_FAILURE; } message = event; break; case FW_EPG_PREF_SERVICE_NAME_UPDATE_EVENT: message = FW_MONITOR_UPDATE_SERVICE; break; case FW_DATASAVING_DVBDB_STORE_START_EVENT: case FW_DATASAVING_ATVDB_STORE_START_EVENT: case FW_DATASAVING_DVBDB_STORE_END_EVENT: case FW_DATASAVING_ATVDB_STORE_END_EVENT: message = event; break; #ifdef CONFIG_SUPPORT_TTX case FW_TT_NO_DATA: message = event|PASS_TO_SYSAPP; break; #endif #ifdef CONFIG_SUPPORT_PVR case FW_SCHEDULER_EVENT: { dvb_printf("event is coming,"); message = APP_DVB_GLOBAL_EVENT_PVRSCH |PASS_TO_SYSAPP; dvb_printf("handle = 0x%x\n", ((AL_PR_details_t *)param)->rem_details.handle); memcpy(&g_stDetails, param, sizeof(AL_PR_details_t)); dParam = (UINT32)&g_stDetails; free(param); param = NULL; } break; case FW_SCHEDULER_MSG: dvb_printf("first warning: event will come in 10 sec\n"); dParam = *(UINT32 *)param; message = APP_GLOBAL_EVENT_PVR_REMINDER|PASS_TO_SYSAPP; break; case FW_SCHEDULER_EXPIRE: dvb_printf("warning: event duration is over #############\n"); message = APP_DVB_GLOBAL_EVENT_PVR_EXPIRE|PASS_TO_SYSAPP; dParam =*(UINT32 *)param; break; #endif case FW_MONITOR_TUNER_LOCKED: case FW_MONITOR_TUNER_UNLOCKED: #ifdef CONFIG_TESTAUTOREBOOT { FW_mode_t FW_Module = FW_NORMAL_VIEW_MODE; AL_FW_GetFWModule(&FW_Module); /*don't enable autoreboot while searching channel and update*/ if (FW_Module != FW_CHAN_SRCH_MODE && FW_Module != FW_UPGRADE_MODE) { if (event == FW_MONITOR_TUNER_UNLOCKED) { #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL ir_autoreboot_enable(); #else ir_autoreboot_disable(); #endif } if (event == FW_MONITOR_TUNER_LOCKED) { #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL ir_autoreboot_disable(); #else ir_autoreboot_enable(); #endif } } } #endif case FW_MONITOR_STREAM_NO_DATA: case FW_MONITOR_STREAM_INVALID_DATA: case FW_MONITOR_STREAM_UNSUPPORT_DATA: case FW_MONITOR_STREAM_HAS_DATA: case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE: case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE: case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE: case FW_MONITOR_SERVICE_NO_SCRAMBLE: case FW_MONITOR_PARENTAL_LOCKED: case FW_MONITOR_PARENTAL_UNLOCKED: case FW_MONITOR_SERVICE_MOVE: case FW_MONITOR_AUDIO_UPDATE: case FW_MONITOR_SUBTITLE_UPDATE: case FW_MONITOR_TELETEXT_UPDATE: case FW_MONITOR_ADD_SERVICE: case FW_MONITOR_UPDATE_SERLCN: case FW_MONITOR_REMOVE_SERVICE: case FW_MONITOR_OTHERTP_SERVICE_FOUND: case FW_MONITOR_REPLACE_SERVICE: case FW_MONITOR_REPLACE_SIMULCASE_SERVICE: case FW_MONITOR_TS_CHANGED: case FW_MONITOR_NEW_TSID: case FW_MONITOR_TIME_UPDATE: case FW_MONITOR_FIND_NEW_TPLIST: case FM_DTV_AUDIO_STARTED: case FM_DTV_AUDIO_SAMPLE_STOPPED: case FM_DTV_AUDIO_STOPPED: #ifdef AC_ON_AUTO_GET_TIME if ((g_fBackgroundGetTime == TRUE) && (event == FW_MONITOR_TIME_UPDATE)) { APP_WAKEUP_SetBootFlag(FALSE); MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } #endif #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY if (event == FW_MONITOR_TIME_UPDATE) { APP_TimeUpdateSetFlag(TRUE); } #endif message = event|PASS_TO_SYSAPP; dParam = *(al_uint32 *)param; break; case FW_MONITOR_UPDATE_SERVICE: message = event; break; /* remove by qinhe on 2014/02/12 for mantis 18485, unmute need vip notify app */ /*case FW_MONITOR_PMT_UPDATE: message= APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP; dParam = *(al_uint32 *)param; break;*/ case FW_MONITOR_SERTYPE_CHANGED: message = event|PASS_TO_SYSAPP; dParam = *(al_uint32 *)param; break; #ifdef CONFIG_SUPPORT_PVR case FW_MONITOR_REMINDER_EXPIRE: { al_uint32 TimeInSec = 0; AL_Time_t time; memset(&time, 0, sizeof(time)); AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day); AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec); AL_Time_DateToSecs(&time, &TimeInSec); tv_SetBaseTimetoSystem(TimeInSec); } #ifdef AC_ON_AUTO_GET_TIME if (g_fBackgroundGetTime == TRUE) { APP_WAKEUP_SetBootFlag(FALSE); MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } #endif #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY APP_TimeUpdateSetFlag(TRUE); #endif message = APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE; break; case FW_MONITOR_REMINDER_TIME_CHANGE: { al_uint32 TimeInSec = 0; AL_Time_t time; memset(&time, 0, sizeof(time)); AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day); AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec); AL_Time_DateToSecs(&time, &TimeInSec); tv_SetBaseTimetoSystem(TimeInSec); } #ifdef AC_ON_AUTO_GET_TIME if (g_fBackgroundGetTime == TRUE) { APP_WAKEUP_SetBootFlag(FALSE); MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF); } #endif if (param == NULL) { UMFDBG(0,"[error],%s %d\n",__FUNCTION__,__LINE__); } dParam =*(al_uint32 *) param; message = APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE | PASS_TO_SYSAPP; break; #endif case FW_SIGNAL_PRESENT: case FW_VIP_FINISH: #ifdef CONFIG_CI_SUPPORT if (g_Audio_Scramble_Counter!=0) { g_VIP_FINISH_Flg = TRUE; g_Audio_Scramble_Counter = 0; } else { if (g_VIP_FINISH_Flg==TRUE) { g_VIP_FINISH_Flg = FALSE; } } #endif #ifdef SUPPORT_FACTORY_AUTO_TEST if(APP_Factory_GetAutoTestOnOff() == TRUE) { APP_Source_Type_t eSourType; APP_GUIOBJ_Source_GetCurrSource(&eSourType); APP_GOBJ_Source_Set_SourceCheck(eSourType); } #endif if (APP_GUIOBJ_DVB_Playback_GetZappingState() == FALSE) { #ifdef CONFIG_SUPPORT_PVR al_uint8 bSignalState = al_false; AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if((MID_TSPLParser_GetThreadState() == TRUE)&&(!bSignalState)) { //timeshift, no signal } else #endif { message = APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP; } } #ifdef CONFIG_QSD // To echo message with DTV has signal for chip test using. con_dbg_echo('G', 'O'); con_dbg_echo('O', 'D'); #endif break; #ifdef CONFIG_SCART_SUPPORT case FW_SCART_INPUTSTATUS_CHANGE: #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC) || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)) { break; } #endif dParam = *(UINT32 *)param; APP_SCARTIN_Pin8Function(dParam); break; #endif #ifdef SUPPORT_CEC_TV case FW_HDMI_PORTSTATUS: dParam = *(UINT32 *)param; message = APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS|PASS_TO_SYSAPP; break; #endif #if 0 case FW_DB_LOAD_DEFAULT: message = event|PASS_TO_SYSAPP; dParam = *(al_uint32 *)param; break; #endif case FW_AUDIO_HEADPHONE_PLUG_IN: message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN|PASS_TO_SYSAPP; break; case FW_AUDIO_HEADPHONE_PLUG_OUT: message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT|PASS_TO_SYSAPP; break; #ifdef CONFIG_QSD case FW_QSD_Media_Play: dParam = *(UINT32 *)param; message = APP_GLOBAL_EVENT_QSD_MEDIA_PLAY|PASS_TO_SYSAPP; break; case FW_QSD_Source_Set: dParam = *(UINT32 *)param; message = APP_GLOBAL_EVENT_QSD_SET_SOURCE|PASS_TO_SYSAPP; break; case FW_QSD_DTV_SetCH: dParam = (UINT32)APP_Database_GetHdlByIdx(*(UINT32 *)param); message = APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP; break; #endif #ifdef CONFIG_SUPPORT_EWS case FW_EWS_REC_ANCM: case FW_EWS_FIND_AUD: dParam =*(al_uint32 *) param; message = FW_EWS_FIND_AUD|PASS_TO_SYSAPP; break; case FW_EWS_ACTIVE: case FW_EWS_INACTIVE: case FW_EWS_NON_ANCM: message = event|PASS_TO_SYSAPP; break; #endif case FW_USB_PLUGIN: break; case FW_USB_PLUGOUT: break; #ifdef CONFIG_HDMI_SUPPORT_MHL case FW_HDMI_MHL_CONNECTED: dParam = *(UINT32 *)param; if(dParam == 1) { message = DMN_EVENT_MHL_CHANGE_SOURCE|PASS_TO_SYSAPP; } break; #endif default: message = 0xffffffff; break; } } else { switch (event) { default: message = 0xffffffff; break; } } if (message != 0xffffffff) { SYSAPP_IF_SendCriticalGlobalEventWithIndex(Index, message, dParam); return SP_SUCCESS; } else { return SP_ERR_FAILURE; } } void DVBApp_VolumeKeyHandler(UINT32 dMessage, UINT8 IsCECKey) { UINT8 u8Mute=0; al_uint8 bSignalState = al_false; if(IsCECKey == TRUE) { #ifdef SUPPORT_CEC_TV AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData)); if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink) #ifdef SUPPORT_AMPLIFIER_CONTROL &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl) #endif &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()) { if (CECTV_GetCECEnable()==CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()) { //if(APP_Get_HDMICEC_AMP_Mute_Status() == TRUE) { //APP_Set_HDMICEC_AMP_Mute_Status(FALSE); //APP_GUIOBJ_Mute_MuteKeyHandler(); //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0); } } } #endif } else { AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData)); u8Mute = g_stUserInfoData.Mute; if (u8Mute == TRUE) { if(dMessage == UI_EVENT_VOL_UP || IsCECKey == TRUE) { AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState); if ((bSignalState == AL_DVB_MONITOR_VALUE_TRUE) #ifdef CONFIG_SUPPORT_PVR || (MID_TSPLParser_GetThreadState()) #endif ) { APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV); } else { APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, APP_SOURCE_DTV); } g_stUserInfoData.Mute = FALSE; AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute), sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute)); #ifdef SUPPORT_STORE_MUTE_FLAG AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute), sizeof(g_stUserInfoData.Mute)); #endif SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0); } } } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL); } if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)) { DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER); } #ifdef CONFIG_SUPPORT_PVR if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC); } #endif if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } if(IsCECKey == TRUE #ifdef SUPPORT_CEC_TV && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status() #endif ) { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } else { SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME, 0); } } else { if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME); } if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST)) { SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST); } else { //Below is CV's spec,pressing Volume key should realize function instead of showing adjust bar only. UINT8 u8VolumeIdx = g_stVariationalData.Volume; if (dMessage == UI_EVENT_VOL_UP) { g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : ++u8VolumeIdx; #ifdef SUPPORT_GPIO_HPDET APP_Audio_Set_VolUnmute_HP(); #endif } else if (dMessage == UI_EVENT_VOL_DN) { g_stVariationalData.Volume = u8VolumeIdx <= ADJUST_MIN_VALUE ? ADJUST_MIN_VALUE : --u8VolumeIdx; } AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0, sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData)); if ((g_stFactoryHotelData.MaxVolume < g_stVariationalData.Volume) &&(g_stFactoryHotelData.HotelModeOnOff == 1)) { g_stVariationalData.Volume = g_stFactoryHotelData.MaxVolume; } APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume); #ifdef SUPPORT_LINEOUT_AS_HP APP_Audio_SetLineoutVol((UINT32)g_stVariationalData.Volume); #endif AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume)); //AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, //ITEM_OFFSET(APP_SETTING_UserInfo_t, Volume), sizeof(g_stUserInfoData.Volume)); SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME); } } } Boolean DVBApp_GetUnstableState(void) { return g_bUnstable; } void DVBApp_SetUnstableState(Boolean bstate) { g_bUnstable = bstate; } Boolean DVBApp_GetFindNewTSIDFlag(void) { return bFindNewTSID; } Boolean DVBApp_ClearFindNewTSIDFlag(void) { bFindNewTSID = FALSE; return 0; } #ifdef CONFIG_SUPPORT_EWS al_uint8 DVBApp_GetEWSMode(void) { return g_EWSMode; } void DVBApp_ResetEWS(void) { dvb_printf("\n\n[%s] is called!!!!!!!\n\n", __FUNCTION__); DMIOC_SET_EWS_PARAM stEwsParam; memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM)); if (g_EWSMode == TRUE) { stEwsParam.bActive = FALSE; ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam); } g_PrevProgHandle = AL_DB_INVALIDHDL; g_EWSMode = FALSE; memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t)); g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID; memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t)); g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID; AL_EWS_Monitor_ResetData(); } #endif Boolean DVBApp_CheckHasVideo(void) { AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL; MID_PlaybackGetCurProgHandle(al_null, &hTempHdl); DBPIDInfo_t stVideoPid; memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t)); AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid); if ((stVideoPid.usDataPID&0x1fff) == 0x1fff) { return FALSE; } else { return TRUE; } }