void change_fav_channel(INT32 shift) { UINT16 cur_channel,max_channel; P_NODE p_node; UINT32 i,n; SYSTEM_DATA* sys_data; UINT32 fav_mask; fav_mask = 0; for(i=0;i<MAX_FAVGROUP_NUM;i++) fav_mask |= (0x01<<i); sys_data = sys_data_get(); max_channel = get_prog_num(VIEW_ALL|sys_data->cur_chan_mode[sys_data->normal_group_idx], 0); if(max_channel==0) return; cur_channel = sys_data_get_cur_group_cur_mode_channel(); n = 0; do{ cur_channel = (cur_channel + shift + max_channel) % max_channel; get_prog_at(cur_channel, &p_node); if(shift==0) shift = 1; n++; }while( (p_node.skip_flag || ( (p_node.fav_group[0] & fav_mask) == 0 ) || (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); if(p_node.skip_flag || ( (p_node.fav_group[0] & fav_mask) == 0) || (sys_data->chan_sw==CHAN_SWITCH_FREE && p_node.ca_mode) || (sys_data->chan_sw==CHAN_SWITCH_SCRAMBLED && !p_node.ca_mode) ) return; /* If first time show the osd and play channel, to avoid display incorrect channel when meet skip channel. */ if(show_and_playchannel) { sys_data_set_cur_group_channel(cur_channel); win_progname_redraw(); } api_play_channel(cur_channel, TRUE, TRUE,FALSE); }
static PRESULT osd_item_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT8 unact,input; UINT8 id = OSD_GetObjID(pObj); BOOL bchanged = FALSE; UINT16 cur_channel = 0; P_NODE p_node; switch(event) { case EVN_FOCUS_PRE_GET: break; case EVN_FOCUS_PRE_LOSE: break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16) ; if((unact == VACT_INCREASE) || (unact == VACT_DECREASE)) { win_LCN_left_right_key(pObj,id); bchanged = TRUE; cur_channel = sys_data_get_cur_group_cur_mode_channel(); get_prog_at(cur_channel, &p_node); } if(sys_data_get_LCN()) sort_prog_node(PROG_LCN_SORT); else sort_prog_node(PROG_DEFAULT_SORT); //-m by wangyang 2011-12-21 //sort_prog_node(PROG_TYPE_SID_SORT); update_data(); if (bchanged) { cur_channel = get_prog_pos(p_node.prog_id); sys_data_set_cur_group_channel(cur_channel); } ret = PROC_LOOP; break; } return ret; }
void change_channel(INT32 shift) { UINT16 cur_channel,max_channel; P_NODE p_node; UINT32 n; SYSTEM_DATA* sys_data; UINT16 cur_tp_id; UINT8 cur_ca_mode; UINT8 change_enable = TRUE; sys_data = sys_data_get(); #if 0//def PVR_DMX_DELAY_SUPPORT //guop edit 20110118 if (api_pvr_is_recording()) { UINT8 back_saved; win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_frame(MSG_POPUP_LAYER_L, MSG_POPUP_LAYER_T, MSG_POPUP_LAYER_W, MSG_POPUP_LAYER_H); win_compopup_set_msg("Please stop record, then change channel!",NULL,0); win_compopup_open_ext(&back_saved); return; } #endif //max_channel = get_node_num(TYPE_PROG_NODE, NULL); max_channel = get_prog_num(VIEW_ALL|sys_data->cur_chan_mode[sys_data->normal_group_idx], 0); if(max_channel==0) return ; cur_channel = sys_data_get_cur_group_cur_mode_channel(); get_prog_at(cur_channel, &p_node); cur_tp_id = p_node.tp_id; cur_ca_mode = p_node.ca_mode; //libc_printf("cur_tp_id = %d, cur_channel= %d\n",cur_tp_id,cur_channel); if( !(show_and_playchannel && shift==0) ) { n = 0; do{ cur_channel = (cur_channel + shift + max_channel) % max_channel; get_prog_at(cur_channel, &p_node); if(shift==0) shift = 1; n++; }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); if(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)) return ; } #if ((!defined(NEW_DEMO_FRAME)) || \ (defined(NEW_DEMO_FRAME) && defined(CC_USE_TSG_PLAYER))) #ifdef DVR_PVR_SUPPORT if (api_pvr_is_recording()) { if (p_node.tp_id == cur_tp_id) { change_enable = TRUE; if (cur_ca_mode && (sys_data_get_scramble_record_mode() == 1) && api_pvr_is_record_active() && api_pvr_is_recording_cur_prog()) { change_enable = FALSE; } } else { change_enable = FALSE; } } if (!change_enable) { UINT8 back_saved; win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_frame(MSG_POPUP_LAYER_L, MSG_POPUP_LAYER_T, MSG_POPUP_LAYER_W+100, MSG_POPUP_LAYER_H); win_compopup_set_msg("Please stop record, then change channel!",NULL,0); win_compopup_open_ext(&back_saved); } #endif #endif if(change_enable) { /* If first time show the osd and play channel, to avoid display incorrect channel when meet skip channel. */ if(show_and_playchannel) { sys_data_set_cur_group_channel(cur_channel); win_progname_redraw(); } for(n=0;n<MAX_TIMER_NUM;n++) {//bug30192.when timer play,if change channel,cancel timer duration. if((sys_data->timer_set.TimerContent[n].wakeup_state == TIMER_STATE_RUNING) && (sys_data->timer_set.TimerContent[n].wakeup_duration_time > 0) && (sys_data->timer_set.TimerContent[n].timer_service == TIMER_SERVICE_CHANNEL)) sys_data->timer_set.TimerContent[n].wakeup_duration_time = 0; } api_play_channel(cur_channel, TRUE, TRUE,FALSE); #ifdef MULTIFEED_SUPPORT if(multifeed_have_feed(p_node.prog_id)) { UINT32 hk; ap_vk_to_hk(0, V_KEY_RED, &hk); ap_send_msg(CTRL_MSG_SUBTYPE_KEY, hk, TRUE); } #endif } }
static PRESULT srch_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT16 title_id; POBJECT_HEAD mainmenu; UINT8 av_flag; UINT16 cur_chan; UINT8 back_saved; switch(event) { case EVN_PRE_OPEN: system_state = SYS_STATE_SEARCH_PROG; if(win_search_param.as_method == AS_METHOD_TP || win_search_param.as_method == AS_METHOD_NIT_TP) // tp scan title_id = RS_INSTALLATION_TP_SCAN; else if(win_search_param.as_method == AS_METHOD_FFT || win_search_param.as_method == AS_METHOD_MULTI_FFT)//auto scan title_id = RS_INSTALLATION_AUTO_SCAN; else if(win_search_param.as_method == AS_METHOD_SAT_TP ||win_search_param.as_method == AS_METHOD_MULTI_TP || win_search_param.as_method == AS_METHOD_NIT || win_search_param.as_method == AS_METHOD_MULTI_NIT)//preset scan title_id = RS_INSTALLATION_PRESET_SCAN; else title_id = RS_INSTALLATION_AUTO_SCAN; wincom_open_subtitle(pObj,title_id,0); /*Remove progress bar when search type is AS_METHOD_NIT_TP/AS_METHOD_NIT/AS_METHOD_MULTI_NIT*/ if(win_search_param.as_method == AS_METHOD_NIT_TP || win_search_param.as_method == AS_METHOD_NIT|| win_search_param.as_method == AS_METHOD_MULTI_NIT) { OSD_SetAttr(&srch_progress_txt, C_ATTR_HIDDEN); OSD_SetAttr(&srch_progress_bar, C_ATTR_HIDDEN); } else { OSD_SetAttr(&srch_progress_txt, C_ATTR_ACTIVE); OSD_SetAttr(&srch_progress_bar, C_ATTR_ACTIVE); } key_pan_display("srch", 4); epg_off(); stop_tdt(); #ifdef AUTOSCAN_BYPASS_CI // Before Autoscan, DMX0 bypass CI if(win_search_param.as_method == AS_METHOD_FFT || win_search_param.as_method == AS_METHOD_MULTI_FFT)//auto scan { tsi_dmx_src_select(TSI_DMX_0, TSI_TS_B); tsi_para_src_select(TSI_SPI_1,0); api_set_nim_ts_type(2, 0x03); } #endif #ifdef HW_SS830C tsi_dmx_src_select(TSI_DMX_0, TSI_TS_B); api_set_nim_ts_type(2, 0x03); #endif break; case EVN_POST_OPEN: win_search_init(); break; case EVN_PRE_CLOSE: win_search_pre_close = 1; osal_task_dispatch_off(); moving_disk = 0;/*Clear moving dish flag*/ win_search_stop_signal = 1; osal_task_dispatch_on(); as_service_stop(); db_search_exit(); //api_stop_timer(&win_search_tmr_id); /* Make OSD not flickering */ *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG; prog_callback_unregister(); pid_search_flg = 0; break; case EVN_POST_CLOSE: if((srch_ch_cnt[0] != 0x0) || (srch_ch_cnt[1] != 0x0)) { win_search_last_tp_ok_failed(srch_tp_cnt); win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_msg(NULL, NULL, RS_MSG_WAIT_FOR_SAVING); //win_compopup_open(); win_compopup_open_ext(&back_saved); update_data(); win_compopup_smsg_restoreback(); win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_msg("Search End", NULL, 0); win_compopup_open_ext(&back_saved); /* Change to all satellite group */ UINT32 grp_idx = sys_data_get_cur_group_index(); sys_data_check_channel_groups(); sys_data_set_cur_group_index(grp_idx); av_flag = sys_data_get_cur_chan_mode(); if(sys_data_get_sate_group_num(av_flag) == 0) { av_flag = (av_flag == TV_CHAN)? RADIO_CHAN : TV_CHAN; sys_data_set_cur_chan_mode(av_flag); } if(av_flag == RADIO_CHAN && (srch_ch_cnt[1] != 0x0)) //guop add 20101231 { av_flag = TV_CHAN; sys_data_set_cur_chan_mode(av_flag); } sys_data_change_group(grp_idx); if(srch_ch_cnt[av_flag] > 0) { cur_chan = get_prog_pos(win_search_cur_prog[av_flag].prog_id); if(cur_chan == 0xFFFF) { grp_idx = get_sat_pos(cur_sat_id) + 1; sys_data_change_group(grp_idx); cur_chan = get_prog_pos(win_search_cur_prog[av_flag].prog_id); if (cur_chan == 0xFFFF) { sys_data_change_group(0); cur_chan = get_prog_pos(win_search_cur_prog[av_flag].prog_id); if (cur_chan == 0xffff) cur_chan = 0; } } sys_data_set_cur_group_channel(cur_chan); } else if(sys_data_get_sate_group_num(av_flag)) key_pan_display("noCH", 4); else key_pan_display("----", 4); sys_data_save(1); epg_reset(); } OSD_ClearObject( (POBJECT_HEAD)&srch_progress_bar, C_UPDATE_ALL); OSD_ClearObject( (POBJECT_HEAD)&srch_progress_txt, C_UPDATE_ALL); mainmenu = (POBJECT_HEAD)&g_win_mainmenu; OSD_TrackObject(mainmenu,C_UPDATE_ALL); #ifdef AUTOSCAN_BYPASS_CI // After Autoscan, DMX0 NOT bypass CI if(win_search_param.as_method == AS_METHOD_FFT || win_search_param.as_method == AS_METHOD_MULTI_FFT)//auto scan { tsi_dmx_src_select(TSI_DMX_0, TSI_TS_A); tsi_para_src_select(TSI_SPI_1,0); } #endif start_tdt(); system_state = SYS_STATE_NORMAL; break; case EVN_MSG_GOT: ret = win_search_message_proc(param1,param2); break; } return ret; }
void change_fav_channel(INT32 shift) { UINT16 cur_channel, max_channel; P_NODE p_node; UINT32 i, n; SYSTEM_DATA *sys_data; UINT32 fav_mask; fav_mask = 0; for (i = 0; i < MAX_FAVGROUP_NUM; i++) fav_mask |= (0x01 << i); sys_data = sys_data_get(); max_channel = get_prog_num(VIEW_ALL | sys_data->cur_chan_mode, 0); if (max_channel == 0) { #ifdef MULTI_CAS #if(CAS_TYPE==CAS_CONAX) if(get_mmi_msg_cnt()>0) { ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS, 0, FALSE); MMI_PRINTF("CTRL_MSG_SUBTYPE_STATUS_MCAS: change fav ch only one; code:%d\n",0); set_mmi_showed(10); } #endif #endif return ; } cur_channel = sys_data_get_cur_group_cur_mode_channel(); n = 0; do { cur_channel = (cur_channel + shift + max_channel) % max_channel; get_prog_at(cur_channel, &p_node); if (shift == 0) shift = 1; n++; } while ( ( p_node.skip_flag || ( ( p_node.fav_group[0] & fav_mask ) == 0 ) || ( 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 ); if ( p_node.skip_flag || ( ( p_node.fav_group[0] & fav_mask ) == 0 ) || ( sys_data->chan_sw == CHAN_SWITCH_FREE && p_node.ca_mode ) || ( sys_data->chan_sw == CHAN_SWITCH_SCRAMBLED && !p_node.ca_mode ) ) { #ifdef MULTI_CAS #if(CAS_TYPE==CAS_CONAX) if(get_mmi_msg_cnt()>0) { ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS, 0, FALSE); MMI_PRINTF("CTRL_MSG_SUBTYPE_STATUS_MCAS: change fav ch invalid; code:%d\n",0); set_mmi_showed(10); } #endif #endif return ; } #ifdef MULTI_CAS #if(CAS_TYPE==CAS_CONAX) /*clean msg*/ /*clean msg*/ clean_mmi_msg(1, TRUE); clean_mmi_msg(3, TRUE); clean_mmi_msg(4, TRUE); clean_mmi_msg(6, TRUE); if(get_mmi_showed()==1||get_mmi_showed()==6) win_mmipopup_close(); if(get_mmi_showed()!=5) set_mmi_showed(10); #endif #endif /* If first time show the osd and play channel, to avoid display incorrect channel when meet skip channel. */ if (show_and_playchannel) { sys_data_set_cur_group_channel(cur_channel); win_progname_redraw(TRUE); } api_play_channel(cur_channel, TRUE, TRUE, FALSE); #ifdef AD_SANZHOU szxc_ad_hide_txt(); szxc_ad_show_txt(p_node.prog_number); szxc_ad_hide_pic(AD_BANNER); szxc_ad_show_banner(p_node.prog_number,banner_pic_rt); #endif }