Attempt to count descramblers used properly
[oscam.git] / reader-common.h
blob07605a2187d449eca5a9c8c8ab061891d28b7e7b
1 #ifndef READER_COMMON_H_
2 #define READER_COMMON_H_
4 //Warning: OK = 0 and ERROR = 1 in csctapi !!!
5 #define SKIPPED 2
6 #define OK 1
7 #define ERROR 0
9 #include "csctapi/atr.h"
10 #include "oscam-string.h"
11 #include "oscam-reader.h"
13 int32_t reader_cmd2icc(struct s_reader *reader, const uint8_t *buf, const int32_t l, uint8_t *response, uint16_t *response_length);
14 int32_t card_write(struct s_reader *reader, const uint8_t *, const uint8_t *, uint8_t *, uint16_t *);
16 #define write_cmd(cmd, data) \
17 { \
18 if (card_write(reader, cmd, data, cta_res, &cta_lr)) return ERROR; \
21 #define get_atr \
22 uint8_t atr[ATR_MAX_SIZE]; \
23 uint32_t atr_size; \
24 memset(atr, 0, sizeof(atr)); \
25 ATR_GetRaw(newatr, atr, &atr_size);
27 #define get_atr2 \
28 uint8_t atr2[ATR_MAX_SIZE]; \
29 uint32_t atr_size2; \
30 memset(atr2, 0, sizeof(atr2)); \
31 ATR_GetRaw(newatr, atr2, &atr_size2);
33 #define get_hist \
34 uint8_t hist[ATR_MAX_HISTORICAL]; \
35 uint32_t hist_size = 0; \
36 ATR_GetHistoricalBytes(newatr, hist, &hist_size);
38 #define def_resp \
39 uint8_t cta_res[CTA_RES_LEN]; \
40 memset(cta_res, 0, CTA_RES_LEN); \
41 uint16_t cta_lr;
43 #ifdef WITH_CARDREADER
44 void cardreader_init_locks(void);
45 bool cardreader_init(struct s_reader *reader);
46 void cardreader_close(struct s_reader *reader);
47 void cardreader_do_reset(struct s_reader *reader);
48 void cardreader_reset(struct s_client *cl);
49 int32_t cardreader_do_checkhealth(struct s_reader *reader);
50 void cardreader_checkhealth(struct s_client *cl, struct s_reader *rdr);
51 int32_t cardreader_do_emm(struct s_reader *reader, EMM_PACKET *ep);
52 void cardreader_process_ecm(struct s_reader *reader, struct s_client *cl, ECM_REQUEST *er);
53 void cardreader_get_card_info(struct s_reader *reader);
54 void cardreader_poll_status(struct s_reader *reader);
55 int32_t check_sct_len(const uint8_t *data, int32_t off);
56 #else
57 static inline void cardreader_init_locks(void) { }
58 static inline bool cardreader_init(struct s_reader *UNUSED(reader))
60 return true;
62 static inline void cardreader_close(struct s_reader *UNUSED(reader)) { }
63 static inline void cardreader_do_reset(struct s_reader *UNUSED(reader))
65 return;
67 static inline void cardreader_reset(struct s_client *UNUSED(cl)) { }
68 static inline int32_t cardreader_do_checkhealth(struct s_reader *UNUSED(reader))
70 return false;
72 static inline void cardreader_checkhealth(struct s_client *UNUSED(cl), struct s_reader *UNUSED(rdr)) { }
73 static inline int32_t cardreader_do_emm(struct s_reader *UNUSED(reader), EMM_PACKET *UNUSED(ep))
75 return 0;
77 static inline void cardreader_process_ecm(struct s_reader *UNUSED(reader), struct s_client *UNUSED(cl), ECM_REQUEST *UNUSED(er)) { }
78 static inline void cardreader_get_card_info(struct s_reader *UNUSED(reader)) { }
79 static inline void cardreader_poll_status(struct s_reader *UNUSED(reader)) { }
80 #endif
82 #endif