From 447ab1bf2b321d2cfd9af0ffc0d4c3a8b28e66a8 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 08:11:08 +0100 Subject: fix log levels --- plugin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.c b/plugin.c index 073d67a..18e8584 100644 --- a/plugin.c +++ b/plugin.c @@ -341,14 +341,14 @@ void cPluginGraphLCD::MainThreadHook() { if (mDisplay[index].Disp->Active()) { - dsyslog("graphlcd plugin: DEBUG: Display thread for %s is ready", mDisplay[index].Name.c_str()); + isyslog("graphlcd plugin: INFO: Display thread for %s is ready", mDisplay[index].Name.c_str()); mDisplay[index].Status = CONNECTED; } else { if ( (cTimeMs::Now() - mDisplay[index].to_timestamp) > (uint64_t) 10000) { - dsyslog ("graphlcd plugin: DEBUG: Timeout while waiting for display thread %s", mDisplay[index].Name.c_str()); + esyslog ("graphlcd plugin: ERROR: Timeout while waiting for display thread %s", mDisplay[index].Name.c_str()); /* no activity after 10 secs: display is unusable */ //GraphLCDSetup.PluginActive = 0; DisconnectDisplay(index); -- cgit v1.2.3 From 20bc36f46418f94eb87dbf8726e42a57fcc1a972 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 08:12:38 +0100 Subject: fix Wliteral-suffix --- plugin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.c b/plugin.c index 18e8584..f8c2de9 100644 --- a/plugin.c +++ b/plugin.c @@ -128,7 +128,7 @@ cPluginGraphLCD::~cPluginGraphLCD() const char * cPluginGraphLCD::CommandLineHelp() { - return " -c, --config=CFG use CFG as driver config file (default is \""PLUGIN_GRAPHLCDCONF"\")\n" + return " -c, --config=CFG use CFG as driver config file (default is \"" PLUGIN_GRAPHLCDCONF "\")\n" " -d, --display=DISP[,DISP]... use display DISP for output or if DISP=none: start w/o any display\n" " -s, --skin=SKIN[,SKIN]... use skin SKIN (default is \"default\")\n" " -p, --skinspath=PATH use path PATH for skins (default is \"/skins/\")\n"; -- cgit v1.2.3 From 0d5decc077e8263db8f9cd4336fe53f6d52d3234 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 08:14:17 +0100 Subject: fix Wformat-truncation --- plugin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.c b/plugin.c index f8c2de9..bfe2702 100644 --- a/plugin.c +++ b/plugin.c @@ -510,9 +510,9 @@ cString cPluginGraphLCD::SVDRPCommand(const char *Command, const char *Option, i } } } - char buf[25]; + char buf[64]; std::string retval = "RECONNECT status: "; - snprintf(buf, 24, "OK = %1d, FAILED = %1d", count_ok, count_fail); + snprintf(buf, sizeof(buf), "OK = %1d, FAILED = %1d", count_ok, count_fail); retval += buf; return retval.c_str(); } -- cgit v1.2.3 From 4470a14f7088c57e7e37e997fa3436ba4369b24b Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 08:19:42 +0100 Subject: add support for 3 dedicated recording lines and symbols: IsRecording1/2/3 and Recording1/2/3 --- skinconfig.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- state.c | 33 +++++++++++++++++++++++++++++++-- state.h | 4 ++-- 3 files changed, 85 insertions(+), 8 deletions(-) diff --git a/skinconfig.c b/skinconfig.c index 39b6c75..f5ada81 100644 --- a/skinconfig.c +++ b/skinconfig.c @@ -55,7 +55,13 @@ typedef enum _eTokenId tokPrivateRecordingStart, tokIsRecording, + tokIsRecording1, + tokIsRecording2, + tokIsRecording3, tokRecordings, + tokRecording1, + tokRecording2, + tokRecording3, tokPrivateRecordingEnd, // present event @@ -208,7 +214,13 @@ static const std::string Tokens[tokCountToken] = "privateRecordingStart", "IsRecording", + "IsRecording1", + "IsRecording2", + "IsRecording3", "Recordings", + "Recording1", + "Recording2", + "Recording3", "privateRecordingEnd", "privatePresentStart", @@ -466,14 +478,50 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token) case tokIsRecording: { if (Token.Attrib.Type == GLCD::aNumber) - return mState->IsRecording(Token.Attrib.Number); - return mState->IsRecording(-1); + return mState->IsRecording(Token.Attrib.Number, 0); + return mState->IsRecording(-1, 0); + } + case tokIsRecording1: + { + if (Token.Attrib.Type == GLCD::aNumber) + return mState->IsRecording(Token.Attrib.Number, 1); + return mState->IsRecording(-1, 1); + } + case tokIsRecording2: + { + if (Token.Attrib.Type == GLCD::aNumber) + return mState->IsRecording(Token.Attrib.Number, 2); + return mState->IsRecording(-1, 2); + } + case tokIsRecording3: + { + if (Token.Attrib.Type == GLCD::aNumber) + return mState->IsRecording(Token.Attrib.Number, 3); + return mState->IsRecording(-1, 3); } case tokRecordings: { if (Token.Attrib.Type == GLCD::aNumber) - return mState->Recordings(Token.Attrib.Number); - return mState->Recordings(-1); + return mState->Recordings(Token.Attrib.Number, 0); + return mState->Recordings(-1, 0); + } + case tokRecording1: + { + if (Token.Attrib.Type == GLCD::aNumber) + return mState->Recordings(Token.Attrib.Number, 1); + return mState->Recordings(-1, 1); + } + case tokRecording2: + { + if (Token.Attrib.Type == GLCD::aNumber) + return mState->Recordings(Token.Attrib.Number, 2); + return mState->Recordings(-1, 2); + } + case tokRecording3: + { + if (Token.Attrib.Type == GLCD::aNumber) + return mState->Recordings(Token.Attrib.Number, 3); + return mState->Recordings(-1, 3); } default: break; diff --git a/state.c b/state.c index 2f9780c..d3233ce 100644 --- a/state.c +++ b/state.c @@ -872,15 +872,24 @@ tReplayState cGraphLCDState::GetReplayState() return ret; } -bool cGraphLCDState::IsRecording(int CardNumber) +bool cGraphLCDState::IsRecording(int CardNumber, int selector) { bool ret = false; std::vector ::iterator it; + int count = 0; mutex.Lock(); + // dsyslog("%s/%s: called CardNumber=%d selector=%d mRecordings.size=%lu", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, mRecordings.size()); if (CardNumber == -1 && mRecordings.size() > 0) { + if (selector > 0) { + if (mRecordings.size() >= (long unsigned int) selector) { + // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d mRecordings.size=%lu", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, mRecordings.size()); + ret = true; + } + } else { ret = true; + } } else { @@ -889,8 +898,17 @@ bool cGraphLCDState::IsRecording(int CardNumber) { if (it->deviceNumber == CardNumber) { + count++; + if (selector > 0) { + if (count == selector) { + // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d count=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, count); + ret = true; + break; + } + } else { ret = true; break; + } } it++; } @@ -900,20 +918,31 @@ bool cGraphLCDState::IsRecording(int CardNumber) return ret; } -std::string cGraphLCDState::Recordings(int CardNumber) +std::string cGraphLCDState::Recordings(int CardNumber, int selector) { std::string ret = ""; std::vector ::iterator it; + int count = 0; mutex.Lock(); + // dsyslog("%s/%s: called CardNumber=%d selector=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector); it = mRecordings.begin(); while (it != mRecordings.end()) { if (CardNumber == -1 || it->deviceNumber == CardNumber) { + count++; + if (selector > 0) { + if (count == selector) { + // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d count=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, count); + ret += it->name; + break; + } + } else { if (ret.length() > 0) ret += "\n"; ret += it->name; + } } it++; } diff --git a/state.h b/state.h index 67cdb66..553ba6d 100644 --- a/state.h +++ b/state.h @@ -158,8 +158,8 @@ public: tEvent GetPresentEvent(); tEvent GetFollowingEvent(); tReplayState GetReplayState(); - bool IsRecording(int CardNumber); - std::string Recordings(int CardNumber); + bool IsRecording(int CardNumber, int selector); + std::string Recordings(int CardNumber, int selector); tOsdState GetOsdState(); void ResetOsdStateScroll(); tVolumeState GetVolumeState(); -- cgit v1.2.3 From 10787f7b714fff71c6ebf7241f1370920fd160e9 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 08:20:46 +0100 Subject: add support for new feature: IsRecording1/2/3 and Recording1/2/3 --- graphlcd/skins/reelbox/reelbox.skin | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/graphlcd/skins/reelbox/reelbox.skin b/graphlcd/skins/reelbox/reelbox.skin index 9132fb9..25e104e 100644 --- a/graphlcd/skins/reelbox/reelbox.skin +++ b/graphlcd/skins/reelbox/reelbox.skin @@ -253,7 +253,7 @@ {PresentShortText} - + {FollowingStartDateTime:%H\:%M} @@ -265,11 +265,20 @@ - - - - {Recordings} - + + + {Recording1} + + + + + {Recording2} + + + + + {Recording3} + -- cgit v1.2.3 From 2a7cc2bfe385cdde0d0e3b4464cda4d51307341d Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 08:46:04 +0100 Subject: update history --- HISTORY | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/HISTORY b/HISTORY index deadd32..3b2dc99 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,11 @@ VDR Plugin 'graphlcd' Revision History ------------------------------------- + +2021-02-04: +- [pbiering] add support for new feature: IsRecording1/2/3 and Recording1/2/3 +- [pbiering] add support for 3 dedicated recording lines and symbols: IsRecording1/2/3 and Recording1/2/3 +- [pbiering] fix Wformat-truncation Wliteral-suffix. log levels + 2021-01-24: Version 1.0.3 - [pbiering] fix deadlock for vdr >= 2.4.4 (at least found here) in case of deleting a channel -- cgit v1.2.3 From 7418af3d9c475be148c0dd3c142749e337bad1e2 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 18:30:12 +0100 Subject: add support for new feature: NumRecordings and ArrayRecordings --- skinconfig.c | 52 ++++++++++------------------------------------------ state.c | 22 ++++++++++++++++++++++ state.h | 1 + 3 files changed, 33 insertions(+), 42 deletions(-) diff --git a/skinconfig.c b/skinconfig.c index f5ada81..d9fee5d 100644 --- a/skinconfig.c +++ b/skinconfig.c @@ -55,13 +55,9 @@ typedef enum _eTokenId tokPrivateRecordingStart, tokIsRecording, - tokIsRecording1, - tokIsRecording2, - tokIsRecording3, tokRecordings, - tokRecording1, - tokRecording2, - tokRecording3, + tokArrayRecordings, + tokNumRecordings, tokPrivateRecordingEnd, // present event @@ -214,13 +210,9 @@ static const std::string Tokens[tokCountToken] = "privateRecordingStart", "IsRecording", - "IsRecording1", - "IsRecording2", - "IsRecording3", "Recordings", - "Recording1", - "Recording2", - "Recording3", + "ArrayRecordings", + "NumRecordings", "privateRecordingEnd", "privatePresentStart", @@ -481,47 +473,23 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token) return mState->IsRecording(Token.Attrib.Number, 0); return mState->IsRecording(-1, 0); } - case tokIsRecording1: - { - if (Token.Attrib.Type == GLCD::aNumber) - return mState->IsRecording(Token.Attrib.Number, 1); - return mState->IsRecording(-1, 1); - } - case tokIsRecording2: - { - if (Token.Attrib.Type == GLCD::aNumber) - return mState->IsRecording(Token.Attrib.Number, 2); - return mState->IsRecording(-1, 2); - } - case tokIsRecording3: - { - if (Token.Attrib.Type == GLCD::aNumber) - return mState->IsRecording(Token.Attrib.Number, 3); - return mState->IsRecording(-1, 3); - } case tokRecordings: { if (Token.Attrib.Type == GLCD::aNumber) return mState->Recordings(Token.Attrib.Number, 0); return mState->Recordings(-1, 0); } - case tokRecording1: - { - if (Token.Attrib.Type == GLCD::aNumber) - return mState->Recordings(Token.Attrib.Number, 1); - return mState->Recordings(-1, 1); - } - case tokRecording2: + case tokArrayRecordings: { if (Token.Attrib.Type == GLCD::aNumber) - return mState->Recordings(Token.Attrib.Number, 2); - return mState->Recordings(-1, 2); + return mState->Recordings(-1, Token.Attrib.Number); + return false; } - case tokRecording3: + case tokNumRecordings: { if (Token.Attrib.Type == GLCD::aNumber) - return mState->Recordings(Token.Attrib.Number, 3); - return mState->Recordings(-1, 3); + return mState->NumRecordings(Token.Attrib.Number); + return mState->NumRecordings(-1); } default: break; diff --git a/state.c b/state.c index d3233ce..6045a03 100644 --- a/state.c +++ b/state.c @@ -951,6 +951,28 @@ std::string cGraphLCDState::Recordings(int CardNumber, int selector) return ret; } +int cGraphLCDState::NumRecordings(int CardNumber) +{ + std::string ret = ""; + std::vector ::iterator it; + int count = 0; + + mutex.Lock(); + // dsyslog("%s/%s: called CardNumber=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber); + it = mRecordings.begin(); + while (it != mRecordings.end()) + { + if (CardNumber == -1 || it->deviceNumber == CardNumber) + { + count++; + } + it++; + } + mutex.Unlock(); + + return count; +} + tOsdState cGraphLCDState::GetOsdState() { tOsdState ret; diff --git a/state.h b/state.h index 553ba6d..0198029 100644 --- a/state.h +++ b/state.h @@ -160,6 +160,7 @@ public: tReplayState GetReplayState(); bool IsRecording(int CardNumber, int selector); std::string Recordings(int CardNumber, int selector); + int NumRecordings(int CardNumber); tOsdState GetOsdState(); void ResetOsdStateScroll(); tVolumeState GetVolumeState(); -- cgit v1.2.3 From 22e869642df010abe4e3a9ac02f49d7fd2a8b1ba Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 18:30:35 +0100 Subject: extend reelbox.skin for using NumRecordings and ArrayRecordings (up to 3) --- graphlcd/skins/reelbox/reelbox.skin | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/graphlcd/skins/reelbox/reelbox.skin b/graphlcd/skins/reelbox/reelbox.skin index 25e104e..7d9b7a2 100644 --- a/graphlcd/skins/reelbox/reelbox.skin +++ b/graphlcd/skins/reelbox/reelbox.skin @@ -265,19 +265,19 @@ - + - {Recording1} + {ArrayRecordings:1} - + - {Recording2} + {ArrayRecordings:2} - + - {Recording3} + {ArrayRecordings:3} -- cgit v1.2.3 From 55788457b9a8668d4d94aeabe8ec7b0cb671106b Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Thu, 4 Feb 2021 18:31:03 +0100 Subject: update to new implementation --- HISTORY | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index 3b2dc99..add5169 100644 --- a/HISTORY +++ b/HISTORY @@ -2,8 +2,8 @@ VDR Plugin 'graphlcd' Revision History ------------------------------------- 2021-02-04: -- [pbiering] add support for new feature: IsRecording1/2/3 and Recording1/2/3 -- [pbiering] add support for 3 dedicated recording lines and symbols: IsRecording1/2/3 and Recording1/2/3 +- [pbiering] add support for new feature: NumRecordings and ArrayRecordings +- [pbiering] extend reelbox.skin for using NumRecordings and ArrayRecordings (up to 3) - [pbiering] fix Wformat-truncation Wliteral-suffix. log levels 2021-01-24: Version 1.0.3 -- cgit v1.2.3 From 00b28c5273687a8a1225d7fbc03b85b802c39b7d Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Fri, 5 Feb 2021 06:10:26 +0100 Subject: replace ArrayRecordings with ListRecordings --- HISTORY | 4 ++-- graphlcd/skins/reelbox/reelbox.skin | 6 +++--- skinconfig.c | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/HISTORY b/HISTORY index add5169..32c038c 100644 --- a/HISTORY +++ b/HISTORY @@ -2,8 +2,8 @@ VDR Plugin 'graphlcd' Revision History ------------------------------------- 2021-02-04: -- [pbiering] add support for new feature: NumRecordings and ArrayRecordings -- [pbiering] extend reelbox.skin for using NumRecordings and ArrayRecordings (up to 3) +- [pbiering] add support for new feature: NumRecordings and ListRecordings +- [pbiering] extend reelbox.skin for using NumRecordings and ListRecordings (up to 3) - [pbiering] fix Wformat-truncation Wliteral-suffix. log levels 2021-01-24: Version 1.0.3 diff --git a/graphlcd/skins/reelbox/reelbox.skin b/graphlcd/skins/reelbox/reelbox.skin index 7d9b7a2..6b90de2 100644 --- a/graphlcd/skins/reelbox/reelbox.skin +++ b/graphlcd/skins/reelbox/reelbox.skin @@ -267,17 +267,17 @@ - {ArrayRecordings:1} + {ListRecordings:1} - {ArrayRecordings:2} + {ListRecordings:2} - {ArrayRecordings:3} + {ListRecordings:3} diff --git a/skinconfig.c b/skinconfig.c index d9fee5d..c0bb222 100644 --- a/skinconfig.c +++ b/skinconfig.c @@ -56,7 +56,7 @@ typedef enum _eTokenId tokPrivateRecordingStart, tokIsRecording, tokRecordings, - tokArrayRecordings, + tokListRecordings, tokNumRecordings, tokPrivateRecordingEnd, @@ -211,7 +211,7 @@ static const std::string Tokens[tokCountToken] = "privateRecordingStart", "IsRecording", "Recordings", - "ArrayRecordings", + "ListRecordings", "NumRecordings", "privateRecordingEnd", @@ -479,7 +479,7 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token) return mState->Recordings(Token.Attrib.Number, 0); return mState->Recordings(-1, 0); } - case tokArrayRecordings: + case tokListRecordings: { if (Token.Attrib.Type == GLCD::aNumber) return mState->Recordings(-1, Token.Attrib.Number); -- cgit v1.2.3 From a96ef369124640874361cf108c47d3e5705df5cc Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Fri, 5 Feb 2021 06:15:18 +0100 Subject: remove leftover from replaced IsRecordingX --- skinconfig.c | 4 ++-- state.c | 20 +------------------- state.h | 2 +- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/skinconfig.c b/skinconfig.c index c0bb222..b6a27ef 100644 --- a/skinconfig.c +++ b/skinconfig.c @@ -470,8 +470,8 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token) case tokIsRecording: { if (Token.Attrib.Type == GLCD::aNumber) - return mState->IsRecording(Token.Attrib.Number, 0); - return mState->IsRecording(-1, 0); + return mState->IsRecording(Token.Attrib.Number); + return mState->IsRecording(-1); } case tokRecordings: { diff --git a/state.c b/state.c index 6045a03..b6cc093 100644 --- a/state.c +++ b/state.c @@ -872,24 +872,15 @@ tReplayState cGraphLCDState::GetReplayState() return ret; } -bool cGraphLCDState::IsRecording(int CardNumber, int selector) +bool cGraphLCDState::IsRecording(int CardNumber) { bool ret = false; std::vector ::iterator it; - int count = 0; mutex.Lock(); - // dsyslog("%s/%s: called CardNumber=%d selector=%d mRecordings.size=%lu", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, mRecordings.size()); if (CardNumber == -1 && mRecordings.size() > 0) { - if (selector > 0) { - if (mRecordings.size() >= (long unsigned int) selector) { - // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d mRecordings.size=%lu", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, mRecordings.size()); - ret = true; - } - } else { ret = true; - } } else { @@ -898,17 +889,8 @@ bool cGraphLCDState::IsRecording(int CardNumber, int selector) { if (it->deviceNumber == CardNumber) { - count++; - if (selector > 0) { - if (count == selector) { - // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d count=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, count); - ret = true; - break; - } - } else { ret = true; break; - } } it++; } diff --git a/state.h b/state.h index 0198029..4c74ee3 100644 --- a/state.h +++ b/state.h @@ -158,7 +158,7 @@ public: tEvent GetPresentEvent(); tEvent GetFollowingEvent(); tReplayState GetReplayState(); - bool IsRecording(int CardNumber, int selector); + bool IsRecording(int CardNumber); std::string Recordings(int CardNumber, int selector); int NumRecordings(int CardNumber); tOsdState GetOsdState(); -- cgit v1.2.3