|
@@ -115,9 +115,9 @@ static int camd_recv_cw(struct ts *ts) {
|
115
|
115
|
|
116
|
116
|
#undef ERR
|
117
|
117
|
|
118
|
|
-static int camd_send_ecm(struct ts *ts, uint16_t ca_id, uint16_t service_id, uint8_t *data, uint8_t data_len) {
|
|
118
|
+static int camd_send_ecm(struct ts *ts, struct camd_msg *msg) {
|
119
|
119
|
struct camd *c = &ts->camd;
|
120
|
|
- int ret = c->ops.do_ecm(c, ca_id, service_id, data, data_len);
|
|
120
|
+ int ret = c->ops.do_ecm(c, msg);
|
121
|
121
|
if (ret <= 0) {
|
122
|
122
|
ts_LOGf("ERR | Error sending ecm packet, reconnecting to camd.\n");
|
123
|
123
|
ts->is_cw_error = 1;
|
|
@@ -140,9 +140,9 @@ static int camd_send_ecm(struct ts *ts, uint16_t ca_id, uint16_t service_id, uin
|
140
|
140
|
return ret;
|
141
|
141
|
}
|
142
|
142
|
|
143
|
|
-static int camd_send_emm(struct ts *ts, uint16_t ca_id, uint16_t service_id, uint8_t *data, uint8_t data_len) {
|
|
143
|
+static int camd_send_emm(struct ts *ts, struct camd_msg *msg) {
|
144
|
144
|
struct camd *c = &ts->camd;
|
145
|
|
- int ret = c->ops.do_emm(c, ca_id, service_id, data, data_len);
|
|
145
|
+ int ret = c->ops.do_emm(c, msg);
|
146
|
146
|
if (ret < 0) {
|
147
|
147
|
c->emm_recv_errors++;
|
148
|
148
|
if (c->emm_recv_errors >= EMM_RECV_ERRORS_LIMIT) {
|
|
@@ -159,30 +159,21 @@ static int camd_send_emm(struct ts *ts, uint16_t ca_id, uint16_t service_id, uin
|
159
|
159
|
static void camd_do_msg(struct camd_msg *msg) {
|
160
|
160
|
if (msg->type == EMM_MSG) {
|
161
|
161
|
msg->ts->emm_seen_count++;
|
162
|
|
- if (camd_send_emm(msg->ts, msg->ca_id, msg->service_id, msg->data, msg->data_len) > 0)
|
|
162
|
+ if (camd_send_emm(msg->ts, msg) > 0)
|
163
|
163
|
msg->ts->emm_processed_count++;
|
164
|
164
|
}
|
165
|
165
|
if (msg->type == ECM_MSG) {
|
166
|
166
|
msg->ts->ecm_seen_count++;
|
167
|
|
- if (camd_send_ecm(msg->ts, msg->ca_id, msg->service_id, msg->data, msg->data_len) > 0)
|
|
167
|
+ if (camd_send_ecm(msg->ts, msg) > 0)
|
168
|
168
|
msg->ts->ecm_processed_count++;
|
169
|
169
|
}
|
170
|
170
|
|
171
|
171
|
camd_msg_free(&msg);
|
172
|
172
|
}
|
173
|
173
|
|
174
|
|
-struct camd_msg *camd_msg_alloc_emm(uint16_t ca_id, uint8_t *data, uint8_t data_len) {
|
|
174
|
+struct camd_msg *camd_msg_alloc(enum msg_type msg_type, uint16_t ca_id, uint16_t service_id, uint8_t *data, uint8_t data_len) {
|
175
|
175
|
struct camd_msg *c = calloc(1, sizeof(struct camd_msg));
|
176
|
|
- c->type = EMM_MSG;
|
177
|
|
- c->ca_id = ca_id;
|
178
|
|
- c->data_len = data_len;
|
179
|
|
- memcpy(c->data, data, data_len);
|
180
|
|
- return c;
|
181
|
|
-}
|
182
|
|
-
|
183
|
|
-struct camd_msg *camd_msg_alloc_ecm(uint16_t ca_id, uint16_t service_id, uint8_t *data, uint8_t data_len) {
|
184
|
|
- struct camd_msg *c = calloc(1, sizeof(struct camd_msg));
|
185
|
|
- c->type = ECM_MSG;
|
|
176
|
+ c->type = msg_type;
|
186
|
177
|
c->ca_id = ca_id;
|
187
|
178
|
c->service_id = service_id;
|
188
|
179
|
c->data_len = data_len;
|
|
@@ -217,7 +208,7 @@ static void *camd_thread(void *in_ts) {
|
217
|
208
|
pthread_exit(EXIT_SUCCESS);
|
218
|
209
|
}
|
219
|
210
|
|
220
|
|
-void camd_msg_process(struct ts *ts, struct camd_msg *msg) {
|
|
211
|
+void camd_process_packet(struct ts *ts, struct camd_msg *msg) {
|
221
|
212
|
msg->ts = ts;
|
222
|
213
|
if (ts->camd.thread) {
|
223
|
214
|
if (msg->type == EMM_MSG)
|