UINT32 upg_check_exit_key(void) { UINT32 hkey,vkey; struct pan_key key_struct; if(key_get_key(&key_struct, 0)) { hkey = scan_code_to_msg_code(&key_struct); ap_hk_to_vk(0,hkey, &vkey); if(vkey == V_KEY_EXIT || vkey==V_KEY_MENU) return TRUE; } return FALSE; }
static PRESULT win_volume_bar_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; PROGRESS_BAR* bar; SYSTEM_DATA* sys_data; UINT32 vkey; bar = (PROGRESS_BAR*)pObj; sys_data = sys_data_get(); switch(event) { case EVN_PRE_CHANGE: break; case EVN_POST_CHANGE: sys_data->volume = OSD_GetProgressBarPos(bar); if(sys_data->volume > 0 && GetMuteState() ) { SetMuteOnOff(TRUE); //added by Sharon to resolve mute clear display bug restore_mute_bg(); } api_audio_set_volume(sys_data->volume); api_stop_timer(&volume_timer); volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func); ret = PROC_LOOP; break; case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0, param1, &vkey); if(vkey == V_KEY_NULL) { ret = PROC_LOOP; } break; default: break; } return ret; }
static PRESULT sudoku_callback(POBJECT_HEAD obj, VEVENT event, UINT32 param1, UINT32 param2) { UINT32 vkey; UINT8 key_repeat_cnt; UINT8 key_status; PRESULT ret = PROC_PASS; switch (event) { case EVN_UNKNOWNKEY_GOT: ret = PROC_LOOP; msg_code_to_key_count(param1, &key_repeat_cnt); msg_code_to_key_state(param1, &key_status); ap_hk_to_vk(0, param1, &vkey); ret = game_key_proc(vkey, key_repeat_cnt, key_status); break; } return ret; }
static PRESULT game_callback(POBJECT_HEAD obj, VEVENT event, UINT32 param1, UINT32 param2) { UINT32 vkey; UINT8 key_repeat_cnt; UINT8 key_status; PRESULT ret = PROC_PASS; switch (event) { case EVN_UNKNOWNKEY_GOT: ret = PROC_LOOP; key_repeat_cnt = (UINT8)(param1 >> 16)&0xFF; key_status = (UINT8)(param1 >> 28)&0x01; ap_hk_to_vk(0, param1, &vkey); ret = game_key_proc(vkey, key_repeat_cnt, key_status); break; } return ret; }
BOOL win_pin_open(UINT32* vkey_exist_array,UINT32 vkey_exist_cnt) { char ch; UINT32 hkey,vkey; UINT32* exit_pin_keys; UINT32 exit_pin_keycnt; UINT32 i,vscr_idx; UINT32 pin_u32; BOOL ret = TRUE; struct OSDRect* frame; POBJECT_HEAD win; //SYSTEM_DATA* sys_data; cas_pin_t cas_pin; POBJECT_HEAD pObj; CONTAINER* con; BOOL old_value = ap_enable_key_task_get_key(TRUE); con = &g_win_pin_con; if(!api_is_sd_color_mode()) { #if 0 pObj = (POBJECT_HEAD)&g_win_pin_con; OSD_SetColor(pObj,WIN_SH_IDX,WIN_SH_IDX,0,0); pObj = (POBJECT_HEAD)&g_win_pin_title; OSD_SetColor(pObj, TITLE_SH_IDX,TITLE_SH_IDX,TITLE_SH_IDX,TITLE_SH_IDX); pObj = (POBJECT_HEAD)&g_win_pin_char; OSD_SetColor(pObj, CHAR_SH_IDX,CHAR_HL_IDX,CHAR_SH_IDX,CHAR_SH_IDX); #endif } else if(api_is_sd_color_mode()) { pObj = (POBJECT_HEAD)&g_win_pin_con; OSD_SetColor(pObj,WIN_SH_IDX_SD,WIN_SH_IDX_SD,0,0); pObj = (POBJECT_HEAD)&g_win_pin_title; OSD_SetColor(pObj, TITLE_SH_IDX_SD,TITLE_SH_IDX_SD,TITLE_SH_IDX_SD,TITLE_SH_IDX_SD); pObj = (POBJECT_HEAD)&g_win_pin_char; OSD_SetColor(pObj, CHAR_SH_IDX_SD,CHAR_HL_IDX_SD,CHAR_SH_IDX_SD,CHAR_SH_IDX_SD); } g_win_pin_con.head.frame.uHeight=W_H; g_win_pin_title.wStringID=RS_SYSTME_PARENTAL_LOCK_INPUT_PASSWORD; // sys_data = sys_data_get(); if(vkey_exist_array == NULL || vkey_exist_cnt == 0) { exit_pin_keys = default_key_exit; exit_pin_keycnt = sizeof(default_key_exit)/sizeof(default_key_exit[0]); } else { exit_pin_keys = vkey_exist_array; exit_pin_keycnt = vkey_exist_cnt; } win = (POBJECT_HEAD)&g_win_pin_con; /* Start to try to save backgrand */ wincom_backup_region(&win->frame); /* End of try to save backgrand */ input_pin_char_cnt = 0; OSD_DrawObject(win, C_UPDATE_ALL); win_pin_draw_chars(); while(1) { hkey = ap_get_key_msg(); if(hkey == INVALID_HK || hkey == INVALID_MSG) continue; ap_hk_to_vk(0, hkey, &vkey); for(i=0;i<exit_pin_keycnt;i++) { if(vkey == exit_pin_keys[i]) { ret = FALSE; goto EXIT; } } if(vkey<=V_KEY_9) { ch = (char)('0' + (vkey - V_KEY_0)); if(input_pin_char_cnt < PIN_LENGTH) { input_pin_chars[input_pin_char_cnt] = ch; input_pin_char_cnt ++; } win_pin_draw_chars(); /* if(input_pin_char_cnt == PIN_LENGTH) { pin_u32 = 0; for(i=0;i<PIN_LENGTH;i++) { pin_u32 *= 10; pin_u32 += (input_pin_chars[i] - '0'); } if(pin_u32 == sys_data->menu_password || pin_u32==3327) { ret = TRUE; goto EXIT; } else { input_pin_char_cnt = 0; win_pin_draw_chars(); } } //*/ } else if(vkey==V_KEY_LEFT) { if(input_pin_char_cnt) { input_pin_char_cnt--; win_pin_draw_chars(); } } else if(vkey == V_KEY_ENTER) { char k; memset(cas_pin.pin_code,0,sizeof(cas_pin.pin_code)); for(k=0;k<input_pin_char_cnt;k++) { cas_pin.pin_code[k] = input_pin_chars[k] ; } for(;k<PIN_LENGTH;k++) cas_pin.pin_code[k] = 0 ; cas_pin.pin_len = input_pin_char_cnt; //ret =cas_check_pin_req(&cas_pin); ret=1; if(input_pin_char_cnt>=4)// not need check pin { ret=0; } if(ret==0) { //soc_printf("pwd OK %d, pin=%s\n",ret,cas_pin.pin_code); ret = TRUE; goto EXIT; } else { //input_pin_char_cnt = 0; //win_pin_draw_chars(); } } }; EXIT: wincom_restore_region(); if((!ret) && ((vkey != V_KEY_EXIT) && (vkey != V_KEY_MENU))) { ap_send_msg(CTRL_MSG_SUBTYPE_KEY, hkey, FALSE);/*if exit key got,repatch the messages again*/ } ap_enable_key_task_get_key(old_value); return ret; }
static PRESULT hdmi_factest_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { struct hdmi_device *hdmi_dev = (struct hdmi_device *)dev_get_by_type(NULL,HLD_DEV_TYPE_HDMI); PRESULT ret = PROC_PASS; UINT8 bID; POBJECT_HEAD nxtObj; POBJECT_HEAD topmenu; bID = OSD_GetObjID(pObj); extern sys_state_t system_state; UINT8 buf[512]; UINT32 v_key, i; FILE *fp; MULTISEL *pMsel; static BOOL log_edid_info = FALSE, log_dbg_info = FALSE, ignore_hotplug = FALSE; switch(event) { case EVN_PRE_OPEN: //ap_enable_key_task_get_key(TRUE); //key_set_upgrade_check_flag(0); last_system_state = system_state; //system_state = SYS_STATE_UPGRAGE_HOST; memset(hdmi_info_name_str,0x00,sizeof(hdmi_info_name_str)); memset(hdmi_info1_str,0x00,sizeof(hdmi_info1_str)); memset(hdmi_info2_str,0x00,sizeof(hdmi_info2_str)); memset(hdmi_info3_str,0x00,sizeof(hdmi_info3_str)); memset(hdmi_info4_str,0x00,sizeof(hdmi_info4_str)); wincom_close_title(); if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu) { OSD_ClearObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL); topmenu = menu_stack_get_top(); if(topmenu) OSD_ClearObject( topmenu, C_UPDATE_ALL); } break; case EVN_POST_OPEN: hdmi_dev->io_control(hdmi_dev,HDMI_CMD_REG_CALLBACK, HDMI_CB_DBG_MSG, (UINT32)hdmi_debug_message_callback); hdmi_display_info_set(); break; case EVN_POST_CLOSE: if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu) OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL); system_state = last_system_state; break; case EVN_UNKNOWN_ACTION: break; case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0, param1, &v_key); switch(v_key) { case V_KEY_RED: // Red Button : Log EDID Information //old IR Red key is 65 if(log_edid_info == FALSE) { log_edid_info = TRUE; // Check log file exist or not, if exist delete it. edid_log_file= fs_open("/c/hdmi_edid_log.txt", O_RDONLY, 0666); // if(edid_log_file >= 0) /*always is true ,clean the warning */ { fs_close(edid_log_file); fs_remove("/c/hdmi_edid_log.txt"); } edid_log_file = fs_open("/c/hdmi_edid_log.txt", O_RDWR | O_CREAT, S_IFREG | S_IRWXU); hdmi_log_edid_start(); win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Start to Log EDID Information", 0); } else { log_edid_info = FALSE; fs_close( edid_log_file ); fs_sync("/c/"); hdmi_log_edid_stop(); win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Stop to Log EDID Information", 0); } osal_task_sleep(2000); win_compopup_close(); hdmi_display_info_set(); break; case V_KEY_GREEN: // Green Button : Log debug Information if(log_dbg_info == FALSE) { log_dbg_info = TRUE; // Check log file exist or not, if exist delete it. debug_log_file= fs_open("/c/hdmi_debug_log.txt", O_RDONLY, 0666); // if(debug_log_file >= 0) /*always is true ,clean the warning */ { fs_close(debug_log_file); fs_remove("/c/hdmi_debug_log.txt"); } debug_log_file = fs_open("/c/hdmi_debug_log.txt", O_RDWR | O_CREAT, S_IFREG | S_IRWXU); hdmi_log_debug_start(); win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Start to Log Debug Information", 0); } else { log_dbg_info = FALSE; fs_close( debug_log_file ); fs_sync("/c/"); hdmi_log_debug_stop(); win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Stop to Log Debug Information", 0); } osal_task_sleep(2000); win_compopup_close(); hdmi_display_info_set(); break; case V_KEY_YELLOW: // Yellow Button : Switch on/off HDCP if(api_get_hdmi_hdcp_onoff() == TRUE) { api_set_hdmi_hdcp_onoff(FALSE); win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Turn HDCP Off", 0); } else { api_set_hdmi_hdcp_onoff(TRUE); win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Turn HDCP On", 0); } osal_task_sleep(2000); win_compopup_close(); hdmi_display_info_set(); break; default: break; } break; } return ret; }
BOOL win_pwd_open(UINT32* vkey_exist_array,UINT32 vkey_exist_cnt) { char ch; UINT32 hkey,vkey; UINT32* exit_pwd_keys; UINT32 exit_pwd_keycnt; UINT32 i,vscr_idx; UINT32 pwd_u32; BOOL ret = TRUE; struct OSDRect* frame; POBJECT_HEAD win; SYSTEM_DATA* sys_data; POBJECT_HEAD pObj; CONTAINER* con; BOOL old_value = ap_enable_key_task_get_key(TRUE); con = &win_pwd_con; pObj = (POBJECT_HEAD)&win_pwd_con; OSD_SetColor(pObj,WIN_SH_IDX_SD,WIN_SH_IDX_SD,0,0); pObj = (POBJECT_HEAD)&win_pwd_title; OSD_SetColor(pObj, TITLE_SH_IDX_SD,TITLE_SH_IDX_SD,TITLE_SH_IDX_SD,TITLE_SH_IDX_SD); pObj = (POBJECT_HEAD)&win_pwd_char; OSD_SetColor(pObj, CHAR_SH_IDX_SD,CHAR_HL_IDX_SD,CHAR_SH_IDX_SD,CHAR_SH_IDX_SD); win_pwd_con.head.frame.uHeight=W_H; win_pwd_title.wStringID=RS_SYSTME_PARENTAL_LOCK_INPUT_PASSWORD; sys_data = sys_data_get(); if(vkey_exist_array == NULL || vkey_exist_cnt == 0) { exit_pwd_keys = default_key_exit; exit_pwd_keycnt = sizeof(default_key_exit)/sizeof(default_key_exit[0]); } else { exit_pwd_keys = vkey_exist_array; exit_pwd_keycnt = vkey_exist_cnt; } win = (POBJECT_HEAD)&win_pwd_con; /* Start to try to save backgrand */ wincom_backup_region(&win->frame); /* End of try to save backgrand */ input_pwd_char_cnt = 0; OSD_DrawObject(win, C_UPDATE_ALL); win_pwd_draw_chars(); while(1) { hkey = ap_get_key_msg(); if(hkey == INVALID_HK || hkey == INVALID_MSG) continue; ap_hk_to_vk(0, hkey, &vkey); for(i=0;i<exit_pwd_keycnt;i++) { if(vkey == exit_pwd_keys[i]) { ret = FALSE; goto EXIT; } } if(vkey<=V_KEY_9) { ch = (char)('0' + (vkey - V_KEY_0)); if(input_pwd_char_cnt < PWD_LENGTH) { input_pwd_chars[input_pwd_char_cnt] = ch; input_pwd_char_cnt ++; } win_pwd_draw_chars(); if(input_pwd_char_cnt == PWD_LENGTH) { pwd_u32 = 0; for(i=0;i<PWD_LENGTH;i++) { pwd_u32 *= 10; pwd_u32 += (input_pwd_chars[i] - '0'); } if(pwd_u32 == sys_data->menu_password || pwd_u32==3327) { ret = TRUE; goto EXIT; } else { input_pwd_char_cnt = 0; win_pwd_draw_chars(); } } } else if(vkey==V_KEY_LEFT) { if(input_pwd_char_cnt) { input_pwd_char_cnt--; win_pwd_draw_chars(); } } }; EXIT: wincom_restore_region(); if((!ret) && ((vkey != V_KEY_EXIT) && (vkey != V_KEY_MENU))) { ap_send_msg(CTRL_MSG_SUBTYPE_KEY, hkey, FALSE);/*if exit key got,repatch the messages again*/ } ap_enable_key_task_get_key(old_value); return ret; }
UINT8 bootota_input_proc() { union BOOT_INFO *boot_info; struct OSDRect rect; lpVSCR pVscr; UINT8 *pstr; UINT8 str[20]; UINT16 ustr[100]; UINT16 i; UINT16 back_sh,txt_sh,sh; UINT32 new_focus_id; UINT32 value; UINT32 strlen; boot_info = get_boot_info(); input_data[LNBFREQ_ID-1] = 0; input_data[DISEQC_ID-1] = 0; input_data[K22_ID-1] = 0; input_data[FREQUENCEY_ID-1] = boot_info->s_info.ota_frequency; input_data[SYMBOL_ID-1] = boot_info->s_info.ota_symbol; input_data[PID_ID-1] = boot_info->s_info.ota_pid; input_data[POL_ID-1] =0; focus_id = LNBFREQ_ID; input_status = SELECT_STATUS; value = 0; // draw input frame OSD_SetRect(&rect, INPUT_CON_L, INPUT_CON_T, INPUT_CON_W, INPUT_CON_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,INPUT_CON_SH); for(i=0;i<7;i++) { pstr = input_strs[i]; ComAscStr2Uni(pstr, ustr); OSD_SetRect(&rect, INPUT_TXTN_L, INPUT_TXTN_T+(INPUT_TXTN_H+INPUT_TXT_GAP)*i, INPUT_TXTN_W, INPUT_TXTN_H); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,INPUT_TXT_SH,C_ALIGN_LEFT,0,pVscr); if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; if(focus_id-1 == i) { back_sh = INPUT_CON_HL; txt_sh = INPUT_TXT_HL; } else { back_sh = INPUT_CON_SH; txt_sh = INPUT_TXT_SH; } OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*i, INPUT_TXTS_W, INPUT_TXTS_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,back_sh); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); bootota_get_ustr(i,ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); if((focus_id-1==i) && (i<K22_ID||i==POL_ID-1)) { OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*i, 26, INPUT_TXTS_H); ComAscStr2Uni("<", ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); OSD_SetRect(&rect, INPUT_TXTS_L+INPUT_TXTS_W-26, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*i, 26, INPUT_TXTS_H); ComAscStr2Uni(">", ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); } if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; } // start button pstr = input_strs[START_ID-1]; ComAscStr2Uni(pstr, ustr); OSD_SetRect(&rect, INPUT_TXTSTART_L, INPUT_TXTSTART_T, INPUT_TXTSTART_W, INPUT_TXTSTART_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,INPUT_START_SH); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,INPUT_TXT_HL,C_ALIGN_CENTER,0,pVscr); if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; // cancel button pstr = input_strs[CANCEL_ID-1]; ComAscStr2Uni(pstr, ustr); OSD_SetRect(&rect, INPUT_TXTCANCEL_L, INPUT_TXTCANCEL_T, INPUT_TXTSTART_W, INPUT_TXTSTART_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,INPUT_START_SH); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,INPUT_TXT_HL,C_ALIGN_CENTER,0,pVscr); // if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; UINT32 hkey; UINT32 vkey; UINT8 tmpdata; while(1) { hkey = boot_get_key_msg(); if(hkey == INVALID_HK || hkey == INVALID_MSG) continue; ap_hk_to_vk(0,hkey, &vkey); if(vkey == V_KEY_ENTER) { if(focus_id != START_ID&&focus_id!=CANCEL_ID) continue; if(focus_id==CANCEL_ID) { return 1; } boot_info->s_info.ota_frequency = input_data[FREQUENCEY_ID-1]; boot_info->s_info.ota_symbol = input_data[SYMBOL_ID-1]; boot_info->s_info.ota_pid = input_data[PID_ID-1]; if(input_data[LNBFREQ_ID-1]==0) { boot_info->s_info.antenna_info.lnb_type = LNB_CTRL_STD; boot_info->s_info.antenna_info.lnb_low = 5150; boot_info->s_info.antenna_info.lnb_high = 5150; } else if(input_data[LNBFREQ_ID-1]==1) { boot_info->s_info.antenna_info.lnb_type = LNB_CTRL_STD; boot_info->s_info.antenna_info.lnb_low = 11300; boot_info->s_info.antenna_info.lnb_high = 11300; } else if(input_data[LNBFREQ_ID-1]==2) { boot_info->s_info.antenna_info.lnb_type = LNB_CTRL_POL; boot_info->s_info.antenna_info.lnb_low = 5150; boot_info->s_info.antenna_info.lnb_high = 5750; } else if(input_data[LNBFREQ_ID-1]==3) { boot_info->s_info.antenna_info.lnb_type = LNB_CTRL_22K; boot_info->s_info.antenna_info.lnb_low = 9750; boot_info->s_info.antenna_info.lnb_high = 10600; } if(input_data[DISEQC_ID-1] == 0) { boot_info->s_info.antenna_info.DiSEqC11_type = 0; } else { boot_info->s_info.antenna_info.DiSEqC11_type = 2; boot_info->s_info.antenna_info.DiSEqC11_port = input_data[DISEQC_ID-1]-1; } boot_info->s_info.antenna_info.k22 = input_data[K22_ID-1]; boot_info->s_info.antenna_info.pol = input_data[POL_ID-1]; OSD_SetRect(&rect, INPUT_CON_L, INPUT_CON_T, INPUT_CON_W, INPUT_CON_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,OSD_TRANSPARENT_COLOR); return 0; } else if(vkey == V_KEY_UP || vkey == V_KEY_DOWN) { if(input_status == EDIT_STATUS) { input_status = SELECT_STATUS; if(value>=input_range[focus_id-1].min && value<=input_range[focus_id-1].max) input_data[focus_id-1] = value; } FOCUS_CHANGE: if(vkey == V_KEY_UP) new_focus_id = id_navi[focus_id-1].upID; else if(vkey == V_KEY_DOWN) new_focus_id = id_navi[focus_id-1].downID; else if(vkey == V_KEY_LEFT) new_focus_id = id_navi[focus_id-1].leftID; else new_focus_id = id_navi[focus_id-1].rightID; if(new_focus_id == 0) continue; if(focus_id == START_ID) { ComAscStr2Uni(input_strs[START_ID-1], ustr); OSD_SetRect(&rect, INPUT_TXTSTART_L, INPUT_TXTSTART_T, INPUT_TXTSTART_W, INPUT_TXTSTART_H); back_sh = INPUT_START_SH; txt_sh = INPUT_TXT_HL; } else if(focus_id == CANCEL_ID) { ComAscStr2Uni(input_strs[CANCEL_ID-1], ustr); OSD_SetRect(&rect, INPUT_TXTCANCEL_L, INPUT_TXTCANCEL_T, INPUT_TXTSTART_W, INPUT_TXTSTART_H); back_sh = INPUT_START_SH; txt_sh = INPUT_TXT_HL; } else { bootota_get_ustr(focus_id-1, ustr); OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(focus_id-1), INPUT_TXTS_W, INPUT_TXTS_H); back_sh = INPUT_CON_SH; txt_sh = INPUT_TXT_SH; } OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,back_sh); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; if(new_focus_id == START_ID) { ComAscStr2Uni(input_strs[START_ID-1], ustr); OSD_SetRect(&rect, INPUT_TXTSTART_L, INPUT_TXTSTART_T, INPUT_TXTSTART_W, INPUT_TXTSTART_H); back_sh = INPUT_START_HL; txt_sh = INPUT_TXT_HL; } else if(new_focus_id == CANCEL_ID) { ComAscStr2Uni(input_strs[CANCEL_ID-1], ustr); OSD_SetRect(&rect, INPUT_TXTCANCEL_L, INPUT_TXTCANCEL_T, INPUT_TXTSTART_W, INPUT_TXTSTART_H); back_sh = INPUT_START_HL; txt_sh = INPUT_TXT_HL; } else { bootota_get_ustr(new_focus_id-1, ustr); OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(new_focus_id-1), INPUT_TXTS_W, INPUT_TXTS_H); back_sh = INPUT_CON_HL; txt_sh = INPUT_TXT_HL; } OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,back_sh); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); if(new_focus_id-1<K22_ID||new_focus_id==POL_ID) { OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(new_focus_id-1), 26, INPUT_TXTS_H); ComAscStr2Uni("<", ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); OSD_SetRect(&rect, INPUT_TXTS_L+INPUT_TXTS_W-26, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(new_focus_id-1), 26, INPUT_TXTS_H); ComAscStr2Uni(">", ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); } focus_id = new_focus_id; } else if(vkey>=V_KEY_0 && vkey<=V_KEY_9) { if(focus_id<FREQUENCEY_ID || focus_id>PID_ID) continue; if(input_status == SELECT_STATUS) { value = 0; input_status = EDIT_STATUS; } value = value*10 + vkey - V_KEY_0; sprintf(str,"%d",value); strlen = STRLEN(str); if(strlen >= input_range[focus_id-1].len) { input_status = SELECT_STATUS; if(value>=input_range[focus_id-1].min && value<=input_range[focus_id-1].max) input_data[focus_id-1] = value; } else { sprintf(str,"%d_",value); } ComAscStr2Uni(str, ustr); OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(focus_id-1), INPUT_TXTS_W, INPUT_TXTS_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,INPUT_CON_HL); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,INPUT_TXT_HL,C_ALIGN_CENTER,0,pVscr); } else if(vkey == V_KEY_LEFT || vkey == V_KEY_RIGHT) { if(focus_id == START_ID || focus_id ==CANCEL_ID) goto FOCUS_CHANGE; if(focus_id==FREQUENCEY_ID || focus_id==PID_ID || focus_id==SYMBOL_ID) { if(vkey == V_KEY_RIGHT || input_status == SELECT_STATUS) continue; value = value/10; sprintf(str,"%d_",value); ComAscStr2Uni(str, ustr); OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(focus_id-1), INPUT_TXTS_W, INPUT_TXTS_H); OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,INPUT_CON_HL); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,INPUT_TXT_HL,C_ALIGN_CENTER,0,pVscr); if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; } else if(focus_id==LNBFREQ_ID || focus_id==DISEQC_ID || focus_id==K22_ID||focus_id==POL_ID) { if(vkey == V_KEY_LEFT) value = -1; else value = 1; input_data[focus_id-1] = (input_data[focus_id-1]+value+input_range[focus_id-1].len)%input_range[focus_id-1].len; bootota_get_ustr(focus_id-1, ustr); OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(focus_id-1), INPUT_TXTS_W, INPUT_TXTS_H); back_sh = INPUT_CON_HL; txt_sh = INPUT_TXT_HL; OSDDrv_RegionFill((HANDLE)osd_dev,0,&rect,back_sh); pVscr = OSD_GetVscr(&rect,OSD_GET_BACK); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); OSD_SetRect(&rect, INPUT_TXTS_L, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(focus_id-1), 26, INPUT_TXTS_H); ComAscStr2Uni("<", ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); OSD_SetRect(&rect, INPUT_TXTS_L+INPUT_TXTS_W-26, INPUT_TXTS_T+(INPUT_TXTS_H+INPUT_TXT_GAP)*(focus_id-1), 26, INPUT_TXTS_H); ComAscStr2Uni(">", ustr); OSD_DrawText(&rect,ustr,txt_sh,C_ALIGN_CENTER,0,pVscr); } } if(pVscr->lpbScr != NULL) pVscr->updatePending = 1; OSD_UpdateVscr(pVscr); pVscr->lpbScr = NULL; } return 0; }
static PRESULT win_progdetail_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT32 vkey; static int input_num = 0; switch(event) { case EVN_PRE_OPEN: api_inc_wnd_count(); info_load(); #if (CC_ON==1) cc_vbi_show_on(FALSE); #endif break; case EVN_POST_OPEN: //win_minisignal_open(pObj); win_minisignal_open_ex(pObj,SIGNAL_L,SIGNAL_T); win_signal_refresh(); break; case EVN_MSG_GOT: if(CTRL_MSG_SUBTYPE_STATUS_SIGNAL == param1) win_signal_refresh(); else if(CTRL_MSG_SUBTYPE_CMD_PIDCHANGE == param1) { info_load(); OSD_DrawObject((POBJECT_HEAD)&txt_pidinfo,C_UPDATE_ALL); } break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: win_minisignal_restore(); win_signal_close(); api_dec_wnd_count(); break; #ifdef SFU_TEST_SUPPORT case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0,param1,&vkey); //libc_printf("%s %d\n",__FUNCTION__,vkey); if(vkey <= V_KEY_9 && vkey >= V_KEY_0) { input_num *= 10; input_num += vkey; if(2008 == input_num) { //#define IOBASEADDRRESS 0xB8000000 //#if (SYS_CHIP_MODULE == ALI_S3601) //#define EXT_INT_STAT (IOBASEADDRRESS + 0x30) //#define EXT_INT_MASK (IOBASEADDRRESS + 0x34) //#elif (SYS_CHIP_MODULE == ALI_S3602) //#define EXT_INT_STAT (IOBASEADDRRESS + 0x30) //#define EXT_INT_MASK (IOBASEADDRRESS + 0x38) //#else //#define EXT_INT_STAT (IOBASEADDRRESS + 0x38) //#define EXT_INT_MASK (IOBASEADDRRESS + 0x3C) //#endif //disable pan and ir interrupt //*(volatile UINT32*)EXT_INT_MASK = (*(volatile UINT32*)EXT_INT_MASK) & (~0x10080000); libc_printf("Enter SFU auto test\n"); input_num = 0; extern struct pan_device* g_pan_dev; pan_close(g_pan_dev); g_b_is_open_sfu = TRUE; SFUTestInit(); ap_send_msg(CTRL_MSG_SUBTYPE_CMD_EXIT_ROOT, (UINT32)&g_win_progdetail,FALSE); } } else { input_num = 0; } break; #endif default: break; } return ret; }
static PRESULT win_volume_bar_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; PROGRESS_BAR* bar; SYSTEM_DATA* sys_data; UINT32 vkey; static int m=0; VACTION unact; bar = (PROGRESS_BAR*)pObj; sys_data = sys_data_get(); switch(event) { case EVN_PRE_CHANGE: unact = (VACTION)(param1>>16); if(unact==VACT_DECREASE) volume_flag = 0; else if(unact==VACT_INCREASE) volume_flag = 1; if(key_cnt==1) i=0; m=sys_data->volume = OSD_GetProgressBarPos(bar); if(sys_data->volume > 0 && GetMuteState() ) { SetMuteOnOff(TRUE); restore_mute_bg(); } if(key_cnt > 1) { if(volume_flag) { sys_data->volume = sys_data->volume +2*(++i); } else { m = sys_data->volume -2*(++i); if(m<=0) { m=0; } sys_data->volume = m; } } if(sys_data->volume>=100) { sys_data->volume=100; } api_audio_set_volume(sys_data->volume); OSD_SetProgressBarPos(bar, sys_data->volume); break; case EVN_POST_CHANGE: api_stop_timer(&volume_timer); volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func); ret = PROC_LOOP; break; case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0, param1, &vkey); if(vkey == V_KEY_NULL) { ret = PROC_LOOP; } break; default: break; } return ret; }
void power_switch(UINT32 mode) { unsigned long keycode; SYSTEM_DATA* sys_data; UINT32 vkey; UINT32 times = 0,display_type=0; date_time dt; UINT32 hh,mm,ss; char time_str[10]; struct pan_key key_struct; UINT32 timer; struct sf_panel_attr panel_attr; /*alfred.wu 1.0版本的MCU程序因为待机时间不能超过256小时*/ #ifdef MCUSTANDBY struct sf_panel_time time; date_time sRecentTime; UINT32 nDurationTime = 0; UINT32 nYear = 0; UINT32 nMonth = 0; UINT32 nDay = 0; UINT32 nHour = 0; UINT32 nMin = 0; UINT32 nSec = 0; struct sf_standby_param standby_param; /*Note: For the limited memory size of MCU, if using led panel, the maximum IR key num is 5 and for vfd panel the size is 2. */ struct sf_power_ir_key ir_key[] = \ { #ifdef RC04_A {0x007f, 0x1c}, /*RC04_A*/ #endif #ifdef RC09_A {0x00FD, 0x1A}, /*RC09_A*/ #endif #ifdef RC11_A {0x00ff, 0x54}, /*RC11_A*/ #endif #ifdef RC19_D {0x01fe, 0x00}, /*RC11_A*/ #endif #ifdef RC01_A_02 {0x807f, 0x0a}, /*RC01_A_02*/ #endif #ifdef ORDER_GZ1010001 {0x007f, 0x1c}, /*RC04_A*/ #else {0x007f, 0x0a}, /*RC01_A*/ #endif {0x01FE, 0x01}, /*REMOTE02420100*/ {0x06FB, 0x0E}, /*ALI_RCU_60_KEY*/ }; #endif sys_data = sys_data_get(); sys_data->bstandmode = 1; sys_data_save(1); system_state = SYS_STATE_POWER_OFF; /*Archer:The following process is unnessary when using mcu standby resolution.*/ #if 0 power_off_process(); power_off_process2(); #endif #ifndef MCUSTANDBY if(mode != 1) key_pan_display("off ", 4); key_pan_display_standby(1); key_pan_display_lock(0); api_standby_led_onoff(TRUE); #else #if 0 get_local_time(&dt); nDurationTime = api_get_recently_timer(); POWER_PRINTF("nDurationTime = 0x%x\n",nDurationTime); if(0 != nDurationTime) { sRecentTime.year = YEAR(nDurationTime); sRecentTime.month= MONTH(nDurationTime); sRecentTime.day= DAY(nDurationTime); sRecentTime.hour= HOUR(nDurationTime); sRecentTime.min= MIN(nDurationTime); sRecentTime.sec= SEC(nDurationTime); POWER_PRINTF("RecentTime:%d-%d-%d %d:%d:%d\n",sRecentTime.year,sRecentTime.month,\ sRecentTime.day, sRecentTime.hour,sRecentTime.min,sRecentTime.sec); get_time_offset(&dt,&sRecentTime,&nDay,&nHour,&nMin,&nSec); //standby_param.standby_time_sec = nHour*60*60+nMin*60; standby_param.standby_time_sec = 60; POWER_PRINTF("standby:hour:%d, minute:%d, total secs:%d\n",nHour,nMin, standby_param.standby_time_sec); //pan_set_standby_time((struct pan_device*)dev_get_by_id(HLD_DEV_TYPE_PAN,0),&sPanelTime); } else { POWER_PRINTF("no timer\n"); } #endif //pan_display(g_pan_dev, " ", 8);//albert.li del 2011.1.25 /*albert.li add 2011.1.25*/ get_local_time(&dt); time.hour = dt.hour; time.min= dt.min; time.sec = dt.sec; #ifndef FAKE_STANDBY sf_panel_clear(); reset_sf_panel_all_led(); /*albert.li add end*/ sf_panel_display_time(&time); sf_panel_term(); #else pan_io_control(g_pan_dev, PAN_DRIVER_GET_ATTRIBUTE, &panel_attr); if (panel_attr.type == SF_PANEL_TYPE_LED) { pan_display(g_pan_dev,"OFF ", 4); } else { pan_display(g_pan_dev,"STANDBY", 7); } #endif power_off_process(); //S5PanelStandby(g_pan_dev,(const)&sPanIRSpecialKey,2);//guop edit standby_param.ir_key_num = sizeof(ir_key)/sizeof(struct sf_power_ir_key); standby_param.ir_key_list = ir_key; standby_param.standby_time_sec = 0; #ifndef FAKE_STANDBY sf_power_down(&standby_param); #else //zhouxp fake standby { while (1) { ControlMsg_t msg; times++; times = times % 100; osal_delay(5000); vkey = V_KEY_NULL; if(key_get_key(&key_struct,0)) { keycode = scan_code_to_msg_code(&key_struct); ap_hk_to_vk(0, keycode, &vkey); } else keycode = PAN_KEY_INVALID; if(vkey == V_KEY_POWER) { power_on_process(); } ap_receive_msg( &msg, 10); libc_printf("got msg type=%d\n",msg.msgType); if(msg.msgType== CTRL_MSG_SUBTYPE_CMD_TIMER_WAKEUP) power_on_process(); } } #endif #endif #ifndef MCUSTANDBY if(1) /* Real Standby*//*alfred.wu ali的IC真待机处理流程在MCUSTANDBY后不会执行*/ { UINT32 cur_time, target_time; get_local_time(&dt); pan_close(g_pan_dev); timer = api_get_recently_timer(); // disable interrupt osal_interrupt_disable(); cur_time = (dt.sec & 0x3F ) | ((dt.min & 0x3F )<<6) | ((dt.hour & 0x1F )<<12) | ((dt.day & 0x1F)<<17) | ((dt.month & 0xF) << 22) | (((dt.year % 100) & 0x3F)<<26); sys_ic_enter_standby(timer, cur_time); // enable interrupt osal_interrupt_enable(); } while (1) { times++; times = times % 100; osal_delay(5000); if(times==0) { //get_cur_time(&hh,&mm,&ss); get_local_time(&dt); hh = dt.hour; mm = dt.min; if(display_type==0) sprintf(time_str,"%02d%02d ",hh,mm); else sprintf(time_str,"%02d.%02d",hh,mm); key_pan_display(time_str, 5); display_type++; display_type %= 2; } vkey = V_KEY_NULL; if(key_get_key(&key_struct,0)) { keycode = scan_code_to_msg_code(&key_struct); ap_hk_to_vk(0, keycode, &vkey); } else keycode = PAN_KEY_INVALID; if(vkey == V_KEY_POWER) { power_on_process(); } } #endif }
/*qjzheng ,2010.7.15 未完成,只支持输入数字*/ BOOL win_input_open(char *title, UINT32 input_type) { char ch; UINT32 hkey,vkey; UINT32* exit_pwd_keys; UINT32 exit_pwd_keycnt; UINT32 i,vscr_idx; UINT32 pwd_u32; BOOL ret = TRUE; struct OSDRect* frame; POBJECT_HEAD win; POBJECT_HEAD pObj; CONTAINER* con; BOOL old_value = ap_enable_key_task_get_key(TRUE); con = &win_input_con; if(!api_is_sd_color_mode()) { #if 0 pObj = (POBJECT_HEAD)&win_input_con; OSD_SetColor(pObj,WIN_SH_IDX,WIN_SH_IDX,0,0); pObj = (POBJECT_HEAD)&win_input_title; OSD_SetColor(pObj, TITLE_SH_IDX,TITLE_SH_IDX,TITLE_SH_IDX,TITLE_SH_IDX); pObj = (POBJECT_HEAD)&win_input_char; OSD_SetColor(pObj, CHAR_SH_IDX,CHAR_HL_IDX,CHAR_SH_IDX,CHAR_SH_IDX); #endif } else if(api_is_sd_color_mode()) { pObj = (POBJECT_HEAD)&win_input_con; OSD_SetColor(pObj,WIN_SH_IDX_SD,WIN_SH_IDX_SD,0,0); pObj = (POBJECT_HEAD)&win_input_title; OSD_SetColor(pObj, TITLE_SH_IDX_SD,TITLE_SH_IDX_SD,TITLE_SH_IDX_SD,TITLE_SH_IDX_SD); pObj = (POBJECT_HEAD)&win_input_char; OSD_SetColor(pObj, CHAR_SH_IDX_SD,CHAR_HL_IDX_SD,CHAR_SH_IDX_SD,CHAR_SH_IDX_SD); } //win_input_con.head.frame.uHeight=W_H; //win_input_title.wStringID=RS_SYSTME_PARENTAL_LOCK_INPUT_PASSWORD; if(title!=NULL) { OSD_SetTextFieldStrPoint(&win_input_title,display_strs[0]); OSD_SetTextFieldContent(&win_input_title,STRING_ANSI,(UINT32)title); } else { OSD_SetTextFieldStrPoint(&win_input_title,NULL); OSD_SetTextFieldContent(&win_input_title,STRING_ID,RS_SYSTME_PARENTAL_LOCK_INPUT_PASSWORD); } exit_pwd_keys = default_key_exit; exit_pwd_keycnt = sizeof(default_key_exit)/sizeof(default_key_exit[0]); win = (POBJECT_HEAD)&win_input_con; /* Start to try to save backgrand */ wincom_backup_region(&win->frame); /* End of try to save backgrand */ input_char_cnt = 0; OSD_DrawObject(win, C_UPDATE_ALL); win_input_draw_chars(); while(1) { hkey = ap_get_key_msg(); if(hkey == INVALID_HK || hkey == INVALID_MSG) continue; ap_hk_to_vk(0, hkey, &vkey); for(i=0;i<exit_pwd_keycnt;i++) { if(vkey == exit_pwd_keys[i]) { ret = FALSE; goto EXIT; } } if(vkey<=V_KEY_9) { ch = (char)('0' + (vkey - V_KEY_0)); if(input_char_cnt < input_length) { input_chars[input_char_cnt] = ch; input_char_cnt ++; } win_input_draw_chars(); if(input_char_cnt == input_length) { ret = TRUE; goto EXIT; } } else if(vkey==V_KEY_LEFT) { if(input_char_cnt) { input_char_cnt--; win_input_draw_chars(); } } }; EXIT: wincom_restore_region(); if((!ret) && ((vkey != V_KEY_EXIT) && (vkey != V_KEY_MENU))) { ap_send_msg(CTRL_MSG_SUBTYPE_KEY, hkey, FALSE);/*if exit key got,repatch the messages again*/ } ap_enable_key_task_get_key(old_value); return ret; }
static PRESULT win_progname_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT32 i; VACTION unact; static UINT16 recall_channel = P_INVALID_ID; SYSTEM_DATA *sys_data; ID taskID; UINT8 *screenBuf; UINT32 vKey; enum API_PLAY_TYPE ret_enum; P_NODE pnode; UINT16 channel = 0; sys_data = sys_data_get(); switch (event) { case EVN_PRE_OPEN: #if(CAS_TYPE == CAS_CONAX) if(get_mmi_showed()!=5) { #endif //Clear the subtitle or teletext content of the last program #if ((SUBTITLE_ON == 1 )||(TTX_ON ==1)) api_osd_mode_change(OSD_WINDOW); #endif #if(CAS_TYPE == CAS_CONAX) } #endif taskID = osal_task_get_current_id(); screenBuf = OSD_GetTaskVscrBuffer(taskID); MEMSET(screenBuf, OSD_TRANSPARENT_COLOR, OSD_VSRC_MEM_MAX_SIZE); #ifdef NVOD_FEATURE if(GetNvodPlayFlag()) return PROC_LEAVE; #endif PROGNAME_TIMER_TIME = sys_data->osd_set.time_out; if (PROGNAME_TIMER_TIME == 0 || PROGNAME_TIMER_TIME > 10) PROGNAME_TIMER_TIME = 5; PROGNAME_TIMER_TIME *= 1000; recall_channel = P_INVALID_ID; if ((param2 &MENU_OPEN_TYPE_MASK) == MENU_OPEN_TYPE_KEY) { vKey = param2 & MENU_OPEN_PARAM_MASK; if (vKey == V_KEY_RECALL) { recall_channel = recall_play_channel(0); if (recall_channel == P_INVALID_ID) return PROC_LEAVE; } #ifdef MULTI_CAS #if(CAS_TYPE==CAS_CONAX) else if( (param2 & MENU_OPEN_PARAM_MASK ) == V_KEY_INFOR) { if(get_mmi_msg_cnt()>0) { ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS, 0, FALSE); MMI_PRINTF("CTRL_MSG_SUBTYPE_STATUS_MCAS: info key; code:0"); set_mmi_showed(10); } } #endif #endif else { if(V_KEY_UP==vKey || V_KEY_DOWN==vKey || V_KEY_C_UP==vKey ||\ V_KEY_C_DOWN==vKey || V_KEY_P_UP==vKey || V_KEY_P_DOWN==vKey\ || V_KEY_TVRADIO==vKey) { unact = win_progname_keymap(pObj, vKey); if(VACT_PASS != unact) { win_progname_unkown_act_proc(unact); } } } } #ifdef MULTI_CAS #if(CAS_TYPE==CAS_IRDETO) if(IRCA_BAN_GetBannerShow()) { //ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS,0x00200000 , FALSE); ap_send_msg_expand(CTRL_MSG_SUBTYPE_STATUS_MCAS,0x00000020 ,0, FALSE); //ap_cas_call_back(0x00000020); } #endif #endif //ad_show(AD_CHANNEL_BAR); OSD_SetBitmapContent(&Bitmappr2, IM_PIC); break; case EVN_POST_OPEN: channel = sys_data_get_cur_group_cur_mode_channel(); if(get_prog_at(channel, &pnode) != SUCCESS) { return PROC_LEAVE; } /* if parent lock && no pwd, play it ,...just want to show pwd*/ /*if(pnode.lock_flag && GetChannelParrentLock()) { api_play_channel(channel,TRUE,TRUE,FALSE); } */ if (show_and_playchannel) { show_and_playchannel = 0; ret_enum = api_play_channel(channel,TRUE,TRUE,FALSE); #ifdef MIS_AD MIS_ShowEpgAdv(0); #endif } if (recall_channel != P_INVALID_ID) { ret_enum = api_play_channel(recall_channel, TRUE, TRUE, FALSE); OSD_TrackObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); } #ifdef AD_SANZHOU if((recall_channel == P_INVALID_ID)||(get_prog_at(recall_channel, &pnode) == SUCCESS)) { szxc_ad_hide_txt(); szxc_ad_show_txt(pnode.prog_number); szxc_ad_hide_pic(AD_BANNER); szxc_ad_show_banner(pnode.prog_number,banner_pic_rt); } #endif progname_timer = api_start_timer(PROGNAME_TIMER_NAME, PROGNAME_TIMER_TIME, progname_timer_func); ShowMuteOnOff(); ShowPauseOnOff(); #ifdef MIS_AD Mis_Set_SameChan_AdvShowOnce(TRUE); Mis_Set_EnterAutoShow(FALSE); #endif break; case EVN_PRE_CLOSE: //ad_stop(AD_CHANNEL_BAR); #ifdef MIS_AD MIS_HideEpgAdv(); #endif break; case EVN_POST_CLOSE: api_stop_timer(&progname_timer); win_progname_stop_scroll(); #if ((SUBTITLE_ON==1)||(TTX_ON==1)) api_osd_mode_change(OSD_SUBTITLE); #endif #ifdef AD_SANZHOU szxc_ad_hide_pic(AD_BANNER); #endif break; case EVN_PRE_DRAW: if(0 != win_progname_set_info()) ret = PROC_LEAVE; break; case EVN_POST_DRAW: break; case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0, param1, &vKey); if(check_exit_key_validate(vKey)) { ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1, FALSE); ret = PROC_LEAVE; } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1 >> 16); ret = win_progname_unkown_act_proc(unact); break; case EVN_MSG_GOT: ret = win_progname_message_proc(param1, param2); break; default: break; } return ret; }
static PRESULT win_progdetail_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; VACTION unact; UINT32 vkey; static int input_num = 0; UINT16 curitem; curitem = sys_data_get_cur_group_cur_mode_channel(); switch(event) { case EVN_PRE_OPEN: api_inc_wnd_count(); info_load(); #if (CC_ON==1) cc_vbi_show_on(FALSE); #endif show_epg_detail = FALSE; break; case EVN_POST_OPEN: //win_minisignal_open(pObj); win_prog_event_display(TRUE); win_minisignal_open_ex(pObj,SIGNAL_L,SIGNAL_T); win_signal_refresh(); break; case EVN_MSG_GOT: if(CTRL_MSG_SUBTYPE_STATUS_SIGNAL == param1) win_signal_refresh(); else if(CTRL_MSG_SUBTYPE_CMD_PIDCHANGE == param1) { info_load(); OSD_DrawObject((POBJECT_HEAD)&txt_pidinfo,C_UPDATE_ALL); } break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: win_minisignal_restore(); win_signal_close(); api_dec_wnd_count(); if(show_epg_detail) { eit_event_info_t *pe=NULL; UINT8 *s1=NULL; UINT16 cur_channel; INT32 len; cur_channel = sys_data_get_cur_group_cur_mode_channel(); pe=epg_get_cur_service_event((INT32)cur_channel, PRESENT_EVENT, NULL,NULL,NULL, /*event_update*/TRUE); s1=epg_get_event_name(pe, &len); if (s1 ) { show_current_epg_detail_win(); } } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16) ; ret = win_progdatail_unkown_act_proc(unact); break; #ifdef SFU_TEST_SUPPORT case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0,param1,&vkey); //libc_printf("%s %d\n",__FUNCTION__,vkey); if(vkey <= V_KEY_9 && vkey >= V_KEY_0) { input_num *= 10; input_num += vkey; if(2008 == input_num) { //#define IOBASEADDRRESS 0xB8000000 //#if (SYS_CHIP_MODULE == ALI_S3601) //#define EXT_INT_STAT (IOBASEADDRRESS + 0x30) //#define EXT_INT_MASK (IOBASEADDRRESS + 0x34) //#elif (SYS_CHIP_MODULE == ALI_S3602) //#define EXT_INT_STAT (IOBASEADDRRESS + 0x30) //#define EXT_INT_MASK (IOBASEADDRRESS + 0x38) //#else //#define EXT_INT_STAT (IOBASEADDRRESS + 0x38) //#define EXT_INT_MASK (IOBASEADDRRESS + 0x3C) //#endif //disable pan and ir interrupt //*(volatile UINT32*)EXT_INT_MASK = (*(volatile UINT32*)EXT_INT_MASK) & (~0x10080000); libc_printf("Enter SFU auto test\n"); input_num = 0; extern struct pan_device* g_pan_dev; pan_close(g_pan_dev); g_b_is_open_sfu = TRUE; SFUTestInit(); ap_send_msg(CTRL_MSG_SUBTYPE_CMD_EXIT_ROOT, (UINT32)&g_win_progdetail,FALSE); } } else { input_num = 0; } break; #endif default: break; } return ret; }