SASC
DVBSoftCAM

cShare Class Reference

Inheritance diagram for cShare:

List of all members.

Public Member Functions

 cShare (int Shareid, int Caid, int Hops, const unsigned char *Ua)
 cShare (const cShare *s)
 ~cShare ()
bool UsesProv (void) const
bool HasProv (int provid) const
bool CheckAddProv (const unsigned char *prov, const unsigned char *sa)
bool Compare (const cShare *s) const
int ShareID (void) const
int CaID (void) const
int Hops (void) const
int Lag (void) const
int Status (void) const
bool EmmReady (void) const
cMsgCache * Cache (void) const
 cShare (int Shareid, int Caid, int Hops, const unsigned char *Ua)
 cShare (const cShare *s)
 ~cShare ()
bool UsesProv (void) const
bool HasProv (int provid) const
bool CheckAddProv (const unsigned char *prov, const unsigned char *sa)
bool Compare (const cShare *s) const
int ShareID (void) const
int CaID (void) const
int Hops (void) const
int Lag (void) const
int Status (void) const
bool EmmReady (void) const
cMsgCache * Cache (void) const

Friends

class cShares

Detailed Description

Definition at line 338 of file cccam2.c.


Constructor & Destructor Documentation

cShare::cShare ( int  Shareid,
int  Caid,
int  Hops,
const unsigned char *  Ua 
)

Definition at line 368 of file cccam2.c.

References caid, Hops(), shareid, and STDLAG.

{
  shareid=Shareid;
  caid=Caid;
  hops=Hops;
  lag=STDLAG; status=0;
  memcpy(ua,Ua,sizeof(ua));
  Init();
}
cShare::cShare ( const cShare *  s)

Definition at line 378 of file cccam2.c.

References caid, and shareid.

{
  shareid=s->shareid;
  caid=s->caid;
  hops=s->hops;
  lag=s->lag;
  status=s->status;
  memset(ua,0,sizeof(ua));
  Init();
}
cShare::~cShare ( )

Definition at line 389 of file cccam2.c.

{
  delete cache;
}
cShare::cShare ( int  Shareid,
int  Caid,
int  Hops,
const unsigned char *  Ua 
)
cShare::cShare ( const cShare *  s)
cShare::~cShare ( )

Member Function Documentation

cMsgCache* cShare::Cache ( void  ) const [inline]

Definition at line 365 of file cccam2.c.

Referenced by cCardClientCCcam2::ProcessEMM().

{ return cache; }
cMsgCache* cShare::Cache ( void  ) const [inline]

Definition at line 365 of file cccam2.c.

{ return cache; }
int cShare::CaID ( void  ) const [inline]

Definition at line 360 of file cccam2.c.

References caid.

{ return caid;};
int cShare::CaID ( void  ) const [inline]

Definition at line 360 of file cccam2.c.

References caid.

Referenced by cCardClientCCcam2::CanHandle(), and cCardClientCCcam2::ProcessEMM().

{ return caid;};
bool cShare::CheckAddProv ( const unsigned char *  prov,
const unsigned char *  sa 
)

Definition at line 451 of file cccam2.c.

References cProviders::AddProv(), caid, CheckNull(), HasProv(), L_CC_CCCAM2, PRINTF, prov, cShareProv::provid, provid, shareid, UINT32_BE, and UsesProv().

{
  unsigned char s[8];
  memset(&s[0],0,4); memcpy(&s[4],sa,4);
  int provid=UINT32_BE(pr-1)&0xFFFFFF;
  bool res=false;
  if(!CheckNull(s,sizeof(s)))
    switch(caid>>8) {
      case 0x17:
      case 0x06: AddProv(new cProviderIrdeto(s[4],&s[5])); res=true; break;
      case 0x01: AddProv(new cProviderSeca(&pr[1],&s[4])); res=true; break;
      case 0x0b: AddProv(new cProviderConax(&s[1])); res=true; break;
      case 0x09: AddProv(new cProviderNDS(&s[4])); res=true; break;
      case 0x05: AddProv(new cProviderViaccess(&pr[0],&s[4])); res=true; break;
      case 0x0d: AddProv(new cProviderCryptoworks(&s[3])); res=true; break;
      default:   PRINTF(L_CC_CCCAM2,"share %08x: can't handle shared updates for CAID %04x",shareid,caid);
                 break;
    }
  if(res) emmready=true;
  SetCache();

  if(UsesProv() && !HasProv(provid)) {
    cShareProv *sp=new cShareProv;
    sp->provid=provid;
    prov.Add(sp);
    res=true;
    }
  return res;
}
bool cShare::CheckAddProv ( const unsigned char *  prov,
const unsigned char *  sa 
)
bool cShare::Compare ( const cShare *  s) const

Definition at line 481 of file cccam2.c.

{
  // success or untried is better ;)
  if((s->status<0)!=(status<0)) return s->status>=0;
  // lower lag is better
  if(s->lag!=lag) return s->lag<lag;
  // lower hops is better
  return s->hops<hops;
}
bool cShare::Compare ( const cShare *  s) const
bool cShare::EmmReady ( void  ) const [inline]

Definition at line 364 of file cccam2.c.

Referenced by cCardClientCCcam2::ProcessEMM().

{ return emmready; }
bool cShare::EmmReady ( void  ) const [inline]

Definition at line 364 of file cccam2.c.

{ return emmready; }
bool cShare::HasProv ( int  provid) const

Definition at line 444 of file cccam2.c.

References prov.

Referenced by CheckAddProv().

{
  for(cShareProv *sp=prov.First(); sp; sp=prov.Next(sp))
    if(sp->provid==provid) return true;
  return false;
}
bool cShare::HasProv ( int  provid) const
int cShare::Hops ( void  ) const [inline]

Definition at line 361 of file cccam2.c.

{ return hops; };
int cShare::Hops ( void  ) const [inline]

Definition at line 361 of file cccam2.c.

Referenced by cShare(), and cCardClientCCcam2::ProcessECM().

{ return hops; };
int cShare::Lag ( void  ) const [inline]

Definition at line 362 of file cccam2.c.

Referenced by cCardClientCCcam2::ProcessECM().

{ return lag; };
int cShare::Lag ( void  ) const [inline]

Definition at line 362 of file cccam2.c.

{ return lag; };
int cShare::ShareID ( void  ) const [inline]

Definition at line 359 of file cccam2.c.

References shareid.

Referenced by cCardClientCCcam2::ProcessECM(), and cCardClientCCcam2::ProcessEMM().

{ return shareid; };
int cShare::ShareID ( void  ) const [inline]

Definition at line 359 of file cccam2.c.

References shareid.

{ return shareid; };
int cShare::Status ( void  ) const [inline]

Definition at line 363 of file cccam2.c.

Referenced by cCardClientCCcam2::ProcessECM().

{ return status; }
int cShare::Status ( void  ) const [inline]

Definition at line 363 of file cccam2.c.

{ return status; }
bool cShare::UsesProv ( void  ) const

Definition at line 433 of file cccam2.c.

References caid.

Referenced by CheckAddProv().

{
  switch(caid>>8) {
    case 0x01:
    case 0x05:
      return true;
    default:
      return false;
    }
}
bool cShare::UsesProv ( void  ) const

Friends And Related Function Documentation

cShares [friend]

Definition at line 339 of file cccam2.c.


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