|
SASC-NG
DVBSoftCAM
|
#include <parse.h>
Inheritance diagram for cProviderViaccess:Public Member Functions | |
| cProviderViaccess (void) | |
| cProviderViaccess (const unsigned char *id, const unsigned char *s) | |
| virtual | ~cProviderViaccess () |
| virtual bool | MatchID (const unsigned char *data) |
| virtual bool | MatchEMM (const unsigned char *data) |
| virtual unsigned long long | ProvId (void) |
| virtual int | UpdateType (const unsigned char *data) |
| virtual int | Assemble (cAssembleData *ad) |
Public Attributes | |
| unsigned char | ident [3] |
| unsigned char | sa [4] |
| cProviderViaccess::cProviderViaccess | ( | void | ) |
| cProviderViaccess::cProviderViaccess | ( | const unsigned char * | id, |
| const unsigned char * | s | ||
| ) |
| cProviderViaccess::~cProviderViaccess | ( | ) | [virtual] |
| int cProviderViaccess::Assemble | ( | cAssembleData * | ad | ) | [virtual] |
Reimplemented from cProvider.
Definition at line 385 of file parse.c.
References AUTOMEM, cAssembleData::Data(), data, free, cParseViaccess::NanoStart(), SCT_LEN, cAssembleData::SetAssembled(), SetSctLen(), and SortNanos().
{
const unsigned char *data=ad->Data();
int len=SCT_LEN(data);
switch(data[0]) {
case 0x8C:
case 0x8D:
if(data[0]!=sharedToggle) {
free(sharedEmm);
sharedLen=len;
sharedEmm=(unsigned char *)malloc(len);
if(sharedEmm) memcpy(sharedEmm,data,sharedLen);
sharedToggle=data[0];
}
break;
case 0x8E:
if(sharedEmm) {
unsigned char *tmp=AUTOMEM(len+sharedLen);
unsigned char *ass=(unsigned char *)cParseViaccess::NanoStart(data);
len-=(ass-data);
if((data[6]&2)==0) {
const int addrlen=len-8;
len=0;
tmp[len++]=0x9e;
tmp[len++]=addrlen;
memcpy(&tmp[len],&ass[0],addrlen); len+=addrlen;
tmp[len++]=0xf0;
tmp[len++]=0x08;
memcpy(&tmp[len],&ass[addrlen],8); len+=8;
}
else {
memcpy(tmp,ass,len);
}
ass=(unsigned char *)cParseViaccess::NanoStart(sharedEmm);
int l=sharedLen-(ass-sharedEmm);
memcpy(&tmp[len],ass,l); len+=l;
ass=(unsigned char *)malloc(len+7);
if(ass) {
memcpy(ass,data,7);
SortNanos(ass+7,tmp,len);
SetSctLen(ass,len+4);
ad->SetAssembled(ass);
return 1; // assembled
}
}
break;
}
return -1; // ignore
}
| bool cProviderViaccess::MatchEMM | ( | const unsigned char * | data | ) | [virtual] |
| bool cProviderViaccess::MatchID | ( | const unsigned char * | data | ) | [virtual] |
Implements cProvider.
Definition at line 349 of file parse.c.
References ident, and cParseViaccess::ProvIdPtr().
Referenced by MatchEMM().
{
const unsigned char *id=cParseViaccess::ProvIdPtr(data);
return id && id[0]==ident[0] && id[1]==ident[1] && (id[2]&0xf0)==ident[2];
}
| unsigned long long cProviderViaccess::ProvId | ( | void | ) | [virtual] |
| int cProviderViaccess::UpdateType | ( | const unsigned char * | data | ) | [virtual] |
| unsigned char cProviderViaccess::ident[3] |
Definition at line 189 of file parse.h.
Referenced by cProviderViaccess(), MatchID(), cViaccessCardInfo::Parse(), and ProvId().
| unsigned char cProviderViaccess::sa[4] |
Definition at line 190 of file parse.h.
Referenced by cProviderViaccess(), MatchEMM(), and cViaccessCardInfo::Parse().