|
@@ -96,7 +96,7 @@ static int camd35_recv(struct camd35 *c, uint8_t *data, int *data_len) {
|
96
|
96
|
|
97
|
97
|
static int camd35_recv_cw(struct ts *ts) {
|
98
|
98
|
struct camd35 *c = &ts->camd35;
|
99
|
|
- struct timeval tv1, tv2;
|
|
99
|
+ struct timeval tv1, tv2, last_ts_keyset;
|
100
|
100
|
static uint8_t invalid_cw[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
101
|
101
|
uint8_t *data = c->buf;
|
102
|
102
|
int data_len = 0;
|
|
@@ -142,16 +142,26 @@ READ:
|
142
|
142
|
|
143
|
143
|
char cw_dump[16 * 6];
|
144
|
144
|
ts_hex_dump_buf(cw_dump, 16 * 6, cw, 16, 0);
|
145
|
|
- ts_LOGf("CW | CAID: 0x%04x [ %5llu ms ] --------------------- IDX: 0x%04x Data: %s\n",
|
146
|
|
- ca_id, timeval_diff_msec(&tv1, &tv2), idx, cw_dump );
|
147
|
145
|
|
148
|
|
- c->key->ts = time(NULL);
|
149
|
146
|
c->key->is_valid_cw = memcmp(c->key->cw, invalid_cw, 16) != 0;
|
150
|
|
- dvbcsa_key_set(c->key->cw , c->key->csakey[0]);
|
151
|
|
- dvbcsa_key_set(c->key->cw + 8, c->key->csakey[1]);
|
152
|
147
|
|
153
|
|
- dvbcsa_bs_key_set(c->key->cw , c->key->bs_csakey[0]);
|
154
|
|
- dvbcsa_bs_key_set(c->key->cw + 8, c->key->bs_csakey[1]);
|
|
148
|
+ // At first ts_keyset is not initialized
|
|
149
|
+ last_ts_keyset = c->key->ts_keyset;
|
|
150
|
+ if (c->key->is_valid_cw) {
|
|
151
|
+ gettimeofday(&c->key->ts_keyset, NULL);
|
|
152
|
+ c->key->ts = c->key->ts_keyset.tv_sec;
|
|
153
|
+
|
|
154
|
+ dvbcsa_key_set(c->key->cw , c->key->csakey[0]);
|
|
155
|
+ dvbcsa_key_set(c->key->cw + 8, c->key->csakey[1]);
|
|
156
|
+
|
|
157
|
+ dvbcsa_bs_key_set(c->key->cw , c->key->bs_csakey[0]);
|
|
158
|
+ dvbcsa_bs_key_set(c->key->cw + 8, c->key->bs_csakey[1]);
|
|
159
|
+ }
|
|
160
|
+
|
|
161
|
+ ts_LOGf("CW | CAID: 0x%04x [ %5llu ms ] ( %6llu ms ) ------- IDX: 0x%04x Data: %s\n",
|
|
162
|
+ ca_id, timeval_diff_msec(&tv1, &tv2),
|
|
163
|
+ timeval_diff_msec(&last_ts_keyset, &tv2),
|
|
164
|
+ idx, cw_dump );
|
155
|
165
|
|
156
|
166
|
return ret;
|
157
|
167
|
}
|