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>
|
|
|
|
|
2014-03-13 17:23:55 +01:00
|
|
|
#include "server.h"
|
2014-03-08 12:07:47 +01:00
|
|
|
#include "socket.h"
|
|
|
|
|
|
|
|
class cSatipDiscover : public cThread {
|
|
|
|
private:
|
|
|
|
enum {
|
|
|
|
eConnectTimeoutMs = 1500, // in milliseconds
|
|
|
|
eDiscoveryPort = 1900,
|
|
|
|
eProbeBufferSize = 1024, // in bytes
|
|
|
|
eProbeTimeoutMs = 2000, // in milliseconds
|
|
|
|
eProbeIntervalMs = 60000 // in milliseconds
|
|
|
|
};
|
|
|
|
static cSatipDiscover *instanceS;
|
|
|
|
static const char *bcastAddressS;
|
|
|
|
static const char *bcastMessageS;
|
2014-03-16 18:58:09 +01:00
|
|
|
static size_t WriteCallback(char *ptrP, size_t sizeP, size_t nmembP, void *dataP);
|
2014-03-08 12:07:47 +01:00
|
|
|
cMutex mutexM;
|
|
|
|
CURL *handleM;
|
|
|
|
cSatipSocket *socketM;
|
|
|
|
cCondWait sleepM;
|
|
|
|
cTimeMs probeIntervalM;
|
|
|
|
cSatipServers *serversM;
|
2014-03-13 17:23:55 +01:00
|
|
|
void Activate(void);
|
|
|
|
void Deactivate(void);
|
2014-03-08 12:07:47 +01:00
|
|
|
void Janitor(void);
|
|
|
|
void Probe(void);
|
|
|
|
void Read(void);
|
|
|
|
void AddServer(const char *addrP, const char *descP, const char *modelP);
|
|
|
|
// 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(void);
|
|
|
|
static void Destroy(void);
|
|
|
|
virtual ~cSatipDiscover();
|
2014-03-13 17:23:55 +01:00
|
|
|
void TriggerScan(void) { probeIntervalM.Set(0); }
|
2014-03-23 16:59:08 +01:00
|
|
|
int GetServerCount(void);
|
2014-03-10 20:21:08 +01:00
|
|
|
cSatipServer *GetServer(int sourceP, int systemP = -1);
|
2014-03-13 17:23:55 +01:00
|
|
|
cSatipServer *GetServer(cSatipServer *serverP);
|
2014-03-08 12:07:47 +01:00
|
|
|
cSatipServers *GetServers(void);
|
2014-03-13 17:23:55 +01:00
|
|
|
cString GetServerString(cSatipServer *serverP);
|
|
|
|
void UseServer(cSatipServer *serverP, bool onOffP);
|
2014-03-08 12:07:47 +01:00
|
|
|
cString GetServerList(void);
|
|
|
|
int NumProvidedSystems(void);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // __SATIP_DISCOVER_H
|