|
SASC
DVBSoftCAM
|
Inheritance diagram for cEcmData:Public Member Functions | |
| cEcmData (void) | |
| cEcmData (cEcmInfo *e) | |
| virtual cString | ToString (bool hide) |
| bool | Parse (const char *buf) |
| cEcmData (void) | |
| cEcmData (cEcmInfo *e) | |
| virtual cString | ToString (bool hide) |
| bool | Parse (const char *buf) |
| bool cEcmData::Parse | ( | const char * | buf | ) |
Definition at line 597 of file cam.c.
References cEcmInfo::AddCaDescr(), AUTOMEM, CACHE_VERS, cEcmInfo::caId, cEcmInfo::dataIdx, cEcmInfo::ecm_pid, cEcmInfo::ecm_table, cEcmInfo::emmCaId, GetHex(), cEcmInfo::grPrgId, cEcmInfo::prgId, cEcmInfo::provId, cEcmInfo::rewriterId, cEcmInfo::SetName(), cEcmInfo::SetRewriter(), SIDGRP_SHIFT, cEcmInfo::source, and cEcmInfo::transponder.
Referenced by cEcmCache::ParseLinePlain().
{
char Name[64];
int nu=0, num, vers=0;
Name[0]=0;
if(sscanf(buf,"V%d:%d:%x:%x:%63[^:]:%x/%x:%x:%x/%x:%d:%d/%d%n",
&vers,&grPrgId,&source,&transponder,Name,&caId,&emmCaId,&provId,
&ecm_pid,&ecm_table,&rewriterId,&nu,&dataIdx,&num)>=13
&& vers==CACHE_VERS) {
SetName(Name);
SetRewriter();
prgId=grPrgId%SIDGRP_SHIFT;
const char *line=buf+num;
if(nu>0 && *line++==':') {
unsigned char *dat=AUTOMEM(nu);
if(GetHex(line,dat,nu,true)==nu && dat[0]==0x09 && dat[1]==nu-2)
AddCaDescr(dat,nu);
}
return true;
}
return false;
}
| bool cEcmData::Parse | ( | const char * | buf | ) |
| cString cEcmData::ToString | ( | bool | hide | ) | [virtual] |
Reimplemented from cEcmInfo.
Definition at line 620 of file cam.c.
References AUTOARRAY, CACHE_VERS, cEcmInfo::caDescr, cEcmInfo::caDescrLen, cEcmInfo::caId, cEcmInfo::dataIdx, cEcmInfo::ecm_pid, cEcmInfo::ecm_table, cEcmInfo::emmCaId, cEcmInfo::grPrgId, HexStr(), cEcmInfo::name, cEcmInfo::provId, cEcmInfo::rewriterId, cEcmInfo::source, cString::sprintf(), and cEcmInfo::transponder.
{
char *str;
if(caDescr) {
str=AUTOARRAY(char,caDescrLen*2+16);
int q=sprintf(str,"%d/%d:",caDescrLen,dataIdx);
HexStr(str+q,caDescr,caDescrLen);
}
else {
str=AUTOARRAY(char,10);
sprintf(str,"0/%d:",dataIdx);
}
return cString::sprintf("V%d:%d:%x:%x:%s:%x/%x:%x:%x/%x:%d:%s",
CACHE_VERS,grPrgId,source,transponder,name,
caId,emmCaId,provId,ecm_pid,ecm_table,rewriterId,
str);
}