static PRESULT win_volume_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; SYSTEM_DATA* sys_data; PROGRESS_BAR* bar; char timestr[50]; bar = &vol_bar; sys_data = sys_data_get(); switch(event) { case EVN_PRE_OPEN: win_volume_switch_clrstyle(); api_inc_wnd_count(); VOLUME_TIMER_TIME = sys_data->osd_set.time_out; if(VOLUME_TIMER_TIME == 0 || VOLUME_TIMER_TIME>10) VOLUME_TIMER_TIME = 5; VOLUME_TIMER_TIME *= 1000; OSD_SetProgressBarPos(bar, sys_data->volume); sprintf(timestr,"vol %d",sys_data->volume); OSD_SetTextFieldContent(&vol_Proc_txt, STRING_ANSI,timestr); break; case EVN_POST_OPEN: volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func); break; case EVN_UNKNOWNKEY_GOT: ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1,FALSE); ret = PROC_LEAVE; break; case EVN_MSG_GOT: if(param1 == CTRL_MSG_SUBTYPE_CMD_EXIT) { ret = PROC_LEAVE; } #ifdef USB_MP_SUPPORT else if(param1 == CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER) { ret = PROC_LEAVE; ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,0,TRUE); } #endif break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: api_stop_timer(&volume_timer); sys_data_save(1); api_dec_wnd_count(); key_cnt=0; i=0; break; default: ; } return ret; }
static PRESULT win_zoom_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT proc_result = PROC_PASS; VACTION unact; struct Rect tv_src_rect,tv_dest_rect; struct OSDRect osd_src_rect; get_tv_osd_src(&tv_src_rect,&osd_src_rect); switch(event) { case EVN_PRE_OPEN: api_inc_wnd_count(); zoom_times = 0; osd_center_pos.uX = TV_R_W/2; osd_center_pos.uY = TV_R_H/2; break; case EVN_POST_OPEN: break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: tv_src_rect.uStartX = TV_FULL_SRC_L; tv_src_rect.uStartY = TV_FULL_SRC_T; tv_src_rect.uWidth = TV_FULL_SRC_W; tv_src_rect.uHeight = TV_FULL_SRC_H; tv_dest_rect.uStartX = TV_FULL_DEST_L;//TV_DEST_L; tv_dest_rect.uStartY = TV_FULL_DEST_T;//TV_DEST_T; tv_dest_rect.uWidth = TV_FULL_DEST_W;//TV_DEST_W; tv_dest_rect.uHeight = TV_FULL_DEST_H;//TV_DEST_H; vpo_zoom(g_vpo_dev,&tv_src_rect,&tv_dest_rect); #ifdef DUAL_VIDEO_OUTPUT vpo_zoom(g_sd_vpo_dev,&tv_src_rect,&tv_dest_rect); #endif api_dec_wnd_count(); break; case EVN_PRE_DRAW: //win_zoom_draw_tv_zoom_rect(); //proc_result = PROC_LOOP; break; case EVN_POST_DRAW: win_zoom_draw_tv_zoom_rect(); break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); proc_result = win_zoom_proc(unact); break; } return proc_result; }
void ShowMuteOSDOnOff(UINT8 flag) { OBJECT_HEAD* obj; obj = (OBJECT_HEAD*)&win_mute_bmp; if (flag != m_mute_on_screen) { if(flag) api_inc_wnd_count(); } if(flag) OSD_DrawObject(obj, C_UPDATE_ALL); else OSD_ClearObject(obj, 0); if (flag != m_mute_on_screen) { if(!flag) api_dec_wnd_count(); m_mute_on_screen = flag; } }
static PRESULT sleep_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; switch(event) { case EVN_PRE_OPEN: api_inc_wnd_count(); break; case EVN_POST_OPEN: sleep_UI_timer_id = api_start_timer(SLEEP_UI_TIMER_NAME, SLEEP_UI_TIMER_TIME, win_sleeptimer_UI_handler); break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: api_stop_timer(&sleep_UI_timer_id); api_dec_wnd_count(); #ifdef SUPPORT_CAS9 restore_ca_msg_when_exit_win(); #endif break; } return ret; }
static PRESULT win_zoom_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT proc_result = PROC_PASS; VACTION unact; switch(event) { case EVN_PRE_OPEN: api_inc_wnd_count(); zoom_times = 0; osd_center_pos.uX = TV_R_W/2; osd_center_pos.uY = TV_R_H/2; break; case EVN_POST_OPEN: break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: exit_zoom_win(); break; case EVN_PRE_DRAW: //win_zoom_draw_tv_zoom_rect(); //proc_result = PROC_LOOP; break; case EVN_POST_DRAW: win_zoom_draw_tv_zoom_rect(); break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); proc_result = win_zoom_proc(unact); break; } return proc_result; }
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; sys_data = sys_data_get(); switch(event) { case EVN_PRE_OPEN: if(screen_back_state == SCREEN_BACK_MENU) { ap_clear_all_menus(); } b_popdetail = FALSE; 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) { if( (param2 & MENU_OPEN_PARAM_MASK ) == V_KEY_RECALL) { recall_channel = recall_play_channel(0); if(recall_channel == P_INVALID_ID) return PROC_LEAVE; } } api_inc_wnd_count(); break; case EVN_POST_OPEN: if(show_and_playchannel) { UINT16 channel; show_and_playchannel = 0; channel = sys_data_get_cur_group_cur_mode_channel(); api_play_channel(channel, TRUE, TRUE,FALSE); } if(recall_channel != P_INVALID_ID) { api_play_channel(recall_channel, TRUE, TRUE,FALSE); OSD_TrackObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); } progname_timer = api_start_timer(PROGNAME_TIMER_NAME,PROGNAME_TIMER_TIME,progname_timer_func); ShowMuteOnOff(); ShowPauseOnOff(); #ifdef DVR_PVR_SUPPORT ShowRecHintOSDOnOff(GetRecHintState()); #endif break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: api_stop_timer(&progname_timer); sys_data_save(1); api_dec_wnd_count(); if(b_popdetail) { #if 0//def DVR_PVR_SUPPORT if(pvr_info.hdd_valid && (ap_pvr_set_state() != PVR_STATE_IDEL)) ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&g_win_pvr_ctrl, TRUE); else ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&g_win_progdetail, TRUE); #else ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&g_win_progdetail, TRUE); #endif } break; case EVN_PRE_DRAW: break; case EVN_POST_DRAW: #ifdef MODIFY_FOR_EGYPT_CUSTOMER win_progname_draw_bmp(); #endif win_progname_draw_infor(); break; case EVN_UNKNOWNKEY_GOT: 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 subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; SYSTEM_DATA * sys; struct nim_device* nim_dev; UINT8 i,lock; UINT8 unact; if(cur_tuner_idx == 0) nim_dev = g_nim_dev; else nim_dev = g_nim_dev2; nim_get_lock(nim_dev,&lock); switch(event) { case EVN_PRE_OPEN: api_set_deo_layer(0); api_inc_wnd_count(); for(i=0;i<SUBTITLE_ITEM_NUMBER;i++) { p_subtitle_track_str[i]=Subtitle_track_str[i]; p_subtitle_track_idx[i]=Subtitle_track_idx[i]; } win_subtitle_init_data(); if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock)) #if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) #ifdef DVR_PVR_SUPPORT || ((!lock) && !api_pvr_is_playing()) #else || (!lock) #endif ) #endif { win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA); osal_task_sleep(1000); win_compopup_close(); api_dec_wnd_count(); return PROC_LEAVE; } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(VACT_ENTER == unact) { UINT16 cur_sel = OSD_GetListCurPoint(&g_ls_subtitle); sys = sys_data_get(); if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel) { sys->osd_set.subtitle_display = 0;/*select off option*/ sys->osd_set.subtitle_lang = 0xFF; } else if(cur_sel < g_win_ttx_subtitle_count) { sys->osd_set.subtitle_display = 1;/*subtitle on*/ sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count) {/*ttx_subtitle on the top then normal subtitle*/ sys->osd_set.subtitle_display = 1; sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } ret = PROC_LEAVE; api_osd_mode_change(OSD_NO_SHOW); //api_osd_mode_change(OSD_SUBTITLE); } break; case EVN_PRE_CLOSE: unact = (VACTION)(param1>>16); ret = PROC_PASS; break; case EVN_POST_CLOSE: api_set_deo_layer(1); api_dec_wnd_count(); break; default: break; } return ret; }
static PRESULT satfav_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; CONTAINER* cont = (CONTAINER*)pObj; OBJLIST* ol= &satfav_item_list; UINT8 vkey = 0xFF; UINT8 av_flag,grp_cnt,back_saved; switch(event) { case EVN_PRE_OPEN: api_inc_wnd_count(); if( (param2 & MENU_OPEN_TYPE_MASK) == MENU_OPEN_TYPE_KEY) vkey = param2 & MENU_OPEN_PARAM_MASK; //if(vkey == V_KEY_SAT || vkey == V_KEY_FAV) if(vkey == V_KEY_BLUE || vkey == V_KEY_FAV) { av_flag = sys_data_get_cur_chan_mode(); // sat_fav_list_flag = (vkey == V_KEY_SAT)? 0 : 1; sat_fav_list_flag = (vkey == V_KEY_BLUE)? 0 : 1; if(sat_fav_list_flag == 0) grp_cnt = sys_data_get_sate_group_num(av_flag); else grp_cnt = sys_data_get_fav_group_num(av_flag); if(grp_cnt == 0) { win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_msg("No FAV Channels", NULL, 0); win_compopup_open_ext(&back_saved); osal_task_sleep(1000); win_compopup_smsg_restoreback(); ret = PROC_LEAVE; api_dec_wnd_count(); break; } } else { ret = PROC_LEAVE; api_dec_wnd_count(); break; } win_satfav_load_groupcount(); break; case EVN_POST_OPEN: break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: api_dec_wnd_count(); break; case EVN_UNKNOWN_ACTION: break; default: break; } return ret; }
/***************************************************** Interface : static PRESULT chapter_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2); Function : callback of chapter container Author : Wu Jianwen Date : 2010.8.25 Input : Output : NONE Return : ******************************************************/ static PRESULT chapter_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT8 i; UINT16 wait_time = 0; UINT8 unact = 0; INT32 i_DestChapter = 0; //dest chapter num INT32 i_DestChapStartTime; DEC_CHAPTER_INFO t_ChapterInfo; //save chapter info of the stream switch(event) { case EVN_MSG_GOT: if(param1 == CTRL_MSG_SUBTYPE_CMD_EXIT) { ret = PROC_LEAVE; } #ifdef USB_MP_SUPPORT else if(param1 == CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER) { ret = PROC_LEAVE; ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,0,TRUE); } #endif break; case EVN_PRE_OPEN: api_set_deo_layer(0); api_inc_wnd_count(); for(i=0;i<CHAPTER_ITEM_NUMBER;i++) { p_chapter_track_str[i]=Chapter_track_str[i]; p_chapter_track_idx[i]=Chapter_track_idx[i]; } ListChapterInfoInit(); break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(VACT_ENTER == unact) { i_DestChapter = OSD_GetListCurPoint(&g_ls_chapter); //get current chapter t_ChapterInfo.dst_chapter = i_DestChapter; MpgFileGetChapterInfo(&t_ChapterInfo); //i_DestChapStartTime = t_ChapterInfo.dst_start_time/1000; //second i_DestChapStartTime = t_ChapterInfo.dst_start_time; //ms if(t_ChapterInfo.dst_start_time > t_ChapterInfo.cur_start_time) { //mpg_cmd_search_proc((DWORD)i_DestChapStartTime); mpg_cmd_search_ms_proc((DWORD)i_DestChapStartTime); while ((i_DestChapStartTime > MPGFileDecoderGetPlayTime()) && (wait_time < MP_TRICK_TIMEOUT)) { osal_task_sleep(2); wait_time++; } } else //chapter18 to chapter1 { //mpg_cmd_search_proc((DWORD)i_DestChapStartTime); mpg_cmd_search_ms_proc((DWORD)i_DestChapStartTime); while ((i_DestChapStartTime + VIDEO_SEARCH_DLYS < MPGFileDecoderGetPlayTime()) && (wait_time < MP_TRICK_TIMEOUT)) { osal_task_sleep(2); wait_time++; } } PlayProc(); OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG); return PROC_LEAVE; } break; case EVN_PRE_CLOSE: ret = PROC_PASS; break; case EVN_POST_CLOSE: api_set_deo_layer(1); api_dec_wnd_count(); break; default: break; } return ret; }
static PRESULT win_volume_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; SYSTEM_DATA* sys_data; PROGRESS_BAR* bar; bar = &vol_bar; sys_data = sys_data_get(); switch(event) { case EVN_PRE_OPEN: win_volume_switch_clrstyle(); api_inc_wnd_count(); VOLUME_TIMER_TIME = sys_data->osd_set.time_out; if(VOLUME_TIMER_TIME == 0 || VOLUME_TIMER_TIME>10) VOLUME_TIMER_TIME = 5; VOLUME_TIMER_TIME *= 1000; OSD_SetProgressBarPos(bar, sys_data->volume); break; case EVN_POST_OPEN: volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func); break; case EVN_UNKNOWNKEY_GOT: ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1,FALSE); ret = PROC_LEAVE; break; case EVN_MSG_GOT: if(param1 == CTRL_MSG_SUBTYPE_CMD_EXIT) { ret = PROC_LEAVE; } #ifdef USB_MP_SUPPORT else if(param1 == CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER) { ret = PROC_LEAVE; ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,0,TRUE); } #endif break; case EVN_PRE_CLOSE: // if open volume window by popup window, not clear OSD. if(menu_stack_get_top() != (POBJECT_HEAD)&g_win_volume) { /* Make OSD not flickering */ *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG; } break; case EVN_POST_CLOSE: api_stop_timer(&volume_timer); sys_data_save(1); api_dec_wnd_count(); break; default: ; } return ret; }
static PRESULT find_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; VACTION unact; UINT8 bID; UINT32 pos0; switch(event) { case EVN_PRE_OPEN: set_color_style(); api_inc_wnd_count(); if(!edit_keyboard_flag)//when flag is TRUE,it is for edit use { name_valid_func = NULL; MEMSET(input_name_str,0,sizeof(input_name_str)); win_find_prog_num = 0; win_keyboard_set_title(RS_HELP_FIND); } find_init_keys(); find_set_key_display(); break; case EVN_POST_OPEN: draw_caps_colbtn_ext(COLBTN_L, COLBTN_T, 1,IM_EPG_COLORBUTTON_YELLOW); draw_del_colbtn_ext(COLBTN_L + 120, COLBTN_T, 1,IM_EPG_COLORBUTTON_RED); draw_ok_colbtn_ext(COLBTN_L + 240, COLBTN_T, 1,IM_EPG_COLORBUTTON_BLUE); break; case EVN_PRE_CLOSE: /* Make OSD not flickering */ if(edit_keyboard_flag) { *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG; } if(!edit_keyboard_flag) { if(win_find_prog_num > 0) { OSD_ClearObject((POBJECT_HEAD)&g_win_find, C_UPDATE_ALL); menu_stack_pop(); menu_stack_push((POBJECT_HEAD)&g_win_com_lst); ret = PROC_LOOP; } } break; case EVN_POST_CLOSE: api_dec_wnd_count(); break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(unact == VACT_CANCEL) { if((win_find_prog_num > 0) && (!edit_keyboard_flag)) { OSD_ClearObject((POBJECT_HEAD)&g_win_com_lst, C_UPDATE_ALL); win_find_prog_num = 0; } check_ok = FALSE; ret = PROC_LEAVE; } else if(unact >= VACT_NUM_0 && unact<= VACT_NUM_9) { for(pos0=0;pos0<KEY_CNT;pos0++) { if(key_chars[pos0] == '0') break; } bID = pos0+1 + unact - VACT_NUM_0; OSD_ChangeFocus( pObj,bID,C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS); ap_send_msg(CTRL_MSG_SUBTYPE_KEY_UI, V_KEY_ENTER, TRUE); ret = PROC_LOOP; } } return ret; }
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; }
BOOL usb_remove_safely_by_hotkey() { int disk_num, tot_disk_num = 0; char disk_name[8]; int ret; UINT32 choice; UINT8 disk_sel; UINT8 back_saved; POBJECT_HEAD topmenu; ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_USB, 0, 0), &disk_num, sizeof(int)); if (ret == 0 && disk_num > 0) tot_disk_num += disk_num; ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_SD, 0, 0), &disk_num, sizeof(int)); if (ret == 0 && disk_num > 0) tot_disk_num += disk_num; ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_SATA, 0, 0), &disk_num, sizeof(int)); if (ret == 0 && disk_num > 0) tot_disk_num += disk_num; if (tot_disk_num <= 0) { return TRUE; } api_inc_wnd_count(); ID timer_id = win_compopup_start_send_key_timer(V_KEY_EXIT, 10000, TIMER_ALARM); // exit popup if no action in 5s choice = win_disk_operate_open(OPERATE_TYPE_DISK_REMOVE, &disk_sel); api_stop_timer(&timer_id); if ((topmenu = menu_stack_get_top()) != NULL) OSD_TrackObject(topmenu, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); if (!choice) { api_dec_wnd_count(); return TRUE; } else { win_removable_disk_get_name_str(disk_sel, disk_name); } #ifdef DVR_PVR_SUPPORT enum PVR_DISKMODE pvr_mode; char rec_vol[16], tms_vol[16]; struct statvfs buf; pvr_mode = pvr_get_cur_mode(rec_vol, tms_vol); if (api_pvr_is_record_active() && (STRLEN(rec_vol) == 9) && (strncmp(disk_name, &rec_vol[5], 3) == 0)) { win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_msg("USB safely remove error, please stop recording first!", NULL, 0); win_compopup_open_ext(&back_saved); api_dec_wnd_count(); return TRUE; } if (api_pvr_is_playing()) { BOOL b_can_remove = TRUE; if ((pvr_info.pvr_state == PVR_STATE_TMS_PLAY) && (STRLEN(tms_vol) == 9) && (strncmp(disk_name, &tms_vol[5], 3) == 0)) { b_can_remove = FALSE; } else if ((pvr_info.pvr_state != PVR_STATE_TMS_PLAY) && (STRLEN(rec_vol) == 9) && (strncmp(disk_name, &rec_vol[5], 3) == 0)) { b_can_remove = FALSE; } if (!b_can_remove) { win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_msg("USB safely remove error, please stop playing first!", NULL, 0); win_compopup_open_ext(&back_saved); api_dec_wnd_count(); return TRUE; } } if (pvr_info.pvr_state == PVR_STATE_TMS) { api_pvr_tms_proc(FALSE); fs_sync(tms_vol); } #endif #ifdef USB_SUPPORT_HUB /* remove disk */ int disk_type = diskNamePrefix2Type(disk_name); if (disk_type == MNT_TYPE_USB) { char dev_path[16]; int node_id, fd; sprintf(dev_path, "/dev/%s", disk_name); fd = fs_open(dev_path, O_RDONLY, 0); ret = fs_ioctl(fd, IOCTL_GET_NODEID, &node_id, sizeof(int)); fs_close(fd); if (ret == 0) usbd_safely_remove_ex(node_id); } #ifdef SDIO_SUPPORT else if (disk_type == MNT_TYPE_SD) { sd_notify(0); } #endif #ifdef SATA_SUPPORT else if (disk_type == MNT_TYPE_SATA) { sata_notify(0, 0); } #endif #else usbd_safely_remove(); #endif api_dec_wnd_count(); return TRUE; }
static PRESULT wifi_password_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; VACTION unact; UINT8 bID; UINT32 pos0; switch(event) { case EVN_PRE_OPEN: wifi_password_set_color_style(); api_inc_wnd_count(); win_wifi_password_keyboard_set_title(RS_SYSTME_PARENTAL_LOCK_INPUT_PASSWORD); wifi_password_init_keys(); wifi_password_set_key_display(); break; case EVN_POST_OPEN: #ifdef OSD_12 draw_caps_colbtn_ext(COLBTN_L + 120+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_YEOLLW); draw_del_colbtn_ext(COLBTN_L-10, COLBTN_T, 1,IM_FIND_KEYBOARD_RED); draw_ok_colbtn_ext(COLBTN_L + 280+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_BLUE); #else draw_caps_colbtn_ext(COLBTN_L + 120+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_YEOLLW); draw_del_colbtn_ext(COLBTN_L, COLBTN_T, 1,IM_FIND_KEYBOARD_RED); draw_ok_colbtn_ext(COLBTN_L + 240+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_BLUE); #endif break; case EVN_PRE_CLOSE: /* Make OSD not flickering */ *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG; break; case EVN_POST_CLOSE: api_dec_wnd_count(); break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(unact == VACT_CANCEL) { wifi_password_check_ok = FALSE; ret = PROC_LEAVE; } #ifdef RC_PHILIPS_RCMM else if(((unact >= VACT_NUM_0 && unact<= VACT_NUM_9)||(unact >= VACT_sh_0 && unact<= VACT_sh_9)||(unact >= VACT_alt_0 && unact<= VACT_alt_9))&&(change_char_for_findkeyborad==1)) { change_char_for_findkeyborad=0; if(unact >= VACT_alt_0 && unact<= VACT_alt_9) { if((unact==VACT_alt_0)) bID =39;// 1 else if((unact==VACT_alt_1)) bID =40;// 2 else if((unact==VACT_alt_2)) bID =41;// 3 else if((unact==VACT_alt_3)) bID =42;//E else if((unact==VACT_alt_4)) bID =43;//R else if((unact==VACT_alt_5)) bID =44;//T else if((unact==VACT_alt_6)) bID =45;//Y else if((unact==VACT_alt_7)) bID =46;//U else if((unact==VACT_alt_8)) bID =47;//I else if((unact==VACT_alt_9)) bID =48;//O } else { if((unact==VACT_NUM_0)||(unact==VACT_sh_0)) bID =16;//P else if((unact==VACT_NUM_1)||(unact==VACT_sh_1)) bID =17;//Q else if((unact==VACT_NUM_2)||(unact==VACT_sh_2)) bID =23;//w else if((unact==VACT_NUM_3)||(unact==VACT_sh_3)) bID =5;//E else if((unact==VACT_NUM_4)||(unact==VACT_sh_4)) bID =18;//R else if((unact==VACT_NUM_5)||(unact==VACT_sh_5)) bID =20;//T else if((unact==VACT_NUM_6)||(unact==VACT_sh_6)) bID =25;//Y else if((unact==VACT_NUM_7)||(unact==VACT_sh_7)) bID =21;//U else if((unact==VACT_NUM_8)||(unact==VACT_sh_8)) bID =9;//I else if((unact==VACT_NUM_9)||(unact==VACT_sh_9)) bID =15;//O //libc_printf("\nlllll00000000000wwwwwwww===%d\n",cur_display_mode); if((unact >= VACT_NUM_0 && unact<= VACT_NUM_9)&&(cur_display_mode2==0)) find_set_chars(1); else if((unact >= VACT_sh_0 && unact<= VACT_sh_9)&&(cur_display_mode2==1)) find_set_chars(1); OSD_TrackObject((POBJECT_HEAD)&g_win_wifi_password, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); #ifdef OSD_12 draw_caps_colbtn_ext(COLBTN_L + 120+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_YEOLLW); draw_del_colbtn_ext(COLBTN_L-10, COLBTN_T, 1,IM_FIND_KEYBOARD_RED); draw_ok_colbtn_ext(COLBTN_L + 280+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_BLUE); #else draw_caps_colbtn_ext(COLBTN_L + 120+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_YEOLLW); draw_del_colbtn_ext(COLBTN_L, COLBTN_T, 1,IM_FIND_KEYBOARD_RED); draw_ok_colbtn_ext(COLBTN_L + 240+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_BLUE); #endif } OSD_ChangeFocus( pObj,bID,C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS); ap_send_msg(CTRL_MSG_SUBTYPE_KEY_UI, V_KEY_ENTER, TRUE); ret = PROC_LOOP; } else if((unact >= VACT_EDIT_A&& unact<= VACT_EDIT_COMMA) ||(unact >= VACT_EDIT_Z&& unact<= VACT_EDIT_SPACE) ||(unact >= VACT_sh_A&& unact<= VACT_sh_M) ||(unact == VACT_sh_COM) ||(unact >= VACT_alt_A&& unact<= VACT_alt_WWW) ) { // libc_printf("\nssssssssssssssss===%d\n"); if((unact >= VACT_alt_A&& unact<= VACT_alt_WWW)) { if((unact==VACT_alt_A)) bID =52;// ? else if((unact==VACT_alt_S))//大写里 bID =27;// ! else if((unact==VACT_alt_D)) bID =28;// # else if((unact==VACT_alt_F)) bID =29;// $ else if((unact==VACT_alt_G)) bID =30;// % else if((unact==VACT_alt_H)) bID =51;// & else if((unact==VACT_alt_J)) bID =32;//* else if((unact==VACT_alt_K)) bID =33;// ( else if((unact==VACT_alt_L)) bID =34;// ) else if((unact==VACT_alt_Z)) bID =36;// + else if((unact==VACT_alt_X)) bID =35;// - //else if((unact==VACT_alt_C)) // bID =3;//C else if((unact==VACT_alt_COMMA)) bID =27;// : else if((unact==VACT_alt_V))//小写里 bID =30;// / else if((unact==VACT_alt_B)) bID =32;// _ else if((unact==VACT_alt_N)) bID =29;//N //else if((unact==VACT_alt_M)) // bID =29;// ' else if((unact==VACT_alt_WWW)) bID =28;// : if(((unact==VACT_alt_S) ||(unact==VACT_alt_D) ||(unact==VACT_alt_F) ||(unact==VACT_alt_G) ||(unact==VACT_alt_J) ||(unact==VACT_alt_K) ||(unact==VACT_alt_L) ||(unact==VACT_alt_Z) ||(unact==VACT_alt_X)) &&(cur_display_mode2==1) ) { find_set_chars(1); } else if(((unact==VACT_alt_V) ||(unact==VACT_alt_B) ||(unact==VACT_alt_WWW) ||(unact==VACT_alt_COMMA) ||(unact==VACT_alt_N)) &&(cur_display_mode2==0) ) { find_set_chars(1); } } else { if((unact==VACT_EDIT_A)||(unact==VACT_sh_A)) bID =1;//A else if((unact==VACT_EDIT_S)||(unact==VACT_sh_S)) bID =19;//S else if((unact==VACT_EDIT_D)||(unact==VACT_sh_D)) bID =4;//D else if((unact==VACT_EDIT_F)||(unact==VACT_sh_F)) bID =6;//F else if((unact==VACT_EDIT_G)||(unact==VACT_sh_G)) bID =7;//G else if((unact==VACT_EDIT_H)||(unact==VACT_sh_H)) bID =8;//H else if((unact==VACT_EDIT_J)||(unact==VACT_sh_J)) bID =10;//J else if((unact==VACT_EDIT_K)||(unact==VACT_sh_K)) bID =11;//K else if((unact==VACT_EDIT_L)||(unact==VACT_sh_L)) bID =12;//L else if((unact==VACT_EDIT_Z)||(unact==VACT_sh_Z)) bID =26;//Z else if((unact==VACT_EDIT_X)||(unact==VACT_sh_X)) bID =24;//X else if((unact==VACT_EDIT_C)||(unact==VACT_sh_C)) bID =3;//C else if((unact==VACT_EDIT_V)||(unact==VACT_sh_V)) bID =22;//V else if((unact==VACT_EDIT_B)||(unact==VACT_sh_B)) bID =2;//B else if((unact==VACT_EDIT_N)||(unact==VACT_sh_N)) bID =14;//N else if((unact==VACT_EDIT_M)||(unact==VACT_sh_M)) bID =13;//M else if(unact==VACT_EDIT_SPACE) bID =49;//M else if(unact==VACT_EDIT_WWW) bID =37;//M else if(unact==VACT_EDIT_COMMA) bID =38;// else if(unact==VACT_sh_COM) bID =50;// if(((unact >= VACT_EDIT_A && unact<VACT_EDIT_COMMA)||( unact >VACT_EDIT_COMMA &&unact<= VACT_EDIT_WWW))&&(cur_display_mode2==0)) find_set_chars(1); else if((unact >= VACT_sh_A && unact<= VACT_sh_M)&&(cur_display_mode2==1)) find_set_chars(1); else if((unact == VACT_EDIT_COMMA)&&(cur_display_mode2==1)) find_set_chars(1); } OSD_TrackObject((POBJECT_HEAD)&g_win_wifi_password, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); #ifdef OSD_12 draw_caps_colbtn_ext(COLBTN_L + 120+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_YEOLLW); draw_del_colbtn_ext(COLBTN_L-10, COLBTN_T, 1,IM_FIND_KEYBOARD_RED); draw_ok_colbtn_ext(COLBTN_L + 280+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_BLUE); #else draw_caps_colbtn_ext(COLBTN_L + 120+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_YEOLLW); draw_del_colbtn_ext(COLBTN_L, COLBTN_T, 1,IM_FIND_KEYBOARD_RED); draw_ok_colbtn_ext(COLBTN_L + 240+KEY_L_GAP, COLBTN_T, 1,IM_FIND_KEYBOARD_BLUE); #endif if((unact==VACT_alt_C)||(unact==VACT_alt_M))//键盘里没有此字符 {} else OSD_ChangeFocus( pObj,bID,C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS); ap_send_msg(CTRL_MSG_SUBTYPE_KEY_UI, V_KEY_ENTER, TRUE); ret = PROC_LOOP; } else if(unact >= VACT_NUM_0 && unact<= VACT_NUM_9) { for(pos0=0;pos0<KEY_CNT;pos0++) { if(wifi_password_key_chars[pos0] == '0') { break; } } bID = pos0+1 + unact - VACT_NUM_0; OSD_ChangeFocus( pObj,bID,C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS); ap_send_msg(CTRL_MSG_SUBTYPE_KEY_UI, V_KEY_ENTER, TRUE); ret = PROC_LOOP; } #else else if(unact >= VACT_NUM_0 && unact<= VACT_NUM_9) { for(pos0=0;pos0<KEY_CNT;pos0++) { if(wifi_password_key_chars[pos0] == '0') { break; } } bID = pos0+1 + unact - VACT_NUM_0; OSD_ChangeFocus( pObj,bID,C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS); ap_send_msg(CTRL_MSG_SUBTYPE_KEY_UI, V_KEY_ENTER, TRUE); ret = PROC_LOOP; } #endif } return ret; }
static PRESULT subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; SYSTEM_DATA * sys; struct nim_device* nim_dev; UINT8 i,lock; UINT8 unact; if(cur_tuner_idx == 0) nim_dev = g_nim_dev; else nim_dev = g_nim_dev2; nim_get_lock(nim_dev,&lock); switch(event) { case EVN_PRE_OPEN: #ifdef SUPPORT_CAS9 if(0==get_mmi_showed()) ShowSignalStatusOSDOnOff(0); #endif api_set_deo_layer(0); api_inc_wnd_count(); for(i=0;i<SUBTITLE_ITEM_NUMBER;i++) { p_subtitle_track_str[i]=Subtitle_track_str[i]; p_subtitle_track_idx[i]=Subtitle_track_idx[i]; } if(system_state != SYS_STATE_USB_MP)//vic100507#1 { win_subtitle_init_data(); if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock)) #if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) #ifdef DVR_PVR_SUPPORT || ((!lock) && !api_pvr_is_playing()) #else || (!lock) #endif ) #endif { win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA); osal_task_sleep(1000); win_compopup_close(); api_dec_wnd_count(); return PROC_LEAVE; } } else { #ifdef MP_SUBTITLE_SUPPORT //vic100507#1 //TODO: //such like win_subtitle_init_data long resut; resut = win_mp_subtitle_init_data(); if (resut < 0) { return PROC_LEAVE; } #endif } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(system_state != SYS_STATE_USB_MP)//vic100507#1 { if(VACT_ENTER == unact) { UINT16 cur_sel = OSD_GetListCurPoint(&g_ls_subtitle); sys = sys_data_get(); if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel) { sys->osd_set.subtitle_display = 0;/*select off option*/ sys->osd_set.subtitle_lang = 0xFF; } else if(cur_sel < g_win_ttx_subtitle_count) { sys->osd_set.subtitle_display = 1;/*subtitle on*/ sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count) {/*ttx_subtitle on the top then normal subtitle*/ sys->osd_set.subtitle_display = 1; sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } ret = PROC_LEAVE; api_osd_mode_change(OSD_NO_SHOW); //api_osd_mode_change(OSD_SUBTITLE); } } else if(VACT_ENTER == unact) { //vic100507#1 begin #ifdef MP_SUBTITLE_SUPPORT //TODO: //select language index if (!subtitle_handle) { return PROC_LEAVE; } long resut; UINT16 cur_sel = OSD_GetListCurPoint(&g_ls_subtitle); if(g_ext_subtitle_plugin) g_ext_subtitle_plugin->mps_change_language(subtitle_handle,cur_sel); OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG); //if (resut < 0) { return PROC_LEAVE; } #endif //vic100507#1 end } break; case EVN_PRE_CLOSE: unact = (VACTION)(param1>>16); ret = PROC_PASS; break; case EVN_POST_CLOSE: #ifdef SUPPORT_CAS9 restore_ca_msg_when_exit_win(); #endif api_set_deo_layer(1); api_dec_wnd_count(); 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; }