Example #1
0
void SetMuteOnOff(BOOL showOsd)
{
    SYSTEM_DATA* sys_data;
    sys_data = sys_data_get();    

    if(cur_mute_state==UNMUTE_STATE)
        cur_mute_state = MUTE_STATE;
    else
        cur_mute_state = UNMUTE_STATE;

#ifdef AUDIO_MUTE_SAVE
    sys_data->bMuteSate = cur_mute_state;
#endif

#ifdef SYS_VOLUME_FOR_PER_PROGRAM
	if(cur_mute_state == UNMUTE_STATE)
	{
		UINT8 volume;
		if(get_channel_vol(&volume))
			api_audio_set_volume(volume);
	}
#endif	
    api_audio_set_mute(cur_mute_state);

    if(showOsd)
        ShowMuteOnOff();
}
Example #2
0
static PRESULT win_volume_bar_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	PROGRESS_BAR* bar;	
	SYSTEM_DATA* sys_data;
	UINT32 vkey;

	bar = (PROGRESS_BAR*)pObj;
	
	sys_data = sys_data_get();	

	switch(event)
	{
	case EVN_PRE_CHANGE:
		break;
	case EVN_POST_CHANGE:
		sys_data->volume = OSD_GetProgressBarPos(bar);
		if(sys_data->volume > 0 && GetMuteState() )
		{
			SetMuteOnOff(TRUE);
			//added by Sharon to resolve mute clear display bug
			restore_mute_bg();
		}
		api_audio_set_volume(sys_data->volume);
		api_stop_timer(&volume_timer);		 
		volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func);
		ret = PROC_LOOP;
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_hk_to_vk(0, param1, &vkey);
		if(vkey == V_KEY_NULL)
		{
			ret = PROC_LOOP;
		}
		break;
	default:
		break;
	}

	return ret;		 
}
Example #3
0
static PRESULT win_volume_bar_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	PROGRESS_BAR* bar;	
	SYSTEM_DATA* sys_data;
	UINT32 vkey;
	static int  m=0;
	VACTION unact;
	
	bar = (PROGRESS_BAR*)pObj;
	
	sys_data = sys_data_get();	

	switch(event)
	{
	case EVN_PRE_CHANGE:
		unact = (VACTION)(param1>>16);
		if(unact==VACT_DECREASE)
			volume_flag = 0;
		else if(unact==VACT_INCREASE)
			volume_flag = 1;
		if(key_cnt==1)
			i=0;
		m=sys_data->volume = OSD_GetProgressBarPos(bar);
		if(sys_data->volume > 0 && GetMuteState() )
		{
			SetMuteOnOff(TRUE);
			restore_mute_bg();
		}
		if(key_cnt > 1)
		{
			 if(volume_flag)
			 {
			   	sys_data->volume = sys_data->volume +2*(++i);
			 }
			 else 
			 {
			       
			   	m = sys_data->volume -2*(++i);
				if(m<=0)
				{
					m=0;
				}
				sys_data->volume = m;
			 }
			 
		}
		if(sys_data->volume>=100)
		{
			sys_data->volume=100;
		}
		api_audio_set_volume(sys_data->volume);
		OSD_SetProgressBarPos(bar, sys_data->volume);
		break;
	case EVN_POST_CHANGE:
		api_stop_timer(&volume_timer);		 
		volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func);
		ret = PROC_LOOP;
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_hk_to_vk(0, param1, &vkey);
		if(vkey == V_KEY_NULL)
		{
			ret = PROC_LOOP;
		}
		break;
	default:
		break;
	}

	return ret;		 
}
Example #4
0
static PRESULT mpvolume_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	UINT16 vol_pos;
	SYSTEM_DATA *pSys;
	PPROGRESS_BAR  mpvol_bar;
	PPROGRESS_BAR  ban_bar;
	UINT32 msg_code; // construct virtual operation

	mpvol_bar = &mpvolume_bar;
	switch(event)
	{
	   	case EVN_PRE_OPEN:
			pSys = sys_data_get();	
			if(pSys->volume > 0 && GetMuteState() )
				SetMuteOnOff(TRUE);
			vol_pos = mp_vol_to_pos(pSys->volume);
			OSD_SetProgressBarValue(mpvol_bar,vol_pos);
			MPVOLUME_TIMER_TIME = pSys->osd_set.time_out;
			if(MPVOLUME_TIMER_TIME == 0 || MPVOLUME_TIMER_TIME>10)
				MPVOLUME_TIMER_TIME = 5;
			MPVOLUME_TIMER_TIME *= 1000;		
			break;
		case EVN_POST_OPEN:
			mpvolume_timer = api_start_timer("mpvol",MPVOLUME_TIMER_TIME,mpvolume_timer_func);
			break;
		case EVN_POST_CLOSE:
			api_stop_timer(&mpvolume_timer);		
			break;
		case EVN_UNKNOWN_ACTION:
			unact = (VACTION)(param1>>16);
			switch(unact)
			{
			case VACT_VOL_UP:
			case VACT_VOL_DOWN:
				pSys = sys_data_get();	
				vol_pos = mp_vol_to_pos(pSys->volume);
				if(unact == VACT_VOL_DOWN)
					vol_pos--;
				else if(unact == VACT_VOL_UP)
					vol_pos++;
				OSD_SetProgressBarValue(mpvol_bar,vol_pos);
				pSys->volume = mp_pos_to_vol(OSD_GetProgressBarPos(mpvol_bar));
				if(pSys->volume > 0 && GetMuteState() )
					SetMuteOnOff(TRUE);
				api_audio_set_volume(pSys->volume);
				OSD_DrawObject((POBJECT_HEAD)mpvol_bar,C_UPDATE_ALL);	
				api_stop_timer(&mpvolume_timer);		 
				mpvolume_timer = api_start_timer("mpvol",MPVOLUME_TIMER_TIME,mpvolume_timer_func);
				break;
			case VACT_BALANCE_L:
			case VACT_BALANCE_R:
				break;
			default:
				break;
			}
			break;
		default:
			break;
	}
		
	return ret;
}
Example #5
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

}