Ejemplo n.º 1
0
static PRESULT palntsc_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	SYSTEM_DATA* sys_data;
	UINT8 tv_out;
	TEXT_FIELD *txt;
	UINT16 str_id;

	txt = &g_win_PALNTSC;

	sys_data = sys_data_get();

	switch(event)
	{
	case EVN_PRE_OPEN:

		tv_out = api_video_get_tvout();
		if(tv_out != TV_MODE_PAL && tv_out != TV_MODE_NTSC358)
		{
			tv_out = TV_MODE_PAL;
			api_video_set_tvout(sys_data->avset.tv_mode = tv_out);
		}
		str_id = (tv_out == TV_MODE_PAL)? RS_SYSTEM_TV_SYSTEM_PAL : RS_SYSTEM_TV_SYSTEM_NTSC;
		OSD_SetTextFieldContent(txt, STRING_ID, (UINT32)str_id);
		break;
	case EVN_POST_OPEN:
		api_stop_timer(&tvmode_UI_timer_id);
		tvmode_UI_timer_id = api_start_timer(TVMODE_UI_TIMER_NAME, TVMODE_UI_TIMER_TIME, win_tvmode_UI_handler);		
		break;
	case EVN_PRE_CLOSE:
		break;
	case EVN_POST_CLOSE:
		break;
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
			tv_out = api_video_get_tvout();
			tv_out = (tv_out == TV_MODE_PAL)? TV_MODE_NTSC358 : TV_MODE_PAL;
			str_id = (tv_out == TV_MODE_PAL)? RS_SYSTEM_TV_SYSTEM_PAL : RS_SYSTEM_TV_SYSTEM_NTSC;
			OSD_SetTextFieldContent(txt, STRING_ID, (UINT32)str_id);
			api_video_set_tvout(sys_data->avset.tv_mode = tv_out);

			OSD_TrackObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);			
			ret = PROC_LOOP;		

			api_stop_timer(&tvmode_UI_timer_id);
			tvmode_UI_timer_id = api_start_timer(TVMODE_UI_TIMER_NAME, TVMODE_UI_TIMER_TIME, win_tvmode_UI_handler);

		}
		break;
	}

	return ret;
	
}
Ejemplo n.º 2
0
static PRESULT av_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	UINT8 bID;
	UINT32 sel;
	UINT16* Uni_str;
	SYSTEM_DATA* sys_data;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;

	bID = OSD_GetObjID(pObj);
	sys_data = sys_data_get();
	switch(event)
	{
	case EVN_PRE_CHANGE://51
		sel = *((UINT32*)param1);
		break;
	case EVN_POST_CHANGE://52
		sel = param1;
		switch(bID)
		{
		case TVMODE_ID:
			sys_data->avset.tv_mode = tvmode_osd_to_setting(sel);
			api_video_set_tvout(sys_data->avset.tv_mode);	
			break;
		case TVASPECT_ID:
			win_av_set_ratio(sys_data,sel);
			sys_data_set_display_mode(&(sys_data->avset));			
			break;
		case VIDEOOUT_ID:
#ifdef HDTV_SUPPORT
            if (sel == 0)
				sys_data->avset.scart_out = SCART_YUV;
            else
				sys_data->avset.scart_out = SCART_RGB;
#else			
			sys_data->avset.scart_out = sel;
#endif
			if(sel == SCART_CVBS)
			{
				api_Scart_RGB_OnOff(0);
#ifdef VDAC_USE_SVIDEO_TYPE
				api_Svideo_OnOff(0);
#endif
			}
			else if(sel == SCART_RGB)
			{
				api_Scart_RGB_OnOff(1);
				//api_Svideo_OnOff(0);/*RGB output will cut off svideo output,ommit here*/
			}
			else
			{
				api_Scart_RGB_OnOff(0);
#ifdef VDAC_USE_SVIDEO_TYPE
				api_Svideo_OnOff(1);
#endif
			}
#if(SYS_MAIN_BOARD == BOARD_DB_M3602_04V01)
					system_config.avset.scart_out = sys_data->avset.scart_out;

					if(sel != 0) // RGB
					{		
						MULTISEL * msel;	
						if(TV_MODE_PAL != sys_data->avset.tv_mode || TV_MODE_NTSC358 != sys_data->avset.tv_mode)
						{
							sys_data->avset.tv_mode = TV_MODE_PAL;
							system_config.avset.tv_mode = TV_MODE_PAL;
						}
						msel = av_item_set[TVMODE_ID - 1];
						OSD_SetMultiselCount(msel, get_tv_mode_count());

						sel = tvmode_setting_to_osd(sys_data->avset.tv_mode);
						OSD_SetMultiselSel(msel, sel);
						msel->bSelType = STRING_ANSI;
						msel->pSelTable = tv_mode_sd;
						OSD_DrawObject((POBJECT_HEAD)&av_item_con1, C_UPDATE_ALL);
						msel->bSelType = STRING_PROC;
						g_rgb_yuv_changed = 1;
					}
					else // YUV
					{
						MULTISEL * msel;

						msel = av_item_set[TVMODE_ID - 1];
						OSD_SetMultiselCount(msel, get_tv_mode_count());

						sel = tvmode_setting_to_osd(sys_data->avset.tv_mode);
						OSD_SetMultiselSel(msel, sel);
						msel->bSelType = STRING_ANSI;
						msel->pSelTable = tv_mode;
						OSD_DrawObject((POBJECT_HEAD)&av_item_con1, C_UPDATE_ALL);
						msel->bSelType = STRING_PROC;
						g_rgb_yuv_changed = 1;
					}
					api_video_set_tvout(sys_data->avset.tv_mode);
					g_rgb_yuv_changed = 0;
#endif
			win_av_set_vcrloop_action(TRUE);
			if(sys_data->avset.scart_out == SCART_RGB)
				api_Scart_OutPut_Switch(1);
			else
				api_Scart_OutPut_Switch(sys_data->vcrloopmode);			
			break;
		case VCR_ID:
			sys_data->vcrloopmode = sel;
			api_Scart_OutPut_Switch(sys_data->vcrloopmode );
			break;
		case RFSYSTEM_ID:
			sys_data->avset.rf_mode = sel;
			win_check_rf_channel(sys_data);
			OSD_SetMultiselSelTable(av_item_set[RFCHAN_ID - 1], rf_ch_range[sel]);
			
			sys_data_set_rf(sys_data->avset.rf_mode, sys_data->avset.rf_channel);
			break;
		case RFCHAN_ID:
			sys_data->avset.rf_channel = sel;
			sys_data_set_rf(sys_data->avset.rf_mode, sys_data->avset.rf_channel);
			break;		
#ifdef HDTV_SUPPORT
		case HDMIOUT_ID:
			sys_data->avset.video_format = sel;
			sys_data_set_video_format(sys_data->avset.video_format);
			break;
		case AUDIOOUT_ID:
			sys_data->avset.audio_output = sel;
			sys_data_set_audio_output(sys_data->avset.audio_output);
			break;
#endif
#if (SUPPORT_DUAL_OUTPUT_ONOFF)
		case DUALOUT_ID:
			sys_data->avset.dual_output = sel;
			sys_data_set_dual_output(sys_data->avset.dual_output);
			break;
#endif
		}
 		
		break; 
	case EVN_REQUEST_STRING:
		sel = param1;
		Uni_str= (UINT16*)param2;
		switch(bID)
		{
		case TVMODE_ID:
			ComAscStr2Uni(get_tv_mode_string(sel), Uni_str);
			break;
		case TVASPECT_ID:
			ComAscStr2Uni(tv_ratio[sel], Uni_str);
			break;
#ifdef HDTV_SUPPORT
		case VIDEOOUT_ID:
			ComAscStr2Uni(video_output[sel], Uni_str);
			break;
#endif
//		case VCR_ID:			break;
		case RFSYSTEM_ID:
			ComAscStr2Uni(rf_mode_stings[sel], Uni_str);
			break;
//		case RFCHAN_ID:			break;		
		}
		break;
		
	case EVN_UNKNOWN_ACTION:
		win_av_enter_key(bID);
		
		break;
	}
 	return ret;
}
Ejemplo n.º 3
0
static PRESULT av_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	UINT8 bID;
	UINT32 sel;
	UINT16* Uni_str;
	SYSTEM_DATA* sys_data;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;

#ifdef HDMI_CERTIFICATION_UI
	MULTISEL * msel;
#endif

	bID = OSD_GetObjID(pObj);
	sys_data = sys_data_get();
	switch(event)
	{
		case EVN_PRE_CHANGE:
			sel = *((UINT32*)param1);
			break;
			
		case EVN_POST_CHANGE:
			sel = param1;
			switch(bID)
			{
				case TVMODE_ID:
					sys_data->avset.tv_mode = tvmode_osd_to_setting(sel);
					api_video_set_tvout(sys_data->avset.tv_mode);	
#ifdef HDMI_CERTIFICATION_UI
					msel = av_item_set[TVASPECT_ID - 1];
					if( check_tv_display_in_hd_mode() )
					{
						win_av_set_ratio(sys_data,3);	// 16:9
						sys_data_set_display_mode(&(sys_data->avset));

						OSD_SetMultiselCount(msel, 1);
						OSD_SetMultiselSel(msel, 3);
					}
					else
					{
						OSD_SetMultiselCount(msel, TV_RATIO_NCNT);
					}
					OSD_DrawObject((POBJECT_HEAD)msel, C_UPDATE_CONTENT);
					OSD_DrawObject((POBJECT_HEAD)&win_av_con, C_UPDATE_CONTENT);
#endif  					
					break;

				case TVASPECT_ID:
#ifdef HDMI_CERTIFICATION_UI					
					msel = av_item_set[TVASPECT_ID - 1];
					if( check_tv_display_in_hd_mode() )
					{	
						win_av_set_ratio(sys_data,3);	// 16:9
						OSD_SetMultiselSel(msel, 3);
					}
					else
#endif						
					{
						win_av_set_ratio(sys_data,sel);
					}
					sys_data_set_display_mode(&(sys_data->avset));			
					break;
					
				case VIDEOOUT_ID:
#ifdef HDTV_SUPPORT
					if (sel == 0)
					{
						sys_data->avset.scart_out = SCART_YUV;
					    sys_data->avset.tv_mode = TV_MODE_1080I_25;
						api_Scart_RGB_OnOff(0);
					}
					else
					{
						sys_data->avset.scart_out = SCART_RGB;
					    api_Scart_RGB_OnOff(1);
					}
#ifndef GPIO_RGB_YUV_SWITCH
					api_video_set_tvout(sys_data->avset.tv_mode);
#endif
					win_av_load_tv_mode_setting(TRUE);
#else			
					sys_data->avset.scart_out = sel;
					if(sel == SCART_CVBS)
					{
						api_Scart_RGB_OnOff(0);
		                #ifdef VDAC_USE_SVIDEO_TYPE
						api_Svideo_OnOff(0);
		                #endif
					}
					else if(sel == SCART_RGB)
					{
						api_Scart_RGB_OnOff(1);
						//api_Svideo_OnOff(0);/*RGB output will cut off svideo output,ommit here*/
					}
					else
					{
						api_Scart_RGB_OnOff(0);
		                #ifdef VDAC_USE_SVIDEO_TYPE
						api_Svideo_OnOff(1);
		                #endif
					}
#endif
					win_av_set_vcrloop_action(TRUE);
					if(sys_data->avset.scart_out == SCART_RGB)
						api_Scart_OutPut_Switch(1);
					else
						api_Scart_OutPut_Switch(sys_data->vcrloopmode);
					break;
					
				case VCR_ID:
					sys_data->vcrloopmode = sel;
					api_Scart_OutPut_Switch(sys_data->vcrloopmode );
					break;
					
				case RFSYSTEM_ID:
					sys_data->avset.rf_mode = sel;
					win_check_rf_channel(sys_data);
					OSD_SetMultiselSelTable(av_item_set[RFCHAN_ID - 1], rf_ch_range[sel]);					
					sys_data_set_rf(sys_data->avset.rf_mode, sys_data->avset.rf_channel);
					break;
					
				case RFCHAN_ID:
					sys_data->avset.rf_channel = sel;
					sys_data_set_rf(sys_data->avset.rf_mode, sys_data->avset.rf_channel);
					break;
					
#ifdef HDTV_SUPPORT
				case HDMIOUT_ID:
#ifdef HDMI_CERTIFICATION_UI
					if(!check_hdmi_out_in_dvi_mode())
					{	
						// STB only output RGB in DVI mode
						sys_data->avset.video_format = convert_ui_hdmi_out_sel_to_sys_video_format(sel);
						sys_data_set_video_format(sys_data->avset.video_format);
					}
#else
					sys_data->avset.video_format = sel;
					sys_data_set_video_format(sys_data->avset.video_format);
#endif
					break;
				case AUDIOOUT_ID:
					sys_data->avset.audio_output = sel;
					sys_data_set_audio_output(sys_data->avset.audio_output);
					break;
#endif
#if (SUPPORT_DUAL_OUTPUT_ONOFF)
				case DUALOUT_ID:
					sys_data->avset.dual_output = sel;
					sys_data_set_dual_output(sys_data->avset.dual_output);
					break;
#endif
			} 		
			break;
			
		case EVN_REQUEST_STRING:
			sel = param1;
			Uni_str= (UINT16*)param2;
			switch(bID)
			{
				case TVMODE_ID:
					ComAscStr2Uni(get_tv_mode_string(sel), Uni_str);
					break;
					
				case TVASPECT_ID:
#ifdef HDMI_CERTIFICATION_UI
					if( check_tv_display_in_hd_mode() )					
					{
						sel = 3; // 16:9
					}
#endif					
					ComAscStr2Uni(tv_ratio[sel], Uni_str);
					break;
#ifdef HDTV_SUPPORT
				case VIDEOOUT_ID:
					ComAscStr2Uni(video_output[sel], Uni_str);
					break;
#endif
		//		case VCR_ID:			break;
				case RFSYSTEM_ID:
					ComAscStr2Uni(rf_mode_stings[sel], Uni_str);
					break;
		//		case RFCHAN_ID:			break;		
			}
			break;
		
		case EVN_UNKNOWN_ACTION:
			win_av_enter_key(bID);		
			break;
	}
 	return ret;
}
Ejemplo n.º 4
0
void sys_data_load(void)
{
	AV_Set *av_set;
	//	tDspMode 			aspect_mode;
	BOOL create_view, grp_exst;
	S_NODE s_node;
	UINT8 group_idx, group_type, group_pos;
	UINT16 channel;
	UINT16 langclass;
	INT32 hoffset, moffset;
	UINT8 GMTOffset;
	date_time dt;
	enum TVSystem eTVSys;
	prog_id_t *prog_id;
	UINT8 av_mode;
	UINT8 pre_chan_mode, boot_chan_node;
	UINT16 chan_idx[2], boot_group_idx;

	
	/* Load data here */
	if(load_tmp_data((UINT8*)&system_config,sizeof(system_config))!=SUCCESS)
	{
		osal_task_sleep(50);
		if(load_tmp_data((UINT8*)&system_config,sizeof(system_config))!=SUCCESS)
		{
			osal_task_sleep(50);
			erase_tmp_sector();
			//if load tmp data fail, set to default 
			sys_data_factroy_init();
			save_tmp_data((UINT8*)&system_config,sizeof(system_config));
		}
	}

#ifdef NVOD_FEATURE
	nvod_release();
	nvod_init(system_config.main_frequency, system_config.main_symbol, system_config.main_qam);
#endif
	//SetNvodScanOverFlag(FALSE);
  
	if (CUR_CHAN_MODE > TV_CHAN)
		CUR_CHAN_MODE = TV_CHAN;

	if (get_prog_num(VIEW_ALL | CUR_CHAN_MODE, 0) != 0)
		create_view = TRUE;
	else
		create_view = FALSE;

	if (system_config.startup_switch && system_config.startup_mode <= 2)
	{
		boot_chan_node = pre_chan_mode = CUR_CHAN_MODE;
		if (system_config.startup_mode == RADIO_CHAN)
		{
			CUR_CHAN_MODE = RADIO_CHAN;
			pre_chan_mode = CUR_CHAN_MODE;
		}
		else if (system_config.startup_mode == TV_CHAN)
		{
			CUR_CHAN_MODE = TV_CHAN;
			pre_chan_mode = CUR_CHAN_MODE;
		}
		
		if (CUR_CHAN_GROUP_INDEX >= MAX_GROUP_NUM+MAX_FAVGROUP_NUM)
			CUR_CHAN_GROUP_INDEX = 0;
		boot_group_idx = CUR_CHAN_GROUP_INDEX;

		CUR_CHAN_GROUP_INDEX = 0;/* Force to all sate group*/

		if ( system_config.startup_mode == RADIO_CHAN
		        || system_config.startup_mode == 2 ) //both
		{

			sys_data_set_cur_chan_mode(RADIO_CHAN);
			recreate_prog_view(VIEW_ALL | RADIO_CHAN, 0);
			prog_id = &system_config.statup_chsid[0];
			//chan_idx[0] = get_prog_pos_ext(prog_id->sat_id,prog_id->tp_id,prog_id->prog_number);
			if (get_prog_num(VIEW_ALL | RADIO_CHAN, 0) > 0)
				chan_idx[0] = 0;
			else
				chan_idx[0] = 0xFFFF;
			if (chan_idx[0] != P_INVALID_ID)
				system_config.cur_chan_group[CUR_CHAN_GROUP_INDEX].radio_channel = chan_idx[0];
		}

		if ( system_config.startup_mode == TV_CHAN
		        || system_config.startup_mode == 2 ) //both

		{
			sys_data_set_cur_chan_mode(TV_CHAN);
			recreate_prog_view(VIEW_ALL | TV_CHAN, 0);
			prog_id = &system_config.statup_chsid[1];
			//chan_idx[1]  = get_prog_pos_ext(prog_id->sat_id,prog_id->tp_id,prog_id->prog_number);
			if (get_prog_num(VIEW_ALL | TV_CHAN, 0) > 0)
				chan_idx[0] = 0;
			else
				chan_idx[0] = 0xFFFF;
			if (chan_idx[1] != P_INVALID_ID)
				system_config.cur_chan_group[CUR_CHAN_GROUP_INDEX].tv_channel = chan_idx[1];
		}

		if (chan_idx[pre_chan_mode] != P_INVALID_ID)
		{
			sys_data_set_cur_chan_mode(pre_chan_mode);
			//recreate_prog_view(CREATE_VIEW_ALL_SAT,0);
			create_view = TRUE;
		}
		else
		{
			CUR_CHAN_GROUP_INDEX = boot_group_idx;
			sys_data_set_cur_chan_mode(boot_chan_node);
			system_config.startup_switch = 0;
		}

	}

	api_feed_power_onoff(system_config.feed_power);

	sys_data_set_cur_chan_mode(CUR_CHAN_MODE);

	if (CUR_CHAN_GROUP_INDEX >= MAX_GROUP_NUM+MAX_FAVGROUP_NUM)
		CUR_CHAN_GROUP_INDEX = 0;

	sys_data_check_channel_groups();

	group_idx = sys_data_get_cur_group_index();
	if (group_idx >= sys_data_get_group_num()&&group_idx<MAX_GROUP_NUM)//当group_idx为fav的时候不需要重新设置为0
		sys_data_set_cur_group_index(0);

	if (sys_data_get_group_num() > 0)
		create_view = TRUE;

	if (create_view)
	{
		group_idx = sys_data_get_cur_group_index();

		grp_exst = sys_data_get_cur_mode_group_infor(group_idx, &group_type, &group_pos, &channel);

		if (!grp_exst)
		{
			CUR_CHAN_GROUP_INDEX = 0;
			group_type = ALL_GROUP_TYPE;
		}

		if (group_type == ALL_GROUP_TYPE)
		{
			recreate_prog_view(VIEW_ALL | CUR_CHAN_MODE, 0);
		}
/*
		else if (group_type == SATE_GROUP_TYPE)
		{
			get_sat_at(group_pos, VIEW_ALL, &s_node);
			recreate_prog_view(VIEW_SINGLE_SAT | CUR_CHAN_MODE, s_node.sat_id);
		}
*/
		else
		{
			recreate_prog_view(VIEW_FAV_GROUP | CUR_CHAN_MODE, group_pos);
		}

	}

	MEMCPY(&system_config_bak, &system_config, sizeof(system_config));

    /*display effect setting*/
    sys_data_load_display_effect(TRUE);
	
	/* Load system time*/
	dt = system_config.sys_dt;
	if ( dt.year < 1900 || dt.year > 2100 || dt.month < 1 || dt.month > 12 || dt.day < 1 || dt.day > 31
	        || dt.hour > 23 || dt.min > 59 || dt.sec > 59 )
	{
		/* If system is invalid,set system to initial time*/
		dt.year = DEFAULT_YEAR;
		dt.month = DEFAULT_MONTH;
		dt.day = DEFAULT_DAY;
		dt.hour = 0;
		dt.min = 0;
		dt.sec = 0;
	}
	set_STC_time(&dt);
	init_UTC(&dt);

	if (system_config.local_time.buseGMT)
	{
		sys_data_gmtoffset_2_hmoffset(&hoffset, &moffset);
		set_STC_offset(hoffset, moffset, 0);
		enable_summer_time(system_config.local_time.SummerTime);
	}
	else
	{

		disable_time_parse();
	}

	/* Video Setting */
	av_set = &system_config.avset;
	//	if ( !firsttime )
	api_video_set_tvout(av_set->tv_mode);

	sys_data_set_display_mode(av_set);
    #if(SYS_DEFINE_NULL != SYS_RFM_MODULE)
	sys_data_set_rf(av_set->rf_mode, av_set->rf_channel);
    #endif


	/* Audio Setting */
	api_audio_set_volume(system_config.volume);


	OSD_SetLangEnvironment(system_config.lang.OSD_lang);
	sys_data_select_audio_language(system_config.lang.Audio_lang_1, system_config.lang.Audio_lang_2);

	sys_data_set_palette(0);

	if (system_config.rcupos > MAX_RCU_POSNUM)
		system_config.rcupos = 0;


#ifdef CHANCHG_VIDEOTYPE_SUPPORT
	UIChChgSetVideoType(system_config.chchgvideo_type);
#endif

}