8 uint16_t CardDeactTime
;
25 CNXT_SMC_CONV_DIRECT
= 0,
26 CNXT_SMC_CONV_INVERSE
,
27 CNXT_SMC_CONV_LAST
= CNXT_SMC_CONV_INVERSE
28 } CNXT_SMC_CONVENTION
;
32 CNXT_SMC_CONVENTION convention
;
40 uint8_t historical
[15];
42 CNXT_SMC_RETRIES retries
;
43 uint8_t filterprotocolbytes
;
48 uint8_t *pStartAddress
;
50 uint8_t *pWriteAddress
;
51 uint8_t *pReadAddress
;
54 /* These functions are implemented in libnxp and are used in coolstream */
55 int32_t cnxt_cbuf_init(void *);
56 int32_t cnxt_cbuf_get_used(void *buffer
, uint32_t * bytes_used
);
57 int32_t cnxt_cbuf_attach(void *handle
, int32_t type
, void * channel
);
58 int32_t cnxt_cbuf_detach(void *handle
, int32_t type
, void * channel
);
59 int32_t cnxt_cbuf_close(void * handle
);
60 int32_t cnxt_cbuf_read_data(void * handle
, void *buffer
, uint32_t size
, uint32_t * ret_size
);
61 int32_t cnxt_cbuf_flush(void * handle
, int);
62 int32_t cnxt_cbuf_removed_data(void *handle
, uint32_t bytes
);
63 int32_t cnxt_cbuf_get_pointers(void *handle
, CNXT_CBUF_POINTERS
*buffer_pointers
);
65 void cnxt_kal_initialize(void);
66 void cnxt_kal_terminate(void);
67 void cnxt_drv_init(void);
68 void cnxt_drv_term(void);
70 int32_t cnxt_dmx_init(void *);
71 int32_t cnxt_dmx_close(void * handle
);
72 int32_t cnxt_dmx_channel_close(void * channel
);
73 int32_t cnxt_dmx_open_filter(void * handle
, void *flt
);
74 int32_t cnxt_dmx_close_filter(void * filter
);
75 int32_t cnxt_dmx_channel_attach(void * channel
, int32_t param1
, int32_t param2
, void * buffer
);
76 int32_t cnxt_dmx_channel_detach(void * channel
, int32_t param1
, int32_t param2
, void * buffer
);
77 int32_t cnxt_dmx_channel_attach_filter(void * channel
, void * filter
);
78 int32_t cnxt_dmx_channel_detach_filter(void * channel
, void * filter
);
79 int32_t cnxt_dmx_set_channel_buffer(void * channel
, int32_t param1
, void * buffer
);
80 int32_t cnxt_dmx_set_channel_pid(void * channel
, uint32_t pid
);
81 int32_t cnxt_dmx_get_channel_from_pid(void * device
, uint16_t pid
, void * channel
);
82 int32_t cnxt_dmx_set_channel_key(void * channel
, int32_t param1
, uint32_t parity
, unsigned char *cw
, uint32_t len
);
83 int32_t cnxt_dmx_channel_ctrl(void * channel
, int32_t param1
, int32_t param2
);
85 int32_t cnxt_smc_init(void *);
87 int32_t cnxt_smc_open(void *cool_handle
, int32_t *, void *, void *);
88 int32_t cnxt_smc_enable_flow_control(void *cool_handle
, int32_t enable
);
89 int32_t cnxt_smc_get_state(void *cool_handle
, int32_t *state
);
90 int32_t cnxt_smc_get_clock_freq(void *cool_handle
, uint32_t *clk
);
91 int32_t cnxt_smc_reset_card(void *cool_handle
, int32_t timeout
, void *, void *);
92 int32_t cnxt_smc_get_atr(void *cool_handle
, unsigned char *buf
, int32_t *buflen
);
93 int32_t cnxt_smc_get_comm_parameters(void *cool_handle
, CNXT_SMC_COMM
*comm
);
94 int32_t cnxt_smc_get_config_timeout(void *cool_handle
, CNXT_SMC_TIMEOUT
*timeout
);
95 int32_t cnxt_smc_set_config_timeout(void *cool_handle
, CNXT_SMC_TIMEOUT timeout
);
96 int32_t cnxt_smc_set_convention(void *cool_handle
, CNXT_SMC_CONVENTION conv
);
97 int32_t cnxt_smc_start_pps(void *cool_handle
, uint8_t *params
, uint8_t *response
, uint8_t *len
, int32_t setfd
);
98 int32_t cnxt_smc_get_F_D_factors(void *cool_handle
, uint16_t *F
, uint8_t *D
);
99 int32_t cnxt_smc_set_F_D_factors(void *cool_handle
, uint16_t F
, uint8_t D
);
100 int32_t cnxt_smc_read_write(void *cool_handle
, int8_t async
, uint8_t *sent
, uint32_t size
, uint8_t *cardbuffer
, uint32_t *cardbuflen
, int32_t rw_timeout
, void *tag
);
101 int32_t cnxt_smc_set_clock_freq(void *cool_handle
, int32_t clk
);
102 int32_t cnxt_smc_set_filter_protocol_bytes(void *cool_handle
, int32_t enable
);
103 int32_t cnxt_smc_close(void *cool_handle
);
106 #define CNXT_STATUS_ERRORS 108
107 static const char* const cnxt_status
[CNXT_STATUS_ERRORS
] = {
161 "HARDWARE_NOT_FOUND",
165 "INCOMPATIBLE_FORMATS",
172 "NO_DESTINATION_BUF",
176 "RECEIVER_HDMI_INCAPABLE",
177 "RECEIVER_NOT_ATTACHED",
183 "FIXUP_OPTION_ERROR",
185 "UNABLE_TO_FIXUP_AND_PRESERVE",
197 "SERVICE_LIST_NOT_READY",
198 "SERVICE_LIST_READY",
208 "MAX_FILTERS_ATTACHED",
218 #define coolapi_check_error(label, ret) \
221 cs_log("[%s:%d] %s: API ERROR %d (%s%s)", \
226 ret > CNXT_STATUS_ERRORS ? "UNKNOWN" : "CNXT_STATUS_", \
227 ret > CNXT_STATUS_ERRORS ? "" : cnxt_status[ret] \
232 #if defined(HAVE_DVBAPI) && (defined(WITH_COOLAPI) || defined(WITH_SU980) || defined(WITH_COOLAPI2))
233 extern void coolapi_open_all(void);
234 extern void coolapi_close_all(void);
236 static inline void coolapi_open_all(void) { }
237 static inline void coolapi_close_all(void) { }