4 void cw_process_thread_start(void);
5 void cw_process_thread_wakeup(void);
7 void convert_to_beta(struct s_client
*cl
, ECM_REQUEST
*er
, uint16_t caidto
);
8 void convert_to_nagra(struct s_client
*cl
, ECM_REQUEST
*er
, uint16_t caidto
);
10 int32_t write_ecm_answer(struct s_reader
*reader
, ECM_REQUEST
*er
, int8_t rc
, uint8_t rcEx
, uint8_t *cw
, char *msglog
, uint16_t used_cardtier
, EXTENDED_CW
* cw_ex
);
12 void get_cw(struct s_client
*, ECM_REQUEST
*);
14 void update_chid(ECM_REQUEST
*ecm
);
15 uint32_t get_subid(ECM_REQUEST
*er
);
16 uint32_t chk_provid(uint8_t *ecm
, uint16_t caid
);
18 int32_t send_dcw(struct s_client
*client
, ECM_REQUEST
*er
);
19 void free_ecm(ECM_REQUEST
*ecm
);
20 void free_push_in_ecm(ECM_REQUEST
*ecm
);
21 void write_ecm_answer_fromcache(struct s_write_from_cache
*wfc
);
22 void fallback_timeout(ECM_REQUEST
*er
);
23 void ecm_timeout(ECM_REQUEST
*er
);
24 void reader_get_ecm(struct s_reader
*reader
, ECM_REQUEST
*er
);
25 ECM_REQUEST
*get_ecmtask(void);
26 struct s_ecm_answer
*get_ecm_answer(struct s_reader
*reader
, ECM_REQUEST
*er
);
27 void cleanup_ecmtasks(struct s_client
*cl
);
28 void remove_reader_from_ecm(struct s_reader
*rdr
);
30 void chk_dcw(struct s_ecm_answer
*ea
);
31 void request_cw_from_readers(ECM_REQUEST
*er
, uint8_t stop_stage
);
33 void checkCW(ECM_REQUEST
*er
);
34 uint8_t checkCWpart(uint8_t *cw
, int8_t part
);
36 #define debug_ecm(mask, args...) \
38 if (config_enabled(WITH_DEBUG) && ((mask) & cs_dblevel)) { \
39 char buf[ECM_FMT_LEN]; \
40 format_ecm(er, buf, ECM_FMT_LEN); \
41 cs_log_dbg(mask, ##args); \
45 int32_t ecmfmt(char *result
, size_t size
, uint16_t caid
, uint16_t onid
, uint32_t prid
, uint16_t chid
, uint16_t pid
,
46 uint16_t srvid
, uint16_t l
, char *ecmd5hex
, char *csphash
, char *cw
, uint16_t origin_peer
, uint8_t distance
, char *payload
, char *tier
);
48 int32_t format_ecm(ECM_REQUEST
*ecm
, char *result
, size_t size
);