SASC
DVBSoftCAM

cCardClient Class Reference

#include <cc.h>

Inheritance diagram for cCardClient:

List of all members.

Public Member Functions

 cCardClient (const char *Name)
virtual bool Init (const char *config)=0
virtual bool Login (void)=0
virtual bool Immediate (void)
virtual bool CanHandle (unsigned short SysId)
virtual bool ProcessECM (const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw)=0
virtual bool ProcessEMM (int caSys, const unsigned char *data)
const char * Name (void)
 cCardClient (const char *Name)
virtual bool Init (const char *config)=0
virtual bool Login (void)=0
virtual bool Immediate (void)
virtual bool CanHandle (unsigned short SysId)
virtual bool ProcessECM (const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw)=0
virtual bool ProcessEMM (int caSys, const unsigned char *data)
const char * Name (void)

Protected Member Functions

bool ParseStdConfig (const char *config, int *num=0)
virtual bool SendMsg (const unsigned char *data, int len)
virtual int RecvMsg (unsigned char *data, int len, int to=-1)
virtual void Logout (void)
void CaidsChanged (void)
bool ParseStdConfig (const char *config, int *num=0)
virtual bool SendMsg (const unsigned char *data, int len)
virtual int RecvMsg (unsigned char *data, int len, int to=-1)
virtual void Logout (void)
void CaidsChanged (void)

Protected Attributes

cNetSocket so
const char * name
char hostname [64]
int port
int emmAllowed
int emmCaid [MAX_CC_CAID]
int emmMask [MAX_CC_CAID]
int numCaid
cMsgCache msECM
cMsgCache msEMM

Friends

class cSystemCardClient

Detailed Description

Definition at line 59 of file cc.h.


Constructor & Destructor Documentation

cCardClient::cCardClient ( const char *  Name)

Definition at line 54 of file cc.c.

References LogModule::Name.

:msECM(32,16)
,msEMM(32,0)
{
  name=Name;
  emmAllowed=0; emmCaid[0]=0x1700; emmMask[0]=0xFF00; numCaid=1;
}
cCardClient::cCardClient ( const char *  Name)

Member Function Documentation

void cCardClient::CaidsChanged ( void  ) [protected]
void cCardClient::CaidsChanged ( void  ) [protected]
bool cCardClient::CanHandle ( unsigned short  SysId) [virtual]
bool cCardClient::Immediate ( void  ) [virtual]

Reimplemented in cCardClientCommon, and cCardClientCommon.

Definition at line 62 of file cc.c.

References immediate.

Referenced by cSystemLinkCardClient::ParseLinePlain().

{
  return immediate;
}
virtual bool cCardClient::Immediate ( void  ) [virtual]

Reimplemented in cCardClientCommon, and cCardClientCommon.

virtual void cCardClient::Logout ( void  ) [protected, virtual]

Reimplemented in cCardClientCCcam2, and cCardClientCCcam2.

const char* cCardClient::Name ( void  ) [inline]

Definition at line 83 of file cc.h.

References name.

Referenced by cSystemLinkCardClient::ParseLinePlain(), and cSystemCardClient::ProcessECM().

{ return name; }
const char* cCardClient::Name ( void  ) [inline]

Definition at line 83 of file cc.h.

References name.

{ return name; }
bool cCardClient::ParseStdConfig ( const char *  config,
int *  num = 0 
) [protected]

Definition at line 72 of file cc.c.

References emmAllowed, emmCaid, emmMask, hostname, i, L_CC_CORE, L_GEN_WARN, LBEND, LBPUT, LBSTART, MAX_CC_CAID, numCaid, port, PRINTF, and start().

Referenced by cCardClientRadegast::Init(), cCardClientNewCamd::Init(), cCardClientGbox::Init(), cCardClientCCcam2::Init(), cCardClientCCcam::Init(), cCardClientCamd35::Init(), cCardClientCommon::Init(), and cCardClientAroureos::Init().

{
  int n, emm=0;
  if(!num) num=&n;
  if(sscanf(config,"%63[^:]:%d:%d%n",hostname,&port,&emm,num)<3) return false;
  if(emm>0) emmAllowed=1;
  if(emm==2) emmAllowed=2; // EMM caching disabled
  if(config[*num]=='/') {
    numCaid=0;
    do {
      emmMask[numCaid]=0xFFFF;
      int start=(*num)+1;
      if(sscanf(&config[start],"%x%n/%x%n",&emmCaid[numCaid],num,&emmMask[numCaid],num)<1)
        return false;
      *num+=start;
      if(emmMask[numCaid]==0x0000 && emmCaid[numCaid]!=0x0000)
        PRINTF(L_GEN_WARN,"CAID %04x MASK %04x in cardclient config doesn't match anything!",emmCaid[numCaid],emmMask[numCaid]);
      numCaid++;
      } while(numCaid<MAX_CC_CAID && config[*num]==',');
    }
  LBSTART(L_CC_CORE);
  LBPUT("hostname=%s port=%d emm=%d emmCaids",hostname,port,emmAllowed);
  for(int i=0; i<numCaid; i++) LBPUT(" %04x/%04x",emmCaid[i],emmMask[i]);
  LBEND();
  return true;
}
bool cCardClient::ParseStdConfig ( const char *  config,
int *  num = 0 
) [protected]
virtual bool cCardClient::ProcessEMM ( int  caSys,
const unsigned char *  data 
) [inline, virtual]
virtual bool cCardClient::ProcessEMM ( int  caSys,
const unsigned char *  data 
) [inline, virtual]
int cCardClient::RecvMsg ( unsigned char *  data,
int  len,
int  to = -1 
) [protected, virtual]

Reimplemented in cCardClientCommon, and cCardClientCommon.

Definition at line 122 of file cc.c.

References cNetSocket::Connected(), L_CC_CORE, Login(), Logout(), PRINTF, cNetSocket::Read(), and so.

Referenced by cCardClientCCcam2::Action(), cCardClientCCcam2::Login(), cCardClientAroureos::ProcessECM(), and cCardClientCamd35::RecvBlock().

{
  if(!so.Connected() && !Login()) return -1;
  int n=so.Read(data,len,to);
  if(n<0) {
    if(errno==ETIMEDOUT && (len<0 || to==0)) return 0;
    PRINTF(L_CC_CORE,"recv error. reconnecting...");;
    Logout();
    }
  return n;
}
virtual int cCardClient::RecvMsg ( unsigned char *  data,
int  len,
int  to = -1 
) [protected, virtual]

Reimplemented in cCardClientCommon, and cCardClientCommon.

bool cCardClient::SendMsg ( const unsigned char *  data,
int  len 
) [protected, virtual]

Reimplemented in cCardClientCommon, and cCardClientCommon.

Definition at line 111 of file cc.c.

References cNetSocket::Connected(), L_CC_CORE, Login(), Logout(), PRINTF, so, and cNetSocket::Write().

Referenced by cCardClientAroureos::ProcessECM(), cCardClientAroureos::ProcessEMM(), and cCardClientCamd35::SendBlock().

{
  if(!so.Connected() && !Login()) return false;
  if(so.Write(data,len)<0) {
    PRINTF(L_CC_CORE,"send error. reconnecting...");
    Logout();
    return false;
    }
  return true;
}
virtual bool cCardClient::SendMsg ( const unsigned char *  data,
int  len 
) [protected, virtual]

Reimplemented in cCardClientCommon, and cCardClientCommon.


Friends And Related Function Documentation

Definition at line 60 of file cc.h.


Member Data Documentation

int cCardClient::emmCaid [protected]

Definition at line 67 of file cc.h.

Referenced by CanHandle(), and ParseStdConfig().

int cCardClient::emmMask [protected]

Definition at line 67 of file cc.h.

Referenced by CanHandle(), and ParseStdConfig().

Definition at line 68 of file cc.h.

Referenced by cSystemCardClient::ProcessECM().

int cCardClient::numCaid [protected]

Definition at line 67 of file cc.h.

Referenced by CanHandle(), and ParseStdConfig().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines