2 #include "reader-common.h"
3 #include "reader-nagra-common.h"
5 // returns 1 if shared emm matches SA, unique emm matches serial, or global or unknown
6 int32_t nagra_get_emm_type(EMM_PACKET
*ep
, struct s_reader
*rdr
)
11 memset(ep
->hexserial
, 0x00, 0x08);
12 ep
->hexserial
[0] = ep
->emm
[5];
13 ep
->hexserial
[1] = ep
->emm
[4];
14 ep
->hexserial
[2] = ep
->emm
[3];
15 if(ep
->emm
[7] == 0x10)
18 return (!memcmp(rdr
->sa
[0], ep
->hexserial
, 0x03));
22 ep
->hexserial
[3] = ep
->emm
[6];
24 return (!memcmp(rdr
->hexserial
+ 2, ep
->hexserial
, 0x04));
37 int32_t nagra_get_emm_filter(struct s_reader
*rdr
, struct s_csystem_emm_filter
**emm_filters
, unsigned int *filter_count
)
39 if(*emm_filters
== NULL
)
41 const unsigned int max_filter_count
= 3;
42 if(!cs_malloc(emm_filters
, max_filter_count
* sizeof(struct s_csystem_emm_filter
)))
47 struct s_csystem_emm_filter
*filters
= *emm_filters
;
52 filters
[idx
].type
= EMM_UNIQUE
;
53 filters
[idx
].enabled
= 1;
54 filters
[idx
].filter
[0] = 0x83;
55 filters
[idx
].filter
[1] = rdr
->hexserial
[4];
56 filters
[idx
].filter
[2] = rdr
->hexserial
[3];
57 filters
[idx
].filter
[3] = rdr
->hexserial
[2];
58 filters
[idx
].filter
[4] = rdr
->hexserial
[5];
59 filters
[idx
].filter
[5] = 0x00;
60 memset(&filters
[idx
].mask
[0], 0xFF, 6);
63 filters
[idx
].type
= EMM_SHARED
;
64 filters
[idx
].enabled
= 1;
65 filters
[idx
].filter
[0] = 0x83;
66 filters
[idx
].filter
[1] = rdr
->sa
[0][2];
67 filters
[idx
].filter
[2] = rdr
->sa
[0][1];
68 filters
[idx
].filter
[3] = rdr
->sa
[0][0];
69 filters
[idx
].filter
[4] = 0x00;
70 filters
[idx
].filter
[5] = 0x10;
71 memset(&filters
[idx
].mask
[0], 0xFF, 6);
74 filters
[idx
].type
= EMM_GLOBAL
;
75 filters
[idx
].enabled
= 1;
76 filters
[idx
].filter
[0] = 0x82;
77 filters
[idx
].mask
[0] = 0xFF;