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

94 lines
2.3 KiB
C
Raw Permalink Normal View History

2014-03-08 12:07:47 +01:00
/*
* tuner.h: SAT>IP plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
*/
#ifndef __SATIP_TUNER_H
#define __SATIP_TUNER_H
#include <curl/curl.h>
#include <curl/easy.h>
#ifndef CURLOPT_RTSPHEADER
#error "libcurl is missing required RTSP support"
#endif
#include <vdr/thread.h>
#include <vdr/tools.h>
#include "deviceif.h"
#include "server.h"
2014-03-08 12:07:47 +01:00
#include "statistics.h"
#include "socket.h"
class cSatipTuner : public cThread, public cSatipTunerStatistics {
private:
enum {
2014-04-02 20:06:37 +02:00
eConnectTimeoutMs = 1500, // in milliseconds
ePidUpdateIntervalMs = 250, // in milliseconds
2014-04-02 20:06:37 +02:00
eReConnectTimeoutMs = 5000, // in milliseconds
eMinKeepAliveIntervalMs = 30000 // in milliseconds
2014-03-08 12:07:47 +01:00
};
static size_t HeaderCallback(void *ptrP, size_t sizeP, size_t nmembP, void *dataP);
cCondWait sleepM;
cSatipDeviceIf* deviceM;
unsigned char* packetBufferM;
unsigned int packetBufferLenM;
cSatipSocket *rtpSocketM;
cSatipSocket *rtcpSocketM;
cString streamAddrM;
cString streamParamM;
cSatipServer *currentServerM;
cSatipServer *nextServerM;
2014-03-08 12:07:47 +01:00
cMutex mutexM;
CURL *handleM;
struct curl_slist *headerListM;
cTimeMs keepAliveM;
cTimeMs signalInfoCacheM;
cTimeMs pidUpdateCacheM;
cString sessionM;
2014-03-08 12:07:47 +01:00
int timeoutM;
bool openedM;
bool tunedM;
bool hasLockM;
int signalStrengthM;
int signalQualityM;
int streamIdM;
2014-04-19 16:27:47 +02:00
cVector<int> addPidsM;
cVector<int> delPidsM;
2014-03-08 12:07:47 +01:00
cVector<int> pidsM;
bool Connect(void);
bool Disconnect(void);
bool ValidateLatestResponse(void);
void ParseReceptionParameters(const char *paramP);
void SetStreamId(int streamIdP);
2014-03-31 21:07:15 +02:00
void SetSessionTimeout(const char *sessionP, int timeoutP = 0);
2014-03-08 12:07:47 +01:00
bool KeepAlive(void);
bool UpdateSignalInfoCache(void);
2014-04-19 16:27:47 +02:00
bool UpdatePids(bool forceP = false);
2014-03-08 12:07:47 +01:00
protected:
virtual void Action(void);
public:
cSatipTuner(cSatipDeviceIf &deviceP, unsigned int packetLenP);
virtual ~cSatipTuner();
bool IsTuned(void) const { return tunedM; }
bool SetSource(cSatipServer *serverP, const char *parameterP, const int indexP);
2014-03-08 12:07:47 +01:00
bool SetPid(int pidP, int typeP, bool onP);
bool Open(void);
bool Close(void);
int SignalStrength(void);
int SignalQuality(void);
bool HasLock(void);
cString GetSignalStatus(void);
cString GetInformation(void);
};
#endif // __SATIP_TUNER_H