/* * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de * * See the COPYING file for copyright information and * how to reach the author. * */ #define ntohs16(data) ((u_int16_t)data[0]<<8 | (u_int16_t)data[1]) typedef struct { u_int16_t len; u_int8_t *data; } ci_pdu_t; typedef struct { u_int8_t slot; u_int8_t tcid; u_int32_t length; u_int8_t *data; } ci_ll_t; typedef struct { ci_ll_t *ll; u_int8_t c_tpdu_tag; u_int32_t length; u_int8_t tcid; u_int8_t *data; } ci_tl_t; typedef struct { ci_tl_t *tl; u_int8_t tag; u_int32_t length; u_int32_t object_value; u_int8_t *data; } ci_sl_t; typedef struct { ci_sl_t *sl; u_int32_t tag; u_int32_t length; u_int8_t *data; } ci_al_t; typedef struct { u_int16_t ca_id; u_int16_t ca_pid; } ca_desc_t; typedef struct { u_int8_t stream_type; u_int16_t pid; u_int16_t es_info_length; u_int8_t ca_pmt_cmd_id; ca_desc_t *cadescr; } pidinfo_t; typedef struct { u_int8_t ca_pmt_list_management; u_int16_t program_number; u_int8_t version_number; u_int8_t current_next; u_int16_t program_info_length; u_int8_t ca_pmt_cmd_id; ca_desc_t *cadescr; pidinfo_t *pidinfo; } ca_pmt_t; typedef struct { u_int16_t pid; u_int8_t ca_enable; } pid_ca_enable_t; typedef struct { u_int16_t program_number; u_int8_t version_number; u_int8_t current_next; u_int8_t ca_enable; pid_ca_enable_t *pidcaenable; } ca_pmt_reply_t; #define LENGTH_SIZE_INDICATOR 0x80 #define CPLM_MORE 0x00 #define CPLM_FIRST 0x01 #define CPLM_LAST 0x02 #define CPLM_ONLY 0x03 #define CPLM_ADD 0x04 #define CPLM_UPDATE 0x05 #define CPCI_OK_DESCRAMBLING 0x01 #define CPCI_OK_MMI 0x02 #define CPCI_QUERY 0x03 #define CPCI_NOT_SELECTED 0x04 #define AOT_CA_INFO_ENQ 0x9F8030 #define AOT_CA_INFO 0x9F8031 #define AOT_CA_PMT 0x9F8032 #define AOT_CA_PMT_REPLY 0x9F8033 #define ST_SESSION_NUMBER 0x90 #define ST_OPEN_SESSION_REQUEST 0x91 #define ST_OPEN_SESSION_RESPONSE 0x92 #define ST_CREATE_SESSION 0x93 #define ST_CREATE_SESSION_RESPONSE 0x94 #define ST_CLOSE_SESSION_REQUEST 0x95 #define ST_CLOSE_SESSION_RESPONSE 0x96 #define DATA_INDICATOR 0x80 #define T_SB 0x80 #define T_RCV 0x81 #define T_CREATE_TC 0x82 #define T_CTC_REPLY 0x83 #define T_DELETE_TC 0x84 #define T_DTC_REPLY 0x85 #define T_REQUEST_TC 0x86 #define T_NEW_TC 0x87 #define T_TC_ERROR 0x88 #define T_DATA_LAST 0xA0 #define T_DATA_MORE 0xA1 DLL_SYMBOL int ci_cpl_find_caid_by_pid (int pid); DLL_SYMBOL int ci_cpl_find_slot_by_caid_and_pid (int caid, int pid); DLL_SYMBOL int ci_cpl_clear (int slot); DLL_SYMBOL int ci_cpl_clear_pids (int slot); DLL_SYMBOL int ci_cpl_clear_caids (int slot); DLL_SYMBOL int ci_cpl_clear_capids (int slot); DLL_SYMBOL int ci_decode_ll (uint8_t * data, int len);