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

Added a preliminary support for Fritz!WLAN Repeater DVB-C (Thanks to Christian Wick).

This commit is contained in:
Rolf Ahrenberg 2014-11-03 21:54:19 +02:00
parent 92b2c63f0d
commit 0de0be5ae4
5 changed files with 15 additions and 1 deletions

View File

@ -70,3 +70,5 @@ VDR Plugin 'satip' Revision History
- Fixed the cable only device detection. - Fixed the cable only device detection.
- Added support for blacklisted sources. - Added support for blacklisted sources.
- Fixed server reuse for active transponders. - Fixed server reuse for active transponders.
- Added a preliminary support for Fritz!WLAN Repeater DVB-C
(Thanks to Christian Wick).

View File

@ -37,7 +37,7 @@ cSatipServer::cSatipServer(const char *addressP, const char *descriptionP, const
quirkM |= eSatipQuirkSessionId; quirkM |= eSatipQuirkSessionId;
// These devices contain a play (add/delpids) parameter bug: // These devices contain a play (add/delpids) parameter bug:
if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C
quirkM |= eSatipQuirkPlayPids; quirkM |= eSatipQuirkPlayPids | eSatipQuirkForceLock;
} }
char *s, *p = strdup(*modelM); char *s, *p = strdup(*modelM);
char *r = strtok_r(p, ",", &s); char *r = strtok_r(p, ",", &s);

View File

@ -35,6 +35,7 @@ public:
eSatipQuirkNone = 0x00, eSatipQuirkNone = 0x00,
eSatipQuirkSessionId = 0x01, eSatipQuirkSessionId = 0x01,
eSatipQuirkPlayPids = 0x02, eSatipQuirkPlayPids = 0x02,
eSatipQuirkForceLock = 0x04,
eSatipQuirkMask = 0x0F eSatipQuirkMask = 0x0F
}; };
enum eSatipModelType { enum eSatipModelType {

View File

@ -119,6 +119,12 @@ void cSatipTuner::Action(void)
timeout.Set(eReConnectTimeoutMs); timeout.Set(eReConnectTimeoutMs);
} }
} }
// Quirk for devices without valid reception data
if (currentServerM && currentServerM->Quirk(cSatipServer::eSatipQuirkForceLock)) {
hasLockM = true;
signalStrengthM = eDefaultSignalStrength;
signalQualityM = eDefaultSignalQuality;
}
// Read data // Read data
if (rtpSocketM && rtpSocketM->IsOpen()) if (rtpSocketM && rtpSocketM->IsOpen())
length = rtpSocketM->ReadVideo(packetBufferM, size); length = rtpSocketM->ReadVideo(packetBufferM, size);
@ -464,6 +470,8 @@ bool cSatipTuner::UpdatePids(bool forceP)
uri = cString::sprintf("%s?pids=", *uri); uri = cString::sprintf("%s?pids=", *uri);
for (int i = 0; i < pidsM.Size(); ++i) for (int i = 0; i < pidsM.Size(); ++i)
uri = cString::sprintf("%s%d%s", *uri, pidsM[i], (i == (pidsM.Size() - 1)) ? "" : ","); uri = cString::sprintf("%s%d%s", *uri, pidsM[i], (i == (pidsM.Size() - 1)) ? "" : ",");
if (currentServerM && currentServerM->Quirk(cSatipServer::eSatipQuirkPlayPids))
uri = cString::sprintf("%s,%d", *uri, eDummyPid);
} }
} }
else { else {

View File

@ -26,6 +26,9 @@
class cSatipTuner : public cThread, public cSatipTunerStatistics { class cSatipTuner : public cThread, public cSatipTunerStatistics {
private: private:
enum { enum {
eDummyPid = 100,
eDefaultSignalStrength = 15,
eDefaultSignalQuality = 224,
eConnectTimeoutMs = 1500, // in milliseconds eConnectTimeoutMs = 1500, // in milliseconds
ePidUpdateIntervalMs = 250, // in milliseconds ePidUpdateIntervalMs = 250, // in milliseconds
eReConnectTimeoutMs = 5000, // in milliseconds eReConnectTimeoutMs = 5000, // in milliseconds