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

99 lines
3.0 KiB
C
Raw Normal View History

2014-03-08 12:07:47 +01:00
/*
* discover.h: SAT>IP plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
*/
#ifndef __SATIP_DISCOVER_H
#define __SATIP_DISCOVER_H
#include <curl/curl.h>
#include <vdr/thread.h>
#include <vdr/tools.h>
2015-03-22 17:51:39 +01:00
#include "common.h"
2014-11-29 14:37:21 +01:00
#include "discoverif.h"
2014-11-16 23:23:20 +01:00
#include "msearch.h"
#include "server.h"
2014-03-08 12:07:47 +01:00
#include "socket.h"
class cSatipDiscoverServer : public cListObject {
private:
cString ipAddressM;
cString descriptionM;
cString modelM;
public:
cSatipDiscoverServer(const char *ipAddressP, const char *modelP, const char *descriptionP)
{
ipAddressM = ipAddressP; modelM = modelP; descriptionM = descriptionP;
}
const char *IpAddress(void) { return *ipAddressM; }
const char *Model(void) { return *modelM; }
const char *Description(void) { return *descriptionM; }
};
class cSatipDiscoverServers : public cList<cSatipDiscoverServer> {
};
2014-11-29 14:37:21 +01:00
class cSatipDiscover : public cThread, public cSatipDiscoverIf {
2014-03-08 12:07:47 +01:00
private:
enum {
2014-11-16 23:23:20 +01:00
eSleepTimeoutMs = 500, // in milliseconds
2014-03-08 12:07:47 +01:00
eConnectTimeoutMs = 1500, // in milliseconds
eProbeTimeoutMs = 2000, // in milliseconds
eProbeIntervalMs = 60000 // in milliseconds
};
static cSatipDiscover *instanceS;
2015-03-22 17:51:39 +01:00
static size_t DataCallback(char *ptrP, size_t sizeP, size_t nmembP, void *dataP);
2014-11-09 19:32:08 +01:00
static int DebugCallback(CURL *handleP, curl_infotype typeP, char *dataP, size_t sizeP, void *userPtrP);
2014-03-08 12:07:47 +01:00
cMutex mutexM;
2015-03-22 17:51:39 +01:00
cSatipMemoryBuffer dataBufferM;
2014-11-16 23:23:20 +01:00
cSatipMsearch msearchM;
cStringList probeUrlListM;
2014-03-08 12:07:47 +01:00
CURL *handleM;
cCondWait sleepM;
cTimeMs probeIntervalM;
2014-11-17 21:33:38 +01:00
cSatipServers serversM;
void Activate(void);
void Deactivate(void);
2015-03-22 16:33:08 +01:00
void ParseDeviceInfo(const char *addrP);
void AddServer(const char *addrP, const char *modelP, const char *descP);
2014-11-16 23:23:20 +01:00
void Fetch(const char *urlP);
2014-03-08 12:07:47 +01:00
// constructor
cSatipDiscover();
// to prevent copy constructor and assignment
cSatipDiscover(const cSatipDiscover&);
cSatipDiscover& operator=(const cSatipDiscover&);
protected:
virtual void Action(void);
public:
static cSatipDiscover *GetInstance(void);
static bool Initialize(cSatipDiscoverServers *serversP);
2014-03-08 12:07:47 +01:00
static void Destroy(void);
virtual ~cSatipDiscover();
void TriggerScan(void) { probeIntervalM.Set(0); }
int GetServerCount(void);
cSatipServer *AssignServer(int deviceIdP, int sourceP, int transponderP, int systemP);
2015-01-15 22:33:51 +01:00
cSatipServer *GetServer(int sourceP);
cSatipServer *GetServer(cSatipServer *serverP);
2014-03-08 12:07:47 +01:00
cSatipServers *GetServers(void);
cString GetServerString(cSatipServer *serverP);
void AttachServer(cSatipServer *serverP, int deviceIdP, int transponderP);
void DetachServer(cSatipServer *serverP, int deviceIdP, int transponderP);
2015-01-15 22:33:51 +01:00
bool IsServerQuirk(cSatipServer *serverP, int quirkP);
bool HasServerCI(cSatipServer *serverP);
2015-01-15 22:33:51 +01:00
cString GetServerAddress(cSatipServer *serverP);
2014-03-08 12:07:47 +01:00
cString GetServerList(void);
int NumProvidedSystems(void);
2014-11-29 14:37:21 +01:00
// for internal discover interface
public:
virtual void SetUrl(const char *urlP);
2014-03-08 12:07:47 +01:00
};
#endif // __SATIP_DISCOVER_H