msg->cm_adapter = adapter;
msg->cm_sid = sid;
if (flags & CAPMT_MSG_FAST)
+ {
TAILQ_INSERT_HEAD(&capmt->capmt_writeq, msg, cm_link);
+ }
else
- TAILQ_INSERT_TAIL(&capmt->capmt_writeq, msg, cm_link);
+ {
+ TAILQ_INSERT_TAIL(&capmt->capmt_writeq, msg, cm_link);
+ }
tvh_write(capmt->capmt_pipe.wr, "c", 1);
}
cad.cad_length = 0x07;
cad.cad_data[5] = cce2->cce_providerid >> 8;
cad.cad_data[6] = cce2->cce_providerid & 0xff;
- } else if (cce2->cce_caid >> 8 == 0x4a) {
- cad.cad_length = 0x05;
- cad.cad_data[4] = cce2->cce_providerid & 0xff;
- } else
+ } else if (cce2->cce_caid == 0x4ad2) {
+ cad.cad_length = 0x04;
+ cad.cad_data[3] = cce2->cce_providerid & 0xffffff;
+ }else if (cce2->cce_caid >> 8 == 0x4a && cce2->cce_caid!=0x4ad2) {
+ cad.cad_length = 0x05;
+ cad.cad_data[4] = cce2->cce_providerid & 0xff;
+ }else
tvhlog(LOG_WARNING, "capmt", "Unknown CAID type, don't know where to put provider ID");
}
memcpy(&buf[pos], &cad, cad.cad_length + 2);
void cwc_emm_nds(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len);
void cwc_emm_cryptoworks(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len);
void cwc_emm_bulcrypt(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len);
-
+void cwc_emm_streamguard(cwc_t *cwc, struct cs_card_data *pcard,const uint8_t *data, int len);//add by sangood
/**
*
case CARD_BULCRYPT:
cwc_emm_bulcrypt(cwc, pcard, data, len);
break;
+ case CARD_STREAMGUARD:
+ cwc_emm_streamguard(cwc, pcard, data, len);
+ break;
case CARD_UNKNOWN:
break;
}
if (match)
cwc_send_msg(cwc, data, len, 0, 1, 0, 0);
}
+/**
+ * streamguard emm handler
+ */
+void
+cwc_emm_streamguard(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len)
+{
+ //sangood todo
+ int match = 1;
+ tvhlog(LOG_INFO, "cwc", "cwc_emm_streamguard streamguard card data emm get,here lots of works todo...");
+ if (match)
+ cwc_send_msg(cwc, data, len, 0, 1, 0, 0);
+}
void
cwc_emm_cryptoworks(cwc_t *cwc, struct cs_card_data *pcard, const uint8_t *data, int len)
i += nanolen;
}
break;
- case 0x4a00://DRECrypt
- if (caid != 0x4aee) { // Bulcrypt
+ case 0x4a00://DRECrypt or streamguard
+ if (caid==0x4ad2) {
+ provid=0;
+ }
+ if (caid != 0x4aee && caid!=0x4ad2) { // Bulcrypt
provid = size < 4 ? 0 : buffer[4];
- break;
- }
+ }
+ break;
default:
provid = 0;
break;
case 0x04:
hts_stream_type = SCT_MPEG2AUDIO;
break;
-
+
case 0x81:
hts_stream_type = SCT_AC3;
break;
-
+
case 0x0f:
hts_stream_type = SCT_MP4A;
break;