Merge pull request #487 from stefansaraev/tvheadend

hts-tvheadend: add patch to support bulcrypt (caid 5581) emm updates
This commit is contained in:
Stephan Raue 2012-04-22 04:06:55 -07:00
commit ebddbc3700

View File

@ -0,0 +1,93 @@
diff --git a/src/cwc.c b/src/cwc.c
index 895eaf6..dfb3a6f 100644
--- a/src/cwc.c
+++ b/src/cwc.c
@@ -61,6 +61,7 @@ typedef enum {
CARD_VIACCESS,
CARD_NAGRA,
CARD_NDS,
+ CARD_BULCRYPT,
CARD_UNKNOWN
} card_type_t;
@@ -280,6 +281,7 @@ void cwc_emm_seca(cwc_t *cwc, uint8_t *data, int len);
void cwc_emm_viaccess(cwc_t *cwc, uint8_t *data, int len);
void cwc_emm_nagra(cwc_t *cwc, uint8_t *data, int len);
void cwc_emm_nds(cwc_t *cwc, uint8_t *data, int len);
+void cwc_emm_bulcrypt(cwc_t *cwc, uint8_t *data, int len);
/**
@@ -658,6 +660,15 @@ static void
cwc_detect_card_type(cwc_t *cwc)
{
uint8_t c_sys = cwc->cwc_caid >> 8;
+
+ switch(cwc->cwc_caid) {
+ case 0x5581:
+ case 0x4aee:
+ cwc->cwc_card_type = CARD_BULCRYPT;
+ tvhlog(LOG_INFO, "cwc", "%s:%i: bulcrypt card",
+ cwc->cwc_hostname, cwc->cwc_port);
+ return;
+ }
switch(c_sys) {
case 0x17:
@@ -1212,6 +1223,9 @@ cwc_emm(uint8_t *data, int len)
case CARD_NDS:
cwc_emm_nds(cwc, data, len);
break;
+ case CARD_BULCRYPT:
+ cwc_emm_bulcrypt(cwc, data, len);
+ break;
case CARD_UNKNOWN:
break;
}
@@ -1656,6 +1670,31 @@ cwc_emm_nds(cwc_t *cwc, uint8_t *data, int len)
cwc_send_msg(cwc, data, len, 0, 1);
}
+void
+cwc_emm_bulcrypt(cwc_t *cwc, uint8_t *data, int len)
+{
+ int match = 0;
+
+ switch (data[0]) {
+ case 0x82: /* unique */
+ case 0x85: /* unique */
+ match = len >= 10 && memcmp(data + 3, cwc->cwc_ua + 2, 3) == 0;
+ break;
+ case 0x84: /* shared */
+ match = len >= 10 && memcmp(data + 3, cwc->cwc_ua + 2, 2) == 0;
+ break;
+ case 0x8b: /* shared-unknown */
+ match = len >= 10 && memcmp(data + 4, cwc->cwc_ua + 2, 2) == 0;
+ break;
+ case 0x8a: /* global */
+ match = len >= 10 && memcmp(data + 4, cwc->cwc_ua + 2, 1) == 0;
+ break;
+ }
+
+ if (match)
+ cwc_send_msg(cwc, data, len, 0, 1);
+}
+
/**
*
*/
diff --git a/src/psi.c b/src/psi.c
index 116e001..57c34f4 100644
--- a/src/psi.c
+++ b/src/psi.c
@@ -868,7 +868,9 @@ static struct strtab caidnametab[] = {
{ "GI", 0x4700 },
{ "Telemann", 0x4800 },
{ "DRECrypt", 0x4ae0 },
- { "DRECrypt2", 0x4ae1 }
+ { "DRECrypt2", 0x4ae1 },
+ { "Bulcrypt", 0x4aee },
+ { "Bulcrypt", 0x5581 },
};
const char *