Updated for vdr-1.7.27.

This commit is contained in:
Rolf Ahrenberg 2012-03-25 16:55:42 +03:00
parent 8e1e025b0f
commit 315a3365ba
5 changed files with 15 additions and 18 deletions

View File

@ -442,6 +442,7 @@ VDR Plugin 'femon' Revision History
- Cleaned up compilation warnings. - Cleaned up compilation warnings.
- Fixed channel switching. - Fixed channel switching.
2012-xx-xx: Version 1.7.16 2012-03-25: Version 1.7.16
- Updated for vdr-1.7.27.
- Cleaned up compilation warnings again. - Cleaned up compilation warnings again.

View File

@ -14,8 +14,8 @@
#include "femonservice.h" #include "femonservice.h"
#include "femontools.h" #include "femontools.h"
#if defined(APIVERSNUM) && APIVERSNUM < 10726 #if defined(APIVERSNUM) && APIVERSNUM < 10727
#error "VDR-1.7.26 API version or greater is required!" #error "VDR-1.7.27 API version or greater is required!"
#endif #endif
#ifndef GITVERSION #ifndef GITVERSION

View File

@ -183,6 +183,7 @@ cFemonOsd::cFemonOsd()
m_BERValid(false), m_BERValid(false),
m_UNC(0), m_UNC(0),
m_UNCValid(false), m_UNCValid(false),
m_FrontendName(""),
m_FrontendStatusValid(false), m_FrontendStatusValid(false),
m_DeviceSource(DEVICESOURCE_DVBAPI), m_DeviceSource(DEVICESOURCE_DVBAPI),
m_DisplayMode(femonConfig.displaymode), m_DisplayMode(femonConfig.displaymode),
@ -420,7 +421,7 @@ void cFemonOsd::DrawInfoWindow(void)
offset += OSDROWHEIGHT; offset += OSDROWHEIGHT;
switch (channel->Source() & cSource::st_Mask) { switch (channel->Source() & cSource::st_Mask) {
case cSource::stSat: case cSource::stSat:
OSDDRAWINFOLINE(*cString::sprintf("%s #%d - %s", *getSatelliteSystem(dtp.System()), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); OSDDRAWINFOLINE(*cString::sprintf("%s #%d - %s", *getSatelliteSystem(dtp.System()), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName));
offset += OSDROWHEIGHT; offset += OSDROWHEIGHT;
OSDDRAWINFOLEFT( trVDR("Frequency"), *getFrequencyMHz(channel->Frequency())); OSDDRAWINFOLEFT( trVDR("Frequency"), *getFrequencyMHz(channel->Frequency()));
OSDDRAWINFORIGHT(trVDR("Source"), *cSource::ToString(channel->Source())); OSDDRAWINFORIGHT(trVDR("Source"), *cSource::ToString(channel->Source()));
@ -437,7 +438,7 @@ void cFemonOsd::DrawInfoWindow(void)
break; break;
case cSource::stCable: case cSource::stCable:
OSDDRAWINFOLINE(*cString::sprintf("DVB-C #%d - %s", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); OSDDRAWINFOLINE(*cString::sprintf("DVB-C #%d - %s", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName));
offset += OSDROWHEIGHT; offset += OSDROWHEIGHT;
OSDDRAWINFOLEFT( trVDR("Frequency"), *getFrequencyMHz(channel->Frequency())); OSDDRAWINFOLEFT( trVDR("Frequency"), *getFrequencyMHz(channel->Frequency()));
OSDDRAWINFORIGHT(trVDR("Source"), *cSource::ToString(channel->Source())); OSDDRAWINFORIGHT(trVDR("Source"), *cSource::ToString(channel->Source()));
@ -450,7 +451,7 @@ void cFemonOsd::DrawInfoWindow(void)
break; break;
case cSource::stTerr: case cSource::stTerr:
OSDDRAWINFOLINE(*cString::sprintf("%s #%d - %s", *getTerrestrialSystem(dtp.System()), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); OSDDRAWINFOLINE(*cString::sprintf("%s #%d - %s", *getTerrestrialSystem(dtp.System()), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName));
offset += OSDROWHEIGHT; offset += OSDROWHEIGHT;
OSDDRAWINFOLEFT( trVDR("Frequency"), *getFrequencyMHz(channel->Frequency())); OSDDRAWINFOLEFT( trVDR("Frequency"), *getFrequencyMHz(channel->Frequency()));
OSDDRAWINFORIGHT(trVDR("Transmission"), *getTransmission(dtp.Transmission())); OSDDRAWINFORIGHT(trVDR("Transmission"), *getTransmission(dtp.Transmission()));
@ -556,6 +557,7 @@ void cFemonOsd::Action(void)
m_QualityValid = (m_Quality >= 0); m_QualityValid = (m_Quality >= 0);
m_Strength = cDevice::ActualDevice()->SignalStrength(); m_Strength = cDevice::ActualDevice()->SignalStrength();
m_StrengthValid = (m_Strength >= 0); m_StrengthValid = (m_Strength >= 0);
m_FrontendName = cDevice::ActualDevice()->DeviceName();
m_FrontendStatus = (fe_status_t)(m_StrengthValid ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0); m_FrontendStatus = (fe_status_t)(m_StrengthValid ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0);
m_FrontendStatusValid = m_StrengthValid; m_FrontendStatusValid = m_StrengthValid;
m_Signal = uint16_t(m_Strength * 0xFFFF / 100); m_Signal = uint16_t(m_Strength * 0xFFFF / 100);
@ -572,6 +574,7 @@ void cFemonOsd::Action(void)
m_QualityValid = (m_Quality >= 0); m_QualityValid = (m_Quality >= 0);
m_Strength = cDevice::ActualDevice()->SignalStrength(); m_Strength = cDevice::ActualDevice()->SignalStrength();
m_StrengthValid = (m_Strength >= 0); m_StrengthValid = (m_Strength >= 0);
m_FrontendName = cDevice::ActualDevice()->DeviceName();
m_FrontendStatus = (fe_status_t)(m_StrengthValid ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0); m_FrontendStatus = (fe_status_t)(m_StrengthValid ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0);
m_FrontendStatusValid = m_StrengthValid; m_FrontendStatusValid = m_StrengthValid;
m_Signal = uint16_t(m_Strength * 0xFFFF / 100); m_Signal = uint16_t(m_Strength * 0xFFFF / 100);
@ -590,6 +593,7 @@ void cFemonOsd::Action(void)
m_QualityValid = (m_Quality >= 0); m_QualityValid = (m_Quality >= 0);
m_Strength = cDevice::ActualDevice()->SignalStrength(); m_Strength = cDevice::ActualDevice()->SignalStrength();
m_StrengthValid = (m_Strength >= 0); m_StrengthValid = (m_Strength >= 0);
m_FrontendName = cDevice::ActualDevice()->DeviceName();
m_FrontendStatusValid = (ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus) >= 0); m_FrontendStatusValid = (ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus) >= 0);
m_SignalValid = (ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal) >= 0); m_SignalValid = (ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal) >= 0);
m_SNRValid = (ioctl(m_Frontend, FE_READ_SNR, &m_SNR) >= 0); m_SNRValid = (ioctl(m_Frontend, FE_READ_SNR, &m_SNR) >= 0);
@ -622,7 +626,7 @@ void cFemonOsd::Action(void)
else if (!strncasecmp(s, "TYPE:", 5)) else if (!strncasecmp(s, "TYPE:", 5))
m_FrontendInfo.type = (fe_type_t)strtol(s + 5, NULL, 10); m_FrontendInfo.type = (fe_type_t)strtol(s + 5, NULL, 10);
else if (!strncasecmp(s, "NAME:", 5)) { else if (!strncasecmp(s, "NAME:", 5)) {
strn0cpy(m_FrontendInfo.name, s + 5, sizeof(m_FrontendInfo.name)); m_FrontendName = s + 5;
} }
else if (!strncasecmp(s, "STAT:", 5)) { else if (!strncasecmp(s, "STAT:", 5)) {
m_FrontendStatus = (fe_status_t)strtol(s + 5, NULL, 16); m_FrontendStatus = (fe_status_t)strtol(s + 5, NULL, 16);

View File

@ -55,6 +55,7 @@ private:
bool m_BERValid; bool m_BERValid;
uint32_t m_UNC; uint32_t m_UNC;
bool m_UNCValid; bool m_UNCValid;
cString m_FrontendName;
fe_status_t m_FrontendStatus; fe_status_t m_FrontendStatus;
bool m_FrontendStatusValid; bool m_FrontendStatusValid;
dvb_frontend_info m_FrontendInfo; dvb_frontend_info m_FrontendInfo;

View File

@ -97,7 +97,7 @@ cString getFrontendInfo(cDvbDevice *device)
info = cString::sprintf("CARD:%d\nSTRG:%d\nQUAL:%d", device->CardIndex(), device->SignalStrength(), device->SignalQuality()); info = cString::sprintf("CARD:%d\nSTRG:%d\nQUAL:%d", device->CardIndex(), device->SignalStrength(), device->SignalQuality());
if (ioctl(fe, FE_GET_INFO, &value) >= 0) if (ioctl(fe, FE_GET_INFO, &value) >= 0)
info = cString::sprintf("%s\nTYPE:%d\nNAME:%s", *info, value.type, value.name); info = cString::sprintf("%s\nTYPE:%d\nNAME:%s", *info, value.type, *device->DeviceName());
if (ioctl(fe, FE_READ_STATUS, &status) >= 0) if (ioctl(fe, FE_READ_STATUS, &status) >= 0)
info = cString::sprintf("%s\nSTAT:%02X", *info, status); info = cString::sprintf("%s\nSTAT:%02X", *info, status);
if (ioctl(fe, FE_READ_SIGNAL_STRENGTH, &signal) >= 0) if (ioctl(fe, FE_READ_SIGNAL_STRENGTH, &signal) >= 0)
@ -121,19 +121,10 @@ cString getFrontendInfo(cDvbDevice *device)
cString getFrontendName(cDvbDevice *device) cString getFrontendName(cDvbDevice *device)
{ {
struct dvb_frontend_info value;
if (!device) if (!device)
return NULL; return NULL;
int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); return (cString::sprintf("%s on device #%d", *device->DeviceName(), device->CardIndex()));
if (fe < 0)
return NULL;
memset(&value, 0, sizeof(value));
ioctl(fe, FE_GET_INFO, &value);
close(fe);
return (cString::sprintf("%s on device #%d", value.name, device->CardIndex()));
} }
cString getFrontendStatus(cDvbDevice *device) cString getFrontendStatus(cDvbDevice *device)