示例#1
0
static void win_ci_set_slot_status_text(UINT8 slot, UINT8 status)
{
	char ansi_str[CI_MENU_TXT_LENGTH];
	char *str;
	void *ci_buffer = (void*)win_ci_get_tmp_buf();
/* //for card name not reflash when enter a new card!
	if((status == ci_slots_info.status[slot]) && (ci_slots_info.status_str[slot][0] != 0))
	{
		return;
	}
*/
	ci_slots_info.status_str[slot][0] = 0;
	
	sprintf(ansi_str, "Slot %d: ", slot + 1);
	switch(status)
	{
		case CAM_DETACH:
			strcat(ansi_str, "Not Available");
			break;
		case CAM_ATTACH:
			strcat(ansi_str, "Initializing");
			break;
		case CAM_STACK_DETACH:
			strcat(ansi_str, "Uninstalling");
			break;
		case CAM_STACK_ATTACH:	
			str = api_ci_get_menu_string(ci_buffer, CI_DATA_BUFFER_LEN, slot);		
			if(str != NULL)
			{
				strcat(ansi_str, str);
			}

			break;
		default:
			strcat(ansi_str, "Unknown");
			break;	
	}

	ComAscStr2Uni((UINT8*)ansi_str, ci_slots_info.status_str[slot]);

	return;
	
}
示例#2
0
static void win_ci_set_slot_status_text(UINT8 slot, UINT8 status)  //guop edit 20101110
{
	char ansi_str[CI_MENU_TXT_LENGTH];
	char *str;
	void *ci_buffer = (void*)win_ci_get_tmp_buf();
	
	UINT16 *unistr=NULL;
	UINT16 *unistr2=NULL;
	UINT16 unistr_dest[50]={0};
	UINT16 uni_string[300]={0};
	UINT16 uni_string2[300]={0};
	char string[20];

	memset(string,0,sizeof(string));
	memset(unistr_dest,0,sizeof(unistr_dest));
	memset(uni_string,0,sizeof(uni_string));
	memset(uni_string2,0,sizeof(uni_string2));

/* //for card name not reflash when enter a new card!
	if((status == ci_slots_info.status[slot]) && (ci_slots_info.status_str[slot][0] != 0))
	{
		return;
	}
*/
	ci_slots_info.status_str[slot][0] = 0;
#ifdef SINGLE_CI_SUPPORT	
	unistr = OSD_GetUnicodeString(RS_SLOT);        
	sprintf(string," : ");    
	ComAscStr2Uni(string,unistr_dest);      
	ComUniStrCopyChar(&uni_string,(UINT16 *)unistr);
	ComUniStrCat(&uni_string,unistr_dest); 

	//sprintf(ansi_str, "Slot: ");
#else

	unistr = OSD_GetUnicodeString(RS_SLOT);        
	sprintf(string," %d :",slot+1);    
	ComAscStr2Uni(string,unistr_dest);      
	ComUniStrCopyChar(&uni_string,(UINT16 *)unistr);
	ComUniStrCat(&uni_string,unistr_dest); 

	//sprintf(ansi_str, "Slot %d: ", slot + 1);

#endif
	switch(status)
	{
		case CAM_DETACH:
			{
				unistr2 = OSD_GetUnicodeString(RS_NOT_AVAILABLE);        
				ComUniStrCopyChar(&uni_string2,(UINT16 *)unistr2);
				ComUniStrCat(&uni_string,uni_string2); 
			       //strcat(ansi_str, "Not Available");
			}
			break;
		case CAM_ATTACH:
			{
				unistr2 = OSD_GetUnicodeString(RS_INIT);        
				ComUniStrCopyChar(&uni_string2,(UINT16 *)unistr2);
				ComUniStrCat(&uni_string,uni_string2); 
				//strcat(ansi_str, "Initializing");
			}
			break;
		case CAM_STACK_DETACH:
			{
				unistr2 = OSD_GetUnicodeString(RS_UNINSTALLING);        
				ComUniStrCopyChar(&uni_string2,(UINT16 *)unistr2);
				ComUniStrCat(&uni_string,uni_string2); 
				//strcat(ansi_str, "Uninstalling");
			}
			break;
		case CAM_STACK_ATTACH:	
			str = api_ci_get_menu_string(ci_buffer, CI_DATA_BUFFER_LEN, slot);		
			if(str != NULL)
			{
			  	ComAscStr2Uni((UINT8*)str,uni_string2);      
				//ComUniStrCopyChar(&uni_string,(UINT16 *)unistr);
				ComUniStrCat(&uni_string,uni_string2); 
				//strcat(ansi_str, str);
				//ComAscStr2Uni((UINT8*)str, ci_slots_info.status_str[slot]);
			}

			break;
		default:
			{
				unistr2 = OSD_GetUnicodeString(RS_UNKNOWN);        
				ComUniStrCopyChar(&uni_string2,(UINT16 *)unistr2);
				ComUniStrCat(&uni_string,uni_string2); 
				
			  //strcat(ansi_str, "Unknown");
			}
			break;	
	}

	     //  ComAscStr2Uni((UINT8*)ansi_str, ci_slots_info.status_str[slot]);
		   
		MEMCPY(ci_slots_info.status_str[slot], uni_string,sizeof(uni_string));


	return;
	
}
示例#3
0
static PRESULT ci_info_event_proc(POBJECT_HEAD pObj, UINT32 msg_type, UINT32 msg_code)
{
	PRESULT ret = PROC_LOOP;

	UINT16 msg;
	UINT8 cur_slot;
	
	UINT8 focusID;
	struct ci_menu * menu;	
	struct ci_enquiry * enquiry;
	
	UINT8 *tmp_buf;
    static UINT32 m_enquiry_dlg_show_time;

	if((msg_type & 0xffff) == CTRL_MSG_SUBTYPE_STATUS_CI)
	{
		cur_slot = msg_code >> 16;
		msg  = msg_code & 0xFFFF;
       	if (win_ci_info_modal == WIN_CI_INFO_SHOW_AS_MODAL)
            ci_slot = cur_slot;

		switch(msg)
		{
			case API_MSG_MENU_UPDATE:
                if (win_ci_info_modal == WIN_CI_INFO_SHOW_AS_MODAL && win_ci_info_show == 0)
    	        {
                    break;
                }
                if (ci_enquiry_dlg_show)
                    break;
				if(reading_dlg_shown)
					reading_dlg_close();
				
				tmp_buf = win_ci_get_tmp_buf();
				menu = api_ci_get_menu((void*)(tmp_buf), CI_DATA_BUFFER_LEN, cur_slot);
				if(menu != NULL)
				{
					ci_info_set_menu(menu);
					ci_info_display();
				}
				break;
			case API_MSG_ENQUIRY_UPDATE:
				tmp_buf = win_ci_get_tmp_buf();
				enquiry = api_ci_get_enquiry((void*)tmp_buf, CI_DATA_BUFFER_LEN, cur_slot);
				if(enquiry != NULL)
				{
#ifdef DVR_PVR_SUPPORT
#ifdef CI_SLOT_DYNAMIC_DETECT
                	if (win_ci_info_modal == WIN_CI_INFO_SHOW_AS_MODAL)
                        cc_tsg_ci_slot_select(cur_slot);
#endif
#endif
                    ci_info_set_enquiry(enquiry);

                    if(reading_dlg_shown)
					    reading_dlg_close();
					ci_enquiry_dlg_open();
                    m_enquiry_dlg_show_time = osal_get_tick();
				}
				break;
			case API_MSG_ENQUIRY_EXIT:
                if (ci_enquiry_dlg_show)
                {
                    if (ci_enquiry_dlg_input == 1 || osal_get_tick() < (m_enquiry_dlg_show_time + 6000))
                    {
                        break;
                    }
                }
                ci_enquiry_dlg_close();
                break;

			case API_MSG_CAMOUT:
			case API_MSG_DTC:	
			case API_MSG_EXIT_MENU:
				if(reading_dlg_shown)
					reading_dlg_close();
			
				ret = PROC_LEAVE;
			
				break;
			default:
				break;
				
		}

	}
示例#4
0
static void ci_info_init()
{
	char * tmp;
	UINT8 *tmp_buf;
	
	// init
	MEMSET(&ci_info, 0, sizeof(ci_info));
	// get menu string
	tmp_buf = (void*)(win_ci_get_tmp_buf());
	
	tmp = api_ci_get_menu_string(tmp_buf, CI_DATA_BUFFER_LEN, ci_slot);

	if(tmp != NULL)
	{
		ci_info_set_string(ci_info.name, CI_MENU_TXT_LENGTH, tmp);
	}
	else
	{
		ci_info.name[0] = '\0';
	}


	//set the window style as the difference show modal
	win_ci_info_set_colorstyle();
	if(win_ci_info_modal == WIN_CI_INFO_SHOW_AS_MODAL)
	{
        OSD_SetColor((POBJECT_HEAD)&g_win_ci_info,WIN_SH_IDX_SD,WIN_HL_IDX_SD,WIN_SL_IDX_SD,WIN_GRY_IDX_SD);
        OSD_MoveObject((POBJECT_HEAD)&g_win_ci_info, W_L_SD,W_T_SD, 0);//62, 55, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split1, W_L_SD + 10, SPLIT_1_T_SD, 0); //62, SPLIT_1_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split2, W_L_SD + 10, SPLIT_2_T_SD, 0);//62, SPLIT_2_T - 1, 0);
	}
	else
	{
		OSD_SetColor((POBJECT_HEAD)&g_win_ci_info, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME);//guop
		OSD_MoveObject((POBJECT_HEAD)&g_win_ci_info, W_L,W_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split1, SPLIT_1_L, SPLIT_1_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split2, SPLIT_1_L, SPLIT_2_T, 0);
	}
	

	/////////////////////////////////////////////////////////////////////////	
	//clear the menu
	//1. CI Title
	OSD_SetTextFieldContent(&txt_ci_info_title, STRING_UNICODE, (UINT32)"");
	//2. sub title
	ci_info_subtitle_content[0].text.pString = NULL;
	
	//3. bottom 
	OSD_SetTextFieldContent(&txt_ci_info_bottom, STRING_UNICODE, (UINT32)"");
	//4. list
	OSD_SetObjListCount(&olst_ci_info, 0);
	
	OSD_SetAttr(&sb_ci_info, C_ATTR_HIDDEN);

	//show the ci enquiry dialog
	OSD_SetObjpNext(&txt_ci_info_bottom, NULL);
	//the the windows focus to the dialog
	g_win_ci_info.FocusObjectID = 1;


}
示例#5
0
}

void win_ci_dlg_close()
{
	win_msg_popup_close();
	bDlgShow = 0;
}

void win_ci_dlg_show_status(UINT32 msg_code)
{
	UINT16 slot	  = msg_code >> 16;
	UINT16 ci_msg = msg_code & 0xFFFF;

	char ansi_str[MAX_DISP_STR_LEN];
	char *str;
	void *ci_buffer = (void*)win_ci_get_tmp_buf();
	UINT16 uni_str_status[MAX_DISP_STR_LEN];
	struct ci_enquiry *enquiry;
#ifdef CI_PLUS_SUPPORT
    if(IsCIPlus_Menu_Exist())
    {
        return;
    }
#endif
	sprintf(ansi_str, "Slot %d: ", slot+1);
	switch(ci_msg)
	{
		case API_MSG_CAMIN:
			strcat(ansi_str, "Initializing");
			ComAscStr2Uni((UINT8*)ansi_str, uni_str_status);