1
0
mirror of https://github.com/rofafor/vdr-plugin-satip.git synced 2023-10-10 13:37:42 +02:00
vdr-plugin-satip/server.h

141 lines
4.7 KiB
C
Raw Normal View History

/*
* server.h: SAT>IP plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
*/
#ifndef __SATIP_SERVER_H
#define __SATIP_SERVER_H
2015-01-15 22:33:51 +01:00
class cSatipServer;
// --- cSatipFrontend ---------------------------------------------------------
class cSatipFrontend : public cListObject {
private:
int indexM;
int transponderM;
int deviceIdM;
2015-01-15 22:33:51 +01:00
cString descriptionM;
public:
cSatipFrontend(const int indexP, const char *descriptionP);
virtual ~cSatipFrontend();
void Attach(int deviceIdP) { deviceIdM = deviceIdP; }
void Detach(int deviceIdP) { if (deviceIdP == deviceIdM) deviceIdM = -1; }
2015-01-15 22:33:51 +01:00
cString Description(void) { return descriptionM; }
bool Attached(void) { return (deviceIdM >= 0); }
2015-01-15 22:33:51 +01:00
int Index(void) { return indexM; }
int Transponder(void) { return transponderM; }
2015-02-16 18:42:18 +01:00
int DeviceId(void) { return deviceIdM; }
2015-01-15 22:33:51 +01:00
void SetTransponder(int transponderP) { transponderM = transponderP; }
};
// --- cSatipFrontends --------------------------------------------------------
class cSatipFrontends : public cList<cSatipFrontend> {
public:
bool Matches(int deviceIdP, int transponderP);
bool Assign(int deviceIdP, int transponderP);
bool Attach(int deviceIdP, int transponderP);
bool Detach(int deviceIdP, int transponderP);
2015-01-15 22:33:51 +01:00
};
// --- cSatipServer -----------------------------------------------------------
class cSatipServer : public cListObject {
private:
2015-01-15 22:33:51 +01:00
enum eSatipFrontend {
eSatipFrontendDVBS2 = 0,
eSatipFrontendDVBT,
eSatipFrontendDVBT2,
eSatipFrontendDVBC,
eSatipFrontendDVBC2,
eSatipFrontendCount
};
2016-07-23 21:40:01 +02:00
enum {
eSatipMaxSourceFilters = 16
};
cString srcAddressM;
cString addressM;
cString modelM;
2016-07-23 21:40:01 +02:00
cString filtersM;
cString descriptionM;
cString quirksM;
2015-01-15 22:33:51 +01:00
cSatipFrontends frontendsM[eSatipFrontendCount];
2016-07-23 21:40:01 +02:00
int sourceFiltersM[eSatipMaxSourceFilters];
int portM;
int quirkM;
bool hasCiM;
bool activeM;
time_t createdM;
cTimeMs lastSeenM;
2016-07-23 21:40:01 +02:00
bool IsValidSource(int sourceP);
public:
enum eSatipQuirk {
2016-06-20 17:14:38 +02:00
eSatipQuirkNone = 0x00,
eSatipQuirkSessionId = 0x01,
eSatipQuirkPlayPids = 0x02,
eSatipQuirkForceLock = 0x04,
eSatipQuirkRtpOverTcp = 0x08,
eSatipQuirkCiXpmt = 0x10,
eSatipQuirkCiTnr = 0x20,
2016-11-10 15:47:30 +01:00
eSatipQuirkForcePilot = 0x40,
eSatipQuirkMask = 0xFF
};
cSatipServer(const char *srcAddressP, const char *addressP, const int portP, const char *modelP, const char *filtersP, const char *descriptionP, const int quirkP);
virtual ~cSatipServer();
virtual int Compare(const cListObject &listObjectP) const;
bool Assign(int deviceIdP, int sourceP, int systemP, int transponderP);
2015-01-15 22:33:51 +01:00
bool Matches(int sourceP);
bool Matches(int deviceIdP, int sourceP, int systemP, int transponderP);
void Attach(int deviceIdP, int transponderP);
void Detach(int deviceIdP, int transponderP);
2015-01-15 22:33:51 +01:00
int GetModulesDVBS2(void);
int GetModulesDVBT(void);
int GetModulesDVBT2(void);
int GetModulesDVBC(void);
int GetModulesDVBC2(void);
void Activate(bool onOffP) { activeM = onOffP; }
const char *SrcAddress(void) { return *srcAddressM; }
const char *Address(void) { return *addressM; }
const char *Model(void) { return *modelM; }
2016-07-23 21:40:01 +02:00
const char *Filters(void) { return *filtersM; }
const char *Description(void) { return *descriptionM; }
const char *Quirks(void) { return *quirksM; }
int Port(void) { return portM; }
bool Quirk(int quirkP) { return ((quirkP & eSatipQuirkMask) & quirkM); }
bool HasQuirk(void) { return (quirkM != eSatipQuirkNone); }
bool HasCI(void) { return hasCiM; }
bool IsActive(void) { return activeM; }
void Update(void) { lastSeenM.Set(); }
uint64_t LastSeen(void) { return lastSeenM.Elapsed(); }
time_t Created(void) { return createdM; }
};
// --- cSatipServers ----------------------------------------------------------
class cSatipServers : public cList<cSatipServer> {
public:
cSatipServer *Find(cSatipServer *serverP);
2015-01-15 22:33:51 +01:00
cSatipServer *Find(int sourceP);
cSatipServer *Assign(int deviceIdP, int sourceP, int transponderP, int systemP);
cSatipServer *Update(cSatipServer *serverP);
void Activate(cSatipServer *serverP, bool onOffP);
void Attach(cSatipServer *serverP, int deviceIdP, int transponderP);
void Detach(cSatipServer *serverP, int deviceIdP, int transponderP);
2015-01-15 22:33:51 +01:00
bool IsQuirk(cSatipServer *serverP, int quirkP);
bool HasCI(cSatipServer *serverP);
void Cleanup(uint64_t intervalMsP = 0);
2015-01-15 22:33:51 +01:00
cString GetAddress(cSatipServer *serverP);
cString GetSrcAddress(cSatipServer *serverP);
cString GetString(cSatipServer *serverP);
int GetPort(cSatipServer *serverP);
cString List(void);
int NumProvidedSystems(void);
};
#endif // __SATIP_SERVER_H