Moin!
Wenn dynamite nachträglich Devices einbindet, landen diese nicht unbedingt auf den vorderen Plätzen, weshalb die implizite Annahme "CardIndex == Adapter" nicht hinhaut.
Aber auch ohne dynamite kann devstatus keine vernünftigen Daten anzeigen, wenn es unter einem Adapter mehrere Frontends gibt, weil immer nur frontend0 abgefragt wird. Der folgende Patch behebt das und nutzt die wahren Adapter/Frontend-Nummern des cDvbDevice. Diese Funktion gibt es seit vdr 1.7.irgendwas, ist also inkompatibel mit vdr 1.6.0.
Diff
--- a/devstatus.c
+++ b/devstatus.c
@@ -161,6 +161,10 @@
private:
public:
void deviceinfoAsString(cDevice *d) {
+ cDvbDevice *dvb = dynamic_cast<cDvbDevice *>(d);
+ if (dvb == NULL)
+ return;
+
struct dvb_frontend_info m_FrontendInfo;
int m_Frontend;
// fe_status_t status;
@@ -170,7 +174,7 @@
char* output = NULL;
#define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d"
- cString dev = cString::sprintf(FRONTEND_DEVICE, d->CardIndex(), 0);
+ cString dev = cString::sprintf(FRONTEND_DEVICE, dvb->Adapter(), dvb->Frontend());
m_Frontend = open(dev, O_RDONLY | O_NONBLOCK);
if (m_Frontend < 0) {
return;
Alles anzeigen
Lars.