/******************************************************************** ** File Name: IRSis_map.c (IRSis) ** ** File Description: this file is sunplus ir Sis mapping table ** ** Copyright(c) 2010 Sunplus Technologies - All Rights Reserved ** ** History Information Description ** Date Author Modification ** 2009/02/17 wangdanping create ********************************************************************/ #include "irtoshiba2_map.h" #include "app_event.h" #include "sysapp_table.h" #include "main_app.h" #include "sysapp_if.h" #include "app_guiobj_popmsg.h" #include "app_menumgr.h" #include "app_guiobj_adjust.h" #ifdef CONFIG_ATV_SUPPORT #include "atv_guiobj_table.h" #ifdef CONFIG_SUPPORT_IR_TX #include "ir_tx_mapping_table.h" #include "board_config.h" #include "app_guiobj_source.h" #endif #endif #ifdef CONFIG_DTV_SUPPORT #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM) #include "dvb_guiobj_table.h" #endif #ifdef CONFIG_ISDB_SYSTEM #include "app_guiobj_sbtvd_table.h" #endif #endif #ifdef CONFIG_MEDIA_ENABLE #include "MM_browser_gui.h" #endif #ifdef CONFIG_SUPPORT_PVR #include "mid_recorder.h" //#include "middlewares/dvb/dvb_tspl/mid_tspl.h" #endif #ifdef CONFIG_SUPPORT_ATV_SCAN_NTSCM_PALM_N #include "app_guiobj_source.h" #endif #include "ir_map.h" #ifdef CONFIG_SUPPORT_IR_TX typedef struct { AppGlobalEvent_t eRxEvent; IR_TX_EVENT eTxEvent; } IR_CONVERT_st, *pIR_CONVERT_st; IR_CONVERT_st stIRTOSHIBA2TxConvertTable[] = { {UI_EVENT_0, IR_TX_NUM0}, {UI_EVENT_1, IR_TX_NUM1}, {UI_EVENT_2, IR_TX_NUM2}, {UI_EVENT_3, IR_TX_NUM3}, {UI_EVENT_4, IR_TX_NUM4}, {UI_EVENT_5, IR_TX_NUM5}, {UI_EVENT_6, IR_TX_NUM6}, {UI_EVENT_7, IR_TX_NUM7}, {UI_EVENT_8, IR_TX_NUM8}, {UI_EVENT_9, IR_TX_NUM9}, {UI_EVENT_10, IR_TX_ADD10}, {UI_EVENT_AUDIO, IR_TX_AUDIO}, {UI_EVENT_PLAY, IR_TX_PLAY}, {UI_EVENT_PAUSE, IR_TX_PAUSE}, {UI_EVENT_PLAY_PAUSE, IR_TX_PLAY_PAUSE}, {UI_EVENT_STOP, IR_TX_STOP}, {UI_EVENT_NEXT, IR_TX_NEXT}, {UI_EVENT_PREV, IR_TX_PREV}, {UI_EVENT_FF, IR_TX_FF}, {UI_EVENT_FR, IR_TX_FR}, {UI_EVENT_UP, IR_TX_UP}, {UI_EVENT_DOWN, IR_TX_DOWN}, {UI_EVENT_LEFT, IR_TX_LEFT}, {UI_EVENT_RIGHT, IR_TX_RIGHT}, {UI_EVENT_RETURN, IR_TX_RETURN}, {UI_EVENT_ENTER, IR_TX_PLAY_ENTER}, {UI_EVENT_EXIT, IR_TX_EXIT}, {UI_EVENT_SUBTITLE, IR_TX_SUB_TITLE}, {UI_EVENT_DISPLAY, IR_TX_DISPLAY}, {UI_EVENT_SRC_USB, IR_TX_USB_CARD}, {UI_EVENT_CHLIST, IR_TX_SETUP}, #ifdef CELLO_REMOTE_KEY {UI_EVENT_DVD, IR_TX_SETUP}, #endif }; UINT8 bIRTOSHIBA2ConvertTableSize = sizeof(stIRTOSHIBA2TxConvertTable)/sizeof(IR_CONVERT_st); static void _TX_IRTOSHIBA2_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent) { INT32 dObjectID; sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS; IR_TX_EVENT eEvent = IR_TX_MAX; pIR_CONVERT_st pIRConvertTable = stIRTOSHIBA2TxConvertTable; UINT8 bIndex = 0; ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { while(bIndex < bIRTOSHIBA2ConvertTableSize) { if (pIRConvertTable[bIndex].eRxEvent == *pbEvent) { eEvent = pIRConvertTable[bIndex].eTxEvent; if (TRUE == APP_Ir_Tx_SendEvent(eEvent)) { *pbEvent = UI_EVENT_NULL; } break; } bIndex++; } } } #endif UINT8 IRTOSHIBA2_GetKeyCodeEvent(UINT32 cid, UINT8 u8Keycode, UINT32 * u32Event) { UINT8 i; UINT32 j = 0; if (u32Event == NULL) { return FALSE; } while (j < dIR_map_size) { if (strncmp((char *) (stIR_map[j].IRName), "IRTOSHIBA2", strlen((char *) (stIR_map[j].IRName))) == 0) { for (i = 0; i < stIR_map[j].IR_Count; i++) { if (stIR_map[j].pdIR_Map[i].Keycode == u8Keycode && stIR_map[j].pdIR_Map[i].CusCode == cid) { *u32Event = stIR_map[j].pdIR_Map[i].Event; return TRUE; } } } j++; } return FALSE; } #ifdef CONFIG_ATV_SUPPORT static void _ATV_IRTOSHIBA2_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent) { INT32 dObjectID; sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS; PopmsgType_t eType; #ifdef CONFIG_SUPPORT_IR_TX APP_Source_Type_t eSourceType = APP_SOURCE_MAX; APP_GUIOBJ_Source_GetCurrSource(&eSourceType); if (APP_SOURCE_DVD == eSourceType) { _TX_IRTOSHIBA2_Event_convert(dSystemAppIndex, pbEvent); } #endif switch(*pbEvent) { case UI_EVENT_MENU: if ((SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID) == SYSTEM_APP_SUCCESS) && (dObjectID != APP_GUIOBJ_BANNER) && (dObjectID != ATV_GUIOBJ_INPUTINFO) && (dObjectID != ATV_GUIOBJ_PROGNUM) && #ifdef CONFIG_SUPPORT_PVR (dObjectID != DVB_GUIOBJ_SUBTITLEMENU)&& #endif #ifdef SUPPORT_CEC_TV (dObjectID != APP_GUIOBJ_AMPLIFIERVOLUME) && #endif #ifdef CONFIG_SUPPORT_TTX (dObjectID != ATV_GUIOBJ_TTX) && #endif (!((dObjectID == ATV_GUIOBJ_POPMSG) && (!APP_MenuMgr_Exist_Main_Menu()))) && (!((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME))) && (dObjectID != APP_GUIOBJ_SOURCE) &&(dObjectID != ATV_GUIOBJ_FAVLIST) &&(dObjectID != ATV_GUIOBJ_CHNLIST) ) { *pbEvent = UI_EVENT_RETURN; } break; case UI_EVENT_KEYPAD_LEFT: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == ATV_GUIOBJ_INPUTINFO) || (dObjectID == ATV_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || #ifdef SUPPORT_CEC_TV (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) || #endif ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) || ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_VOL_DN; } else { *pbEvent = UI_EVENT_LEFT; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_VOL_DN; } break; case UI_EVENT_KEYPAD_RIGHT: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == ATV_GUIOBJ_INPUTINFO) || (dObjectID == ATV_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || #ifdef SUPPORT_CEC_TV (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) || #endif ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) || ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_VOL_UP; } else { *pbEvent = UI_EVENT_RIGHT; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_VOL_UP; } break; case UI_EVENT_KEYPAD_UP: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == ATV_GUIOBJ_INPUTINFO) || (dObjectID == ATV_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_CH_UP; } else { *pbEvent = UI_EVENT_UP; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_CH_UP; } break; case UI_EVENT_KEYPAD_DOWN: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == ATV_GUIOBJ_INPUTINFO) || (dObjectID == ATV_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_CH_DN; } else { *pbEvent = UI_EVENT_DOWN; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_CH_DN; } break; case UI_EVENT_KEYPAD_SOURCE: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == ATV_GUIOBJ_POPMSG) && (eType == POPMSG_TYPE_CONFIRM)) { *pbEvent = UI_EVENT_ENTER; } else { *pbEvent = UI_EVENT_SOURCE; } } else { *pbEvent = UI_EVENT_SOURCE; } break; default: break; } } #endif #ifdef CONFIG_DTV_SUPPORT static void _DVB_IRTOSHIBA2_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent) { INT32 dObjectID; sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS; PopmsgType_t eType; switch(*pbEvent) { #ifdef CONFIG_SUPPORT_MHEG5 case UI_EVENT_EXIT: case UI_EVENT_UP: case UI_EVENT_DOWN: case UI_EVENT_LEFT: case UI_EVENT_RIGHT: case UI_EVENT_RED: case UI_EVENT_GREEN: case UI_EVENT_BLUE: case UI_EVENT_YELLOW: { int sdRet = 0; if(SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, DVB_GUIOBJ_MHEG5)) { if (SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID) != SYSTEM_APP_SUCCESS) { SYSAPP_GOBJ_SendMsgToSingleGUIObject(dSystemAppIndex, DVB_GUIOBJ_MHEG5, *pbEvent, (UINT32)&sdRet); } } break; } #endif case UI_EVENT_MENU: if ((SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID) == SYSTEM_APP_SUCCESS) && (dObjectID != APP_GUIOBJ_BANNER) && (dObjectID != DVB_GUIOBJ_PROGINFO) && (dObjectID != DVB_GUIOBJ_PROGNUM) && #ifdef SUPPORT_CEC_TV (dObjectID != APP_GUIOBJ_AMPLIFIERVOLUME) && #endif (dObjectID != DVB_GUIOBJ_EPG) && #ifdef CONFIG_SUPPORT_TTX (dObjectID != DVB_GUIOBJ_TTX) && #endif (!((dObjectID == DVB_GUIOBJ_POPMSG) && (!APP_MenuMgr_Exist_Main_Menu()))) && (!((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME))) #ifdef CONFIG_SUPPORT_PVR && (dObjectID != DVB_GUIOBJ_PVR_REC) //&& (dObjectID != DVB_GUIOBJ_PVR_TIMESHIFT_NEW) #endif && (dObjectID != APP_GUIOBJ_SOURCE) &&(dObjectID != DVB_GUIOBJ_SUBTITLEMENU) &&(dObjectID != DVB_GUIOBJ_MULTIAUD) &&(dObjectID != DVB_GUIOBJ_FAVLIST) &&(dObjectID != DVB_GUIOBJ_CHNLIST) ) { *pbEvent = UI_EVENT_RETURN; } break; case UI_EVENT_KEYPAD_LEFT: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == DVB_GUIOBJ_PROGINFO) || (dObjectID == DVB_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || #ifdef SUPPORT_CEC_TV (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) || #endif ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) || ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_VOL_DN; } else { *pbEvent = UI_EVENT_LEFT; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_VOL_DN; } break; case UI_EVENT_KEYPAD_RIGHT: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == DVB_GUIOBJ_PROGINFO) || (dObjectID == DVB_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || #ifdef SUPPORT_CEC_TV (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) || #endif ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) || ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_VOL_UP; } else { *pbEvent = UI_EVENT_RIGHT; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_VOL_UP; } break; case UI_EVENT_KEYPAD_UP: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == DVB_GUIOBJ_PROGINFO) || (dObjectID == DVB_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_CH_UP; } else { *pbEvent = UI_EVENT_UP; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_CH_UP; } break; case UI_EVENT_KEYPAD_DOWN: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == DVB_GUIOBJ_PROGINFO) || (dObjectID == DVB_GUIOBJ_PROGNUM) || (dObjectID == APP_GUIOBJ_BANNER) || ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD)))) { *pbEvent = UI_EVENT_CH_DN; } else { *pbEvent = UI_EVENT_DOWN; } } else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ) { *pbEvent = UI_EVENT_CH_DN; } break; case UI_EVENT_STOP: #ifdef CONFIG_SUPPORT_PVR if(APP_MenuMgr_Exist_Main_Menu() && (MID_RecorderState() != MID_REC_STATUS_STOP)) { *pbEvent |= PASS_TO_SYSAPP; } #endif break; case UI_EVENT_KEYPAD_SOURCE: ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID); APP_GUIOBJ_PopMsg_GetMsgType(&eType); if (ret == SYSTEM_APP_SUCCESS) { if ((dObjectID == DVB_GUIOBJ_POPMSG) && (eType == POPMSG_TYPE_CONFIRM)) { *pbEvent = UI_EVENT_ENTER; } else { *pbEvent = UI_EVENT_SOURCE; } } else { *pbEvent = UI_EVENT_SOURCE; } break; default: break; } } #endif #ifdef CONFIG_MEDIA_ENABLE static void _FILE_Player_IRTOSHIBA2_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent) { switch(*pbEvent) { case UI_EVENT_MENU: if ((APP_MenuMgr_Need_Change_MenuKey()) || (APP_MenuMgr_Exist_Factory_Menu()) || #ifdef CONFIG_SUPPORT_FIRST_TIME_SETUP #ifndef CONFIG_ISDB_SYSTEM (SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_INITINSTALL)) || #endif #endif #ifdef SUPPORT_CEC_TV (SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_AMPLIFIERVOLUME)) || #endif ((SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_ADJUST)) && (APP_GUIOBJ_Adjust_GetType() != ADJUST_VOLUME) && (APP_GUIOBJ_Adjust_GetType() != ADJUST_HDMICEC_AMPVOLUME))) { *pbEvent = UI_EVENT_RETURN; } break; default: break; } } #endif void IRTOSHIBA2_EventConvert(UINT32 *pbEvent) { UINT32 dSystemAppIndex; if (MAINAPP_GetActiveSystemAppIndex(&dSystemAppIndex) == MAIN_APP_SUCCESS) { switch(dSystemAppIndex) { #ifdef CONFIG_ATV_SUPPORT case SYS_APP_ATV: _ATV_IRTOSHIBA2_Event_convert(dSystemAppIndex, pbEvent); break; #endif #ifdef CONFIG_DTV_SUPPORT case SYS_APP_DVB: _DVB_IRTOSHIBA2_Event_convert(dSystemAppIndex, pbEvent); break; #endif #ifdef CONFIG_MEDIA_ENABLE case SYS_APP_FILE_PLAYER: _FILE_Player_IRTOSHIBA2_Event_convert(dSystemAppIndex, pbEvent); break; #endif #ifdef CONFIG_SUPPORT_NETAPP case SYS_APP_NETWORK: break; #endif default: break; } } }