summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--display.c7
-rw-r--r--display.h1
-rw-r--r--service.c35
-rw-r--r--service.h11
-rw-r--r--skinconfig.c56
-rw-r--r--state.c3
6 files changed, 92 insertions, 21 deletions
diff --git a/display.c b/display.c
index 67f34cf..7c2959d 100644
--- a/display.c
+++ b/display.c
@@ -295,7 +295,7 @@ void cGraphLCDDisplay::Action(void)
// update display if BrightnessDelay is exceeded
if (bActive && (nCurrentBrightness == GraphLCDSetup.BrightnessActive) &&
- ((uint32_t)((cTimeMs::Now() - LastTimeBrightness)) > (uint32_t)(GraphLCDSetup.BrightnessDelay*1000)))
+ ((uint32_t)((/*cTimeMs::Now()*/currTimeMs - LastTimeBrightness)) > (uint32_t)(GraphLCDSetup.BrightnessDelay*1000)))
{
mUpdate = true;
}
@@ -339,6 +339,8 @@ void cGraphLCDDisplay::Action(void)
mScreen->Clear(mSkin->GetBackgroundColor());
+ mSkin->SetTSEvalTick(currTimeMs);
+
GLCD::cSkinDisplay * display = NULL;
if (mState == StateNormal)
@@ -453,6 +455,9 @@ void cGraphLCDDisplay::Replaying(bool Starting)
void cGraphLCDDisplay::SetMenuClear()
{
+ if (mSkin)
+ mSkin->SetTSEvalSwitch(cTimeMs::Now());
+
mSkinConfig->SetMenuClear();
if (mState == StateMenu)
{
diff --git a/display.h b/display.h
index 993c077..2bb971a 100644
--- a/display.h
+++ b/display.h
@@ -70,6 +70,7 @@ public:
const cGraphLCDService * GetServiceObject() const { return mService; }
GLCD::cDriver * GetDriver() const { return mLcd; }
+ GLCD::cSkin * GetSkin() const { return mSkin; }
const eDisplayMode GetDisplayMode() const { return mDisplayMode; }
protected:
diff --git a/service.c b/service.c
index 4851fea..6eb07f7 100644
--- a/service.c
+++ b/service.c
@@ -26,11 +26,11 @@ cGraphLCDService::cGraphLCDService(cGraphLCDState * state)
mState = state;
/* initialise flags for services */
- radioActive = false; radioChanged = false; radioUse = false;
- lcrActive = false; lcrChanged = false; lcrUse = false;
- femonActive = false; femonChanged = false; femonUse = false;
- mailboxActive = false; mailboxChanged = false; mailboxUse = false;
- spanActive = false; spanChanged = false; spanUse = false;
+ radioActive = false; radioChanged = false; radioUse = false; radioInit = false;
+ lcrActive = false; lcrChanged = false; lcrUse = false; lcrInit = false;
+ femonActive = false; femonChanged = false; femonUse = false; femonInit = false;
+ mailboxActive = false; mailboxChanged = false; mailboxUse = false; mailboxInit = false;
+ spanActive = false; spanChanged = false; spanUse = false; spanInit = false;
radioLastChange = lcrLastChange = femonLastChange = mailboxLastChange = spanLastChange = 0;
@@ -86,33 +86,38 @@ bool cGraphLCDService::ServiceIsAvailable(const std::string & Name, const std::s
bool firstTime = false;
if (Name == "RadioTextService-v1.0" || Name == "radio") {
- if (!radioUse) {
+ if (!radioInit) {
+ radioInit = true;
firstTime = true;
radioUse = true;
}
rvAvail = (mState->GetChannelInfo().isRadio) ? radioActive : false;
} else if (Name == "LcrService-v1.0" || Name == "lcr") {
- if (!lcrUse) {
+ if (!lcrInit) {
+ lcrInit = true;
firstTime = true;
- lcrUse = true;
+ //lcrUse = true;
}
rvAvail = lcrActive;
} else if (Name == "FemonService-v1.0" || Name == "femon") {
- if (!femonUse) {
+ if (!femonInit) {
+ femonInit = true;
firstTime = true;
- femonUse = true;
+ //femonUse = true;
}
rvAvail = femonActive;
} else if (Name == "MailBox-1.0" || Name == "mailbox") {
- if (!mailboxUse) {
+ if (!mailboxInit) {
+ mailboxInit = true;
firstTime = true;
- mailboxUse = true;
+ //mailboxUse = true;
}
rvAvail = mailboxActive;
} else if (Name == "span") {
- if (!spanUse) {
+ if (!spanInit) {
+ spanInit = true;
firstTime = true;
- spanUse = true;
+ //spanUse = true;
}
//spanUse = true;
rvAvail = spanActive;
@@ -144,7 +149,7 @@ bool cGraphLCDService::ServiceIsAvailable(const std::string & Name, const std::s
it = opts.find("delay");
if (it != opts.end()) {
int delay = atoi( (*it).second.c_str() );
- if (delay > 100) {
+ if (delay >= 100) {
SetServiceUpdateDelay(Name, delay);
}
}
diff --git a/service.h b/service.h
index d9a118f..f0fda6f 100644
--- a/service.h
+++ b/service.h
@@ -83,11 +83,12 @@ private:
/* __Changed = data has been changed */
/* __Active = plugin/service is available and active */
/* __Use = service is requested in skin (don't call services that wouldn't be used anyway) */
- bool radioChanged, radioActive, radioUse;
- bool lcrChanged, lcrActive, lcrUse;
- bool femonChanged, femonActive, femonUse;
- bool mailboxChanged, mailboxActive, mailboxUse;
- bool spanChanged, spanActive, spanUse;
+ /* __Init = ServiceIsAvailable() has been called at least one for this service */
+ bool radioChanged, radioActive, radioUse, radioInit;
+ bool lcrChanged, lcrActive, lcrUse, lcrInit;
+ bool femonChanged, femonActive, femonUse, femonInit;
+ bool mailboxChanged, mailboxActive, mailboxUse, mailboxInit;
+ bool spanChanged, spanActive, spanUse, spanInit;
// timestamp of last service update request
uint64_t radioLastChange, lcrLastChange, femonLastChange, mailboxLastChange, spanLastChange;
// min. delay between two service update requests
diff --git a/skinconfig.c b/skinconfig.c
index 465a364..39b6c75 100644
--- a/skinconfig.c
+++ b/skinconfig.c
@@ -45,6 +45,14 @@ typedef enum _eTokenId
tokChannelAlias,
tokPrivateChannelEnd,
+ // current device
+ tokPrivateDeviceStart,
+ tokActualDevice,
+ tokSignalStrength,
+ tokSignalQuality,
+ tokSupportsSignalInfo,
+ tokPrivateDeviceEnd,
+
tokPrivateRecordingStart,
tokIsRecording,
tokRecordings,
@@ -191,6 +199,13 @@ static const std::string Tokens[tokCountToken] =
"ChannelAlias",
"privateChannelEnd",
+ "privatePrivateDeviceStart",
+ "ActualDevice",
+ "SignalStrength",
+ "SignalQuality",
+ "SupportsSignalInfo",
+ "privateDeviceEnd",
+
"privateRecordingStart",
"IsRecording",
"Recordings",
@@ -403,6 +418,47 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
break;
}
}
+ else if (Token.Id > tokPrivateDeviceStart && Token.Id < tokPrivateDeviceEnd)
+ {
+ cDevice * currDev = cDevice::ActualDevice();
+ if (currDev)
+ {
+ switch (Token.Id)
+ {
+ case tokActualDevice:
+ {
+ return currDev->DeviceNumber()+1; // DeviceNumber() starts with 0 but let output start w/ 1
+ }
+ case tokSignalStrength:
+ {
+#if VDRVERSNUM >= 10719
+ return currDev->SignalStrength();
+#else
+ return false;
+#endif
+ }
+ case tokSignalQuality:
+ {
+#if VDRVERSNUM >= 10719
+ return currDev->SignalQuality();
+#else
+ return false;
+#endif
+ }
+ case tokSupportsSignalInfo:
+ {
+#if VDRVERSNUM >= 10719
+ return true;
+#else
+ return false;
+#endif
+ }
+ default:
+ break;
+ }
+ }
+ return false;
+ }
else if (Token.Id > tokPrivateRecordingStart && Token.Id < tokPrivateRecordingEnd)
{
switch (Token.Id)
diff --git a/state.c b/state.c
index a70f16c..6ea8f2c 100644
--- a/state.c
+++ b/state.c
@@ -651,6 +651,9 @@ void cGraphLCDState::SetChannel(int ChannelNumber)
mutex.Unlock();
+ if (mDisplay->GetSkin())
+ mDisplay->GetSkin()->SetTSEvalSwitch(cTimeMs::Now());
+
mDisplay->Update();
}