diff --git a/device.c b/device.c index da68834..fb58d7f 100644 --- a/device.c +++ b/device.c @@ -140,7 +140,7 @@ cString cSatipDevice::GetGeneralInformation(void) #if defined(APIVERSNUM) && APIVERSNUM >= 20301 LOCK_CHANNELS_READ; #endif - return cString::sprintf("SAT>IP device: %d\nCardIndex: %d\nStream: %s\nSignal: %s\nStream bitrate: %s\n%sChannel: %s", + return cString::sprintf("SAT>IP device: %d\nCardIndex: %d\nStream: %s\nSignal: %s\nStream bitrate: %s\n%sChannel: %s\n", deviceIndexM, CardIndex(), pTunerM ? *pTunerM->GetInformation() : "", pTunerM ? *pTunerM->GetSignalStatus() : "", diff --git a/server.c b/server.c index bfaeef4..01613a4 100644 --- a/server.c +++ b/server.c @@ -147,6 +147,13 @@ cSatipServer::cSatipServer(const char *addressP, const int portP, const char *mo if (strstr(*descriptionM, "DVBViewer") // DVBViewer Media Server ) quirkM |= eSatipQuirkCiTnr; + // These devices don't support auto-detection of pilot tones + if (strstr(*descriptionM, "GSSBOX") || // Grundig Sat Systems GSS.box DSI 400 + strstr(*descriptionM, "DIGIBIT") || // Telestar Digibit R1 + strstr(*descriptionM, "Triax SatIP Converter") // Triax TSS 400 + // Kathrein ExIP 414/E + ) + quirkM |= eSatipQuirkForcePilot; } if ((quirkM & eSatipQuirkMask) & eSatipQuirkSessionId) quirksM = cString::sprintf("%s%sSessionId", *quirksM, isempty(*quirksM) ? "" : ","); @@ -160,6 +167,8 @@ cSatipServer::cSatipServer(const char *addressP, const int portP, const char *mo quirksM = cString::sprintf("%s%sCiXpmt", *quirksM, isempty(*quirksM) ? "" : ","); if ((quirkM & eSatipQuirkMask) & eSatipQuirkCiTnr) quirksM = cString::sprintf("%s%sCiTnr", *quirksM, isempty(*quirksM) ? "" : ","); + if ((quirkM & eSatipQuirkMask) & eSatipQuirkForcePilot) + quirksM = cString::sprintf("%s%sForcePilot", *quirksM, isempty(*quirksM) ? "" : ","); debug3("%s description=%s quirks=%s", __PRETTY_FUNCTION__, *descriptionM, *quirksM); // These devices support external CI if (strstr(*descriptionM, "OctopusNet") || // Digital Devices OctopusNet diff --git a/server.h b/server.h index 1ce46e3..ea9ae2d 100644 --- a/server.h +++ b/server.h @@ -81,6 +81,7 @@ public: eSatipQuirkRtpOverTcp = 0x08, eSatipQuirkCiXpmt = 0x10, eSatipQuirkCiTnr = 0x20, + eSatipQuirkForcePilot = 0x40, eSatipQuirkMask = 0xFF }; cSatipServer(const char *addressP, const int portP, const char *modelP, const char *filtersP, const char *descriptionP, const int quirkP); diff --git a/tuner.c b/tuner.c index bef87d4..d556da9 100644 --- a/tuner.c +++ b/tuner.c @@ -393,6 +393,9 @@ bool cSatipTuner::SetSource(cSatipServer *serverP, const int transponderP, const streamAddrM = rtspM.RtspUnescapeString(*nextServerM.GetAddress()); streamParamM = rtspM.RtspUnescapeString(parameterP); streamPortM = nextServerM.GetPort(); + // Modify parameter if required + if (nextServerM.IsQuirk(cSatipServer::eSatipQuirkForcePilot) && strstr(parameterP, "msys=dvbs2") && !strstr(parameterP, "plts=")) + streamParamM = rtspM.RtspUnescapeString(*cString::sprintf("%s&plts=on", parameterP)); // Reconnect RequestState(tsSet, smExternal); }