diff options
author | Frank Schmirler <vdr@schmirler.de> | 2011-07-06 09:13:50 +0200 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2011-07-06 09:13:50 +0200 |
commit | 2c8377d42a9ebd7c399322968d2c78fb377f55b0 (patch) | |
tree | cf94f08eac64285d908e35b9b4d0dcdb09e83e74 /client/socket.c | |
parent | 673fbae2e258102c7bd2a7bee554f75eae0e332b (diff) | |
download | vdr-plugin-streamdev-2c8377d42a9ebd7c399322968d2c78fb377f55b0.tar.gz vdr-plugin-streamdev-2c8377d42a9ebd7c399322968d2c78fb377f55b0.tar.bz2 |
added support for VDR 1.7.19 SignalStrength/SignalQuality
Diffstat (limited to 'client/socket.c')
-rw-r--r-- | client/socket.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/client/socket.c b/client/socket.c index 3e6dec8..2d5103b 100644 --- a/client/socket.c +++ b/client/socket.c @@ -21,6 +21,9 @@ cClientSocket::cClientSocket(void) { memset(m_DataSockets, 0, sizeof(cTBSocket*) * si_Count); m_Prio = false; + m_LastSignalUpdate = 0; + m_LastSignalStrength = -1; + m_LastSignalQuality = -1; Reset(); } @@ -255,6 +258,8 @@ bool cClientSocket::SetChannelDevice(const cChannel *Channel) { RemoteIp().c_str(), RemotePort(), Channel->Name()); return false; } + + m_LastSignalUpdate = 0; return true; } @@ -273,6 +278,27 @@ bool cClientSocket::SetPriority(int Priority) { return true; } +bool cClientSocket::GetSignal(int *SignalStrength, int *SignalQuality) { + if (!CheckConnection()) return -1; + + CMD_LOCK; + + if (m_LastSignalUpdate != time(NULL)) { + std::string buffer; + if (!Command("SGNL") || !Expect(220, &buffer) + || sscanf(buffer.c_str(), "%*d %*d %d:%d", &m_LastSignalStrength, &m_LastSignalQuality) != 2) { + m_LastSignalStrength = -1; + m_LastSignalQuality = -1; + } + m_LastSignalUpdate = time(NULL); + } + if (SignalStrength) + *SignalStrength = m_LastSignalStrength; + if (SignalQuality) + *SignalQuality = m_LastSignalQuality; + return 0; +} + bool cClientSocket::SetPid(int Pid, bool On) { if (!CheckConnection()) return false; |