diff options
author | Lars Hanisch <dvb@flensrocker.de> | 2011-06-15 23:01:54 +0200 |
---|---|---|
committer | Lars Hanisch <dvb@flensrocker.de> | 2011-06-15 23:01:54 +0200 |
commit | 41adafa231a3130288c7140449c02a3608c6599c (patch) | |
tree | ad81bc6bbbbf89adee82340b8ea972f2dd2f1fa8 /dynamite.c | |
parent | 52eac73927cc0110ea9f93a40186d01564f6d69a (diff) | |
download | vdr-plugin-dynamite-41adafa231a3130288c7140449c02a3608c6599c.tar.gz vdr-plugin-dynamite-41adafa231a3130288c7140449c02a3608c6599c.tar.bz2 |
add udev property dynamite_cardindex to attach a device at a preferred slot (if free)
Diffstat (limited to 'dynamite.c')
-rw-r--r-- | dynamite.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -10,7 +10,7 @@ #include "menu.h" #include "monitor.h" -static const char *VERSION = "0.0.6c"; +static const char *VERSION = "0.0.6d"; static const char *DESCRIPTION = tr("attach/detach devices on the fly"); static const char *MAINMENUENTRY = NULL; @@ -20,9 +20,15 @@ private: public: virtual bool Probe(int Adapter, int Frontend) { + if (firstProbe) { + firstProbe = false; + isyslog("dynamite: preparing %d dynamic device slots for dvb devices", MAXDVBDEVICES); + while (cDevice::NumDevices() < MAXDVBDEVICES) + new cDynamicDevice; + } cString devpath = cString::sprintf("/dev/dvb/adapter%d/frontend%d", Adapter, Frontend); int freeIndex = -1; - if (cDynamicDevice::IndexOf(*devpath, freeIndex) >= 0) // already attached - should not happen + if (cDynamicDevice::IndexOf(*devpath, freeIndex, -1) >= 0) // already attached - should not happen return true; if (freeIndex < 0) { if ((cDevice::NumDevices() >= MAXDEVICES) || (cDynamicDevice::NumDynamicDevices() >= MAXDEVICES)) { @@ -209,7 +215,7 @@ bool cPluginDynamite::Initialize(void) int dummy = 0; for (cUdevDevice *d = devices->First(); d; d = devices->Next(d)) { const char *devpath = d->GetDevnode(); - if ((devpath != NULL) && (cDynamicDevice::IndexOf(devpath, dummy) < 0)) { + if ((devpath != NULL) && (cDynamicDevice::IndexOf(devpath, dummy, -1) < 0)) { isyslog("dynamite: probing %s", devpath); cDynamicDeviceProbe::QueueDynamicDeviceCommand(ddpcAttach, devpath); } |