Esempio n. 1
0
void ap_cti_cas_routine(POBJECT_HEAD menu)
{
	static UINT32 video_count=0;
	BOOL bSignalFlag=FALSE;
	signal_lock_status lock_flag;
	signal_scramble_status scramble_flag;
	signal_lnbshort_status lnbshort_flag;
	signal_parentlock_status parrentlock_flag;

/*qjzheng 2010.4.28 BUG1009 增加判断条件(是否无法播放),若无法播放则调用ap_cti_clear_screen清理POPMENU*/	
	bSignalFlag = GetSignalStatus(&lock_flag, &scramble_flag,&lnbshort_flag,&parrentlock_flag);  
			
	if( bSignalFlag)
	{
		video_count=0;
	}
	else
	{
		video_count++;
	}

	
	cti_chnchg_function();
	cti_check_sc_status();
	//ap_cas_mail_detitle_proc();
	ap_cas_periodic_check();
	/*alfred.wu 这里可以打开NIT的搜索*/
	if(NULL == menu || CHANNEL_BAR_HANDLE == menu)
	{
		monitor_service_enable();
	}
	else
	{
		monitor_service_disable();
	}


	if(video_count>=3)
	{
		if(	(menu == CHANNEL_BAR_HANDLE) || (menu == NULL)
			||(menu == LIT_CHAN_LIST_HANDLE ))
		{
			if(GetScrollStopFlag()==SCROLL_HIDE)
				SetScrollStopFlag(SCROLL_PLAY);
		}
		if(	(menu == CHANNEL_BAR_HANDLE) || (menu == NULL))
		{
			ap_cas_fingerprint_proc(0);
		}
	}
	else if(video_count == 0)
	{
		if(	(menu == CHANNEL_BAR_HANDLE) || (menu == NULL)
			||(menu == LIT_CHAN_LIST_HANDLE ))
		{
			ap_cti_clear_screen((POBJECT_HEAD)&g_win_sigstatus);
		}
	}
	
}
Esempio n. 2
0
/**************************************************************
 *CAS Main message process entry.
 *msg_code has different meaning for different msg_type, check the 
 *tf_catask.c for detailed info.
 **************************************************************/
PRESULT ap_cti_cas_message_proc ( UINT32 msg_type, UINT32 msg_code )
{
	UINT8 result = PROC_PASS;
	UINT8 scr_type = 0;
	UINT16 strid = 0;
	UINT16 tfmsg_type = 0;
	UINT16 tfmsg_code = 0;
	POBJECT_HEAD p_top_menu = NULL;

	//P_NODE p_node;

	tfmsg_type = ( UINT16)( msg_code>>16);
	tfmsg_code = ( UINT16)( msg_code&0xffff);
	p_top_menu = menu_stack_get_top();
	
	switch ( tfmsg_type)
	{
		case CAS_DISP_CA_ERROR:
			libc_printf("CAS_DISP_CA_ERROR:%d\n",tfmsg_code);
			{
				//ap_cas_message_setid(tfmsg_code&0xff);
				//ap_cas_message_show();
			}
			break;
		case CAS_DISP_SET_IRD_NUMBER_REPLY:
		case CAS_DISP_IRD_NUMBER_NOTIFY:	
		case CAS_DISP_FINGERPRINT_QUERY_REPLY:
		    finger_start_time = 0;
			ap_cas_fingerprint_proc(1);
			break;
		case CAS_DISP_SUBTITLE_NOTIFY:
			break;
		case CAS_DISP_BMAIL_NOTIFY:
			MAIL_ICON_STATUS = Email_New;
			if (SCREEN_BACK_VIDEO == screen_back_state)
			win_popup_msg("You have a new mail!",NULL,0);
			else
				;
			ap_cas_mail_detitle_proc();
			break;
		case CAS_DISP_IPPV_NOTIFY:
			ap_cas_IPPV_proc();
			break;
		case CAS_DISP_SC_INFO:
			ap_cas_smc_info_proc( msg_type, msg_code);
			break;
		case CAS_DISP_CARD_IN:
			break;
		case CAS_DISP_CARD_OUT:
			break;
		default:
			libc_printf("!!!!%s: unknown message %d got!!", __FUNCTION__, tfmsg_type);
			break;
		
	}

	return result;
}
Esempio n. 3
0
/*--qjzheng 2010.3.18 clear cti msg on the sccreen*/
UINT32 ap_cti_clear_screen(POBJECT_HEAD pNewMenu)
{
	UINT8 ucount=0;
	POBJECT_HEAD curTopMenu=menu_stack_get_top();
	
	if( pNewMenu!=(POBJECT_HEAD)&g_win_progname
		&& pNewMenu!=(POBJECT_HEAD)&g_win_volume
		&& pNewMenu!=(POBJECT_HEAD)&g_win_light_chanlist
		&& pNewMenu!=(POBJECT_HEAD)&g_win_proginput
		&& pNewMenu!=(POBJECT_HEAD)&g_win_audio
		&& pNewMenu != NULL )
	{
		// if subtitle playing ,to pause
		if(GetScrollStopFlag()==SCROLL_PLAY)
		{
			SetScrollStopFlag(SCROLL_PAUSE);
			while(GetScrollStopFlag()==SCROLL_PAUSE && ucount<50)
			{
				ucount++;//防止死循环
				osal_task_sleep(50);
			}
		}
	}

	if( pNewMenu != (POBJECT_HEAD)&g_win_progname
		&& pNewMenu != (POBJECT_HEAD)&g_win_volume
		&& pNewMenu != NULL)
	{
		//to pause display finger print
		ap_cas_fingerprint_proc(2);
	}

	if(pNewMenu != (POBJECT_HEAD)&g_win_chanlist
		&& pNewMenu !=(POBJECT_HEAD)&g_win_volume
		&& pNewMenu !=(POBJECT_HEAD)&g_win_light_chanlist 
		&& pNewMenu != (POBJECT_HEAD)&g_win_proginput
		&& pNewMenu !=(POBJECT_HEAD)&g_win_audio
		&& pNewMenu !=(POBJECT_HEAD)&g_win_sigstatus
		&& pNewMenu !=(POBJECT_HEAD)&g_win_progname
		&& pNewMenu != NULL)
	{
		// to clear mail icon
		ShowBMailOSDOnOff(0);
	}

	return 0;
	
}
Esempio n. 4
0
/**************************************************************
 *CAS Main message process entry.
 *msg_code has different meaning for different msg_type, check the 
 *tf_catask.c for detailed info.
 **************************************************************/
PRESULT ap_cas_smc_info_proc( UINT32 msg_type, UINT32 msg_code)
{
	cas_sc_t card_info;
	UINT16 cur_chan = 0;
	UINT8 scramble = 0;
	P_NODE p_node;
	POBJECT_HEAD p_top_menu = NULL,p_newtop_menu=NULL;
	PRESULT ret;

	p_top_menu = menu_stack_get_top();

	if(p_top_menu == (POBJECT_HEAD)&g_win_cti_cardinfo 
		|| p_top_menu == (POBJECT_HEAD)&g_win_cti_set_maturity
		|| p_top_menu == (POBJECT_HEAD)&g_win_cti_PPID 
		|| p_top_menu == (POBJECT_HEAD)&g_win_cti_PPID_info
		|| p_top_menu == (POBJECT_HEAD)&g_win_cti_pin)
	{
		ret = OSD_ObjProc(p_top_menu, (MSG_TYPE_MSG << 16) | msg_type, msg_code, 0);
		while( ret == PROC_LEAVE)
		{
			menu_stack_pop();
			p_newtop_menu = menu_stack_get_top();
			if(NULL != p_newtop_menu)
			{
				ret = OSD_ObjOpen(p_newtop_menu, MENU_OPEN_TYPE_STACK) ;
			}
		}
	}

	
	cas_get_sc_info_req(&card_info);	
	sys_data_get_cur_group_channel(&cur_chan, sys_data_get_cur_chan_mode());
	get_prog_at(cur_chan, &p_node);
	//get_prog_scramble_type(p_node.prog_number, &scramble);
	
	if(card_info.sc_status==0)	//smart card ok
	{
		//win_popup_msg("Smartcart is in!",NULL,0);
	}
	else if(card_info.sc_status==1)	//smart card out	
	{
		if(GetScrollStopFlag()!=SCROLL_STOP)
		{
			SetScrollStopFlag(SCROLL_STOP);
		}		
		cas_sub_clear(); 
		subtitle_clear_all_message(); //clean subtitle msg buffer when the card is out.
		
		ap_cas_fingerprint_proc(3);// to clear finger print buf and area

		
		if( p_top_menu == (POBJECT_HEAD)&g_win_ippv_popup)
		{
			OSD_ClearObject((POBJECT_HEAD)&g_win_ippv_popup, C_UPDATE_ALL);
			menu_stack_pop();
		}

		//win_popup_msg("Smartcart is out!",NULL,0);
	}
	else if(card_info.sc_status==2||card_info.sc_status==3)
	{
		//win_popup_msg(NULL,NULL,RS_CTI_READ_SMC_ERROR);
	}


}
Esempio n. 5
0
static PRESULT win_progname_unkown_act_proc(VACTION act)
{
	PRESULT ret = PROC_LOOP;

	INT32 shift;
	UINT8 av_mode, back_saved;
	UINT16 channel;
	UINT16 strID;
#ifdef AD_SANZHOU
	P_NODE pnode;
#endif

	api_stop_timer(&progname_timer);
#ifdef MULTI_CAS
#if(CAS_TYPE==CAS_IRDETO)
			if(getStopChannelChange()&&(act!=VACT_RECALL&&act!=VACT_SCHEDULE))//check whether stop channel change
				return ret;
#endif
#endif
	shift =  - 1;
	switch (act)
	{
		case VACT_CH_UP:
			shift = 1;
		case VACT_CH_DOWN:
			change_channel(shift);
		#ifdef MIS_AD
			MIS_ShowEpgAdv(0);
		#endif
			break;
		case VACT_GRP_UP:
			shift = 1;
		case VACT_GRP_DOWN:
			change_group(shift);
			break;
		case VACT_FCH_UP:
			shift = 1;
		case VACT_FCH_DOWN:
			change_fav_channel(shift);
			break;
		case VACT_TV_RADIO_SW:
			av_mode = sys_data_get_cur_chan_mode();
			av_mode = (av_mode == TV_CHAN) ? RADIO_CHAN : TV_CHAN;
			//sys_data_set_cur_intgroup_index(0); /*force to return all group*/
			sys_data_get_group_channel(0, &channel, av_mode);
			if (channel == P_INVALID_ID)
			{	
				 /* If the opposite mode has no channel */
				win_compopup_init(WIN_POPUP_TYPE_SMSG);
				if(av_mode == TV_CHAN)
				{
					win_compopup_set_msg(NULL, NULL, RS_MSG_NO_PROGRAM_TV);
				}
				else
				{
					win_compopup_set_msg(NULL, NULL, RS_MSG_NO_RADIO_CHANNEL);
				}
				win_compopup_open_ext(&back_saved);
				osal_task_sleep(1000);
				win_compopup_smsg_restoreback();
#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: tv/radio; code:%d\n",0);
					set_mmi_showed(10);
				}
#endif
#endif
			}
			else
			{
				sys_data_set_cur_chan_mode(av_mode);
				change_group(0);
			}
			break;
		case VACT_RECALL:
			channel = recall_play_channel(0);
			if (channel != P_INVALID_ID)
			{
#ifdef MULTI_CAS
#if(CAS_TYPE==CAS_CONAX)
				/*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		
				api_play_channel(channel, TRUE, TRUE, FALSE);
#ifdef AD_SANZHOU
				if(get_prog_at(channel, &pnode) == SUCCESS)
				{
					szxc_ad_hide_txt();
					szxc_ad_show_txt(pnode.prog_number);
					szxc_ad_hide_pic(AD_BANNER);
					szxc_ad_show_banner(pnode.prog_number,banner_pic_rt);
				}
#endif
			}
#ifdef MULTI_CAS
#if(CAS_TYPE==CAS_CONAX)
			else if(get_mmi_msg_cnt()>0)
			{
				ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS, 0, FALSE);
				MMI_PRINTF("CTRL_MSG_SUBTYPE_STATUS_MCAS: recall; code:%d\n",0);
				set_mmi_showed(10);
			}
#endif
#endif				
			#ifdef MIS_AD		
			MIS_ShowEpgAdv(0);
			#endif
			break;
		case VACT_SCHEDULE:
			api_stop_timer(&progname_timer);
			//close the mini_epg
			ap_send_msg(CTRL_MSG_SUBTYPE_CMD_EXIT, 1, TRUE);
			//open the schedule
			//		ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)(POBJECT_HEAD)&g_win_schedule, TRUE);
			break;
		default:
			;
	}

#ifdef MULTI_CAS
#if(CAS_TYPE==CAS_CDCA)
	show_finger_print(0, 0);
#elif(CAS_TYPE==CAS_DVT)
	ap_cas_fingerprint_proc(0, 1);
#endif
#endif
	win_progname_redraw(TRUE);

	progname_timer = api_start_timer(PROGNAME_TIMER_NAME, PROGNAME_TIMER_TIME, progname_timer_func);
#ifdef MIS_AD
	Mis_Set_SameChan_AdvShowOnce(TRUE);
	Mis_Set_EnterAutoShow(FALSE);
#endif
	return ret;

}