summaryrefslogtreecommitdiff
path: root/dynamicdevice.c
diff options
context:
space:
mode:
authorLars Hanisch <dvb@flensrocker.de>2011-03-24 23:48:29 +0100
committerLars Hanisch <dvb@flensrocker.de>2011-03-24 23:48:29 +0100
commit2ad4f6c98465577159b3fa07df24dac37ee5a0e6 (patch)
treece71e562044708ba5e6ab5c5574dc0b6c06f3064 /dynamicdevice.c
parente03b81ff043b9e1d29da4d48e8971d7fe7e3eccc (diff)
downloadvdr-plugin-dynamite-2ad4f6c98465577159b3fa07df24dac37ee5a0e6.tar.gz
vdr-plugin-dynamite-2ad4f6c98465577159b3fa07df24dac37ee5a0e6.tar.bz2
enumerate dvb devices with udev so every adapter is found even if not "in a row"
You can use the udev property "dynamite_ignore" to preserve a device from being attached. With the udev property "dynamite_instanceid" the devices can be associated with different vdr instances.
Diffstat (limited to 'dynamicdevice.c')
-rw-r--r--dynamicdevice.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/dynamicdevice.c b/dynamicdevice.c
index 6ec9e2a..5ed2276 100644
--- a/dynamicdevice.c
+++ b/dynamicdevice.c
@@ -133,6 +133,27 @@ eDynamicDeviceReturnCode cDynamicDevice::AttachDevice(const char *DevPath)
return ddrcNoFreeDynDev;
}
+ cUdevDevice *dev = cUdev::GetDeviceFromDevName(DevPath);
+ if (dev != NULL) {
+ bool ignore = false;
+ const char *tmp;
+ if (((tmp = dev->GetPropertyValue("dynamite_ignore")) != NULL)
+ && ((strcasecmp(tmp, "yes") == 0) || (strcasecmp(tmp, "y") == 0) || (strcmp(tmp, "1") == 0))) {
+ isyslog("dynamite: udev says ignore %s", DevPath);
+ ignore = true;
+ }
+ else if (((tmp = dev->GetPropertyValue("dynamite_instanceid")) != NULL) && isnumber(tmp)) {
+ int devInstanceId = strtol(tmp, NULL, 10);
+ if (devInstanceId != InstanceId) {
+ isyslog("dynamite: device %s is for vdr instance %d, we are %d", DevPath, devInstanceId, InstanceId);
+ ignore = true;
+ }
+ }
+ delete dev;
+ if (ignore)
+ return ddrcNotSupported;
+ }
+
cDevice::nextParentDevice = dynamicdevice[freeIndex];
for (cDynamicDeviceProbe *ddp = DynamicDeviceProbes.First(); ddp; ddp = DynamicDeviceProbes.Next(ddp)) {