mirror of
				https://github.com/rofafor/vdr-plugin-satip.git
				synced 2023-10-10 11:37:42 +00:00 
			
		
		
		
	Fixed to nag about any malfunctioning firmware only once.
This commit is contained in:
		
							
								
								
									
										11
									
								
								discover.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								discover.c
									
									
									
									
									
								
							@@ -242,7 +242,7 @@ void cSatipDiscover::AddServer(const char *addrP, const char *modelP, const char
 | 
			
		||||
           cString desc = cString::sprintf("%s #%d", !isempty(descP) ? descP : "MyBrokenHardware", n++);
 | 
			
		||||
           cSatipServer *tmp = new cSatipServer(addrP, r, desc);
 | 
			
		||||
           if (!serversM.Update(tmp)) {
 | 
			
		||||
              info("Adding server '%s|%s|%s'", tmp->Address(), tmp->Model(), tmp->Description());
 | 
			
		||||
              info("Adding server '%s|%s|%s'%s%s", tmp->Address(), tmp->Model(), tmp->Description(), tmp->HasCI() ? " providing CI" : "", tmp->HasQuirk() ? " (malfunctioning firmware!)" : "");
 | 
			
		||||
              serversM.Add(tmp);
 | 
			
		||||
              }
 | 
			
		||||
           else
 | 
			
		||||
@@ -254,7 +254,7 @@ void cSatipDiscover::AddServer(const char *addrP, const char *modelP, const char
 | 
			
		||||
  else {
 | 
			
		||||
     cSatipServer *tmp = new cSatipServer(addrP, modelP, descP);
 | 
			
		||||
     if (!serversM.Update(tmp)) {
 | 
			
		||||
        info("Adding server '%s|%s|%s'", tmp->Address(), tmp->Model(), tmp->Description());
 | 
			
		||||
        info("Adding server '%s|%s|%s'%s%s", tmp->Address(), tmp->Model(), tmp->Description(), tmp->HasCI() ? " providing CI" : "", tmp->HasQuirk() ? " (malfunctioning firmware!)" : "");
 | 
			
		||||
        serversM.Add(tmp);
 | 
			
		||||
        }
 | 
			
		||||
     else
 | 
			
		||||
@@ -325,6 +325,13 @@ bool cSatipDiscover::IsServerQuirk(cSatipServer *serverP, int quirkP)
 | 
			
		||||
  return serversM.IsQuirk(serverP, quirkP);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cSatipDiscover::HasServerCI(cSatipServer *serverP)
 | 
			
		||||
{
 | 
			
		||||
  debug16("%s", __PRETTY_FUNCTION__);
 | 
			
		||||
  cMutexLock MutexLock(&mutexM);
 | 
			
		||||
  return serversM.HasCI(serverP);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cString cSatipDiscover::GetServerAddress(cSatipServer *serverP)
 | 
			
		||||
{
 | 
			
		||||
  debug16("%s", __PRETTY_FUNCTION__);
 | 
			
		||||
 
 | 
			
		||||
@@ -81,6 +81,7 @@ public:
 | 
			
		||||
  cString GetServerString(cSatipServer *serverP);
 | 
			
		||||
  void UseServer(cSatipServer *serverP, int transponderP, bool onOffP);
 | 
			
		||||
  bool IsServerQuirk(cSatipServer *serverP, int quirkP);
 | 
			
		||||
  bool HasServerCI(cSatipServer *serverP);
 | 
			
		||||
  cString GetServerAddress(cSatipServer *serverP);
 | 
			
		||||
  cString GetServerList(void);
 | 
			
		||||
  int NumProvidedSystems(void);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								server.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								server.c
									
									
									
									
									
								
							@@ -73,6 +73,7 @@ cSatipServer::cSatipServer(const char *addressP, const char *modelP, const char
 | 
			
		||||
  modelM((modelP && *modelP) ? modelP : "DVBS-1"),
 | 
			
		||||
  descriptionM(!isempty(descriptionP) ? descriptionP : "MyBrokenHardware"),
 | 
			
		||||
  quirkM(eSatipQuirkNone),
 | 
			
		||||
  hasCiM(false),
 | 
			
		||||
  createdM(time(NULL)),
 | 
			
		||||
  lastSeenM(0)
 | 
			
		||||
{
 | 
			
		||||
@@ -94,12 +95,10 @@ cSatipServer::cSatipServer(const char *addressP, const char *modelP, const char
 | 
			
		||||
         strstr(*descriptionM, "Triax SatIP Converter") // Triax TSS 400
 | 
			
		||||
        )
 | 
			
		||||
        quirkM |= eSatipQuirkForceLock;
 | 
			
		||||
     if (quirkM != eSatipQuirkNone)
 | 
			
		||||
        info("Malfunctioning '%s' server detected! Please, fix the firmware.", *descriptionM);
 | 
			
		||||
     }
 | 
			
		||||
  // These devices support the X_PMT protocol extension
 | 
			
		||||
  if (strstr(*descriptionM, "OctopusNet"))           // Digital Devices OctopusNet
 | 
			
		||||
     quirkM |= eSatipQuirkUseXCI;
 | 
			
		||||
     hasCiM = true;
 | 
			
		||||
  char *s, *p = strdup(*modelM);
 | 
			
		||||
  char *r = strtok_r(p, ",", &s);
 | 
			
		||||
  while (r) {
 | 
			
		||||
@@ -300,6 +299,18 @@ bool cSatipServers::IsQuirk(cSatipServer *serverP, int quirkP)
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cSatipServers::HasCI(cSatipServer *serverP)
 | 
			
		||||
{
 | 
			
		||||
  bool result = false;
 | 
			
		||||
  for (cSatipServer *s = First(); s; s = Next(s)) {
 | 
			
		||||
      if (s == serverP) {
 | 
			
		||||
         result = s->HasCI();
 | 
			
		||||
         break;
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cSatipServers::Cleanup(uint64_t intervalMsP)
 | 
			
		||||
{
 | 
			
		||||
  for (cSatipServer *s = First(); s; s = Next(s)) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								server.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								server.h
									
									
									
									
									
								
							@@ -56,6 +56,7 @@ private:
 | 
			
		||||
  cString descriptionM;
 | 
			
		||||
  cSatipFrontends frontendsM[eSatipFrontendCount];
 | 
			
		||||
  int quirkM;
 | 
			
		||||
  bool hasCiM;
 | 
			
		||||
  time_t createdM;
 | 
			
		||||
  cTimeMs lastSeenM;
 | 
			
		||||
 | 
			
		||||
@@ -65,7 +66,6 @@ public:
 | 
			
		||||
    eSatipQuirkSessionId = 0x01,
 | 
			
		||||
    eSatipQuirkPlayPids  = 0x02,
 | 
			
		||||
    eSatipQuirkForceLock = 0x04,
 | 
			
		||||
    eSatipQuirkUseXCI    = 0x08,
 | 
			
		||||
    eSatipQuirkMask      = 0x0F
 | 
			
		||||
  };
 | 
			
		||||
  cSatipServer(const char *addressP, const char *modelP, const char *descriptionP);
 | 
			
		||||
@@ -84,6 +84,8 @@ public:
 | 
			
		||||
  const char *Model(void)   { return *modelM; }
 | 
			
		||||
  const char *Description() { return *descriptionM; }
 | 
			
		||||
  bool Quirk(int quirkP)    { return ((quirkP & eSatipQuirkMask) & quirkM); }
 | 
			
		||||
  bool HasQuirk(void)       { return !!quirkM; }
 | 
			
		||||
  bool HasCI(void)          { return hasCiM; }
 | 
			
		||||
  void Update(void)         { lastSeenM.Set(); }
 | 
			
		||||
  uint64_t LastSeen(void)   { return lastSeenM.Elapsed(); }
 | 
			
		||||
  time_t Created(void)      { return createdM; }
 | 
			
		||||
@@ -99,6 +101,7 @@ public:
 | 
			
		||||
  cSatipServer *Update(cSatipServer *serverP);
 | 
			
		||||
  void Use(cSatipServer *serverP, int transponderP, bool onOffP);
 | 
			
		||||
  bool IsQuirk(cSatipServer *serverP, int quirkP);
 | 
			
		||||
  bool HasCI(cSatipServer *serverP);
 | 
			
		||||
  void Cleanup(uint64_t intervalMsP = 0);
 | 
			
		||||
  cString GetAddress(cSatipServer *serverP);
 | 
			
		||||
  cString GetString(cSatipServer *serverP);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								setup.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.c
									
									
									
									
									
								
							@@ -104,7 +104,7 @@ cSatipServerInfo::cSatipServerInfo(cSatipServer *serverP)
 | 
			
		||||
  addressM(serverP ? serverP->Address() : "---"),
 | 
			
		||||
  modelM(serverP ? serverP->Model() : "---"),
 | 
			
		||||
  descriptionM(serverP ? serverP->Description() : "---"),
 | 
			
		||||
  ciExtensionM(serverP && serverP->Quirk(cSatipServer::eSatipQuirkUseXCI) ? trVDR("yes") : trVDR("no")),
 | 
			
		||||
  ciExtensionM(serverP && serverP->HasCI() ? trVDR("yes") : trVDR("no")),
 | 
			
		||||
  createdM(serverP ? serverP->Created() : 0)
 | 
			
		||||
{
 | 
			
		||||
  SetMenuCategory(mcSetupPlugins);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								tuner.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tuner.c
									
									
									
									
									
								
							@@ -394,7 +394,7 @@ bool cSatipTuner::UpdatePids(bool forceP)
 | 
			
		||||
  if (((forceP && pidsM.Size()) || (pidUpdateCacheM.TimedOut() && (addPidsM.Size() || delPidsM.Size()))) &&
 | 
			
		||||
      !isempty(*streamAddrM) && (streamIdM > 0)) {
 | 
			
		||||
     cString uri = cString::sprintf("rtsp://%s/stream=%d", *streamAddrM, streamIdM);
 | 
			
		||||
     bool useci = (SatipConfig.GetCIExtension() && currentServerM.IsQuirk(cSatipServer::eSatipQuirkUseXCI));
 | 
			
		||||
     bool useci = (SatipConfig.GetCIExtension() && currentServerM.HasCI());
 | 
			
		||||
     bool usedummy = currentServerM.IsQuirk(cSatipServer::eSatipQuirkPlayPids);
 | 
			
		||||
     if (forceP || usedummy) {
 | 
			
		||||
        if (pidsM.Size())
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								tuner.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tuner.h
									
									
									
									
									
								
							@@ -90,6 +90,7 @@ public:
 | 
			
		||||
  cSatipTunerServer& operator= (const cSatipTunerServer &objP) { serverM = objP.serverM; transponderM = objP.transponderM; return *this; }
 | 
			
		||||
  bool IsValid(void) { return !!serverM; }
 | 
			
		||||
  bool IsQuirk(int quirkP) { return (serverM && cSatipDiscover::GetInstance()->IsServerQuirk(serverM, quirkP)); }
 | 
			
		||||
  bool HasCI(void) { return (serverM && cSatipDiscover::GetInstance()->HasServerCI(serverM)); }
 | 
			
		||||
  void Use(bool onOffP) { if (serverM) cSatipDiscover::GetInstance()->UseServer(serverM, transponderM, onOffP); }
 | 
			
		||||
  void Set(cSatipServer *serverP, const int transponderP) { serverM = serverP; transponderM = transponderP; }
 | 
			
		||||
  void Reset(void) { serverM = NULL; transponderM = 0; }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user