Example #1
0
void win_progname_redraw(BOOL if_reset_scroll)
{
	POBJECT_HEAD pObj = (POBJECT_HEAD) &g_win_progname;

	if(NULL == menu_stack_get_top() || (POBJECT_HEAD) &g_win_progname == menu_stack_get_top())
	{
		if (if_reset_scroll)
			win_progname_stop_scroll();
		OSD_DrawObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		#ifdef AD_TYPE
		AD_UpdateAD(AD_TYPE_CHANNEL_BAR);
		#endif
	}
}
Example #2
0
void ShowSignalStatusOSDOnOff(UINT8 flag)
{
    OBJECT_HEAD* obj;
    POBJECT_HEAD topmenu =NULL;
    BOOL  bifClear = 1;
    struct OSDRect relative_rect;
    
    obj = (OBJECT_HEAD*)&g_win_sigstatus;
    
    topmenu =(POBJECT_HEAD)menu_stack_get_top();//@Alan modify  
    if(topmenu && topmenu != obj)
    {
        relative_rect.uWidth = 0;
        relative_rect.uHeight = 0;
        OSD_GetRectsCross(&(topmenu->frame),&(obj->frame),&relative_rect);
        if(relative_rect.uHeight != 0 && relative_rect.uWidth != 0)
        {
            bifClear = 0;
        }        
    }
    if(flag)
        OSD_DrawObject(obj, C_UPDATE_ALL);
    else
        //OSD_ClearObject(obj, 0);
    {
        bifClear ? OSD_ClearObject(obj, 0):NULL;//@Alan modify
    }
    signal_stataus_showed = flag ? TRUE : FALSE;
}
Example #3
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;
}
Example #4
0
static PRESULT disk_operate_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	char temp[30];
	UINT8 *cur_select = NULL;
	
	switch(event)
	{
	case EVN_PRE_OPEN:
		switch(operate_type)
		{
			case OPERATE_TYPE_PART_FORMAT:
				STRCPY(temp, "Disk Mode");
				cur_select = &mode_select;
				break;
			case OPERATE_TYPE_DVR_SET:
				STRCPY(temp, "DVR Type");
				cur_select = &dvr_select_type;
				break;
			case OPERATE_TYPE_PART_COPY:
				STRCPY(temp, "Dest Partition");
				cur_select = &partition_select;
				break;
#ifdef DISK_MANAGER_SUPPORT
			case OPERATE_TYPE_DISK_REMOVE:
				STRCPY(temp, "Remove");
				cur_select = &disk_select;
				break;
#endif
			default:
				break;
		}
		ComAscStr2Uni(temp, display_strs[0]);
		win_disk_info_set_string(operate_type, *cur_select);
		break;
	case EVN_POST_OPEN:
		break;
	case EVN_PRE_CLOSE:
		/* Make OSD not flickering */
		*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;			
		break;
	case EVN_POST_CLOSE:
		if (menu_stack_get_top() == NULL)
			OSD_ClearObject((POBJECT_HEAD)&g_win_disk_operate, C_UPDATE_ALL);
		break;			
	}
	
	return ret;
}
Example #5
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;
	
}
Example #6
0
static PRESULT  hdmi_factest_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT8 bID;
	POBJECT_HEAD nxtObj;
    POBJECT_HEAD topmenu;
	bID = OSD_GetObjID(pObj);
	extern sys_state_t      system_state; 

	switch(event)
	{
    case EVN_PRE_OPEN:
        
        //ap_enable_key_task_get_key(TRUE);
		//key_set_upgrade_check_flag(0);
		last_system_state = system_state;
        //system_state = SYS_STATE_UPGRAGE_HOST;
		memset(hdmi_info_name_str,0x00,sizeof(hdmi_info_name_str));
        memset(hdmi_info1_str,0x00,sizeof(hdmi_info1_str));
        memset(hdmi_info2_str,0x00,sizeof(hdmi_info2_str));
        memset(hdmi_info3_str,0x00,sizeof(hdmi_info3_str));
        memset(hdmi_info4_str,0x00,sizeof(hdmi_info4_str));		
        wincom_close_title();
		if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		{
			OSD_ClearObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
			topmenu = menu_stack_get_top();
			if(topmenu)
				OSD_ClearObject( topmenu, C_UPDATE_ALL);
		}
        break;
    case EVN_POST_OPEN:
        
        hdmi_display_info_set();
        break;
    case EVN_POST_CLOSE:
        if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		    OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);	
        system_state = last_system_state;
        break;
	case EVN_UNKNOWN_ACTION:
	    break;
	}

	return ret;		
}
Example #7
0
static PRESULT popup_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	switch(event)
	{
	case EVN_PRE_DRAW:
		if(set_change_focus != -1)
		{
			OSD_SetContainerFocus((PCONTAINER)pObj, set_change_focus);
		}
		break;
	case EVN_PRE_OPEN:
		break;
	case EVN_PRE_CLOSE:
		/* Make OSD not flickering */
		if(menu_stack_get_top())
		{
			*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;
		}
		break;
	}

	
	return PROC_PASS;
}
Example #8
0
PRESULT ap_cas_IPPV_proc()
{
	static UINT8 flag = 0;
	POBJECT_HEAD p_top_menu = menu_stack_get_top();
	
	if ((MAIN_MENU_HANDLE == menu_stack_get(0)) \
		||(EPG_HANDLE == menu_stack_get_top()) \
		||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top()) \
		||(CHAN_LIST_HANDLE == menu_stack_get_top()) \
		||(SEARCHN_HANDLE == menu_stack_get_top()) \
		)
	{
		//current_ippv_ecm = ecmpid;
		return;
	}
	

	//avoid to open the same window frequently, i see this scenario on site
//	if (0 ==win_ippv_check_request())
//		return;
	
	if((p_top_menu == CHANNEL_BAR_HANDLE)
		||(p_top_menu == AUDIO_HANDLE)
		||(p_top_menu == VOLUMEBAR_HANDLE))
	{
		OSD_ObjClose ( p_top_menu, C_CLOSE_CLRBACK_FLG );
		menu_stack_pop();
	}
			
	if (OSD_ObjOpen((POBJECT_HEAD)&g_win_ippv_popup, 0xFFFFFFFF) != PROC_LEAVE)
	{
    	if ((POBJECT_HEAD)&g_win_ippv_popup != menu_stack_get_top())
    		menu_stack_push((POBJECT_HEAD)&g_win_ippv_popup);
	}

	return;
}
Example #9
0
static PRESULT win_imageslide_unkown_act_proc(VACTION act)
{
	PRESULT ret = PROC_PASS;
	UINT8 rotate_mode, display_mode;
	POBJECT_HEAD win,mplayer_menu;
	int next_image;
	UINT16 slide_interval;
	FileInfo file_node;
	char image_name[FULL_PATH_SIZE];
	
	switch(act)
	{
	case VACT_ROTATEL:
	case VACT_ROTATER:
		if(FALSE == decode_finish_flag)
			break;
		
		if(imageslide_pause_state == IMG_UNPAUSE_STATE)
		{
			api_stop_timer(&imageslide_timer_id);
			imageslide_pause_state = IMG_PAUSE_STATE;
		}
		if(act == VACT_ROTATER)
		{
			image_rot_ang = (image_rot_ang + 1)%IMAGE_ANGLE_CNT;
		}
		else
		{
			image_rot_ang = (image_rot_ang+IMAGE_ANGLE_CNT - 1)%IMAGE_ANGLE_CNT;
		}
		
		image_rotate(image_rot_ang);
		
		if(image_rot_ang == ANG_ORI)
		{
			win_imageslide_showrotate(FALSE);
			win_imageslide_showpause();
		}
		else
		{
			OSD_ClearObject((POBJECT_HEAD)&imageslide_pause, 0);
			win_imageslide_showrotate(TRUE);
		}
		slideidx_display(TRUE);
		break;
	case VACT_INCREASE:
	case VACT_DECREASE:
		if(imageslide_pause_state == IMG_UNPAUSE_STATE)
		{
			api_stop_timer(&imageslide_timer_id);
			imageslide_pause_state = IMG_PAUSE_STATE;
			win_imageslide_showpause();
		}
		if(act == VACT_INCREASE)
		{
			next_image = get_next_index_from_play_list(cur_playlist_image);
		}
		else
		{
			next_image = get_previous_index_from_play_list(cur_playlist_image);
		}
		if(next_image != -1)
		{
			cur_image_idx = next_image;
			api_stop_timer(&imageslide_timer_id);
			image_abort();
			if(image_rot_ang!= ANG_ORI)
			{
				image_rot_ang = ANG_ORI;
				win_imageslide_showrotate(FALSE);
				win_imageslide_showpause();
			}
			osal_task_sleep(20);
			set_play_list_info(cur_playlist_image,&cur_image_idx,NULL);
			get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node);
			win_get_fullname(image_name, file_node.path, file_node.name);
			win_image_file_play(image_name, image_rot_ang);
			decode_finish_flag = FALSE;
			osal_task_sleep(20);
			slideidx_display(TRUE);
		}
		break;
	case VACT_PAUSE:
		if(imageslide_pause_state == IMG_UNPAUSE_STATE)
		{
			imageslide_pause_state = IMG_PAUSE_STATE;
			win_imageslide_showpause();
			api_stop_timer(&imageslide_timer_id);
		}
	    else
	    {
			if(image_rot_ang == ANG_ORI)
			{
				imageslide_pause_state = IMG_UNPAUSE_STATE;
				slide_interval = (image_slide_setting.uTime_gap * 1000);
				win_imageslide_showpause();
				if(0 != image_slide_setting.uTime_gap)
					imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler);
			}
	    }
		ret = PROC_LOOP;
		break;
	case VACT_PLAY:
		if(IMG_PAUSE_STATE == imageslide_pause_state)
		{
			if(image_rot_ang == ANG_ORI)
			{
				imageslide_pause_state = IMG_UNPAUSE_STATE;
				win_imageslide_showpause();
				slide_interval = (image_slide_setting.uTime_gap * 1000);
				if(0 != image_slide_setting.uTime_gap)
					imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler);
			}
		}
		ret = PROC_LOOP;
		break;
	case VACT_ZOOM:
		if(decode_finish_flag)
		{
			if(imageslide_pause_state == IMG_UNPAUSE_STATE)
			{
				imageslide_pause_state = IMG_PAUSE_STATE;
				win_imageslide_showpause();
				api_stop_timer(&imageslide_timer_id);
			}

			win_mpzoom_open();

			if(image_rot_ang == ANG_ORI)
			{
				imageslide_pause_state = IMG_UNPAUSE_STATE;
				slide_interval = (image_slide_setting.uTime_gap * 1000);
				win_imageslide_showpause();
				imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler);
			}
		}
		break;
	case VACT_MP:
		win = (POBJECT_HEAD)(&g_win_imageslide);
		OSD_ObjClose(win,C_CLOSE_CLRBACK_FLG);

		while((POBJECT_HEAD)&g_win_usb_filelist != menu_stack_get_top())
		{
			menu_stack_pop();
		}
		
		image_abort();
		win_set_image_multiview_firstidx();
		mplayer_menu = (POBJECT_HEAD)(&g_win_imagepreview);

		if(OSD_ObjOpen(mplayer_menu,(UINT32)(~0)) != PROC_LEAVE)
			menu_stack_push(mplayer_menu);
		break;
	default:
		break;
	}

	return ret;
}
Example #10
0
void mp_apcallback(UINT32 event_type,UINT32 param)
{
//	DM_DEBUG("%s(): event_type = %d, param=%d\n",__FUNCTION__, event_type, param);
	POBJECT_HEAD win_top = menu_stack_get_top();

	if((win_top == (POBJECT_HEAD)&g_win_imageslide) 
		|| (win_top == (POBJECT_HEAD)&g_win_usb_filelist)
		|| (win_top == (POBJECT_HEAD)&g_win_imagepreview)
		|| (win_top == (POBJECT_HEAD)&g_win_mpeg_player)
		|| (win_top == (POBJECT_HEAD)&g_win_record)
		|| (win_top == (POBJECT_HEAD)&g_win_volume)
		|| (win_top == (POBJECT_HEAD)&g_cnt_chapter)
	#ifdef YOUTUBE_TEST
		|| (win_top == (POBJECT_HEAD)&g_win_mpegYT_player)
	#endif
	#ifdef YOUPORN_TEST
		|| (win_top == (POBJECT_HEAD)&g_win_youporn_player)
	#endif
	  )
	{
		switch(event_type)
		{
		case MP_IMAGE_PLAYBACK_END:
//			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER,0,FALSE);//when play jpg+mp3,should not clear buff
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER,osal_get_tick(),FALSE);//when play jpg+mp3,should not clear buff
			break;
		case MP_MUSIC_PLAYBACK_END:
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MP3OVER,0,FALSE);
			break;
		case MP_IMAGE_DECODE_PROCESS:
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS,param,FALSE);
			break;
		case MP_IMAGE_DECODER_ERROR:
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_ERR,param,FALSE);
			break;
	    case MP_VIDEO_PLAYBACK_END:
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,param,TRUE);
			break;
        case MP_VIDEO_BUILD_IDX_TBL:
            ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_BUILD_IDX, param, FALSE);
            break;
		case MP_VIDEO_PARSE_END:
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_PARSE_END,param,TRUE);
			break;		
		case MP_VIDEO_DECODER_ERROR:
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_DEC_ERR,param,TRUE);
			break;	
#ifdef SUPPORT_DRM
        case MP_DRM_NOT_AUTHORIZED:
            ap_send_msg(CTRL_MSG_SUBTYPE_DRM_NOT_AUTHORIZED, 0, FALSE);
            break;

        case MP_DRM_RENTAL_EXPIRED:
            ap_send_msg(CTRL_MSG_SUBTYPE_DRM_RENTAL_EXPIRED, param, FALSE);
            break;

        case MP_DRM_VIEW_RENTAL:
            ap_send_msg(CTRL_MSG_SUBTYPE_DRM_VIEW_RENTAL, param, FALSE);
            break;

        case MP_DRM_VERSION_ERR:
            ap_send_msg(CTRL_MSG_SUBTYPE_DRM_VERSION_ERR, 0, FALSE);
            break;

        case MP_DRM_ICT_ENABLE:
            ap_send_msg(CTRL_MSG_SUBTYPE_DRM_ICT_ENABLE, param, FALSE);
            break;
#endif  
		case MP_FS_IDE_MOUNT_NAME:
			STRCPY((char *)param, IDE_MOUNT_NAME);
			break;
		case MP_FS_USB_MOUNT_NAME:
			STRCPY((char *)param, USB_MOUNT_NAME);
			break;
		default:
			break;	
		}
	}
}
Example #11
0
void ap_tf_cas_process_update(UINT8 process, UINT8 mark)
{
	date_time dt;
	SYSTEM_DATA* pSysData = NULL;
	static tem_process = 0; //
	static BOOL g_smc_read = FALSE;

	//libc_printf("smc upd process:%d, %d\n", process, mark);
	ap_tf_cas_clear_screen(CLEAR_CA_MSG);

	if(CDCA_SCALE_RECEIVEPATCH == mark)
	{
		smcupg_txt_msg.wStringID = RS_DISPLAY_DOWNLOADING;
	}
	else if(CDCA_SCALE_PATCHING == mark)
	{
		smcupg_txt_msg.wStringID = RS_TF3_SHOWMSG_UPDATE;
	}

	pSysData = sys_data_get();

	if (CDCA_SCALE_PATCHING == mark && (process == 0 ||(FALSE == g_smc_read) ))
	{
			if(FALSE == g_smc_read)
			{
				if(g_smc_no[0] != 0)
				{
					MEMCPY(pSysData->upd_smc_no, g_smc_no, sizeof(g_smc_no));
					g_smc_read = TRUE;
				}
			}
	}
		
	if(process > 100)
	{
		if (CDCA_SCALE_PATCHING == mark)
		{
			get_local_time(&dt);			
			pSysData->smc_update_dt = dt;

			if (tem_process == 100)
			{
				pSysData->bUpd_status = TRUE;
			}
			else
			{
				pSysData->bUpd_status = FALSE;
			}
		}
		
		sys_data_save(0);
#if 1
		OSD_ClearObject((POBJECT_HEAD)&smcupg_info_con, C_UPDATE_ALL);
        
		if((POBJECT_HEAD)&smcupg_info_con == menu_stack_get_top())
		{
			menu_stack_pop();
		}
        BackToFullScrPlay();
#else
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_msg, C_UPDATE_ALL);
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_bar_progress, C_UPDATE_ALL);
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL);
#endif
	}
	else
	{
		if((POBJECT_HEAD)CHANNEL_BAR_HANDLE == menu_stack_get_top())
		{
			OSD_ObjClose((POBJECT_HEAD)CHANNEL_BAR_HANDLE, C_DRAW_SIGN_EVN_FLG|C_CLOSE_CLRBACK_FLG);
			menu_stack_pop();
		}
		
		if(-1 == window_pos_in_stack((POBJECT_HEAD)&smcupg_info_con))
		{
			menu_stack_push((POBJECT_HEAD)&smcupg_info_con);
		}
		
		OSD_SetProgressBarPos(&smcupg_bar_progress,(INT16)process);
		OSD_SetTextFieldContent(&smcupg_txt_progress, STRING_NUM_PERCENT, (UINT32)process);
#if 1
		OSD_DrawObject((POBJECT_HEAD)&smcupg_info_con, C_UPDATE_ALL);
#else
		OSD_DrawObject( (POBJECT_HEAD)&smcupg_txt_msg, C_UPDATE_ALL);
		OSD_DrawObject( (POBJECT_HEAD)&smcupg_bar_progress, C_UPDATE_ALL);
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL);
		OSD_DrawObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL);
#endif
	}

    tem_process = process;
}
Example #12
0
PRESULT ap_cas_mail_detitle_proc()
{

	static UINT8 flag = 1;
	static UINT8 flag2 = 0;
	//static UINT8 dtl_flag = 1;
	//static UINT8 dtl_flag2 = 0;
	static UINT32 time_flag=0;

#if 0
	if ((MAIN_MENU_HANDLE == menu_stack_get(0))
		||(EPG_HANDLE == menu_stack_get_top())
		||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top())
		||(CHAN_LIST_HANDLE == menu_stack_get_top())
		||(SEARCHN_HANDLE == menu_stack_get_top())
		||(WELCOME_MENU_HANDLE == menu_stack_get_top())
		||(MAIL_HANDLE == menu_stack_get(0))
		||(SUBT_HANDLE == menu_stack_get_top())
		||(AUDIO_HANDLE == menu_stack_get_top()))//BY LMC
	{
		return;
	}
#else
	if ((NULL != menu_stack_get(0))
		&&(CHANNEL_BAR_HANDLE != menu_stack_get_top())
		&&(VOLUMEBAR_HANDLE != menu_stack_get_top())
	/*	alfred.wu 20100313 OSD的测试还没有开始先关闭掉这些可以冲突的地方
	等以后发现了Bug再打开*/
		&&(AUDIO_HANDLE != menu_stack_get_top())
		&&(FIND_HANDLE != menu_stack_get_top()))
	{
		return;
	}
#endif


//first Email proc	
	if (Email_IconHide == MAIL_ICON_STATUS)
	{
		if (flag2)
		{
			/*alfred.wu 函数在win_mail_icon.c中*/
			ShowBMailOSDOnOff(0);
			flag2 = 0;
		}
	}
	else if (Email_New == MAIL_ICON_STATUS)
	{
		ShowBMailOSDOnOff(1);
		flag2 = 1;
	}
	else if (Email_SpaceExhaust == MAIL_ICON_STATUS)
	{
		ShowBMailOSDOnOff(flag);
		if(osal_get_tick()-time_flag>500)
		{
			time_flag = osal_get_tick();
			flag = !flag;
		}
		flag2 = 1;
	}
}
Example #13
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);
	}


}
Example #14
0
PRESULT ap_cas_fingerprint_proc(UINT8 newinfo)
{
	static UINT8	disp_flag = 0, pos_flag = 0;
	static UINT32	duration = 6000, xpos = 450;
	POBJECT_HEAD	top_handle = menu_stack_get_top();
    static UINT8	finger_nuf[11] = {1,0};

	UINT8 i;
	
	if (1 == newinfo)
	{
/*qjzheng 20100427 BUG1005, 解决指纹内容显示错误,len由原来的10改成11,finger_nuf[0]不应该在这里直接赋值*/
		//finger_nuf[0]=0;
		cas_get_fingerprint_req(finger_nuf,11);
		pos_flag = 1;//need to display in a new x position
		//finger_start_time =0;
	#if 0
		libc_printf("finger_nuf %d pos:%d content: ",finger_nuf[0], finger_nuf[1]);
		for(i=2; i<11;i++)
			libc_printf("0x%x, ",finger_nuf[i]);
		libc_printf("\n");
	#endif
	}
	else if( (2 == newinfo) && (0 == finger_nuf[0]) )
	{
		libc_printf("to clear finger print\n");
	    show_finger_print(0, NULL,50+finger_nuf[1]);
		return;
	}
	else if( 3 == newinfo )
	{
		libc_printf("to clear finger buf\n");
		finger_nuf[0] =1;
	    //show_finger_print(0, NULL,50+finger_nuf[1]);
		//return;
	}
	
#if 0
	if ((MAIN_MENU_HANDLE == menu_stack_get(0))
		||(EPG_HANDLE == menu_stack_get_top())
		||(PROG_DETAIL_HANDLE == menu_stack_get_top())
		||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top())
		||(CHAN_LIST_HANDLE == menu_stack_get_top())
		||(SEARCHN_HANDLE == menu_stack_get_top())
		||(WELCOME_MENU_HANDLE == menu_stack_get_top())
		||(AUDIO_HANDLE == menu_stack_get_top())
		||(SUBT_HANDLE == menu_stack_get_top())
		||(IPPV_HANDLE == menu_stack_get_top()))
	{
		return;
	}
#else
	if ((NULL != menu_stack_get(0))
		&&(CHANNEL_BAR_HANDLE != top_handle)
		&&((POBJECT_HEAD)&g_win_volume != top_handle ))
	{
		return 1;
	}
#endif
	if (0 == finger_nuf[0])
	{
		if(1 == pos_flag)
		{
			MEMSET(smcstr, 0, sizeof(smcstr));
			sprintf(smcstr, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",finger_nuf[1],/*finger_nuf[1] --> THE POS*/
        		finger_nuf[2],finger_nuf[3],finger_nuf[4],finger_nuf[5],finger_nuf[6],
        		finger_nuf[7],finger_nuf[8],finger_nuf[9],finger_nuf[10]);
			finger_start_time = osal_get_tick();
			finger_end_time = finger_start_time + 10*1000;
			pos_flag = 0;
		}
		
		if (osal_get_tick() < finger_end_time)
		{
			show_finger_print(1,smcstr, 50+finger_nuf[1]);
			//libc_printf("to disp %s\n",smcstr);
		}
		else
		{
			finger_nuf[0] = 1;
			finger_end_time = 0;
			finger_start_time = 0;
		    show_finger_print(0, NULL,50+finger_nuf[1]);
		}
	}
	else if(1 == finger_nuf[0])
	{
		finger_nuf[0] =2;
	    show_finger_print(0, NULL,50+finger_nuf[1]);    
	}

	return 0;
	
}
Example #15
0
void scroll_string(UINT16* str,OSD_RECT rc,UINT16 fontColor,UINT16 backColor,UINT8 delay)
{
    UINT8 c,width;
    UINT8 fontArray[CA_MAXLEN_OSD];
    UINT8 *fontbuf;
    UINT8 *pDataBitmap;
    UINT8 regionID = 0;
    UINT16 ch, i,j,k,times=0,*buf;
    ID_RSC RscLibId;
    VSCR* vScr;
    VSCR vScrTemp;
    UINT8 * pscr=NULL;
    OBJECTINFO RscLibInfo;
    OBJECTINFO *pRscLibInfo = &RscLibInfo;
    POBJECT_HEAD p_top_menu = NULL;

    pscr =MALLOC(rc.uHeight*rc.uWidth);
    if (NULL == pscr)
    {
        ASSERT(0);
    }
    vScrTemp.lpbScr = pscr;

    if(str == NULL)
        return;

    if(delay == 0)
        delay = 30;  //default speed is 30

    fontbuf = fontBuf_btm;
    regionID = osdmsg_btm_regionID;
    vScr = &vscr_osdmsg_btm;

    SetScrollStopFlag(SCROLL_PLAY);
    while(*str != 0)
    {
        ch = COMMB16ToUINT16(*str);
        RscLibId = OSD_GetDefaultFontLib(ch);
        pDataBitmap = OSD_GetRscObjData_ext(RscLibId, ch, &RscLibInfo,fontbuf);
        if(NULL == pDataBitmap)
        {
            str++;
            continue;
        }

        /*****************************************************************************************
         **qjzheng 2010.3.10 NOTE:
         **当cpy的长度是72时导致显示的字符不全,具体原因未查明,但是改成CA_MAXLEN_OSD后错误得到修正
         *****************************************************************************************/
        MEMCPY(fontArray,pDataBitmap,CA_MAXLEN_OSD );
        width = RscLibInfo.m_objAttr.m_wActualWidth;
        for(i=0; i<width; i++)
        {
            for(k=0; k<rc.uHeight; k++)
            {
                UINT8 cmask=0;
                UINT16 pos=k*rc.uWidth;
                for(j=0; j<rc.uWidth-1; j++)
                {
                    vScr->lpbScr[pos+j] = vScr->lpbScr[pos+j+1];
                }

                if( k <(rc.uHeight -  RscLibInfo.m_objAttr.m_wHeight))
                {
                    vScr->lpbScr[pos+rc.uWidth-1]  = backColor;
                    continue;
                }
                c=fontArray[(k-(rc.uHeight -  RscLibInfo.m_objAttr.m_wHeight))*(RscLibInfo.m_objAttr.m_wWidth/8)+i/8];
                cmask = 0x80 >> (i%8) ;
                vScr->lpbScr[pos+rc.uWidth-1] = (c &cmask)?(fontColor):(backColor);
            }

            OSD_SetRect2 ( &vScr->vR,&rc);
            vScr->updatePending = 1;
            osdmsg_updatevscr(vScr,regionID);

            if(GetScrollStopFlag()==SCROLL_PAUSE)
            {
                vscr_osddata_copy(&vScrTemp,vScr,rc.uHeight*rc.uWidth);
                osdmsg_clear_msg(vScr,rc);

                SetScrollStopFlag(SCROLL_HIDE);
                while(GetScrollStopFlag()==SCROLL_HIDE)
                {
                    osal_task_sleep(100);
                }
                vscr_osddata_copy(vScr,&vScrTemp,rc.uHeight*rc.uWidth);
                osdmsg_updatevscr(vScr,regionID);
            }

            if(GetScrollStopFlag()==SCROLL_STOP)
            {
                p_top_menu=menu_stack_get_top();
                while(p_top_menu!=NULL && p_top_menu!=(POBJECT_HEAD)&g_win_progname)
                {
                    p_top_menu=menu_stack_get_top();
                    osal_task_sleep(100);
                }
                return;
            }

            while(times<delay)
            {
                osal_task_sleep(1);
                times++;
                if(times >= delay)
                {
                    times = 0;
                    break;
                }
            }
        }

        str++;
    }
    SetScrollStopFlag(SCROLL_STOP);

    return;
    //GeCleanRegion(regionID);
}
Example #16
0
BOOL usb_remove_safely_by_hotkey()
{
	int disk_num, tot_disk_num = 0;
	char disk_name[8];
	int ret;
	UINT32 choice;
	UINT8 disk_sel;
	UINT8 back_saved;
	POBJECT_HEAD topmenu;
		
	ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_USB, 0, 0), &disk_num, sizeof(int));
	if (ret == 0 && disk_num > 0)
		tot_disk_num += disk_num;

	ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_SD, 0, 0), &disk_num, sizeof(int));
	if (ret == 0 && disk_num > 0)
		tot_disk_num += disk_num;

	ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_SATA, 0, 0), &disk_num, sizeof(int));
	if (ret == 0 && disk_num > 0)
		tot_disk_num += disk_num;

	if (tot_disk_num <= 0)
	{
		return TRUE;
	}
	api_inc_wnd_count();
	ID timer_id = win_compopup_start_send_key_timer(V_KEY_EXIT, 10000, TIMER_ALARM); // exit popup if no action in 5s
	choice = win_disk_operate_open(OPERATE_TYPE_DISK_REMOVE, &disk_sel);
	api_stop_timer(&timer_id);
	
	if ((topmenu = menu_stack_get_top()) != NULL)
		OSD_TrackObject(topmenu, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
	
	if (!choice)
	{
		api_dec_wnd_count();
		return TRUE;
	}
	else
	{
		win_removable_disk_get_name_str(disk_sel, disk_name);
	}
		
#ifdef DVR_PVR_SUPPORT
	enum PVR_DISKMODE pvr_mode;
	char rec_vol[16], tms_vol[16];
	struct statvfs buf;

	pvr_mode = pvr_get_cur_mode(rec_vol, tms_vol);

	if (api_pvr_is_record_active() && (STRLEN(rec_vol) == 9) &&
		(strncmp(disk_name, &rec_vol[5], 3) == 0))
	{
		win_compopup_init(WIN_POPUP_TYPE_OK);
	    win_compopup_set_msg("USB safely remove error, please stop recording first!", NULL, 0);
	    win_compopup_open_ext(&back_saved);
		api_dec_wnd_count();
		return TRUE;
	}

	if (api_pvr_is_playing())
	{
		BOOL b_can_remove = TRUE;
		if ((pvr_info.pvr_state == PVR_STATE_TMS_PLAY) &&
			(STRLEN(tms_vol) == 9) && (strncmp(disk_name, &tms_vol[5], 3) == 0))
		{
			b_can_remove = FALSE;
		}
		else if ((pvr_info.pvr_state != PVR_STATE_TMS_PLAY) &&
				 (STRLEN(rec_vol) == 9) && (strncmp(disk_name, &rec_vol[5], 3) == 0))
		{
			b_can_remove = FALSE;
		}

		if (!b_can_remove)
		{
			win_compopup_init(WIN_POPUP_TYPE_OK);
		    win_compopup_set_msg("USB safely remove error, please stop playing first!", NULL, 0);
		    win_compopup_open_ext(&back_saved);
			api_dec_wnd_count();
			return TRUE;
		}
	}

	if (pvr_info.pvr_state == PVR_STATE_TMS)
	{
		api_pvr_tms_proc(FALSE);
		fs_sync(tms_vol);
	}
#endif

#ifdef USB_SUPPORT_HUB
	/* remove disk */
	int disk_type = diskNamePrefix2Type(disk_name);
	if (disk_type == MNT_TYPE_USB)
	{
		char dev_path[16];
		int node_id, fd;
		sprintf(dev_path, "/dev/%s", disk_name);
		fd = fs_open(dev_path, O_RDONLY, 0);
		ret = fs_ioctl(fd, IOCTL_GET_NODEID, &node_id, sizeof(int));
		fs_close(fd);

		if (ret == 0)
			usbd_safely_remove_ex(node_id);
	}
#ifdef SDIO_SUPPORT
	else if (disk_type == MNT_TYPE_SD)
	{
		sd_notify(0);
	}
#endif
#ifdef SATA_SUPPORT
	else if (disk_type == MNT_TYPE_SATA)
	{
		sata_notify(0, 0);
	}
#endif
#else
	usbd_safely_remove();
#endif
	
	api_dec_wnd_count();
	return TRUE;
}
Example #17
0
static PRESULT win_volume_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	SYSTEM_DATA* sys_data;
	PROGRESS_BAR* bar;

	bar = &vol_bar;

	sys_data = sys_data_get();	

	switch(event)
	{
	case EVN_PRE_OPEN:
        win_volume_switch_clrstyle();        
        api_inc_wnd_count();
		VOLUME_TIMER_TIME = sys_data->osd_set.time_out;
		if(VOLUME_TIMER_TIME == 0 || VOLUME_TIMER_TIME>10)
			VOLUME_TIMER_TIME = 5;
		VOLUME_TIMER_TIME *= 1000;		
		OSD_SetProgressBarPos(bar, sys_data->volume);
		break;
	case EVN_POST_OPEN:
		volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func);
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1,FALSE);
		ret = PROC_LEAVE;
		break;
	case EVN_MSG_GOT:
		if(param1 ==  CTRL_MSG_SUBTYPE_CMD_EXIT)
		{
			ret = PROC_LEAVE;
		}
#ifdef USB_MP_SUPPORT
		else if(param1 == CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER)
		{
			ret = PROC_LEAVE;
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,0,TRUE);
		}
#endif
		break;
	case EVN_PRE_CLOSE:
		// if open volume window by popup window, not clear OSD. 
		if(menu_stack_get_top() != (POBJECT_HEAD)&g_win_volume)
		{
			/* Make OSD not flickering */
			*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
		}
		break;
	case EVN_POST_CLOSE:
		api_stop_timer(&volume_timer);		
        sys_data_save(1);
        api_dec_wnd_count();
		break;
	default:
		;
	}


	return ret;
}
Example #18
0
static PRESULT  hdmi_factest_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	struct hdmi_device *hdmi_dev = (struct hdmi_device *)dev_get_by_type(NULL,HLD_DEV_TYPE_HDMI);	
	PRESULT ret = PROC_PASS;
	UINT8 bID;
	POBJECT_HEAD nxtObj;
    POBJECT_HEAD topmenu;
	bID = OSD_GetObjID(pObj);
	extern sys_state_t      system_state; 
	UINT8 buf[512];
	UINT32 v_key, i;
	FILE *fp;
	MULTISEL *pMsel;
	static BOOL log_edid_info = FALSE, log_dbg_info = FALSE,  ignore_hotplug = FALSE;

	switch(event)
	{
    case EVN_PRE_OPEN:
        
        //ap_enable_key_task_get_key(TRUE);
		//key_set_upgrade_check_flag(0);
		last_system_state = system_state;
        //system_state = SYS_STATE_UPGRAGE_HOST;
		memset(hdmi_info_name_str,0x00,sizeof(hdmi_info_name_str));
        memset(hdmi_info1_str,0x00,sizeof(hdmi_info1_str));
        memset(hdmi_info2_str,0x00,sizeof(hdmi_info2_str));
        memset(hdmi_info3_str,0x00,sizeof(hdmi_info3_str));
        memset(hdmi_info4_str,0x00,sizeof(hdmi_info4_str));		
        wincom_close_title();
		if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		{
			OSD_ClearObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
			topmenu = menu_stack_get_top();
			if(topmenu)
				OSD_ClearObject( topmenu, C_UPDATE_ALL);
		}
        break;
    case EVN_POST_OPEN:
	    hdmi_dev->io_control(hdmi_dev,HDMI_CMD_REG_CALLBACK, HDMI_CB_DBG_MSG, (UINT32)hdmi_debug_message_callback);        
        hdmi_display_info_set();
        break;
    case EVN_POST_CLOSE:
        if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		    OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);	
        system_state = last_system_state;
        break;
	case EVN_UNKNOWN_ACTION:
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_hk_to_vk(0, param1, &v_key); 
		switch(v_key)
		{		
			case V_KEY_RED: 	// Red Button : Log EDID Information //old IR Red key is 65
				if(log_edid_info == FALSE)
				{
					log_edid_info = TRUE;						
					
					// Check log file exist or not, if exist delete it.
					edid_log_file= fs_open("/c/hdmi_edid_log.txt", O_RDONLY, 0666);
//						if(edid_log_file >= 0)	 /*always is true ,clean the warning */
					{
						fs_close(edid_log_file);
						fs_remove("/c/hdmi_edid_log.txt");
					}

						edid_log_file = fs_open("/c/hdmi_edid_log.txt", O_RDWR | O_CREAT, S_IFREG | S_IRWXU);							
					hdmi_log_edid_start();						
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Start to Log EDID Information", 0); 												
				}
				else
				{
					log_edid_info = FALSE;	
					fs_close( edid_log_file );
					fs_sync("/c/"); 		
					hdmi_log_edid_stop();
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Stop to Log EDID Information", 0);					
				}
				osal_task_sleep(2000);
				win_compopup_close();					
				hdmi_display_info_set();
				break;	
			case V_KEY_GREEN:		// Green Button : Log debug Information
				if(log_dbg_info == FALSE)
				{
					log_dbg_info = TRUE;						
					
					// Check log file exist or not, if exist delete it.
					debug_log_file= fs_open("/c/hdmi_debug_log.txt", O_RDONLY, 0666);
//						if(debug_log_file >= 0) 	/*always is true ,clean the warning */
					{
						fs_close(debug_log_file);
						fs_remove("/c/hdmi_debug_log.txt");
					}

						debug_log_file = fs_open("/c/hdmi_debug_log.txt", O_RDWR | O_CREAT, S_IFREG | S_IRWXU); 						
					hdmi_log_debug_start(); 					
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Start to Log Debug Information", 0);													
				}
				else
				{
					log_dbg_info = FALSE;	
					fs_close( debug_log_file );
					fs_sync("/c/"); 					
					hdmi_log_debug_stop();
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Stop to Log Debug Information", 0); 				
				}
				osal_task_sleep(2000);
				win_compopup_close();					
				hdmi_display_info_set();				
				break;
			case V_KEY_YELLOW:		// Yellow Button : Switch on/off HDCP
				if(api_get_hdmi_hdcp_onoff() == TRUE)
				{
					api_set_hdmi_hdcp_onoff(FALSE);
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Turn HDCP Off", 0); 
				}
				else
				{
					api_set_hdmi_hdcp_onoff(TRUE);
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Turn HDCP On", 0);						
				}										
				osal_task_sleep(2000);
				win_compopup_close();					
				hdmi_display_info_set();						
				break;	
				
			default:
				break;
		}			

	    break;
	}

	return ret;		
}