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); }
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); } }
/* 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; }
/* * 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 ); } }
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; }
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; }
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); }
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; }
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 }
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; }
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; }
/* 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); }
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 }
INT32 sys_data_change_fav_group(UINT8 group_idx) { return recreate_prog_view(VIEW_FAV_GROUP | CUR_CHAN_MODE, group_idx); }