void win_progname_redraw(BOOL if_reset_scroll) { POBJECT_HEAD pObj = (POBJECT_HEAD) &g_win_progname; if(NULL == menu_stack_get_top() || (POBJECT_HEAD) &g_win_progname == menu_stack_get_top()) { if (if_reset_scroll) win_progname_stop_scroll(); OSD_DrawObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); #ifdef AD_TYPE AD_UpdateAD(AD_TYPE_CHANNEL_BAR); #endif } }
void ShowSignalStatusOSDOnOff(UINT8 flag) { OBJECT_HEAD* obj; POBJECT_HEAD topmenu =NULL; BOOL bifClear = 1; struct OSDRect relative_rect; obj = (OBJECT_HEAD*)&g_win_sigstatus; topmenu =(POBJECT_HEAD)menu_stack_get_top();//@Alan modify if(topmenu && topmenu != obj) { relative_rect.uWidth = 0; relative_rect.uHeight = 0; OSD_GetRectsCross(&(topmenu->frame),&(obj->frame),&relative_rect); if(relative_rect.uHeight != 0 && relative_rect.uWidth != 0) { bifClear = 0; } } if(flag) OSD_DrawObject(obj, C_UPDATE_ALL); else //OSD_ClearObject(obj, 0); { bifClear ? OSD_ClearObject(obj, 0):NULL;//@Alan modify } signal_stataus_showed = flag ? TRUE : FALSE; }
/************************************************************** *CAS Main message process entry. *msg_code has different meaning for different msg_type, check the *tf_catask.c for detailed info. **************************************************************/ PRESULT ap_cti_cas_message_proc ( UINT32 msg_type, UINT32 msg_code ) { UINT8 result = PROC_PASS; UINT8 scr_type = 0; UINT16 strid = 0; UINT16 tfmsg_type = 0; UINT16 tfmsg_code = 0; POBJECT_HEAD p_top_menu = NULL; //P_NODE p_node; tfmsg_type = ( UINT16)( msg_code>>16); tfmsg_code = ( UINT16)( msg_code&0xffff); p_top_menu = menu_stack_get_top(); switch ( tfmsg_type) { case CAS_DISP_CA_ERROR: libc_printf("CAS_DISP_CA_ERROR:%d\n",tfmsg_code); { //ap_cas_message_setid(tfmsg_code&0xff); //ap_cas_message_show(); } break; case CAS_DISP_SET_IRD_NUMBER_REPLY: case CAS_DISP_IRD_NUMBER_NOTIFY: case CAS_DISP_FINGERPRINT_QUERY_REPLY: finger_start_time = 0; ap_cas_fingerprint_proc(1); break; case CAS_DISP_SUBTITLE_NOTIFY: break; case CAS_DISP_BMAIL_NOTIFY: MAIL_ICON_STATUS = Email_New; if (SCREEN_BACK_VIDEO == screen_back_state) win_popup_msg("You have a new mail!",NULL,0); else ; ap_cas_mail_detitle_proc(); break; case CAS_DISP_IPPV_NOTIFY: ap_cas_IPPV_proc(); break; case CAS_DISP_SC_INFO: ap_cas_smc_info_proc( msg_type, msg_code); break; case CAS_DISP_CARD_IN: break; case CAS_DISP_CARD_OUT: break; default: libc_printf("!!!!%s: unknown message %d got!!", __FUNCTION__, tfmsg_type); break; } return result; }
static PRESULT disk_operate_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; char temp[30]; UINT8 *cur_select = NULL; switch(event) { case EVN_PRE_OPEN: switch(operate_type) { case OPERATE_TYPE_PART_FORMAT: STRCPY(temp, "Disk Mode"); cur_select = &mode_select; break; case OPERATE_TYPE_DVR_SET: STRCPY(temp, "DVR Type"); cur_select = &dvr_select_type; break; case OPERATE_TYPE_PART_COPY: STRCPY(temp, "Dest Partition"); cur_select = &partition_select; break; #ifdef DISK_MANAGER_SUPPORT case OPERATE_TYPE_DISK_REMOVE: STRCPY(temp, "Remove"); cur_select = &disk_select; break; #endif default: break; } ComAscStr2Uni(temp, display_strs[0]); win_disk_info_set_string(operate_type, *cur_select); break; case EVN_POST_OPEN: break; case EVN_PRE_CLOSE: /* Make OSD not flickering */ *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG; break; case EVN_POST_CLOSE: if (menu_stack_get_top() == NULL) OSD_ClearObject((POBJECT_HEAD)&g_win_disk_operate, C_UPDATE_ALL); break; } return ret; }
/*--qjzheng 2010.3.18 clear cti msg on the sccreen*/ UINT32 ap_cti_clear_screen(POBJECT_HEAD pNewMenu) { UINT8 ucount=0; POBJECT_HEAD curTopMenu=menu_stack_get_top(); if( pNewMenu!=(POBJECT_HEAD)&g_win_progname && pNewMenu!=(POBJECT_HEAD)&g_win_volume && pNewMenu!=(POBJECT_HEAD)&g_win_light_chanlist && pNewMenu!=(POBJECT_HEAD)&g_win_proginput && pNewMenu!=(POBJECT_HEAD)&g_win_audio && pNewMenu != NULL ) { // if subtitle playing ,to pause if(GetScrollStopFlag()==SCROLL_PLAY) { SetScrollStopFlag(SCROLL_PAUSE); while(GetScrollStopFlag()==SCROLL_PAUSE && ucount<50) { ucount++;//防止死循环 osal_task_sleep(50); } } } if( pNewMenu != (POBJECT_HEAD)&g_win_progname && pNewMenu != (POBJECT_HEAD)&g_win_volume && pNewMenu != NULL) { //to pause display finger print ap_cas_fingerprint_proc(2); } if(pNewMenu != (POBJECT_HEAD)&g_win_chanlist && pNewMenu !=(POBJECT_HEAD)&g_win_volume && pNewMenu !=(POBJECT_HEAD)&g_win_light_chanlist && pNewMenu != (POBJECT_HEAD)&g_win_proginput && pNewMenu !=(POBJECT_HEAD)&g_win_audio && pNewMenu !=(POBJECT_HEAD)&g_win_sigstatus && pNewMenu !=(POBJECT_HEAD)&g_win_progname && pNewMenu != NULL) { // to clear mail icon ShowBMailOSDOnOff(0); } return 0; }
static PRESULT hdmi_factest_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT8 bID; POBJECT_HEAD nxtObj; POBJECT_HEAD topmenu; bID = OSD_GetObjID(pObj); extern sys_state_t system_state; 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_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; } return ret; }
static PRESULT popup_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { switch(event) { case EVN_PRE_DRAW: if(set_change_focus != -1) { OSD_SetContainerFocus((PCONTAINER)pObj, set_change_focus); } break; case EVN_PRE_OPEN: break; case EVN_PRE_CLOSE: /* Make OSD not flickering */ if(menu_stack_get_top()) { *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG; } break; } return PROC_PASS; }
PRESULT ap_cas_IPPV_proc() { static UINT8 flag = 0; POBJECT_HEAD p_top_menu = menu_stack_get_top(); if ((MAIN_MENU_HANDLE == menu_stack_get(0)) \ ||(EPG_HANDLE == menu_stack_get_top()) \ ||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top()) \ ||(CHAN_LIST_HANDLE == menu_stack_get_top()) \ ||(SEARCHN_HANDLE == menu_stack_get_top()) \ ) { //current_ippv_ecm = ecmpid; return; } //avoid to open the same window frequently, i see this scenario on site // if (0 ==win_ippv_check_request()) // return; if((p_top_menu == CHANNEL_BAR_HANDLE) ||(p_top_menu == AUDIO_HANDLE) ||(p_top_menu == VOLUMEBAR_HANDLE)) { OSD_ObjClose ( p_top_menu, C_CLOSE_CLRBACK_FLG ); menu_stack_pop(); } if (OSD_ObjOpen((POBJECT_HEAD)&g_win_ippv_popup, 0xFFFFFFFF) != PROC_LEAVE) { if ((POBJECT_HEAD)&g_win_ippv_popup != menu_stack_get_top()) menu_stack_push((POBJECT_HEAD)&g_win_ippv_popup); } return; }
static PRESULT win_imageslide_unkown_act_proc(VACTION act) { PRESULT ret = PROC_PASS; UINT8 rotate_mode, display_mode; POBJECT_HEAD win,mplayer_menu; int next_image; UINT16 slide_interval; FileInfo file_node; char image_name[FULL_PATH_SIZE]; switch(act) { case VACT_ROTATEL: case VACT_ROTATER: if(FALSE == decode_finish_flag) break; if(imageslide_pause_state == IMG_UNPAUSE_STATE) { api_stop_timer(&imageslide_timer_id); imageslide_pause_state = IMG_PAUSE_STATE; } if(act == VACT_ROTATER) { image_rot_ang = (image_rot_ang + 1)%IMAGE_ANGLE_CNT; } else { image_rot_ang = (image_rot_ang+IMAGE_ANGLE_CNT - 1)%IMAGE_ANGLE_CNT; } image_rotate(image_rot_ang); if(image_rot_ang == ANG_ORI) { win_imageslide_showrotate(FALSE); win_imageslide_showpause(); } else { OSD_ClearObject((POBJECT_HEAD)&imageslide_pause, 0); win_imageslide_showrotate(TRUE); } slideidx_display(TRUE); break; case VACT_INCREASE: case VACT_DECREASE: if(imageslide_pause_state == IMG_UNPAUSE_STATE) { api_stop_timer(&imageslide_timer_id); imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); } if(act == VACT_INCREASE) { next_image = get_next_index_from_play_list(cur_playlist_image); } else { next_image = get_previous_index_from_play_list(cur_playlist_image); } if(next_image != -1) { cur_image_idx = next_image; api_stop_timer(&imageslide_timer_id); image_abort(); if(image_rot_ang!= ANG_ORI) { image_rot_ang = ANG_ORI; win_imageslide_showrotate(FALSE); win_imageslide_showpause(); } osal_task_sleep(20); set_play_list_info(cur_playlist_image,&cur_image_idx,NULL); get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); win_image_file_play(image_name, image_rot_ang); decode_finish_flag = FALSE; osal_task_sleep(20); slideidx_display(TRUE); } break; case VACT_PAUSE: if(imageslide_pause_state == IMG_UNPAUSE_STATE) { imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); api_stop_timer(&imageslide_timer_id); } else { if(image_rot_ang == ANG_ORI) { imageslide_pause_state = IMG_UNPAUSE_STATE; slide_interval = (image_slide_setting.uTime_gap * 1000); win_imageslide_showpause(); if(0 != image_slide_setting.uTime_gap) imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); } } ret = PROC_LOOP; break; case VACT_PLAY: if(IMG_PAUSE_STATE == imageslide_pause_state) { if(image_rot_ang == ANG_ORI) { imageslide_pause_state = IMG_UNPAUSE_STATE; win_imageslide_showpause(); slide_interval = (image_slide_setting.uTime_gap * 1000); if(0 != image_slide_setting.uTime_gap) imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); } } ret = PROC_LOOP; break; case VACT_ZOOM: if(decode_finish_flag) { if(imageslide_pause_state == IMG_UNPAUSE_STATE) { imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); api_stop_timer(&imageslide_timer_id); } win_mpzoom_open(); if(image_rot_ang == ANG_ORI) { imageslide_pause_state = IMG_UNPAUSE_STATE; slide_interval = (image_slide_setting.uTime_gap * 1000); win_imageslide_showpause(); imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); } } break; case VACT_MP: win = (POBJECT_HEAD)(&g_win_imageslide); OSD_ObjClose(win,C_CLOSE_CLRBACK_FLG); while((POBJECT_HEAD)&g_win_usb_filelist != menu_stack_get_top()) { menu_stack_pop(); } image_abort(); win_set_image_multiview_firstidx(); mplayer_menu = (POBJECT_HEAD)(&g_win_imagepreview); if(OSD_ObjOpen(mplayer_menu,(UINT32)(~0)) != PROC_LEAVE) menu_stack_push(mplayer_menu); break; default: break; } return ret; }
void mp_apcallback(UINT32 event_type,UINT32 param) { // DM_DEBUG("%s(): event_type = %d, param=%d\n",__FUNCTION__, event_type, param); POBJECT_HEAD win_top = menu_stack_get_top(); if((win_top == (POBJECT_HEAD)&g_win_imageslide) || (win_top == (POBJECT_HEAD)&g_win_usb_filelist) || (win_top == (POBJECT_HEAD)&g_win_imagepreview) || (win_top == (POBJECT_HEAD)&g_win_mpeg_player) || (win_top == (POBJECT_HEAD)&g_win_record) || (win_top == (POBJECT_HEAD)&g_win_volume) || (win_top == (POBJECT_HEAD)&g_cnt_chapter) #ifdef YOUTUBE_TEST || (win_top == (POBJECT_HEAD)&g_win_mpegYT_player) #endif #ifdef YOUPORN_TEST || (win_top == (POBJECT_HEAD)&g_win_youporn_player) #endif ) { switch(event_type) { case MP_IMAGE_PLAYBACK_END: // ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER,0,FALSE);//when play jpg+mp3,should not clear buff ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER,osal_get_tick(),FALSE);//when play jpg+mp3,should not clear buff break; case MP_MUSIC_PLAYBACK_END: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MP3OVER,0,FALSE); break; case MP_IMAGE_DECODE_PROCESS: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS,param,FALSE); break; case MP_IMAGE_DECODER_ERROR: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_ERR,param,FALSE); break; case MP_VIDEO_PLAYBACK_END: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,param,TRUE); break; case MP_VIDEO_BUILD_IDX_TBL: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_BUILD_IDX, param, FALSE); break; case MP_VIDEO_PARSE_END: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_PARSE_END,param,TRUE); break; case MP_VIDEO_DECODER_ERROR: ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_DEC_ERR,param,TRUE); break; #ifdef SUPPORT_DRM case MP_DRM_NOT_AUTHORIZED: ap_send_msg(CTRL_MSG_SUBTYPE_DRM_NOT_AUTHORIZED, 0, FALSE); break; case MP_DRM_RENTAL_EXPIRED: ap_send_msg(CTRL_MSG_SUBTYPE_DRM_RENTAL_EXPIRED, param, FALSE); break; case MP_DRM_VIEW_RENTAL: ap_send_msg(CTRL_MSG_SUBTYPE_DRM_VIEW_RENTAL, param, FALSE); break; case MP_DRM_VERSION_ERR: ap_send_msg(CTRL_MSG_SUBTYPE_DRM_VERSION_ERR, 0, FALSE); break; case MP_DRM_ICT_ENABLE: ap_send_msg(CTRL_MSG_SUBTYPE_DRM_ICT_ENABLE, param, FALSE); break; #endif case MP_FS_IDE_MOUNT_NAME: STRCPY((char *)param, IDE_MOUNT_NAME); break; case MP_FS_USB_MOUNT_NAME: STRCPY((char *)param, USB_MOUNT_NAME); break; default: break; } } }
void ap_tf_cas_process_update(UINT8 process, UINT8 mark) { date_time dt; SYSTEM_DATA* pSysData = NULL; static tem_process = 0; // static BOOL g_smc_read = FALSE; //libc_printf("smc upd process:%d, %d\n", process, mark); ap_tf_cas_clear_screen(CLEAR_CA_MSG); if(CDCA_SCALE_RECEIVEPATCH == mark) { smcupg_txt_msg.wStringID = RS_DISPLAY_DOWNLOADING; } else if(CDCA_SCALE_PATCHING == mark) { smcupg_txt_msg.wStringID = RS_TF3_SHOWMSG_UPDATE; } pSysData = sys_data_get(); if (CDCA_SCALE_PATCHING == mark && (process == 0 ||(FALSE == g_smc_read) )) { if(FALSE == g_smc_read) { if(g_smc_no[0] != 0) { MEMCPY(pSysData->upd_smc_no, g_smc_no, sizeof(g_smc_no)); g_smc_read = TRUE; } } } if(process > 100) { if (CDCA_SCALE_PATCHING == mark) { get_local_time(&dt); pSysData->smc_update_dt = dt; if (tem_process == 100) { pSysData->bUpd_status = TRUE; } else { pSysData->bUpd_status = FALSE; } } sys_data_save(0); #if 1 OSD_ClearObject((POBJECT_HEAD)&smcupg_info_con, C_UPDATE_ALL); if((POBJECT_HEAD)&smcupg_info_con == menu_stack_get_top()) { menu_stack_pop(); } BackToFullScrPlay(); #else OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_msg, C_UPDATE_ALL); OSD_ClearObject( (POBJECT_HEAD)&smcupg_bar_progress, C_UPDATE_ALL); OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL); #endif } else { if((POBJECT_HEAD)CHANNEL_BAR_HANDLE == menu_stack_get_top()) { OSD_ObjClose((POBJECT_HEAD)CHANNEL_BAR_HANDLE, C_DRAW_SIGN_EVN_FLG|C_CLOSE_CLRBACK_FLG); menu_stack_pop(); } if(-1 == window_pos_in_stack((POBJECT_HEAD)&smcupg_info_con)) { menu_stack_push((POBJECT_HEAD)&smcupg_info_con); } OSD_SetProgressBarPos(&smcupg_bar_progress,(INT16)process); OSD_SetTextFieldContent(&smcupg_txt_progress, STRING_NUM_PERCENT, (UINT32)process); #if 1 OSD_DrawObject((POBJECT_HEAD)&smcupg_info_con, C_UPDATE_ALL); #else OSD_DrawObject( (POBJECT_HEAD)&smcupg_txt_msg, C_UPDATE_ALL); OSD_DrawObject( (POBJECT_HEAD)&smcupg_bar_progress, C_UPDATE_ALL); OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL); OSD_DrawObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL); #endif } tem_process = process; }
PRESULT ap_cas_mail_detitle_proc() { static UINT8 flag = 1; static UINT8 flag2 = 0; //static UINT8 dtl_flag = 1; //static UINT8 dtl_flag2 = 0; static UINT32 time_flag=0; #if 0 if ((MAIN_MENU_HANDLE == menu_stack_get(0)) ||(EPG_HANDLE == menu_stack_get_top()) ||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top()) ||(CHAN_LIST_HANDLE == menu_stack_get_top()) ||(SEARCHN_HANDLE == menu_stack_get_top()) ||(WELCOME_MENU_HANDLE == menu_stack_get_top()) ||(MAIL_HANDLE == menu_stack_get(0)) ||(SUBT_HANDLE == menu_stack_get_top()) ||(AUDIO_HANDLE == menu_stack_get_top()))//BY LMC { return; } #else if ((NULL != menu_stack_get(0)) &&(CHANNEL_BAR_HANDLE != menu_stack_get_top()) &&(VOLUMEBAR_HANDLE != menu_stack_get_top()) /* alfred.wu 20100313 OSD的测试还没有开始先关闭掉这些可以冲突的地方 等以后发现了Bug再打开*/ &&(AUDIO_HANDLE != menu_stack_get_top()) &&(FIND_HANDLE != menu_stack_get_top())) { return; } #endif //first Email proc if (Email_IconHide == MAIL_ICON_STATUS) { if (flag2) { /*alfred.wu 函数在win_mail_icon.c中*/ ShowBMailOSDOnOff(0); flag2 = 0; } } else if (Email_New == MAIL_ICON_STATUS) { ShowBMailOSDOnOff(1); flag2 = 1; } else if (Email_SpaceExhaust == MAIL_ICON_STATUS) { ShowBMailOSDOnOff(flag); if(osal_get_tick()-time_flag>500) { time_flag = osal_get_tick(); flag = !flag; } flag2 = 1; } }
/************************************************************** *CAS Main message process entry. *msg_code has different meaning for different msg_type, check the *tf_catask.c for detailed info. **************************************************************/ PRESULT ap_cas_smc_info_proc( UINT32 msg_type, UINT32 msg_code) { cas_sc_t card_info; UINT16 cur_chan = 0; UINT8 scramble = 0; P_NODE p_node; POBJECT_HEAD p_top_menu = NULL,p_newtop_menu=NULL; PRESULT ret; p_top_menu = menu_stack_get_top(); if(p_top_menu == (POBJECT_HEAD)&g_win_cti_cardinfo || p_top_menu == (POBJECT_HEAD)&g_win_cti_set_maturity || p_top_menu == (POBJECT_HEAD)&g_win_cti_PPID || p_top_menu == (POBJECT_HEAD)&g_win_cti_PPID_info || p_top_menu == (POBJECT_HEAD)&g_win_cti_pin) { ret = OSD_ObjProc(p_top_menu, (MSG_TYPE_MSG << 16) | msg_type, msg_code, 0); while( ret == PROC_LEAVE) { menu_stack_pop(); p_newtop_menu = menu_stack_get_top(); if(NULL != p_newtop_menu) { ret = OSD_ObjOpen(p_newtop_menu, MENU_OPEN_TYPE_STACK) ; } } } cas_get_sc_info_req(&card_info); sys_data_get_cur_group_channel(&cur_chan, sys_data_get_cur_chan_mode()); get_prog_at(cur_chan, &p_node); //get_prog_scramble_type(p_node.prog_number, &scramble); if(card_info.sc_status==0) //smart card ok { //win_popup_msg("Smartcart is in!",NULL,0); } else if(card_info.sc_status==1) //smart card out { if(GetScrollStopFlag()!=SCROLL_STOP) { SetScrollStopFlag(SCROLL_STOP); } cas_sub_clear(); subtitle_clear_all_message(); //clean subtitle msg buffer when the card is out. ap_cas_fingerprint_proc(3);// to clear finger print buf and area if( p_top_menu == (POBJECT_HEAD)&g_win_ippv_popup) { OSD_ClearObject((POBJECT_HEAD)&g_win_ippv_popup, C_UPDATE_ALL); menu_stack_pop(); } //win_popup_msg("Smartcart is out!",NULL,0); } else if(card_info.sc_status==2||card_info.sc_status==3) { //win_popup_msg(NULL,NULL,RS_CTI_READ_SMC_ERROR); } }
PRESULT ap_cas_fingerprint_proc(UINT8 newinfo) { static UINT8 disp_flag = 0, pos_flag = 0; static UINT32 duration = 6000, xpos = 450; POBJECT_HEAD top_handle = menu_stack_get_top(); static UINT8 finger_nuf[11] = {1,0}; UINT8 i; if (1 == newinfo) { /*qjzheng 20100427 BUG1005, 解决指纹内容显示错误,len由原来的10改成11,finger_nuf[0]不应该在这里直接赋值*/ //finger_nuf[0]=0; cas_get_fingerprint_req(finger_nuf,11); pos_flag = 1;//need to display in a new x position //finger_start_time =0; #if 0 libc_printf("finger_nuf %d pos:%d content: ",finger_nuf[0], finger_nuf[1]); for(i=2; i<11;i++) libc_printf("0x%x, ",finger_nuf[i]); libc_printf("\n"); #endif } else if( (2 == newinfo) && (0 == finger_nuf[0]) ) { libc_printf("to clear finger print\n"); show_finger_print(0, NULL,50+finger_nuf[1]); return; } else if( 3 == newinfo ) { libc_printf("to clear finger buf\n"); finger_nuf[0] =1; //show_finger_print(0, NULL,50+finger_nuf[1]); //return; } #if 0 if ((MAIN_MENU_HANDLE == menu_stack_get(0)) ||(EPG_HANDLE == menu_stack_get_top()) ||(PROG_DETAIL_HANDLE == menu_stack_get_top()) ||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top()) ||(CHAN_LIST_HANDLE == menu_stack_get_top()) ||(SEARCHN_HANDLE == menu_stack_get_top()) ||(WELCOME_MENU_HANDLE == menu_stack_get_top()) ||(AUDIO_HANDLE == menu_stack_get_top()) ||(SUBT_HANDLE == menu_stack_get_top()) ||(IPPV_HANDLE == menu_stack_get_top())) { return; } #else if ((NULL != menu_stack_get(0)) &&(CHANNEL_BAR_HANDLE != top_handle) &&((POBJECT_HEAD)&g_win_volume != top_handle )) { return 1; } #endif if (0 == finger_nuf[0]) { if(1 == pos_flag) { MEMSET(smcstr, 0, sizeof(smcstr)); sprintf(smcstr, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",finger_nuf[1],/*finger_nuf[1] --> THE POS*/ finger_nuf[2],finger_nuf[3],finger_nuf[4],finger_nuf[5],finger_nuf[6], finger_nuf[7],finger_nuf[8],finger_nuf[9],finger_nuf[10]); finger_start_time = osal_get_tick(); finger_end_time = finger_start_time + 10*1000; pos_flag = 0; } if (osal_get_tick() < finger_end_time) { show_finger_print(1,smcstr, 50+finger_nuf[1]); //libc_printf("to disp %s\n",smcstr); } else { finger_nuf[0] = 1; finger_end_time = 0; finger_start_time = 0; show_finger_print(0, NULL,50+finger_nuf[1]); } } else if(1 == finger_nuf[0]) { finger_nuf[0] =2; show_finger_print(0, NULL,50+finger_nuf[1]); } return 0; }
void scroll_string(UINT16* str,OSD_RECT rc,UINT16 fontColor,UINT16 backColor,UINT8 delay) { UINT8 c,width; UINT8 fontArray[CA_MAXLEN_OSD]; UINT8 *fontbuf; UINT8 *pDataBitmap; UINT8 regionID = 0; UINT16 ch, i,j,k,times=0,*buf; ID_RSC RscLibId; VSCR* vScr; VSCR vScrTemp; UINT8 * pscr=NULL; OBJECTINFO RscLibInfo; OBJECTINFO *pRscLibInfo = &RscLibInfo; POBJECT_HEAD p_top_menu = NULL; pscr =MALLOC(rc.uHeight*rc.uWidth); if (NULL == pscr) { ASSERT(0); } vScrTemp.lpbScr = pscr; if(str == NULL) return; if(delay == 0) delay = 30; //default speed is 30 fontbuf = fontBuf_btm; regionID = osdmsg_btm_regionID; vScr = &vscr_osdmsg_btm; SetScrollStopFlag(SCROLL_PLAY); while(*str != 0) { ch = COMMB16ToUINT16(*str); RscLibId = OSD_GetDefaultFontLib(ch); pDataBitmap = OSD_GetRscObjData_ext(RscLibId, ch, &RscLibInfo,fontbuf); if(NULL == pDataBitmap) { str++; continue; } /***************************************************************************************** **qjzheng 2010.3.10 NOTE: **当cpy的长度是72时导致显示的字符不全,具体原因未查明,但是改成CA_MAXLEN_OSD后错误得到修正 *****************************************************************************************/ MEMCPY(fontArray,pDataBitmap,CA_MAXLEN_OSD ); width = RscLibInfo.m_objAttr.m_wActualWidth; for(i=0; i<width; i++) { for(k=0; k<rc.uHeight; k++) { UINT8 cmask=0; UINT16 pos=k*rc.uWidth; for(j=0; j<rc.uWidth-1; j++) { vScr->lpbScr[pos+j] = vScr->lpbScr[pos+j+1]; } if( k <(rc.uHeight - RscLibInfo.m_objAttr.m_wHeight)) { vScr->lpbScr[pos+rc.uWidth-1] = backColor; continue; } c=fontArray[(k-(rc.uHeight - RscLibInfo.m_objAttr.m_wHeight))*(RscLibInfo.m_objAttr.m_wWidth/8)+i/8]; cmask = 0x80 >> (i%8) ; vScr->lpbScr[pos+rc.uWidth-1] = (c &cmask)?(fontColor):(backColor); } OSD_SetRect2 ( &vScr->vR,&rc); vScr->updatePending = 1; osdmsg_updatevscr(vScr,regionID); if(GetScrollStopFlag()==SCROLL_PAUSE) { vscr_osddata_copy(&vScrTemp,vScr,rc.uHeight*rc.uWidth); osdmsg_clear_msg(vScr,rc); SetScrollStopFlag(SCROLL_HIDE); while(GetScrollStopFlag()==SCROLL_HIDE) { osal_task_sleep(100); } vscr_osddata_copy(vScr,&vScrTemp,rc.uHeight*rc.uWidth); osdmsg_updatevscr(vScr,regionID); } if(GetScrollStopFlag()==SCROLL_STOP) { p_top_menu=menu_stack_get_top(); while(p_top_menu!=NULL && p_top_menu!=(POBJECT_HEAD)&g_win_progname) { p_top_menu=menu_stack_get_top(); osal_task_sleep(100); } return; } while(times<delay) { osal_task_sleep(1); times++; if(times >= delay) { times = 0; break; } } } str++; } SetScrollStopFlag(SCROLL_STOP); return; //GeCleanRegion(regionID); }
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 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 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; }