move detect_card_type to commonly accessible place
This commit is contained in:
parent
f2e1e9c3ad
commit
0566d3fa3a
3 changed files with 61 additions and 90 deletions
17
src/descrambler.h
Normal file → Executable file
17
src/descrambler.h
Normal file → Executable file
|
@ -58,12 +58,29 @@ typedef struct caid {
|
|||
|
||||
} caid_t;
|
||||
|
||||
/**
|
||||
* cards for which emm updates are handled
|
||||
*/
|
||||
typedef enum {
|
||||
CARD_IRDETO,
|
||||
CARD_DRE,
|
||||
CARD_CONAX,
|
||||
CARD_SECA,
|
||||
CARD_VIACCESS,
|
||||
CARD_NAGRA,
|
||||
CARD_NDS,
|
||||
CARD_CRYPTOWORKS,
|
||||
CARD_BULCRYPT,
|
||||
CARD_UNKNOWN
|
||||
} card_type_t;
|
||||
|
||||
LIST_HEAD(caid_list, caid);
|
||||
|
||||
void descrambler_init ( void );
|
||||
void descrambler_service_start ( struct service *t );
|
||||
const char *descrambler_caid2name(uint16_t caid);
|
||||
uint16_t descrambler_name2caid(const char *str);
|
||||
card_type_t detect_card_type(const uint16_t caid);
|
||||
|
||||
#endif /* __TVH_DESCRAMBLER_H__ */
|
||||
|
||||
|
|
|
@ -52,22 +52,6 @@
|
|||
#define CWS_NETMSGSIZE 362
|
||||
#define CWS_FIRSTCMDNO 0xe0
|
||||
|
||||
/**
|
||||
* cards for which emm updates are handled
|
||||
*/
|
||||
typedef enum {
|
||||
CARD_IRDETO,
|
||||
CARD_DRE,
|
||||
CARD_CONAX,
|
||||
CARD_SECA,
|
||||
CARD_VIACCESS,
|
||||
CARD_NAGRA,
|
||||
CARD_NDS,
|
||||
CARD_CRYPTOWORKS,
|
||||
CARD_BULCRYPT,
|
||||
CARD_UNKNOWN
|
||||
} card_type_t;
|
||||
|
||||
typedef enum {
|
||||
MSG_CLIENT_2_SERVER_LOGIN = CWS_FIRSTCMDNO,
|
||||
MSG_CLIENT_2_SERVER_LOGIN_ACK,
|
||||
|
@ -297,7 +281,6 @@ typedef struct cwc {
|
|||
*/
|
||||
|
||||
static void cwc_service_destroy(th_descrambler_t *td);
|
||||
static void cwc_detect_card_type(cwc_t *cwc, struct cs_card_data *pcard);
|
||||
void cwc_emm_conax(cwc_t *cwc, struct cs_card_data *pcard, uint8_t *data, int len);
|
||||
void cwc_emm_irdeto(cwc_t *cwc, struct cs_card_data *pcard, uint8_t *data, int len);
|
||||
void cwc_emm_dre(cwc_t *cwc, struct cs_card_data *pcard, uint8_t *data, int len);
|
||||
|
@ -616,7 +599,7 @@ cwc_decode_card_data_reply(cwc_t *cwc, uint8_t *msg, int len)
|
|||
n = descrambler_caid2name(pcard->cwc_caid & 0xff00) ?: "Unknown";
|
||||
|
||||
memcpy(pcard->cwc_ua, &msg[6], 8);
|
||||
cwc_detect_card_type(cwc, pcard);
|
||||
pcard->cwc_card_type = detect_card_type(pcard->cwc_caid);
|
||||
|
||||
msg += 15;
|
||||
plen -= 12;
|
||||
|
@ -684,76 +667,6 @@ cwc_decode_card_data_reply(cwc_t *cwc, uint8_t *msg, int len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detects the cam card type
|
||||
* If you want to add another card, have a look at
|
||||
* http://www.dvbservices.com/identifiers/ca_system_id?page=3
|
||||
*
|
||||
* based on the equivalent in sasc-ng
|
||||
*/
|
||||
static void
|
||||
cwc_detect_card_type(cwc_t *cwc, struct cs_card_data *pcard)
|
||||
{
|
||||
|
||||
uint8_t c_sys = pcard->cwc_caid >> 8;
|
||||
|
||||
switch(pcard->cwc_caid) {
|
||||
case 0x5581:
|
||||
case 0x4aee:
|
||||
pcard->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:
|
||||
case 0x06:
|
||||
pcard->cwc_card_type = CARD_IRDETO;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: irdeto card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x05:
|
||||
pcard->cwc_card_type = CARD_VIACCESS;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: viaccess card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x0b:
|
||||
pcard->cwc_card_type = CARD_CONAX;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: conax card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x01:
|
||||
pcard->cwc_card_type = CARD_SECA;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: seca card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x4a:
|
||||
pcard->cwc_card_type = CARD_DRE;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: dre card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x18:
|
||||
pcard->cwc_card_type = CARD_NAGRA;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: nagra card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x09:
|
||||
pcard->cwc_card_type = CARD_NDS;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: nds card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
case 0x0d:
|
||||
pcard->cwc_card_type = CARD_CRYPTOWORKS;
|
||||
tvhlog(LOG_INFO, "cwc", "%s:%i: cryptoworks card",
|
||||
cwc->cwc_hostname, cwc->cwc_port);
|
||||
break;
|
||||
default:
|
||||
pcard->cwc_card_type = CARD_UNKNOWN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Login command
|
||||
*/
|
||||
|
@ -985,7 +898,8 @@ cwc_running_reply(cwc_t *cwc, uint8_t msgtype, uint8_t *msg, int len)
|
|||
n = descrambler_caid2name(pcard->cwc_caid & 0xff00) ?: "Unknown";
|
||||
|
||||
memcpy(pcard->cwc_ua, &msg[6], 8);
|
||||
cwc_detect_card_type(cwc, pcard);
|
||||
|
||||
pcard->cwc_card_type = detect_card_type(pcard->cwc_caid);
|
||||
|
||||
pcard->cwc_providers[0].id = (msg[8] << 16) | (msg[9] << 8) | msg[10];
|
||||
|
||||
|
|
42
src/descrambler/descrambler.c
Normal file → Executable file
42
src/descrambler/descrambler.c
Normal file → Executable file
|
@ -144,7 +144,47 @@ descrambler_name2caid(const char *s)
|
|||
return (i < 0) ? strtol(s, NULL, 0) : i;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Detects the cam card type
|
||||
* If you want to add another card, have a look at
|
||||
* http://www.dvbservices.com/identifiers/ca_system_id?page=3
|
||||
*
|
||||
* based on the equivalent in sasc-ng
|
||||
*/
|
||||
card_type_t
|
||||
detect_card_type(const uint16_t caid)
|
||||
{
|
||||
|
||||
uint8_t c_sys = caid >> 8;
|
||||
|
||||
switch(caid) {
|
||||
case 0x5581:
|
||||
case 0x4aee:
|
||||
return CARD_BULCRYPT;
|
||||
}
|
||||
|
||||
switch(c_sys) {
|
||||
case 0x17:
|
||||
case 0x06:
|
||||
return CARD_IRDETO;
|
||||
case 0x05:
|
||||
return CARD_VIACCESS;
|
||||
case 0x0b:
|
||||
return CARD_CONAX;
|
||||
case 0x01:
|
||||
return CARD_SECA;
|
||||
case 0x4a:
|
||||
return CARD_DRE;
|
||||
case 0x18:
|
||||
return CARD_NAGRA;
|
||||
case 0x09:
|
||||
return CARD_NDS;
|
||||
case 0x0d:
|
||||
return CARD_CRYPTOWORKS;
|
||||
default:
|
||||
return CARD_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
/* **************************************************************************
|
||||
* Editor
|
||||
|
|
Loading…
Add table
Reference in a new issue