Beispiel #1
0
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;
}
Beispiel #2
0
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;		
}
Beispiel #3
0
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;
    }

}
Beispiel #4
0
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;
}
Beispiel #5
0
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;		
}
Beispiel #6
0
    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;	
}
Beispiel #7
0
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;
}
Beispiel #8
0
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;


}
Beispiel #9
0
/*****************************************************
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;
}
Beispiel #10
0
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;
}
Beispiel #11
0
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;
}
Beispiel #12
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;
}
Beispiel #13
0
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;
}
Beispiel #15
0
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;
}
Beispiel #16
0
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;
}