Merge pull request #84 from perexg/fixes-emm
cwc: improve EMM handling for multiple readers with same CAS system
This commit is contained in:
commit
5777a1fe30
3 changed files with 8 additions and 6 deletions
|
@ -1188,14 +1188,15 @@ cwc_emm_cache_lookup(cwc_t *cwc, uint32_t crc)
|
|||
*
|
||||
*/
|
||||
void
|
||||
cwc_emm(uint8_t *data, int len)
|
||||
cwc_emm(uint8_t *data, int len, uint16_t caid)
|
||||
{
|
||||
cwc_t *cwc;
|
||||
|
||||
pthread_mutex_lock(&cwc_mutex);
|
||||
|
||||
TAILQ_FOREACH(cwc, &cwcs, cwc_link) {
|
||||
if(cwc->cwc_forward_emm && cwc->cwc_writer_running) {
|
||||
if(cwc->cwc_caid == caid &&
|
||||
cwc->cwc_forward_emm && cwc->cwc_writer_running) {
|
||||
switch (cwc->cwc_card_type) {
|
||||
case CARD_CONAX:
|
||||
cwc_emm_conax(cwc, data, len);
|
||||
|
|
|
@ -23,6 +23,6 @@ void cwc_init(void);
|
|||
|
||||
void cwc_service_start(struct service *t);
|
||||
|
||||
void cwc_emm(uint8_t *data, int len);
|
||||
void cwc_emm(uint8_t *data, int len, uint16_t caid);
|
||||
|
||||
#endif /* CWC_H_ */
|
||||
|
|
|
@ -828,7 +828,7 @@ static int
|
|||
dvb_ca_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
||||
uint8_t tableid, void *opaque)
|
||||
{
|
||||
cwc_emm(ptr, len);
|
||||
cwc_emm(ptr, len, (uintptr_t)opaque);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -841,6 +841,7 @@ dvb_cat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
{
|
||||
int tag, tlen;
|
||||
uint16_t pid;
|
||||
uintptr_t caid;
|
||||
|
||||
if((ptr[2] & 1) == 0) {
|
||||
/* current_next_indicator == next, skip this */
|
||||
|
@ -856,13 +857,13 @@ dvb_cat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
len -= 2;
|
||||
switch(tag) {
|
||||
case DVB_DESC_CA:
|
||||
// caid = ( ptr[0] << 8) | ptr[1];
|
||||
caid = ( ptr[0] << 8) | ptr[1];
|
||||
pid = ((ptr[2] & 0x1f) << 8) | ptr[3];
|
||||
|
||||
if(pid == 0)
|
||||
break;
|
||||
|
||||
tdt_add(tdmi, NULL, dvb_ca_callback, NULL, "CA",
|
||||
tdt_add(tdmi, NULL, dvb_ca_callback, (void *)caid, "CA",
|
||||
TDT_INC_TABLE_HDR, pid, NULL);
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue