#ifndef __MID_DTVCI_H__ #define __MID_DTVCI_H__ #include #include "mid_dtvci_types.h" /* ID_CAM_STATUS */ typedef enum __E_CAM_STATUS { CAM_REMOVE = 0, CAM_INSERT, CAM_INSERT_ERROR, CAM_READY, CAM_AUTH_START, CAM_AUTH_VERIFIED, CAM_AUTH_ERROR, } E_CAM_STATUS; /* ID_CA_SYSTEM */ typedef struct __S_CA_SYSTEM { U16BIT *ca_ids; U8BIT num_ca_ids; } S_CA_SYSTEM; /* ID_APP_INFO */ typedef struct __S_APP_INFO { U8BIT *module_name; U8BIT app_type; U16BIT app_manf; U16BIT manf_code; U8BIT* menu_string; } S_APP_INFO; /* ID_MMI_SCREEN */ typedef struct __S_MMI_SCREEN { U8BIT event; U8BIT screen_type; /* Alowed screen types: STB_NO_CI_SCREEN 0 STB_CI_MENU_LIST_SCREEN 1 STB_CI_ENQUIRY_SCREEN 2 */ /* For Menu/List screen */ BOOLEAN bMenuList; // TRUE: menu, FALSE: list U8BIT *title; U8BIT *subtitle; U8BIT item_num; U8BIT **item_text; U8BIT *bottom_text; /* For Enquiry screen */ BOOLEAN bBlind; U8BIT *enq_text; U8BIT enq_len; /* For Close screen*/ U8BIT close_delay; } S_MMI_SCREEN; /* ID_HC_TUNE */ typedef struct __S_HC_TUNE { U16BIT nid; U16BIT onid; U16BIT tsid; U16BIT sid; } S_HC_TUNE; #if 1//ci+_14 /* ID_HC_TUNE_LCN */ typedef struct __S_HC_TUNE_LCN { U8BIT quietly_flag; U8BIT app_running_flag; U16BIT Lcn; } S_HC_TUNE_LCN; /* ID_HC_TUNE_TRIPLET */ typedef struct __S_HC_TUNE_TRIPLET { U8BIT quietly_flag; U8BIT app_running_flag; U16BIT onid; U16BIT tsid; U16BIT sid; U8BIT desc_tag; U8BIT desc_tag_extension; } S_HC_TUNE_TRIPLET; /* ID_HC_TUNE_BROADCAST */ typedef struct __S_HC_TUNE_BROADCAST { U8BIT tune_quietly_flag; U8BIT keep_app_running_flag; U16BIT service_id; U16BIT desc_loop_len; U8BIT *desc_loop; U8BIT *pmt; } S_HC_TUNE_BROADCAST; #else /* ID_HC_TUNE_BROADCAST */ typedef struct __S_HC_TUNE_BROADCAST { U16BIT service_id; U16BIT desc_loop_len; U8BIT *desc_loop; U8BIT *pmt; } S_HC_TUNE_BROADCAST; #endif typedef struct __S_HC_TUNE_STATUS_DSD { U8BIT connected_flag; U8BIT delivery_system_descriptor_tag; U8BIT descriptor_tag_extension; } S_HC_TUNER_STATUS_DSD; typedef struct __S_HC_TUNER_STATUS { U8BIT IP_tune_capable_flag; U8BIT num_dsd; S_HC_TUNER_STATUS_DSD dsd[6]; } S_HC_TUNER_STATUS; /* ID_HC_REPLACE */ typedef struct __S_HC_REPLACE { BOOLEAN bReplaceClear; // TRUE: replace, FALSE: clear U8BIT ref; // for replace and clear U16BIT replaced_pid; // for replace only U16BIT replacement_pid;// for replace only } S_HC_REPLACE; /* ID_HOST_COUNTRY */ typedef struct __S_COUNTRY { U8BIT *country; } S_COUNTRY; /* ID_HOST_LANGUAGE */ typedef struct __S_LANGUAGE { U8BIT *language; } S_LANGUAGE; /* ID_OP_STATUS */ /* Check S_STB_CI_OPERATOR_STATUS */ /* ID_OP_INFO */ typedef struct __S_OP_INFO { U8BIT info_version; S_STB_CI_OPERATOR_INFO *info; } S_OP_INFO; /* ID_OP_TUNE */ typedef struct __S_OP_TUNE { U16BIT desc_loop_len; U8BIT *desc_loop; } S_OP_TUNE; /* ID_OP_SEARCH_STATUS */ /* check S_STB_CI_OPERATOR_STATUS */ /* ID_OP_NIT */ typedef struct __S_OP_NIT { U16BIT nit_loop_length; U8BIT *nit_sections; } S_OP_NIT; /* ID_AUTH_DATA_READ and ID_AUTH_DATA_WRITE */ typedef struct __S_AUTH_DATA { U8BIT *buf; U32BIT bufsz; } S_AUTH_DATA; /* CI -> APP Callback Id */ typedef enum __E_CI_CALLBACK { ID_CAM_STATUS = 0, ID_CA_SYSTEM, ID_APP_INFO, ID_MMI_SCREEN, ID_HC_TUNE, ID_HC_TUNE_BROADCAST, ID_HC_REPLACE, ID_HOST_COUNTRY, ID_HOST_LANGUAGE, ID_OP_STATUS, ID_OP_INFO, ID_OP_TUNE, ID_OP_SEARCH_STATUS, ID_OP_NIT, ID_AUTH_DATA_READ, ID_AUTH_DATA_WRITE, ID_APP_MMI_START, ID_APP_MMI_STOP, ID_GET_STACK_PATCH, ID_HC_TUNE_LCN, ID_HC_TUNE_TRIPLET, ID_HC_TUNE_STATUS, ID_APP_INFO_HDS, ID_APP_INFO_COPYPROTECT, } E_CI_CALLBACK; /* ID_APPMMI_REQUEST_START */ typedef struct __S_APPMMI_REQ_START { U8BIT *app_domain; U8BIT domain_length; U8BIT *initial_object; U8BIT object_length; } S_APPMMI_REQ_START; /* ID_APPMMI_FILE_ACK */ typedef struct __S_APPMMI_FILE_ACK { BOOLEAN file_ok; U8BIT *data; U32BIT len; } S_APPMMI_FILE_ACK; /* ID_APPMMI_NOTIFY_ABORT */ typedef struct __S_APPMMI_NOTIFY_ABORT { U8BIT *code; U32BIT length; } S_APPMMI_NOTIFY_ABORT; typedef enum __E_CI_APMMI_CALLBACK { ID_APPMMI_REQUEST_START, ID_APPMMI_FILE_ACK, ID_APPMMI_NOTIFY_ABORT, } E_CI_APMMI_CALLBACK; typedef enum __E_APP_STATE { ENTER_DTV_SRC, LEAVE_DTV_SRC, ENTER_CHANNEL, QUICK_ENTER_CHANNEL, LEAVE_CHANNEL, DTV_SCAN_CHANNEL, ENTER_BISS_CHANNEL, DTV_LEAVE_SCAN_CHANNEL, } E_APP_STATE; typedef enum __E_APPMMI_SSM { APPMMI_SSM_0 = 0, APPMMI_SSM_1, APPMMI_SSM_2, APPMMI_SSM_NONE = 2, } E_APPMMI_SSM; typedef enum __E_APPMMI_STATE { ST_APPMMI_STOPPED, ST_APPMMI_STARTED } E_APPMMI_STATE; /* ID_PVRTS_APPLY_URI */ typedef struct __S_PVRTS_APPLY_URI { U16BIT sid; S_STB_CI_URI uri; } S_PVRTS_APPLY_URI; /* ID_PVRTS_NOTICE_RECORD_LICENSE */ typedef struct __S_PVRTS_RECORD_LICENSE { U16BIT program_number; S_STB_CI_URI *uri; U8BIT *license; U16BIT license_len; } S_PVRTS_RECORD_LICENSE; /* ID_PVRTS_NOTICE_PIN_EVENT */ typedef struct __S_PVRTS_PIN_EVENT { U16BIT program_number; U8BIT rating; time_t datetime; U8BIT private_data[15]; E_STB_CI_PIN_STATUS status; } S_PVRTS_PIN_EVENT; typedef enum { ID_PVRTS_APPLY_URI, ID_PVRTS_NOTICE_RECORD_LICENSE, ID_PVRTS_NOTICE_PIN_EVENT, } E_PVRTS_CALLBACK; /* ID_SAS_CNF_CONN */ typedef struct __S_SAS_CNF_CONN { U8BIT *app_id; U8BIT status; } S_SAS_CNF_CONN; /* ID_SAS_OIPF_REPLY_MSG */ typedef struct __S_SAS_OIPF_REPLY_MSG { U16BIT ca_system_id; U32BIT transaction_id; U8BIT status; U8BIT *ca_info; U16BIT ca_info_len; } S_SAS_OIPF_REPLY_MSG; /* ID_SAS_OIPF_PARENTAL_CONTROL_INFO */ typedef struct __S_SAS_OIPF_PARENTAL_CONTROL_INFO { U16BIT ca_system_id; S_STB_CI_OIPF_PARENTAL_CONTROL_INFO *info; } S_SAS_OIPF_PARENTAL_CONTROL_INFO; /* ID_SAS_OIPF_RIGHTS_INFO */ typedef struct __S_SAS_OIPF_RIGHTS_INFO { U16BIT ca_system_id; U8BIT access_status; U8BIT *rights_issuer_url; U16BIT url_len; } S_SAS_OIPF_RIGHTS_INFO; /* ID_SAS_OIPF_SYSTEM_INFO */ typedef struct __S_SAS_OIPF_SYSTEM_INFO { U16BIT ca_system_id; U8BIT *ca_info; U16BIT ca_info_len; } S_SAS_OIPF_SYSTEM_INFO; typedef enum { ID_SAS_NOTIFY_CAM_STATUS, ID_SAS_CNF_CONN, ID_SAS_OIPF_REPLY_MSG, ID_SAS_OIPF_PARENTAL_CONTROL_INFO, ID_SAS_OIPF_RIGHTS_INFO, ID_SAS_OIPF_SYSTEM_INFO, } E_SAS_CALLBACK; /** ci protection data struct */ typedef struct { U8BIT u8hasShunningData; U8BIT u8freeCiModeFlag; U8BIT u8matchBrandFlag; U8BIT u8numberOfEntries; U16BIT u16entries[2];//DB_DVB_MAX_SRV_MAX_CICAM_BRANDS } S_CI_Protection_t; #define MAX_CICAM_BRANDS 126 typedef struct ci_protection { BOOLEAN free_ci_mode_flag; BOOLEAN match_brand_flag; U8BIT number_of_entries; U16BIT entries[MAX_CICAM_BRANDS]; } S_CI_PROTECTION; /* ci shunning data define */ #define CA_SHUNNING_INVALID 0x0 #define CA_SHUNNING_PRESENT 0x1 #define CA_SHUNNING_ABSENT 0x2 /***************************************************************************** * FUNDAMENTAL FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_RegistAppCallback * Description: Application regists callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void* (*CIAPP_CallBack)(E_CI_CALLBACK id, void * param); void MID_DTVCI_RegistAppCallback(CIAPP_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_RegistAPMMICallback * Description: Mheg engine regists callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void* (*CIMHEG_CallBack)(E_CI_APMMI_CALLBACK id, void * param); void MID_DTVCI_RegistAPMMICallback(CIMHEG_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_RegistPVRTSCallback * Description: PVR regists callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void* (*CIPVRTS_CallBack)(E_PVRTS_CALLBACK id, void * param); void MID_DTVCI_RegistPVRTSCallback(CIPVRTS_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_RegistPVRPlaybackCallback * Description: PVR regists playback callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void* (*CIPVR_Playback_CallBack)(E_STB_CI_PIN_STATUS id); void MID_DTVCI_RegistPVRPlaybackCallback(CIPVR_Playback_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_RegistPVRLiveCallback * Description: PVR regists live callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void* (*CIPVR_Live_CallBack)(E_STB_CI_PIN_STATUS id); void MID_DTVCI_RegistPVRLiveCallback(CIPVR_Playback_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_RegistPVRLicenseCallback * Description: PVR register license callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void *(*CIPVR_License_CallBack) (U8BIT status); void MID_DTVCI_RegistPVRLicenseCallback(CIPVR_License_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_RegistSasCallback * Description: MHP regists callback function for CI+ Stack * Parameters: pfCallBack - pointer of callback function * Returns: Nothing *****************************************************************************/ typedef void* (*CISAS_CallBack)(E_SAS_CALLBACK id, void * param); void MID_DTVCI_RegistCISASCallback(CISAS_CallBack pfCallBack); /***************************************************************************** * Function Name: MID_DTVCI_Initialise * Description: Initialises system control task * Parameters: * Returns: Nothing *****************************************************************************/ void MID_DTVCI_Initialize(void); /***************************************************************************** * Function Name: MID_DTVCI_IsStackInit * Description: Check if initialises system control task * Parameters: * Returns: TRUE when system initial *****************************************************************************/ BOOLEAN MID_DTVCI_IsStackInit(void); /***************************************************************************** * Function Name: MID_DTVCI_NotifyInfo * Description: Notify CI+ stack the current application status * Parameters: E_APP_STATE * Returns: Nothing *****************************************************************************/ void MID_DTVCI_NotifyInfo(E_APP_STATE state); /***************************************************************************** * Function Name: MID_DTVCI_PassCIProtectionDesc * Description: Bypass ci protection descriptor to CI+ Stack after service * changed * Parameters: ci_protection_desc - ci protection descriptor * Returns: Nothing *****************************************************************************/ void MID_DTVCI_PassCIProtectionDesc(U8BIT *ci_protection_descriptor,S_CI_PROTECTION *reCiProtectDesc); void MID_DTVCI_SetPSIUpdateFlag(BOOLEAN bupdateflag,BOOLEAN resetflag); /***************************************************************************** * Function Name: MID_DTVCI_IsCAMInserted * Description: Check if CAM is inserted and ready * Parameters: * Returns: TRUE when cam is inserted and ready *****************************************************************************/ BOOLEAN MID_DTVCI_IsCAMInserted(void); /***************************************************************************** * Function Name: MID_DTVCI_IsCIPlusCAM * Description: Check if the current inserted CAM is a CI Plus CAM * Parameters: * Returns: TRUE for CI+ CAM, otherwise CI only CAM. *****************************************************************************/ BOOLEAN MID_DTVCI_IsCIPlusCAM(void); /***************************************************************************** * Function Name: MID_DTVCI_IsCurServiceScrambled * Description: Check if the current service is scrambled or not * Parameters: * Returns: TRUE for scramble, otherwise FALSE *****************************************************************************/ BOOLEAN MID_DTVCI_IsCurServiceScrambled(void); /***************************************************************************** * CI+ KEY RELATIVE FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_UpdateCIPlusKey * Description: Update CI+ host key from nvm again. * Parameters: * Returns: Nothing *****************************************************************************/ void MID_DTVCI_UpdateCIPlusKey(void); /***************************************************************************** * Function Name: MID_DTVCI_IsValidKey * Description: Check if current CI+ host key is valid or not. * Parameters: * Returns: TRUE if it's valid, otherwise FALSE. *****************************************************************************/ BOOLEAN MID_DTVCI_IsValidKey(void); /***************************************************************************** * Function Name: MID_DTVCI_IsProductKey * Description: Check if current CI+ host key is a product key or not. * Parameters: * Returns: TRUE if it's valid, otherwise FALSE. *****************************************************************************/ BOOLEAN MID_DTVCI_IsProductKey(void); /***************************************************************************** * Function Name: MID_DTVCI_GetKeyID * Description: Return CI+ key device id * Parameters: serial_no - 8 bytes data will be filled if succeeded. * Returns: TRUE if operation succeeded, FALSE otherwise *****************************************************************************/ BOOLEAN MID_DTVCI_GetKeyID(U8BIT *id); /***************************************************************************** * Function Name: MID_DTVCI_GetKeySerialNo * Description: Return CI+ key serial no. * Parameters: serial_no * Returns: TRUE if operation succeeded, FALSE otherwise *****************************************************************************/ BOOLEAN MID_DTVCI_GetKeySerialNo(U32BIT *serial_no); /***************************************************************************** * Function Name: MID_DTVCI_GetHostKeyValidDate * Description: Return CI+ key valid date * Parameters: Valid from 'year_from-mon_from-day_from' to * 'year_to-mon_to-day_to' * Returns: TRUE if operation succeeded, FALSE otherwise *****************************************************************************/ BOOLEAN MID_DTVCI_GetHostKeyValidDate( U16BIT *year_from, U8BIT *mon_from, U8BIT *day_from, U16BIT *year_to, U8BIT *mon_to, U8BIT *day_to); /***************************************************************************** * Function Name: MID_DTVCI_GetBrandOrgName * Description: Return Brand Ceritficate Organization Name. * Parameters: String * Returns: TRUE if operation succeeded, FALSE otherwise *****************************************************************************/ BOOLEAN MID_DTVCI_GetBrandOrgName(U8BIT org_name[65]); /***************************************************************************** * Function Name: MID_DTVCI_GetDevOrgName * Description: Return Device Ceritficate Organization Name. * Parameters: String * Returns: TRUE if operation succeeded, FALSE otherwise *****************************************************************************/ BOOLEAN MID_DTVCI_GetDevOrgName(U8BIT org_name[65]); /***************************************************************************** * CONDITIONAL ACCESS SUPPORT FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_GetCINumCaSystems * Description: Returns the number of CA systems * Parameters: * Returns: Number of CA systems the module supports ****************************************************************************/ U8BIT MID_DTVCI_GetCINumCaSystems(void); /***************************************************************************** * Function Name: MID_DTVCI_GetCICaSystem * Description: Returns the CA system ID for index * Parameters: index - specific one CA system ID * Returns: CA system ID ****************************************************************************/ U16BIT MID_DTVCI_GetCICaSystem(U8BIT index); /***************************************************************************** * Function Name: MID_DTVCI_PassPMT * Description: Pass current service's PMT to module * Parameters: pmt pointer * Returns: Nothing ****************************************************************************/ void MID_DTVCI_PassPMT(U8BIT *pmt); /***************************************************************************** * Function Name: MID_DTVCI_CheckCAService * Description: Check if the current service is a CA service or not. * Parameters: pmt pointer * Returns: TRUE for CA Service, FALSE for FTA service. ****************************************************************************/ BOOLEAN MID_DTVCI_CheckCAService(U8BIT *pmt); /***************************************************************************** * APPLICATION INFORAMTION FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_GetCIModuleName * Description: Returns a pointer to the string containing the name of the * module * Parameters: * Returns: Pointer to the string ****************************************************************************/ U8BIT * MID_DTVCI_GetCIModuleName(void); /***************************************************************************** * Function Name: MID_DTVCI_EnterCIMenu * Description: Sends enter menu message to the rlayer task * Parameters: * Returns: Nothing ****************************************************************************/ void MID_DTVCI_EnterCIMenu(void); /***************************************************************************** * Function Name: MID_DTVCI_EnterCAMChannel * Description: Sends enter CAM virtual channel to the rlayer task * Parameters: * Returns: Nothing ****************************************************************************/ void MID_DTVCI_EnterCAMChannel(void); /***************************************************************************** * Function Name: MID_DTVCI_Hds_Confirm * Description: Sends Hds confirm to the rlayer task * Parameters: * Returns: Nothing ****************************************************************************/ void MID_DTVCI_Hds_Confirm(void); /***************************************************************************** * Function Name: MID_DTVCI_CAMPowerDownNotice * Description: Sends enter CAM power down notice to the rlayer task * Parameters: * Returns: Nothing ****************************************************************************/ void MID_DTVCI_CAMPowerDownNotice(void); /***************************************************************************** * HIGH LEVEL MMI FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_SetCIMenuScreenResponse * Description: Called by the application to send the response to the menu * screen to the module * NB - This function will be called from the UI thread, and * not the CI thread. These threads may be executed on * different priorities, and hence some functionality in this * module may interrupt / be interrupted by other actions! * Parameters: response - entry number on list/menu or 0 for cancel * Returns: Nothing ****************************************************************************/ void MID_DTVCI_SetCIMenuScreenResponse(U8BIT response); /***************************************************************************** * Function Name: MID_DTVCI_SetCIEnquiryScreenResponse * Description: Called by the application this function sends a message to * the rlayer to indicate the response to the enquiry screen * NB - This function will be called from the UI thread, and * not the CI thread. These threads may be executed on * different priorities, and hence some functionality in this * module may interrupt / be interrupted by other actions! * Parameters: ok_cancel - TRUE for OK, FALSE for cancel * response_str_ptr - pointer to the response string * Returns: Nothing ****************************************************************************/ void MID_DTVCI_SetCIEnquiryScreenResponse( BOOLEAN ok_cancel, U8BIT * response_str_ptr); /***************************************************************************** * Function Name: MID_DTVCI_CloseCIScreen * Description: Called by the application to close the MMI session * NB - This function will be called from the UI thread, and * not the CI thread. These threads may be executed on * different priorities, and hence some functionality in this * module may interrupt / be interrupted by other actions! * Parameters: * Returns: Nothing ****************************************************************************/ void MID_DTVCI_CloseCIScreen(void); /***************************************************************************** * * Function Name: MID_DTVCI_CISetDisplayCharacterTables * * Description: Called by the application, this function sets the display * character tables supported by the receiver. * * The tables are provided as a single string containing the * prefix byte(s) of encoded text strings as defined in * annex A.2 of ETSI EN 300 468. * * For example, if ISO/IEC 8859-7 is supported by the receiver, * then text strings starting with 0x03 and with 0x10 0x00 0x07 * are supported. In this case the string would be * "\x03\x10\x00\x07". * * NB - This function will be called from the UI * thread, and not the CI thread. These threads * may be executed on different priorities, and * hence some functionality in this module may * interrupt / be interrupted by other actions! * * Parameters: tables - display character tables * len - number of bytes in the tables string * * Returns: Nothing * ****************************************************************************/ void MID_DTVCI_CISetDisplayCharacterTables(U8BIT *tables, U16BIT len); /***************************************************************************** * * Function Name: MID_DTVCI_CISetInputCharacterTables * * Description: Called by the application, this function sets the input * character tables supported by the receiver. * * The tables are provided as a single string containing the * prefix byte(s) of encoded text strings as defined in * annex A.2 of ETSI EN 300 468. * * For example, if ISO/IEC 8859-7 is supported by the receiver, * then text strings starting with 0x03 and with 0x10 0x00 0x07 * are supported. In this case the string would be * "\x03\x10\x00\x07". * * NB - This function will be called from the UI * thread, and not the CI thread. These threads * may be executed on different priorities, and * hence some functionality in this module may * interrupt / be interrupted by other actions! * * Parameters: tables - input character tables * len - number of bytes in the tables string * * Returns: Nothing * ****************************************************************************/ void MID_DTVCI_CISetInputCharacterTables(U8BIT *tables, U16BIT len); /***************************************************************************** * HOST CONTROL FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_CITuneReply * Description: This function is called by the host to send the status * of the tune operation to the module. * Parameters: status - tune operation status * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CITuneReply(E_STB_CI_TUNE_STATUS status); /***************************************************************************** * Function Name: MID_DTVCI_CITuneStatusReply * Description: This function is called by the host to send the status * of the tune operation to the module. * Parameters: status - tune operation status * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CITuneStatusReply(S_HC_TUNER_STATUS *status); /***************************************************************************** * APPLICATION MMI FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_GetAppMMIStatus * Description: Get current App MMI status * Parameters: * Returns: TRUE if App MMI is activated, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_GetAppMMIStatus(void); /***************************************************************************** * Function Name: MID_DTVCI_GetAppMMISSM * Description: Get current SSM value * Parameters: * Returns: 'Set Subtitle Mode' from Application MMI ****************************************************************************/ E_APPMMI_SSM MID_DTVCI_GetAppMMISSM(void); /***************************************************************************** * Function Name: MID_DTVCI_CIFileRequest * Description: Send a FileRequest message to the CI module. * Parameters: data - the file request message * length - length of file name * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIFileRequest(U8BIT * data, U32BIT length); /***************************************************************************** * Function Name: MID_DTVCI_CISendAppAbortRequest * Description: Send an AppAbortRequest message to the CI module. * Parameters: code - abort code for request * length - length of abort code * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CISendAppAbortRequest(U8BIT * code, U32BIT length); /***************************************************************************** * Function Name: MID_DTVCI_NotifyAppMMIStatus * Description: This function is called by MHEG middleware to indicate the * current Application MMI status * Parameters: AppMMI status * Returns: Nothing ****************************************************************************/ void MID_DTVCI_NotifyAppMMIStatus(E_APPMMI_STATE state); /***************************************************************************** * HOST COUNTRY AND LANGUAGE FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_CISetHostCountryCode * Description: This function is called by the host to notify the module * about new or updated country settings. * Parameters: code - country code as specified by ISO 3166 alpha-3 * Returns: Nothing ****************************************************************************/ BOOLEAN MID_DTVCI_CISetHostCountryCode(U8BIT * code); /***************************************************************************** * Function Name: MID_DTVCI_CISetHostLanguageCode * Description: This function is called by the host to notify the module * about new or updated language settings. * Parameters: code - language code as specified by ISO 639 Part 2 * Returns: Nothing ****************************************************************************/ BOOLEAN MID_DTVCI_CISetHostLanguageCode(U8BIT * code); /***************************************************************************** * CONTENT CONTROL ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_RecordStart * Description: This function is called by the host to inform the module * that a CA protected service is being recorded. * The host may also provide a CICAM PIN to be cached by * the module. This PIN will only be used for uninterrupted * recordings when a future Parental Control Event may occur. * The CICAM PIN is optional, and an empty string should be * provided if the CICAM PIN is not used. * Parameters: mode - recording mode * program_number - program number for recording * pin_data - ASCII encoding of PIN code (null-terminated) * status - return status for host. Check defined values * STB_CI_CC_STATUS_XXX. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_RecordStart( E_STB_CI_OPERATING_MODE mode, U16BIT program_number, U8BIT *pin_data, U8BIT *status); /***************************************************************************** * Function Name: MID_DTVCI_ChangeRecordMode * Description: This function is called by the host to tell the module that * recording operation mode is changed. * The module returns a status to the host. * Parameters: mode - recording mode * program_number - program number for recording * status - return status for host. Check defined values * STB_CI_CC_STATUS_XXX. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_ChangeRecordMode( E_STB_CI_OPERATING_MODE mode, U16BIT program_number, U8BIT *status); /***************************************************************************** * Function Name: MID_DTVCI_RecordStop * Description: This function is called by the host to inform the module * that the recording of a CA protected service has stopped. * The module returns a status to the host. * Parameters: program_number - program number for recording * status - return status for host. Check defined values * STB_CI_CC_STATUS_XXX. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_RecordStop( U16BIT program_number, U8BIT *status); /***************************************************************************** * Function Name: MID_DTVCI_GetLicensePlayCount * Description: This function is called by the host to request the module to * check the current status of the given recording license. * The function may be called in order to provide viewers * with information about the availability of a recording. * Parameters: license - the CICAM license * license_len - license length in bytes * play_count - return play count for host * license_status - return license status for host. Please * check defined values STB_CI_LICENSE_XXX * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_GetLicensePlayCount( U8BIT *license, U16BIT license_len, U8BIT *play_count, U8BIT *license_status); /***************************************************************************** * Function Name: MID_DTVCI_PlayAndUpdateLicense * Description: This function is called by the host to send the CICAM * license to the module. * The function must be called whenever the host plays back * content with an associated CICAM license. If the associated * license changes during playback, the host must call the * function again to send the correct license for the content. * If the license was updated, the new license will have the * same size as the original license. * Parameters: program_number - program number for recording * license - the CICAM license * license_len - license length in bytes * uri - return uri for host. * status - return status for host. Please check defined values * STB_CI_CC_STATUS_XXX. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_PlayAndUpdateLicense( U16BIT program_number, U8BIT *license, U16BIT license_len, S_STB_CI_URI *uri, U8BIT *status); void MID_DTVCI_UpdateLicense(U16BIT program_number, U8BIT * license, U16BIT license_len, S_STB_CI_URI * uri ); /***************************************************************************** * Function Name: MID_DTVCI_GetRating * Description: Get CAM rating. * Parameters: * Returns: rating from CAM. *****************************************************************************/ U8BIT MID_DTVCI_GetRating(void); /***************************************************************************** * Function Name: MID_DTVCI_SendPinMmiRequest * Description: This function is called by the host to send the module a * request to ask the user for a PIN. * Parameters: pin_data - ASCII encoding of PIN code (null-terminated) * status - return status for host. Please check defined values * STB_CI_CC_STATUS_XXX. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_SendPinMmiRequest( U8BIT *pin_data, E_STB_CI_PIN_STATUS *status); /***************************************************************************** * Function Name: MID_DTVCI_SendPinCmd * Description: This function is called by the host to send the CICAM PIN * to the module. * Parameters: pin_data - ASCII encoding of PIN code (null-terminated) * status - return status for host. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_SendPinCmd( U8BIT *pin_data, E_STB_CI_PIN_STATUS *status); /***************************************************************************** * Function Name: MID_DTVCI_SendPinPlayback * Description: This function is called by the host to send the information * from a PIN event during playback. * Parameters: rating - rating as recorded by the host * private_data - event private data (15 bytes) * status - return status for host. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_SendPinPlayback( U8BIT rating, U8BIT *private_data, E_STB_CI_PIN_STATUS *status); /***************************************************************************** * OPERATOR PROFILE ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_CIRequestOperatorStatus * Description: This function is called by the host to request an operator * status. * This function also signals to the CICAM that the host is * moving into the operator profile environment. * When the host exits the operator profile environment, it * should call STB_CISendOperatorExit. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIRequestOperatorStatus(void); /***************************************************************************** * Function Name: MID_DTVCI_CISendOperatorExit * Description: This function is called by the host to inform the CICAM * that it has left a profile_type=1 ("private") environment * and is operating in a different channel list or context. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CISendOperatorExit(void); /***************************************************************************** * Function Name: MID_DTVCI_CIRequestOperatorInfo * Description: This function is called by the host to query the operator * information. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIRequestOperatorInfo(void); /***************************************************************************** * Function Name: MID_DTVCI_CIRequestOperatorSearchStart * Description: This function is called by the host to initiate a profile * search sequence. Once this function is called, the host * hands over control over MMI and tuner to the CICAM. * When the search is complete, the CICAM sends a search status * through the function MID_DTVCI_CINotifyOperatorSearchStatus. * Parameters: info - search start parameters * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIRequestOperatorSearchStart(S_STB_CI_SEARCH_START_INFO *info); /***************************************************************************** * Function Name: MID_DTVCI_CIRequestOperatorNitManagement * Description: This function is called by the host to handle conflict LCN * Parameters: info - search start parameters * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIRequestOperatorNitManagement(S_STB_CI_OPERATOR_NIT_MANAGEMENT *info); /***************************************************************************** * Function Name: MID_DTVCI_CIRequestOperatorSearchCancel * Description: This function is called by the host to request that the * CICAM cancels the profile search sequence. * The CICAM should attempt to stop the current profile * search as quickly as possible. * Following the termination of the profile search, the function * STB_CINotifyOperatorSearchStatus should be called with * the error_flag set to STB_CI_OPERATOR_CANCELLED. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIRequestOperatorSearchCancel(void); /***************************************************************************** * Function Name: MID_DTVCI_CISendOperatorTuneStatus * Description: This function is called by the host to inform the CICAM * that a tune request (as part of a profile search) has * finished. * Parameters: status - operator tune status * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CISendOperatorTuneStatus(S_STB_CI_OPERATOR_TUNE_STATUS *status); /***************************************************************************** * Function Name: MID_DTVCI_CISendEntitlementAck * Description: This function is called by the host to inform the CICAM * that any change in the entitlement has been processed by * the host. * The CICAM will send an operator status message (through * the function MID_DTVCI_CINotifyOperatorStatus) with the * 'entitlement_change_flag' field cleared. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CISendEntitlementAck(void); /***************************************************************************** * Function Name: MID_DTVCI_CIRequestOperatorNit * Description: This function is called by the host to query the current * NIT (Network Information Table). It should be called after * the CICAM indicates that it is initialised, using the * operator status notification or using an operator search * status notification. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CIRequestOperatorNit(void); /***************************************************************************** * Function Name: MID_DTVCI_ProfileScheduleUpdate * Description: This function is called by the host to query the current * Parameters: seconds - Ask profile to resend operator info in order to execute scheduled update * Returns: Nothing ****************************************************************************/ void MID_DTVCI_ProfileScheduleUpdate(U32BIT seconds); /***************************************************************************** * Function Name: MID_DTVCI_CIIsOpStatusReceived * Description: This function is for waitting CAM be Authenticated,then can perform OP,otherwise Authentication will fail * Parameters: * Returns: ****************************************************************************/ BOOLEAN MID_DTVCI_CIIsOpStatus(void); void *MID_DTVCI_CIIsOpStatusReceived(void); void MID_DTVCI_CIClearOpStatusReceived(void); /***************************************************************************** * SPECIFIC APPLICATION SUPPORT (SAS) FUNCTIONS ****************************************************************************/ /***************************************************************************** * Function Name: MID_DTVCI_RequestSasConnection * Description: This function is used by the host to request a connection * to the application part on the module. * When the module responds to this request, the CI+ stack * will call STB_CIConfirmSasConnection with the session * status. * If the connection was been created successfully, the module * should also open another session to the SAS resource, in * which case the CI+ stack will call STB_CINotifySasSession. * Parameters: app_id - the private host application ID (64 bits) * Note: The value of OIPF_APPLICATION_ID is 0x0108113101190000 * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_RequestSasConnection(U8BIT *app_id); /***************************************************************************** * Function Name: MID_DTVCI_CloseSasConnection * Description: This function is used by the host to close an open connection * to the application part on the module. * Parameters: * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_CloseSasConnection(void); /***************************************************************************** * Function Name: MID_DTVCI_OipfSendMsg * Description: This function is used by the host to send a message to * the module using the SAS resource. * The function sends the "send_msg" message. This message * is described in the OIPF CSP specification as part of * the HNI-CSP interface. It is mapped to the DAE API * sendDRMMessage. * The host must generate a transaction ID in order to * match the replies from the module with the corresponding * request. The value should be incremented modulo 2^32 * by the host. * Parameters: module - SAS module * ca_system_id - CA system ID * transaction_id - transaction ID * ca_info - CA vendor specific information * ca_info_len - length of information in bytes (max=65000) * Note: This is an OIPF-specific function. * Returns: TRUE if operation succeeded, FALSE otherwise ****************************************************************************/ BOOLEAN MID_DTVCI_OipfSendMsg(U16BIT ca_system_id, U32BIT transaction_id, U8BIT *ca_info, U16BIT ca_info_len); /***************************************************************************** * Function Name: MID_DTVCI_get_cam_id * Description: This function is used by the host to get cam brand id * Parameters: None * Note: * Returns: cam brand id ****************************************************************************/ U16BIT MID_DTVCI_get_cam_id(void); /***************************************************************************** * Function Name: MID_DTVCI_PlaybackApplyURI * Description: This function is used by the host when playbaking recorded content to aplly recorded URI * Parameters: sid - program number, currently unused * uri - recorded uri to be apply during playback * Note: * Returns: None ****************************************************************************/ void MID_DTVCI_PlaybackApplyURI(U16BIT sid, S_STB_CI_URI *uri); /***************************************************************************** * Function Name: MID_DTVCI_PlaybackNotifyEMI * Description: This function is used by the host when playbaking recorded content to notify recorded URI's EMI * Parameters: sid - program number, currently unused * uri - recorded uri to be apply during playback * Note: * Returns: None ****************************************************************************/ void MID_DTVCI_PlaybackNotifyEMI(U16BIT sid, S_STB_CI_URI * uri); /***************************************************************************** * Function Name: MID_DTVCI_CIGetCurrentURI * Description: This function is called by the host when starting record ciplus * protected content to get default URI setting * Parameters: uri - address of uri structure to be stored * Note: * Returns: None ****************************************************************************/ void MID_DTVCI_CIGetCurrentURI(S_STB_CI_URI *uri); /***************************************************************************** * Function Name: MID_DTVCI_GetContentControlVersion * Description: Obtain contetn control version * Parameters: none * Note: * Returns: CIPLUS contetn control version ****************************************************************************/ U8BIT MID_DTVCI_GetContentControlVersion(void); /***************************************************************************** * Function Name: MID_DTVCI_IsCAMFirmwareUpgrading * Description: Check if CAM Firmware is upgrading or not. * Parameters: none * Note: * Returns: TRUE or FALSE. Block All IR keys (except Power/Standby) if TRUE. ****************************************************************************/ BOOLEAN MID_DTVCI_IsCAMFirmwareUpgrading(void); /***************************************************************************** * Function Name: MID_DTVCI_GetPassThroughState * Description: get pass through CAM. * Parameters: S_CI_Protection_t, bChannelScramble * Note: * Returns: PassThroughState ****************************************************************************/ U8BIT MID_DTVCI_GetPassThroughState(S_CI_Protection_t *pCIProtection,U8BIT bChannelScramble);// for Cached data present void MID_DTVCI_SetServiceIsBISS(U8BIT IsBISSService); #endif /* __MID_DTVCI_H__ */