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; }
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; }
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; } }
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; }
} 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);