summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTuomas Jormola <tj@solitudo.net>2017-05-23 20:23:54 +0200
committerFrank Neumann <fnu@yavdr.org>2017-05-23 20:23:54 +0200
commitd4572192c5709b1a09c85a9f07844fde3ffeb65c (patch)
tree59bd3e60846f6958e7a687b17db80047af364813
parentb09b9e58bb7b168e37bace2fccddac2111c511c3 (diff)
downloadvdr-plugin-text2skin-d4572192c5709b1a09c85a9f07844fde3ffeb65c.tar.gz
vdr-plugin-text2skin-d4572192c5709b1a09c85a9f07844fde3ffeb65c.tar.bz2
New token: ChannelServiceReference
-rw-r--r--Docs/Reference.txt4
-rw-r--r--common.c37
-rw-r--r--common.h1
-rw-r--r--display.c21
-rw-r--r--xml/string.c2
-rw-r--r--xml/string.h1
6 files changed, 65 insertions, 1 deletions
diff --git a/Docs/Reference.txt b/Docs/Reference.txt
index bebbf8f..6a107e0 100644
--- a/Docs/Reference.txt
+++ b/Docs/Reference.txt
@@ -707,6 +707,8 @@ Defines an item for the list.
-----------------------------------------------------------------------------
| ChannelShortName | | Short name of channel if available
-----------------------------------------------------------------------------
+| ChannelServiceReference| | Service reference of channel if available
+-----------------------------------------------------------------------------
| ChannelBouquet | | Provider/bouquet name if available
-----------------------------------------------------------------------------
| ChannelPortal | | Portal name if available
@@ -1008,6 +1010,8 @@ Defines an item for the list.
-----------------------------------------------------------------------------
| ChannelShortName | | Short name of channel if available
-----------------------------------------------------------------------------
+| ChannelServiceReference| | Service reference of channel if available
+-----------------------------------------------------------------------------
| ChannelHasVPS | (also in Channel Display) | True, if current channel can broadcast VPS
| (alt: HasVPS) | |
-----------------------------------------------------------------------------
diff --git a/common.c b/common.c
index 9f6bf85..a371f00 100644
--- a/common.c
+++ b/common.c
@@ -53,6 +53,43 @@ const char *ChannelShortName(const cChannel *Channel, int Number)
return buffer;
}
+const char *ChannelServiceReference(const cChannel *Channel, int Number)
+{
+ static char buffer[256];
+ int hash = 0;
+ buffer[0] = '\0';
+ if (Channel) {
+ if (cSource::IsSat(Channel->Source())) {
+ hash = Channel->Source() & cSource::st_Pos;
+ if (hash > 0x00007FFF)
+ hash |= 0xFFFF0000;
+
+ if (hash < 0)
+ hash = -hash;
+ else
+ hash = 1800 + hash;
+
+ hash = hash << 16;
+ }
+ else if (cSource::IsCable(Channel->Source()))
+ hash = 0xFFFF0000;
+ else if(cSource::IsTerr(Channel->Source()))
+ hash = 0xEEEE0000;
+ else if(cSource::IsAtsc(Channel->Source()))
+ hash = 0xDDDD0000;
+
+ snprintf(buffer, sizeof(buffer), "1_0_%i_%X_%X_%X_%X_0_0_0",
+ (!(Channel->Vpid() == 0 && Channel->Apid(0) == 0) && (Channel->Vpid() == 0 || Channel->Vpid() == 1)) ? 2 : (Channel->Vtype() == 27) ? 19 : 1,
+ Channel->Sid(),
+ Channel->Tid(),
+ Channel->Nid(),
+ hash);
+ }
+ else if (!Number)
+ snprintf(buffer, sizeof(buffer), "%s", trVDR("*** Invalid Channel ***"));
+ return buffer;
+}
+
const char *EventType(uint Number)
{
static char buffer[25];
diff --git a/common.h b/common.h
index 15cd146..a84dd8f 100644
--- a/common.h
+++ b/common.h
@@ -39,6 +39,7 @@ const std::string SkinPath(void);
const char *ChannelNumber(const cChannel *Channel, int Number);
const char *ChannelName(const cChannel *Channel, int Number);
const char *ChannelShortName(const cChannel *Channel, int Number);
+const char *ChannelServiceReference(const cChannel *Channel, int Number);
const char *EventType(uint Number);
//const char *ChannelBouquet(const cChannel *Channel, int Number);
diff --git a/display.c b/display.c
index 30f388e..82ff836 100644
--- a/display.c
+++ b/display.c
@@ -127,6 +127,11 @@ cxType cText2SkinDisplayChannel::GetTokenData(const txToken &Token)
? (cxType)ChannelShortName(mChannel, mNumber)
: (cxType)false;
+ case tChannelServiceReference:
+ return mChannel != NULL
+ ? (cxType)ChannelServiceReference(mChannel, mNumber)
+ : (cxType)false;
+
case tChannelBouquet:
return mChannel != NULL
? (cxType)mChannel->Provider()
@@ -1256,6 +1261,22 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token)
} else
return (cxType)false;
+ case tChannelServiceReference:
+ if (mEvent) { // extended EPG
+ cChannel *channel = Channels.GetByChannelID(mEvent->ChannelID(), true);
+ return channel != NULL
+ ? (cxType)ChannelServiceReference(channel, 0)
+ : (cxType)false;
+ }
+ else if (mRecording) { // recording Info
+ cRecordingInfo *recInfo = const_cast<cRecordingInfo*>(mRecording->Info());
+ cChannel *channel = Channels.GetByChannelID(recInfo->ChannelID(), true);
+ return channel != NULL
+ ? (cxType)ChannelServiceReference(channel, 0)
+ : (cxType)false;
+ } else
+ return (cxType)false;
+
case tPresentHasVPS:
return mEvent != NULL && mEvent->Vps() != 0 && mEvent->Vps() != mEvent->StartTime();
diff --git a/xml/string.c b/xml/string.c
index 4d3e986..893a651 100644
--- a/xml/string.c
+++ b/xml/string.c
@@ -7,7 +7,7 @@ static const char *Tokens[__COUNT_TOKEN__] = {
"DateTime", "FreeDiskSpace", "UsedDiskSpace", "TotalDiskSpace", "DiskUsage", "VideoSizeWidth", "VideoSizeHeight", "AudioTrack", "AudioChannel",
// Channel Display
- "ChannelNumber", "ChannelName", "ChannelShortName", "ChannelBouquet", "ChannelPortal",
+ "ChannelNumber", "ChannelName", "ChannelShortName", "ChannelServiceReference", "ChannelBouquet", "ChannelPortal",
"ChannelSource", "ChannelID", "PresentStartDateTime", "PresentVPSDateTime",
"CurrentEventsTitle1", "CurrentEventsStartDateTime1", "CurrentEventsStopDateTime1", "CurrentEventsChannelNumber1", "CurrentEventsChannelName1", "CurrentEventsIsRecording1",
"CurrentEventsTitle2", "CurrentEventsStartDateTime2", "CurrentEventsStopDateTime2", "CurrentEventsChannelNumber2", "CurrentEventsChannelName2", "CurrentEventsIsRecording2",
diff --git a/xml/string.h b/xml/string.h
index da8470a..2c96690 100644
--- a/xml/string.h
+++ b/xml/string.h
@@ -22,6 +22,7 @@ enum exToken {
tChannelNumber,
tChannelName,
tChannelShortName,
+ tChannelServiceReference,
tChannelBouquet,
tChannelPortal,
tChannelSource,