Add SubsystemId for usb cards

Message ID 1796620.MFx6I4AUpE@jar7.dominio
State New
Headers

Commit Message

Jose Alberto Reguero May 24, 2014, 3:12 p.m. UTC
  This patch add SubsystemId for usb cards, to be able to make changes to 
GetSignalQuality and GetSignalStrength functions.

Jose Alberto
  

Comments

VDRU VDRU May 24, 2014, 5:02 p.m. UTC | #1
If the linux-media guys every get their act together in that area,
this wouldn't be necessary. Standardized statistics has been discussed
(at length) a number of times but unfortunately nothing was ever
agreed on and merged.

On Sat, May 24, 2014 at 8:12 AM, Jose Alberto Reguero
<jareguero@telefonica.net> wrote:
> This patch add SubsystemId for usb cards, to be able to make changes to
> GetSignalQuality and GetSignalStrength functions.
>
> Jose Alberto
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  

Patch

--- vdr-2.1.6/dvbdevice.c	2014-03-16 11:38:31.000000000 +0100
+++ vdr-actual/dvbdevice.c	2014-05-24 13:06:25.358513231 +0200
@@ -1750,12 +1735,26 @@  uint32_t cDvbDeviceProbe::GetSubsystemId
                              if (char *s = ReadLine.Read(f))
                                 SubsystemId = strtoul(s, NULL, 0) << 16;
                              fclose(f);
+                             } else {
+                                FileName = cString::sprintf("/sys/class/dvb/%s/device/idVendor", e->d_name);
+                                if ((f = fopen(FileName, "r")) != NULL) {
+                                   if (char *s = ReadLine.Read(f))
+                                      SubsystemId = strtoul(s, NULL, 16) << 16;
+                                   fclose(f);
+                                }
                              }
                           FileName = cString::sprintf("/sys/class/dvb/%s/device/subsystem_device", e->d_name);
                           if ((f = fopen(FileName, "r")) != NULL) {
                              if (char *s = ReadLine.Read(f))
                                 SubsystemId |= strtoul(s, NULL, 0);
                              fclose(f);
+                             } else {
+                                FileName = cString::sprintf("/sys/class/dvb/%s/device/idProduct", e->d_name);
+                                if ((f = fopen(FileName, "r")) != NULL) {
+                                   if (char *s = ReadLine.Read(f))
+                                      SubsystemId |= strtoul(s, NULL, 16);
+                                   fclose(f);
+                                }
                              }
                           break;
                           }