36#include <sys/socket.h>
37#include <netinet/in.h>
110 bool Reply(
const char *s);
116#define CPLM_MORE 0x00
117#define CPLM_FIRST 0x01
118#define CPLM_LAST 0x02
119#define CPLM_ONLY 0x03
121#define CPLM_UPDATE 0x05
134 const uint8_t *data);
137#define MAX_CI_SESSION 16
172 bool Send(uint8_t Tag,
int SessionId,
int ResourceId = 0,
int Status = -1);
198 bool Reset(
int Slot);
212 int CommHL(
unsigned tag,
unsigned function,
struct ca_msg *msg)
const;
213 int GetData(
unsigned tag,
struct ca_msg *msg);
214 int SendData(
unsigned tag,
struct ca_msg *msg);
228 bool Reset(
int Slot)
const;
232int tcp_listen(
struct sockaddr_in *name,
int sckt,
unsigned long address=INADDR_ANY);
void AddCaDescriptor(int ca_system_id, int ca_pid, int data_len, const uint8_t *data)
uint8_t m_capmt[2048]
XXX is there a specified maximum?
void AddElementaryStream(int type, int pid)
cCiCaPmt(int ProgramNumber, uint8_t cplm=CPLM_ONLY)
bool Reply(const char *s)
int ExpectedLength(void) const
virtual bool Process(void)=0
virtual bool HasUserIO(void)=0
virtual int NumSlots(void)=0
virtual cCiMenu * GetMenu(void)=0
static cCiHandler * CreateCiHandler(const char *FileName)
virtual bool NeedCaPmt(void)=0
virtual bool SetCaPmt(cCiCaPmt &CaPmt, int Slot)=0
virtual ~cCiHandler()=default
virtual bool EnterMenu(int Slot)=0
virtual cCiEnquiry * GetEnquiry(void)=0
virtual void SetTimeOffset(double)
virtual dvbca_vector GetCaSystemIds(int Slot)=0
bool NeedCaPmt(void) override
int SendData(unsigned tag, struct ca_msg *msg)
bool EnterMenu(int Slot) override
cHlCiHandler(int Fd, int NumSlots)
cCiMenu * GetMenu(void) override
cCiEnquiry * GetEnquiry(void) override
dvbca_vector GetCaSystemIds(int Slot) override
bool HasUserIO(void) override
bool SetCaPmt(cCiCaPmt &CaPmt)
dvbca_vector m_caSystemIds
bool Process(void) override
int GetData(unsigned tag, struct ca_msg *msg)
int NumSlots(void) override
int CommHL(unsigned tag, unsigned function, struct ca_msg *msg) const
bool Reset(int Slot) const
bool CloseSession(int SessionId)
bool OpenSession(int Length, const uint8_t *Data)
int CloseAllSessions(int Slot)
bool Send(uint8_t Tag, int SessionId, int ResourceId=0, int Status=-1)
cCiMenu * GetMenu(void) override
cLlCiHandler & operator=(const cLlCiHandler &)=delete
bool HasUserIO(void) override
cCiSession * m_sessions[MAX_CI_SESSION]
cCiEnquiry * GetEnquiry(void) override
bool Process(void) override
int NumSlots(void) override
bool NeedCaPmt(void) override
cCiTransportLayer * m_tpl
void SetTimeOffset(double offset_in_seconds) override
cLlCiHandler(int Fd, int NumSlots)
cCiSession * CreateSession(int ResourceId)
bool EnterMenu(int Slot) override
static int ResourceIdToInt(const uint8_t *Data)
cLlCiHandler(const cLlCiHandler &)=delete
cCiSession * GetSessionByResourceId(int ResourceId, int Slot)
dvbca_vector GetCaSystemIds(int Slot) override
cCiSession * GetSessionBySessionId(int SessionId)
bool SetCaPmt(cCiCaPmt &CaPmt)
cCiTransportConnection * m_tc
cMutexLock(cMutex *Mutex=nullptr)
int accept_tcp(int ip_sock, struct sockaddr_in *ip_name)
int accept_udp(int ip_sock, struct sockaddr_un *ip_name)
int tcp_listen(struct sockaddr_in *name, int sckt, unsigned long address=INADDR_ANY)
std::vector< uint16_t > dvbca_vector
int udp_listen(struct sockaddr_un *name, char const *filename)