コード例 #1
0
ファイル: win_prog_name.c プロジェクト: Janesak1977/ali3602
void change_group(INT32 shift)
{
	UINT8 cur_group,max_group;
	UINT16 cur_channel,max_channel;
	UINT8 group_type, group_pos;
	S_NODE s_node;
    P_NODE p_node;
    UINT32 n;
    SYSTEM_DATA* sys_data;
	UINT8 cur_chan_mode;

    sys_data = sys_data_get();
	
	max_group	= sys_data_get_group_num();
	cur_group = sys_data_get_cur_group_index();
	cur_group = (cur_group + shift + max_group) % max_group;
	sys_data_set_cur_group_index(cur_group);
	sys_data_get_cur_mode_group_infor(cur_group, &group_type, &group_pos,&cur_channel);
	
	cur_chan_mode = sys_data_get_cur_chan_mode();
	if(group_type==ALL_SATE_GROUP_TYPE)
	{
		PRINTF("========Change to ALL_SATE_GROUP_TYPE\n");
		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);
		PRINTF("========Change to SATE_GROUP_TYPE(%d,%s)\n",group_pos,s_node.sat_name);
	}
	else
	{
		PRINTF("========Change to FAV_GROUP_TYPE(%d)\n",group_pos);
		recreate_prog_view(VIEW_FAV_GROUP|cur_chan_mode,group_pos);
	}

    max_channel = get_prog_num(VIEW_ALL|cur_chan_mode,0);
	if(cur_channel>= max_channel)
		cur_channel = 0;

    n = 0;
    get_prog_at(cur_channel, &p_node);
    while( (p_node.skip_flag  
            || (sys_data->chan_sw==CHAN_SWITCH_FREE && p_node.ca_mode)
            || (sys_data->chan_sw==CHAN_SWITCH_SCRAMBLED && !p_node.ca_mode) )
         && n!=max_channel)
    {
	    cur_channel = (cur_channel + 1 + max_channel) % max_channel;
        get_prog_at(cur_channel, &p_node);
        n++;
    };
    
	
	api_play_channel(cur_channel, TRUE, TRUE,FALSE);

}
コード例 #2
0
ファイル: win_cti_cas_proc.c プロジェクト: alkap007/ali3606
void BackToFullScrPlay()
{
	OSD_RECT rect;
	UINT16 cur_channel;
	UINT8 no_channel = 0, back_saved;

	ap_clear_all_menus();
	menu_stack_pop_all();

	cur_channel = sys_data_get_cur_group_cur_mode_channel();
	recreate_prog_view(VIEW_ALL | PROG_TVRADIO_MODE , 0);
	if (get_prog_num(VIEW_ALL | PROG_TV_MODE, 0) == 0)
	{
		no_channel = 1;
	}
	if (get_prog_num(VIEW_ALL | PROG_RADIO_MODE, 0) > 0)
	{
		if (no_channel)
			sys_data_set_cur_chan_mode(RADIO_CHAN);
		no_channel = 0;
	}

	if (no_channel)
	{
		if (OSD_ObjOpen((POBJECT_HEAD) &g_win_mainmenu, MENU_OPEN_TYPE_STACK) != PROC_LEAVE)
			menu_stack_push((POBJECT_HEAD) &g_win_mainmenu);
	}
	else
	{
		hde_set_mode(VIEW_MODE_FULL);
		vpo_ioctl(g_vpo_dev, VPO_IO_DIRECT_ZOOM, 0);
		/* Clear OSD */
		OSD_GetRectOnScreen(&rect);
		OSDDrv_RegionFill((HANDLE)g_osd_dev, 0, &rect, OSD_TRANSPARENT_COLOR);
		/* show mute & pause status*/
		ShowMuteOnOff();
		ShowPauseOnOff();
//		ap_cas_message_show();
		/* show channel index */
		key_pan_display_channel(cur_channel);

		if(GetChannelParrentLock())
		{
			api_play_channel(cur_channel,TRUE,TRUE,FALSE);
		}
		//--{{{退到全屏播放的时候,弹出INFO BAR
		ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)CHANNEL_BAR_HANDLE, TRUE);	
	}
}
コード例 #3
0
ファイル: system_data.c プロジェクト: jinfeng-geeya/3202C
/* Change group index */
INT32 sys_data_change_group(UINT8 group_idx)
{
	UINT8 group_type, group_pos;
	S_NODE s_node;
	UINT16 cur_channel;
	SYSTEM_DATA * psys_data = sys_data_get();

	BOOL b = sys_data_get_cur_mode_group_infor(group_idx, &group_type, &group_pos, &cur_channel);

	if (b)
	{
		if (group_type == ALL_GROUP_TYPE)
		{
			sys_data_set_cur_intgroup_index(0);
			return recreate_prog_view(VIEW_ALL | CUR_CHAN_MODE, 0);
		}
		else if (group_type == DATA_GROUP_TYPE)
		{
			sys_data_set_cur_intgroup_index(group_pos);
			return recreate_prog_view(VIEW_ALL|PROG_DATA_MODE , 0);
			SYS_PRINTF("========Change to DATA_GROUP_TYPE(%d)\n", group_pos);
		}
		else if (group_type == NVOD_GROUP_TYPE)
		{
			sys_data_set_cur_intgroup_index(group_pos);
			return recreate_prog_view(VIEW_ALL | PROG_NVOD_MODE, 0);
			SYS_PRINTF("========Change to NVOD_GROUP_TYPE(%d)\n", group_pos);
		}
		else if (group_type == LOCAL_GROUP_TYPE)
		{
			/*we change to the specified local group*/
			sys_data_set_cur_intgroup_index(group_pos);
			return recreate_prog_view(VIEW_BOUQUIT_ID|CUR_CHAN_MODE, psys_data->local_group_id[group_pos-1]);
			SYS_PRINTF("========Change to LOCAL_GROUP_TYPE(%d,%s)\n", group_pos-1, psys_data->local_group_name[group_pos-1]);
		}
		else if (group_type == FAV_GROUP_TYPE)
		{
			sys_data_set_cur_intgroup_index(group_pos);
			return recreate_prog_view(VIEW_FAV_GROUP | CUR_CHAN_MODE, group_pos-MAX_GROUP_NUM);
		}
		
	}
	else
	{
		sys_data_set_cur_intgroup_index(0);
		return recreate_prog_view(VIEW_ALL|CUR_CHAN_MODE,0);
	}

	return E_FAILURE;
}
コード例 #4
0
ファイル: lib_multifeed.c プロジェクト: alkap007/ali3606
/*
 * get one feed's detail information and fill to feed node
 * some info such as tp info, can't find in database, we have to retreive from nit
 */
static void fill_feed_detail_info(struct FEED_INFO *info, UINT32 sat_id, UINT32 prog_id)
{
	INT32 ret = MULTIFEED_FAILURE, ret2 = MULTIFEED_FAILURE;
	T_NODE t_node;
	P_NODE p_node, p_node2;
	P_NODE *feed_pnode;
	DB_VIEW *last_view;
	UINT16 last_filter_mode, i;
	UINT32 last_view_param;

	get_prog_by_id(prog_id, &p_node);

	// first check db whether has the infomation
	ret = find_tp_in_db(sat_id, info->original_network_id, info->transport_stream_id, &t_node);

	if(ret != MULTIFEED_SUCCESS)
	{
		// if already got the nit, then search the buffer, and update to db
		ret = search_node( multifeed_table_buff, 1024, info->original_network_id, info->transport_stream_id, &t_node);
		
		if( ret!=MULTIFEED_SUCCESS )
		{
			// not recieve nit data yet, so request nit data
			ret = find_tp_in_nit(info->original_network_id, info->transport_stream_id, &t_node);
		}
		
		if(ret == MULTIFEED_SUCCESS)
		{
			last_view			=	(DB_VIEW *)get_cur_view();
			last_filter_mode	=	last_view->cur_filter_mode;
			last_view_param		=	last_view->view_param;
			if(last_view->cur_type==TYPE_PROG_NODE)
			{
				recreate_tp_view(VIEW_ALL ,0);
				ret = add_node(TYPE_TP_NODE, sat_id, (void*)&t_node);
				if(ret == SUCCESS)
					update_data();
				recreate_prog_view(last_filter_mode, last_view_param);
			}
			else
			{
				ret = add_node(TYPE_TP_NODE, sat_id, (void*)&t_node);
				if(ret == SUCCESS)
					update_data();			
			}
		}
	}

	// maybe the subfeed is one of the channels, and that channel 
	// maybe locked by parent, so we have to get this information
	if( p_node.prog_number != info->service_id )
	{
		i = 0;
		while(SUCCESS == get_prog_at(i, &p_node2))
		{
			if(( p_node2.tp_id == t_node.tp_id ) && ( p_node2.prog_number == info->service_id ))
			{
				mf_debug("feed: (%s, sid: %d) is Channel: %s\n", \
							info->name, info->service_id, p_node2.service_name );
				ret2 = MULTIFEED_SUCCESS;
				break;
			}
			i++;
		}
	}
	if(ret == SUCCESS)
	{
		info->is_known	=	1;
		feed_pnode		=	&(info->p_node);
		
		MEMCPY(feed_pnode, &p_node, sizeof(P_NODE));
		feed_pnode->tp_id			=	t_node.tp_id;
		feed_pnode->prog_number		=	info->service_id;
		if( ret2 != MULTIFEED_SUCCESS)
		{
			feed_pnode->pmt_pid		=	0x1FFF;
			feed_pnode->audio_count	=	1;
			feed_pnode->audio_pid[0]=	feed_pnode->pcr_pid = feed_pnode->video_pid = 0x1FFF;
		}
		else
		{
			feed_pnode->av_flag		=	p_node2.av_flag;
			feed_pnode->ca_mode		=	p_node2.ca_mode;
			feed_pnode->video_pid	=	p_node2.video_pid;
			feed_pnode->pcr_pid		=	p_node2.pcr_pid;
			feed_pnode->h264_flag	=	p_node2.h264_flag;
			feed_pnode->pmt_pid		=	p_node2.pmt_pid;
			feed_pnode->pmt_version	=	p_node2.pmt_version;
			feed_pnode->service_type=	p_node2.service_type;
			feed_pnode->audio_channel=	p_node2.audio_channel;
			feed_pnode->audio_select=	p_node2.audio_select;
			feed_pnode->lock_flag	=	p_node2.lock_flag;// parent lock
			feed_pnode->audio_count	=	p_node2.audio_count;
			MEMCPY( feed_pnode->audio_pid, p_node2.audio_pid, sizeof(UINT16)*MAX_AUDIO_CNT );
			MEMCPY( feed_pnode->audio_lang, p_node2.audio_lang, sizeof(UINT16)*MAX_AUDIO_CNT );
		}
		mf_debug("feed: tp_id: %d, frq: %d\n", feed_pnode->tp_id, t_node.frq );
	}
}
コード例 #5
0
ファイル: win_prog_name.c プロジェクト: Janesak1977/ali3602
UINT16 recall_play_channel(UINT8 index)
{
	UINT8 group_type,group_pos = 0;
	UINT8 cur_mode,new_mode,cur_group_idx,cur_group_type,cur_group_pos;
	UINT8 int_group_idx;
	UINT16 cur_channel,playing_channel;
	S_NODE s_node;
	P_NODE *pnode;
	BOOL exit = FALSE;
    INT32 n;
    UINT8 mode_changed;

    playing_channel= sys_data_get_cur_group_cur_mode_channel();
    cur_group_idx = sys_data_get_cur_group_index();
	sys_data_get_cur_mode_group_infor(cur_group_idx,&cur_group_type,  &cur_group_pos, &cur_channel);
	
	index = 0;

    cur_mode = sys_data_get_cur_chan_mode();
    
    if(cur_mode != recent_channels[index].mode)
    {
        sys_data_set_cur_chan_mode(recent_channels[index].mode);
        mode_changed = 1;
    }
    else
        mode_changed = 0;
  
	int_group_idx = recent_channels[index].internal_group_idx;    

	if(int_group_idx==0)
	{
		group_type = ALL_SATE_GROUP_TYPE;
		group_pos = 0;
	}
	else if( int_group_idx<= MAX_SAT_NUM )
	{
		group_type = SATE_GROUP_TYPE;
		group_pos = int_group_idx - 1;
	}
	else
	{
		group_type = FAV_GROUP_TYPE;
		group_pos = int_group_idx - 1 - MAX_SAT_NUM;
	}

	cur_group_idx = sys_data_get_cur_group_index();

	new_mode = sys_data_get_cur_chan_mode();

    //printf("%d,%d,%d\n",cur_group_type,cur_group_pos,cur_channel);
	if(mode_changed || group_type != cur_group_type || (group_pos!=cur_group_pos && group_type!=ALL_SATE_GROUP_TYPE))
	{

RECREATE_PROG_VIEW:	
		if(group_type==ALL_SATE_GROUP_TYPE)
			recreate_prog_view(VIEW_ALL | new_mode, 0);
		else if(group_type==SATE_GROUP_TYPE)
		{
			if( get_sat_at(group_pos,VIEW_ALL,&s_node) != SUCCESS)
				return P_INVALID_ID;
			recreate_prog_view(VIEW_SINGLE_SAT|new_mode,s_node.sat_id);
		}
		else
			recreate_prog_view(VIEW_FAV_GROUP|new_mode,group_pos);

		if(exit)
		{
		    //printf("No this group,exit to previous group,int_group_idx%d\n",int_group_idx);
			return P_INVALID_ID;
		}

		if( get_prog_num(VIEW_ALL | new_mode, 0) >0 )
			sys_data_set_cur_intgroup_index(int_group_idx);
		else
		{
			exit = TRUE;
			group_type = cur_group_type;
			group_pos = cur_group_pos;
			new_mode = cur_mode;
            sys_data_set_cur_chan_mode(cur_mode);
			goto RECREATE_PROG_VIEW;
		}
		mode_changed = 1;// re-using this variable
	}else
	{
        mode_changed = 0;// re-using this variable
	}

	cur_mode = sys_data_get_cur_chan_mode();

    //cur_channel = get_prog_pos(&recent_channels[index].p_node);
    pnode = &recent_channels[index].p_node;
    cur_channel = get_prog_pos(pnode->prog_id);
	n=  get_prog_num(VIEW_ALL | cur_mode, 0);
    if(cur_channel>= n)
    {
        if(n>0)
            cur_channel = n - 1;
/*		
        else
        {
           exit = TRUE;
           group_type = cur_group_type;
           group_pos = cur_group_pos;
           sys_data_set_cur_chan_mode(cur_mode);
           goto RECREATE_PROG_VIEW;
        }        
*/        
    } 
    if(0 == mode_changed && playing_channel == cur_channel)
    {
        cur_channel = P_INVALID_ID;
    }
    return cur_channel;
}
コード例 #6
0
ファイル: win_factory_set.c プロジェクト: alkap007/ali3606
static PRESULT factoryset_btn_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;	
	VACTION unact;
	UINT8 bID,back_saved;
	UINT32 chunk_id, default_db_addr, default_db_len;
	S_NODE  s_node;
	bID = OSD_GetObjID(pObj);
	INT16 	i,n;
	UINT8 back_saved1;
	UINT16 sat_id;//-a by wangyang 2011-11-03 for factory set del sat program
	win_popup_choice_t choice = WIN_POP_CHOICE_NO;
	
	switch(event)
	{
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
			switch(bID)
			{
				case IDC_CON1:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);

						chunk_id = 0x03FC0100;
						api_get_chuck_addlen(chunk_id, &default_db_addr, &default_db_len);
						set_default_value(DEFAULT_ALL_PROG,default_db_addr + 16);

						sys_data_factroy_init(); 
						sys_data_set_cur_chan_mode(TV_CHAN);
						sys_data_save(TRUE);
						sys_data_load();
						if(GetMuteState())
							SetMuteOnOff(FALSE);
						if(GetPauseState())
							SetPauseOnOff(FALSE);
						win_compopup_smsg_restoreback();
					#ifdef LOGO_IN_RAM
						api_show_Test_logo_2(MM_tool3,get_logo_h_file_size(3));
                           	 	#endif
						OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
						wincom_open_subtitle((POBJECT_HEAD)&win_factoryset_con,RS_TOOLS_FACTORY_SETTING, 0);
						OSD_TrackObject( (POBJECT_HEAD) &win_factoryset_con, C_UPDATE_ALL);
					#if defined(ORDER_GZ1010010)||defined(ORDER_GZ1011005)||defined(ORDER_GZ1104005)	
						system_config.tv_scan_mode = 0;
					#endif	

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
					break;
				case IDC_CON2:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);
						osal_task_sleep(1500);
						si_monitor_off(0xFFFFFFFF);
						n = get_sat_num(VIEW_ALL);
					
						recreate_prog_view(VIEW_ALL | PROG_TV_MODE,0);
						for(i=0;i<n;i++)
						{
							get_sat_at(i, VIEW_ALL,&s_node);
							del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
						}
					
						update_data();
						sys_data_check_channel_groups();	
						win_compopup_smsg_restoreback();

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
                        		break;
				case IDC_CON3:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);
 						osal_task_sleep(1500);

						si_monitor_off(0xFFFFFFFF);
						n = get_sat_num(VIEW_ALL);
					
						recreate_prog_view(VIEW_ALL | PROG_RADIO_MODE,0);
						for(i=0;i<n;i++)
						{
							get_sat_at(i, VIEW_ALL,&s_node);
							del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
						}
					
						update_data();
						sys_data_check_channel_groups();	
						win_compopup_smsg_restoreback();

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
                        		break;
				case IDC_CON4:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);

						sys_data_factroy_init(); 
						sys_data_set_cur_chan_mode(TV_CHAN);
						sys_data_save(TRUE);
						sys_data_load();
			        		win_compopup_smsg_restoreback();
					#ifdef LOGO_IN_RAM
				   		api_show_Test_logo_2(MM_tool3,get_logo_h_file_size(3));
                              	#endif
						OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
						wincom_open_subtitle((POBJECT_HEAD)&win_factoryset_con,RS_TOOLS_FACTORY_SETTING, 0);
						OSD_TrackObject( (POBJECT_HEAD) &win_factoryset_con, C_UPDATE_ALL);

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
                    			break;
//-a by wangyang 2011-11-03 for factory set del sat program{{
				case IDC_CON5:

				if(OSD_GetMultiselCount(&factoryset_sel5)==0)
				{
					win_compopup_init(WIN_POPUP_TYPE_SMSG);
					win_compopup_set_msg(NULL,NULL, RS_MSG_NO_CHANNELS);
					win_compopup_open_ext(&back_saved1);
					osal_task_sleep(1000);
					win_compopup_smsg_restoreback();
				}
				else
				{
					sat_id=OSD_GetMultiselSel(&factoryset_sel5);
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
					//	mm_enter_stop_mode(FALSE);
					//	api_show_menu_logo();
						if(api_is_playing_tv()  || api_is_playing_radio())
						{
							api_stop_play(1);
						}
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);
						osal_task_sleep(1500);
						si_monitor_off(0xFFFFFFFF);
						//n = get_sat_num(VIEW_ALL);
						
						recreate_prog_view(VIEW_ALL | PROG_TVRADIO_MODE,0);
						//for(i=0;i<n;i++)
						{
							get_sat_at(sat_id, SET_SELECTED,&s_node);
							del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
						}
						
						update_data();
						sys_data_check_channel_groups();	
						win_compopup_smsg_restoreback();
						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
				}
                        		break;
//-a by wangyang 2011-11-03 for factory set del sat program}}
				default:
					break;
			}
			
		}
		break;
	}

	return ret;
}
コード例 #7
0
static void win_antcnt_save_setting(void)
{
	SYSTEM_DATA* sys_data;
	MULTISEL* msel;
	UINT32 antenna_connect_type,tuner_lnb_type[2],i,n;
	S_NODE s_node;
	UINT8 back_saved;
	win_popup_choice_t choice;
	
	sys_data = sys_data_get();

	/* Antenna connect */
	msel = antcnt_msels[0];
	antenna_connect_type = msel->nSel;
	
	/* LNB1 */
	msel = antcnt_msels[1];
	tuner_lnb_type[0] = msel->nSel;
		
	/* LNB2 */
	msel = antcnt_msels[2];
	tuner_lnb_type[1] = msel->nSel;

#if 0
	if(sys_data->antenna_connect_type != antenna_connect_type
		&& ( antenna_connect_type == ANTENNA_CONNECT_SINGLE
			|| sys_data->antenna_connect_type == ANTENNA_CONNECT_SINGLE) )
	{
		win_compopup_init(WIN_POPUP_TYPE_OKNO);
		win_compopup_set_msg("This change will delete all channels, continue?",NULL,0);
		choice = win_compopup_open_ext(&back_saved);		
		if(choice != WIN_POP_CHOICE_YES)
			return;
		
		n = get_sat_num(VIEW_ALL);
		recreate_sat_view(VIEW_ALL,0);
		for(i=0;i<n;i++)
		{ 
			get_sat_at(i,VIEW_ALL,&s_node);
			if(s_node.tuner1_valid != 0 || s_node.tuner2_valid!=0)
			{
				s_node.tuner1_valid = s_node.tuner2_valid = 0;
				modify_sat(s_node.sat_id,&s_node);
			} 		
		}
		update_data();

		recreate_prog_view(VIEW_ALL | PROG_TVRADIO_MODE ,0);
		for(i=0;i<n;i++)
		{ 
			get_sat_at(i,VIEW_ALL,&s_node);
			del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
		}
		update_data();
		
		sys_data_check_channel_groups();
	}
#endif

	sys_data->antenna_connect_type = antenna_connect_type;	
    UINT32 lnb_type,lnb_freq1,lnb_freq2;

    get_lnb_type_setting(get_universal_lnb_index(),&lnb_type,&lnb_freq1,&lnb_freq2);
    for(i=0;i<2;i++)
    {
        if(sys_data->tuner_lnb_type[i] != tuner_lnb_type[i])
        {
            sys_data->tuner_lnb_type[i] = tuner_lnb_type[i];
            sys_data->tuner_lnb_antenna[i].motor_type = LNB_MOTOR_DISEQC12;
            sys_data->tuner_lnb_antenna[i].lnb_type = lnb_type;
            sys_data->tuner_lnb_antenna[i].lnb_low  = lnb_freq1;
            sys_data->tuner_lnb_antenna[i].lnb_high = lnb_freq2;            
        }
    }

	sys_data->tuner_lnb_type[0] = tuner_lnb_type[0];
	sys_data->tuner_lnb_type[1] = tuner_lnb_type[1];	

	set_chchg_local_postion();//lib_nimng_init(antenna_connect_type);

}
コード例 #8
0
ファイル: ali_ipanel.c プロジェクト: jinfeng-geeya/3202C
INT32 ali_ipanel_enter_mw(UINT32 param1, UINT32 param2)
{
	struct osd_device *osd_dev = NULL;
	INT32 ret = SUCCESS;
	VSCR *lpVscr;
	
	if (ali_ipanel_flag_id == OSAL_INVALID_ID)
	{
		ali_ipanel_flag_id = osal_flag_create(0);
		if (ali_ipanel_flag_id == OSAL_INVALID_ID)
		{
			IPANEL_PRINTF("%s() create flag failed\n", __FUNCTION__);
			return  - 1;
		}
	}
	//close lib monitor
	dm_set_onoff(0);

	stop_tdt();

	epg_off();

       sdt_monitor_off();

	//suspend key task
	key_task_suspend();

	//suspend ota task
	ota_task_suspend();

	//close sie to stop get si section
	/*if (SUCCESS != sie_close())
	{
		IPANEL_PRINTF("%s() close sie failed\n", __FUNCTION__);
		return  - 1;
	}*/

	//close vpo
	struct vpo_device *vpo_dev = (struct vpo_device *)dev_get_by_id ( HLD_DEV_TYPE_DIS, 0 );
	vpo_win_onoff(vpo_dev, FALSE);

#if(CAS_TYPE==CAS_CDCA3||CAS_TYPE == CAS_TF||CAS_TYPE==CAS_CDCA)
	ap_osd_layer2_exit();
#endif

	//close osd
	osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 0);
	if(osd_dev!=NULL)
		OSDDrv_Close((HANDLE)osd_dev);
	osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 1);
	if(osd_dev!=NULL)
		OSDDrv_Close((HANDLE)osd_dev);

#ifdef USE_LIB_GE
	 struct ge_device* ge_dev= (struct ge_device*)dev_get_by_id(HLD_DEV_TYPE_GE, 0);

     app_gui_release(1);
	 ge_close(ge_dev);     
#endif
	
	//free osd vscr buf
	OSD_TaskBuffer_Free(osal_task_get_current_id(), NULL);
	lpVscr = OSD_GetTaskVscr(osal_task_get_current_id());
	lpVscr->lpbScr = NULL;

    	recreate_prog_view(VIEW_ALL|PROG_ALL_MODE, 0);
	ipanel_porting_dmx_init();
	
	//call ipanel init
	ipanel_task_init(param1, param2);

	//suspend on ali_ipanel_flag_id wait ipanel exit
	ALI_IPANEL_ENTER_MUTEX(ALI_IPANEL_FLAG_EXIT_MW);

	osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 0);
	if(osd_dev!=NULL)
        ap_osd_init();

	#if 0//ndef MIS_AD
	#ifdef MULTI_CAS
	#if((CAS_TYPE==CAS_CDCA)||(CAS_TYPE==CAS_TF)||(CAS_TYPE==CAS_DVT))
	osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 1);
	if(osd_dev!=NULL)
		ap_osd_layer2_init();
	#endif
	#endif
	#endif

	return ret;
}
コード例 #9
0
ファイル: win_timer_list.c プロジェクト: Janesak1977/ali3602
void win_timerlist_loadsetting(void)
{
    SYSTEM_DATA* sys_data;
    TIMER_SET_CONTENT* timer;
    INT32 i;
    CONTAINER* con;
    TEXT_FIELD* txt;
    UINT16* pstr;
    char str[30];
    UINT16 strID;
    P_NODE p_node;

    sys_data = sys_data_get();
    for(i=0;i < MAX_TIMER_NUM;i++)
    {
	LOAD_ONE_TIMER:    
        timer = &sys_data->timer_set.TimerContent[i];
        con = timers_conts[i];
        
        pstr = display_strs[2*i];
        
        /*Number */
        txt = (TEXT_FIELD*)OSD_GetContainerNextObj(con);
		OSD_SetTextFieldStrPoint(txt,pstr);
        OSD_SetTextFieldContent(txt, STRING_NUMBER, i+1);
        pstr += 3;

        /*Mode */
        txt = (TEXT_FIELD*)OSD_GetObjpNext(txt);
        strID = TimerModeStr_id[timer->timer_mode];
        OSD_SetTextFieldContent(txt, STRING_ID,(UINT32)strID);
        
        /*Service */
        txt = (TEXT_FIELD*)OSD_GetObjpNext(txt);
        if(timer->timer_mode!= TIMER_MODE_OFF)
            strID = TimerServiceStr_id[timer->timer_service];
        else
            strID = 0;
       OSD_SetTextFieldContent(txt, STRING_ID,(UINT32)strID);
        
        /*Content */
        strID = 0;
        txt = (TEXT_FIELD*)OSD_GetObjpNext(txt);
        if(timer->timer_mode!= TIMER_MODE_OFF)
        {
            if(timer->timer_service == TIMER_SERVICE_MESSAGE)
            {
                strID = WakeupMessageStr_id[timer->wakeup_message];
                pstr = NULL;
            }
            else
            {
				if(get_prog_by_id(timer->wakeup_channel,&p_node) == DB_SUCCES)
				{
					if(p_node.ca_mode)
						ComAscStr2Uni("$", pstr);
					ComUniStrCopyChar((UINT8*)&pstr[p_node.ca_mode], p_node.service_name);	
				}
                else
                {
                	/* When the specified channel not exit, turn off the timer */
                	timer->timer_mode = TIMER_MODE_OFF;
                    pstr = NULL;
					goto LOAD_ONE_TIMER;
                }
            }
        }
        else
            pstr = NULL;
		OSD_SetTextFieldStrPoint(txt,pstr);				
		OSD_SetTextFieldContent(txt, STRING_ID,(UINT32)strID);


        pstr = display_strs[2*i + 1];
        
        /*Date&Time*/
        txt = (TEXT_FIELD*)OSD_GetObjpNext(txt);
        str[0] = '\0';
        if(timer->timer_mode!= TIMER_MODE_OFF)
            sprintf(str,"%02d/%02d/%04d %02d:%02d",
                timer->wakeup_month,timer->wakeup_day,timer->wakeup_year,
                timer->wakeup_time/60,timer->wakeup_time%60);
		OSD_SetTextFieldStrPoint(txt,pstr);
		OSD_SetTextFieldContent(txt, STRING_ANSI,(UINT32)str);
        pstr += 20;

        /*Duration*/
        txt = (TEXT_FIELD*)OSD_GetObjpNext(txt);
        str[0] = '\0';
        if(timer->timer_mode!= TIMER_MODE_OFF 
			&& (timer->timer_service == TIMER_SERVICE_CHANNEL
#ifdef DVR_PVR_SUPPORT
			|| timer->timer_service == TIMER_SERVICE_DVR_RECORD
#endif
			)
		)
            sprintf(str,"%02d:%02d",timer->wakeup_duration_time/60,timer->wakeup_duration_time%60);
        ComAscStr2Uni(str, pstr);
        OSD_SetTextFieldStrPoint(txt,pstr);
		OSD_SetTextFieldContent(txt, STRING_ANSI,(UINT32)str);
    }

#if 0
	sys_data_set_cur_chan_mode(cur_chan_mode);	
	recreate_prog_view(VIEW_ALL | cur_chan_mode,0);
#endif	

}
コード例 #10
0
ファイル: win_multi_delete.c プロジェクト: alkap007/ali3606
static PRESULT factoryset_btn_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;	
	VACTION unact;
	UINT8 bID,back_saved;
	S_NODE  s_node;
	P_NODE p_node;
	T_NODE t_node;
	bID = OSD_GetObjID(pObj);
	INT16 i=0;
	INT16 n =0;
	UINT16 prog_num =0;
	UINT8 av_flag = 0;


	switch(event)
	{
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
			switch(bID)
			{
				case IDC_CON1:
					win_compopup_init(WIN_POPUP_TYPE_SMSG);
					win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
					win_compopup_open_ext(&back_saved);
					osal_task_sleep(1500);
					si_monitor_off(0xFFFFFFFF);
					n = get_sat_num(VIEW_ALL);
					
					recreate_prog_view(VIEW_ALL | PROG_TV_MODE,0);
					for(i=0;i<n;i++)
					{
						get_sat_at(i, VIEW_ALL,&s_node);
						del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
					}
					
					update_data();
					sys_data_check_channel_groups();	
					win_compopup_smsg_restoreback();
                        		break;
				case IDC_CON2:
					win_compopup_init(WIN_POPUP_TYPE_SMSG);
					win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
					win_compopup_open_ext(&back_saved);
 					osal_task_sleep(1500);

					si_monitor_off(0xFFFFFFFF);
					n = get_sat_num(VIEW_ALL);
					
					recreate_prog_view(VIEW_ALL | PROG_RADIO_MODE,0);
					for(i=0;i<n;i++)
					{
						get_sat_at(i, VIEW_ALL,&s_node);
						del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
					}
					
					update_data();
					sys_data_check_channel_groups();	
					win_compopup_smsg_restoreback();
                        		break;
				case IDC_CON3:
					win_compopup_init(WIN_POPUP_TYPE_SMSG);
					win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
					win_compopup_open_ext(&back_saved);
 					osal_task_sleep(1500);
					sort_prog_node(PROG_FTA_SORT);	
					av_flag = sys_data_get_cur_chan_mode();
					prog_num = get_prog_num(VIEW_ALL | av_flag, 0);
			              libc_printf("prog_num11111111==%d\n",prog_num);
					for(i=prog_num-1;i>=0;i--)
					{
						get_prog_at(i,&p_node);
						get_tp_by_id(p_node.tp_id, &t_node);
						get_sat_by_id(t_node.sat_id, &s_node);

					    if(p_node.ca_mode == 0)
					    {
					        libc_printf("iiiiiiiiiiiiiiiiii====%d\n",i);
						 del_prog_at((UINT16)i);
					    }
					}
						
					update_data();
					sys_data_check_channel_groups();	
					win_compopup_smsg_restoreback();
					break;

				case IDC_CON4:
					win_compopup_init(WIN_POPUP_TYPE_SMSG);
					win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
					win_compopup_open_ext(&back_saved);
 					osal_task_sleep(1500);
					sort_prog_node(PROG_FTA_SORT_EXT);	
					av_flag = sys_data_get_cur_chan_mode();
					prog_num = get_prog_num(VIEW_ALL | av_flag, 0);
			              libc_printf("prog_num222222222==%d\n",prog_num);
					for(i=prog_num-1;i>=0;i--)
					{
						get_prog_at(i,&p_node);
						get_tp_by_id(p_node.tp_id, &t_node);
						get_sat_by_id(t_node.sat_id, &s_node);
					    if(p_node.ca_mode)
					    {
					   	 libc_printf("i===============%d\n",i);
						 del_prog_at((UINT16)i);
					    }
					}

					update_data();
					sys_data_check_channel_groups();	
					win_compopup_smsg_restoreback();
                    			break;

				default:
					break;
				}
			
		}
		break;
	}

	return ret;
}
コード例 #11
0
static PRESULT editchannel_con_item_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT8	unact;
	UINT8	id = OSD_GetObjID(pObj) + sub_menu_desc->list_top;
	UINT8 	back_saved;
	INT16 	i,n,parent_id;
	S_NODE  s_node;
	TIMER_SET_CONTENT* timer;
    SYSTEM_DATA* sys_data;
    
	switch(event)
	{
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16) ;
		if(unact == VACT_ENTER)
		{
			if(unact == VACT_ENTER)
			{
				if(id == CHLIST_DELETE_ALL_CHAN_ID)
				{
					//if(win_pwd_open(NULL,0))
					{
						win_compopup_init(WIN_POPUP_TYPE_OKNO);
						win_compopup_set_msg(NULL,NULL,RS_POPUP_WARNING_DELETE_ALL_CHANNEL);
						win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
						ret = win_compopup_open_ext(&back_saved);
						if(ret==WIN_POP_CHOICE_YES)
					 	{
#ifdef NEW_DEMO_FRAME
							si_monitor_off(0xFFFFFFFF);
#endif
							n = get_sat_num(VIEW_ALL);
							
							recreate_prog_view(VIEW_ALL | PROG_TVRADIO_MODE,0);
							for(i=0;i<n;i++)
							{
								get_sat_at(i, VIEW_ALL,&s_node);
								del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
							}
							
							update_data();
							sys_data_check_channel_groups();	
                            /*turn off all timer*/
                            sys_data = sys_data_get();
                            for(i=0;i<MAX_TIMER_NUM;i++)
                            {
        	                    timer = &sys_data->timer_set.TimerContent[i];
			                    timer->timer_mode = TIMER_MODE_OFF;                                    
                            }
                            
							ret = PROC_LEAVE;

							key_pan_display("noCH", 4);
					 	}
					}
				}
				else
				{
					enter_sub_menu(editchannel_sub_menus,id - 1);
					ret = PROC_LOOP;
				}
			}
		}
	}

	return ret;
}
コード例 #12
0
ファイル: system_data.c プロジェクト: jinfeng-geeya/3202C
/* Sync group information with database  */
void sys_data_check_channel_groups(void)
{
	UINT8 i, j;
	BOOL b;
	UINT16 total_v_prog_num, total_a_prog_num;
	SYSTEM_DATA *p_sys_data;
	group_channel_t *p_grp;
	UINT16 sat_v_prog_num[1];
	UINT16 sat_a_prog_num[1];

	UINT16 fav_v_prog_num[MAX_FAVGROUP_NUM];
	UINT16 fav_a_prog_num[MAX_FAVGROUP_NUM];
	UINT16 prog_num=0;

	p_sys_data = sys_data_get();


	total_v_prog_num = 0;
	total_a_prog_num = 0;
	for (i = 0; i < 1; i++)
	{
		sat_v_prog_num[i] = 0;
		sat_a_prog_num[i] = 0;
	}
	for (i = 0; i < MAX_FAVGROUP_NUM; i++)
	{
		fav_v_prog_num[i] = 0;
		fav_a_prog_num[i] = 0;
	}


	recreate_prog_view(VIEW_ALL | TV_CHAN, 0);
	total_v_prog_num = get_prog_num(VIEW_ALL | TV_CHAN, 0);

	recreate_prog_view(VIEW_ALL |RADIO_CHAN, 0);
	total_a_prog_num = get_prog_num(VIEW_ALL | RADIO_CHAN, 0);

//	if(!total_v_prog_num && !total_a_prog_num)
//		goto INIT_GROUP;
	
	/* For all  group */
	p_grp = &p_sys_data->cur_chan_group[0];
	if (total_v_prog_num == 0)
		p_grp->tv_channel = P_INVALID_ID;
	else if (p_grp->tv_channel >= total_v_prog_num)
		p_grp->tv_channel = total_v_prog_num - 1;

	if (total_a_prog_num == 0)
		p_grp->radio_channel = P_INVALID_ID;
	else if (p_grp->radio_channel >= total_a_prog_num)
		p_grp->radio_channel = total_a_prog_num - 1;

	/*nvod & data wil be ignored*/
	recreate_prog_view(VIEW_ALL|PROG_DATA_MODE, 0);
	prog_num = get_prog_num(VIEW_ALL | PROG_DATA_MODE, 0);
	p_grp = &p_sys_data->cur_chan_group[DATA_GROUP_TYPE];
	set_special_group_channel(p_grp,prog_num);

	recreate_prog_view(VIEW_ALL|PROG_NVOD_MODE, 0);
	prog_num = get_prog_num(VIEW_ALL | PROG_NVOD_MODE, 0);
	p_grp = &p_sys_data->cur_chan_group[NVOD_GROUP_TYPE];
	set_special_group_channel(p_grp,prog_num);

	
	/*local group in BAT*/
	for(i=0;i<MAX_LOCAL_GROUP_NUM;i++)
	{
		p_grp = &p_sys_data->cur_chan_group[LOCAL_GROUP_TYPE+i];
		prog_num = 0;
		if(p_sys_data->local_group_id[i])
		{
			recreate_prog_view(VIEW_BOUQUIT_ID|PROG_ALL_MODE,p_sys_data->local_group_id[i]);
			prog_num = get_prog_num(VIEW_ALL|PROG_TV_MODE, 0);
			if(prog_num==0)
				p_grp->tv_channel = P_INVALID_ID;
			else
				//p_grp->tv_channel = prog_num - 1;
				p_grp->tv_channel = 0;
			
			prog_num = get_prog_num(VIEW_ALL|PROG_RADIO_MODE, 0);
			if(prog_num==0)
				p_grp->radio_channel = P_INVALID_ID;
			else
				//p_grp->radio_channel = prog_num - 1;
                p_grp->radio_channel = 0;
		}
		else
		{
			p_grp->tv_channel = P_INVALID_ID;
			p_grp->radio_channel = P_INVALID_ID;
		}
	}
	
	/*fav group*/
	get_specific_prog_num ( SAT_PROG_NUM | FAV_PROG_NUM,
	                        sat_v_prog_num, sat_a_prog_num, fav_v_prog_num, fav_a_prog_num );

	for (i = 0; i < MAX_FAVGROUP_NUM; i++)
	{
		p_grp = &p_sys_data->cur_chan_group[MAX_GROUP_NUM+i];

		if (fav_v_prog_num[i] == 0)
			p_grp->tv_channel = P_INVALID_ID;
		else if (p_grp->tv_channel >= fav_v_prog_num[i])
			//p_grp->tv_channel = fav_v_prog_num[i] - 1;
			p_grp->tv_channel = 0;

		if (fav_a_prog_num[i] == 0)
			p_grp->radio_channel = P_INVALID_ID;
		else if (p_grp->radio_channel >= fav_a_prog_num[i])
			//p_grp->radio_channel = fav_a_prog_num[i] - 1;
			p_grp->radio_channel = 0;
		if (fav_v_prog_num[i] > 0 || fav_a_prog_num[i] > 0)
			SYS_PRINTF("fav=%d,v_prog_num=%d,a_prog_num=%d\n", i, fav_v_prog_num[i], fav_a_prog_num[i]);
	}

	SYS_PRINTF("All Sate %d,total_v_prog_num=%d,total_a_prog_num=%d\n", i, total_v_prog_num, total_a_prog_num);

}
コード例 #13
0
ファイル: system_data.c プロジェクト: jinfeng-geeya/3202C
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

}
コード例 #14
0
ファイル: system_data.c プロジェクト: jinfeng-geeya/3202C
INT32 sys_data_change_fav_group(UINT8 group_idx)
{
	return recreate_prog_view(VIEW_FAV_GROUP | CUR_CHAN_MODE, group_idx);
}