diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-01-15 15:51:19 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-01-15 15:51:19 +0000 |
| commit | b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20 (patch) | |
| tree | 12b771f91ee8351764d8e0087cfd122b7ccfb263 /lib/dvb | |
| parent | c866e3ad3c089e189ff94d51cb125603b998f5c6 (diff) | |
| download | enigma2-b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20.tar.gz enigma2-b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20.zip | |
change iFrontendInformation api
getFrontendData(bool) is now splitted in three seperate calls
getFrontendData() returns the frontend number and frontend type in a dict
getFrontendStatus() return signal quality, signal power, bit error rate,
lock state, sync state, frontend state in a dict
getTransponderData(bool) when the bool is true it returns a dict with the
original tuned transponder data, when false the transponderdata read out
from the frontend driver
getAll(bool) is a sum of the three single calls and the direct replacement
of the old getFrontendData call
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/frontend.cpp | 167 | ||||
| -rw-r--r-- | lib/dvb/frontend.h | 4 | ||||
| -rw-r--r-- | lib/dvb/idvb.h | 4 |
3 files changed, 93 insertions, 82 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index d8301db8..3ae9473e 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -971,17 +971,97 @@ void fillDictWithTerrestrialData(ePyObject dict, const FRONTENDPARAMETERS &parm) PutToDict(dict, "hierarchy_information", tmp); } -PyObject *eDVBFrontend::readTransponderData(bool original) +void eDVBFrontend::getFrontendStatus(ePyObject dest) { - ePyObject ret=PyDict_New(); + if (dest && PyDict_Check(dest)) + { + const char *tmp = "UNKNOWN"; + switch(m_state) + { + case stateIdle: + tmp="IDLE"; + break; + case stateTuning: + tmp="TUNING"; + break; + case stateFailed: + tmp="FAILED"; + break; + case stateLock: + tmp="LOCKED"; + break; + case stateLostLock: + tmp="LOSTLOCK"; + break; + default: + break; + } + PutToDict(dest, "tuner_state", tmp); + PutToDict(dest, "tuner_locked", readFrontendData(locked)); + PutToDict(dest, "tuner_synced", readFrontendData(synced)); + PutToDict(dest, "tuner_bit_error_rate", readFrontendData(bitErrorRate)); + PutToDict(dest, "tuner_signal_power", readFrontendData(signalPower)); + PutToDict(dest, "tuner_signal_quality", readFrontendData(signalQuality)); + } +} - if (ret) +void eDVBFrontend::getTransponderData(ePyObject dest, bool original) +{ + if (m_fd != -1 && dest && PyDict_Check(dest)) { - bool read=m_fd != -1; - const char *tmp=0; + switch(m_type) + { + case feSatellite: + case feCable: + case feTerrestrial: + { + FRONTENDPARAMETERS front; + if (!original && ioctl(m_fd, FE_GET_FRONTEND, &front)<0) + eDebug("FE_GET_FRONTEND (%m)"); + else + { + const FRONTENDPARAMETERS &parm = original ? this->parm : front; + const char *tmp = "INVERSION_AUTO"; + switch(parm_inversion) + { + case INVERSION_ON: + tmp = "INVERSION_ON"; + break; + case INVERSION_OFF: + tmp = "INVERSION_OFF"; + break; + default: + break; + } + if (tmp) + PutToDict(dest, "inversion", tmp); - PutToDict(ret, "tuner_number", m_fe); + switch(m_type) + { + case feSatellite: + fillDictWithSatelliteData(dest, original?parm:front, this); + break; + case feCable: + fillDictWithCableData(dest, original?parm:front); + break; + case feTerrestrial: + fillDictWithTerrestrialData(dest, original?parm:front); + break; + } + } + } + default: + break; + } + } +} +void eDVBFrontend::getFrontendData(ePyObject dest) +{ + if (dest && PyDict_Check(dest)) + { + const char *tmp=0; + PutToDict(dest, "tuner_number", m_fe); switch(m_type) { case feSatellite: @@ -995,83 +1075,10 @@ PyObject *eDVBFrontend::readTransponderData(bool original) break; default: tmp = "UNKNOWN"; - read=false; break; } - PutToDict(ret, "tuner_type", tmp); - - if (read) - { - FRONTENDPARAMETERS front; - - tmp = "UNKNOWN"; - switch(m_state) - { - case stateIdle: - tmp="IDLE"; - break; - case stateTuning: - tmp="TUNING"; - break; - case stateFailed: - tmp="FAILED"; - break; - case stateLock: - tmp="LOCKED"; - break; - case stateLostLock: - tmp="LOSTLOCK"; - break; - default: - break; - } - PutToDict(ret, "tuner_state", tmp); - - PutToDict(ret, "tuner_locked", readFrontendData(locked)); - PutToDict(ret, "tuner_synced", readFrontendData(synced)); - PutToDict(ret, "tuner_bit_error_rate", readFrontendData(bitErrorRate)); - PutToDict(ret, "tuner_signal_power", readFrontendData(signalPower)); - PutToDict(ret, "tuner_signal_quality", readFrontendData(signalQuality)); - - if (!original && ioctl(m_fd, FE_GET_FRONTEND, &front)<0) - eDebug("FE_GET_FRONTEND (%m)"); - else - { - const FRONTENDPARAMETERS &parm = original ? this->parm : front; - tmp = "INVERSION_AUTO"; - switch(parm_inversion) - { - case INVERSION_ON: - tmp = "INVERSION_ON"; - break; - case INVERSION_OFF: - tmp = "INVERSION_OFF"; - break; - default: - break; - } - if (tmp) - PutToDict(ret, "inversion", tmp); - - switch(m_type) - { - case feSatellite: - fillDictWithSatelliteData(ret, original?parm:front, this); - break; - case feCable: - fillDictWithCableData(ret, original?parm:front); - break; - case feTerrestrial: - fillDictWithTerrestrialData(ret, original?parm:front); - break; - } - } - } + PutToDict(dest, "tuner_type", tmp); } - else - Py_RETURN_NONE; - - return ret; } #ifndef FP_IOCTL_GET_ID diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h index df028c19..cfe25d1a 100644 --- a/lib/dvb/frontend.h +++ b/lib/dvb/frontend.h @@ -110,7 +110,9 @@ public: RESULT setData(int num, int val); int readFrontendData(int type); // bitErrorRate, signalPower, signalQuality, locked, synced - PyObject *readTransponderData(bool original); + void getFrontendStatus(ePyObject dest); + void getTransponderData(ePyObject dest, bool original); + void getFrontendData(ePyObject dest); int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm); int getID() { return m_fe; } diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index d5f399c0..36b2bea1 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -465,7 +465,9 @@ public: virtual RESULT setSecSequence(const eSecCommandList &list)=0; #endif virtual int readFrontendData(int type)=0; - virtual PyObject *readTransponderData(bool original)=0; + virtual void getFrontendStatus(SWIG_PYOBJECT(ePyObject) dest)=0; + virtual void getTransponderData(SWIG_PYOBJECT(ePyObject) dest, bool original)=0; + virtual void getFrontendData(SWIG_PYOBJECT(ePyObject) dest)=0; #ifndef SWIG virtual RESULT getData(int num, int &data)=0; virtual RESULT setData(int num, int val)=0; |
