summaryrefslogtreecommitdiff
path: root/patches/lcdproc-0.0.10-lcr-service.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/lcdproc-0.0.10-lcr-service.diff')
-rw-r--r--patches/lcdproc-0.0.10-lcr-service.diff172
1 files changed, 172 insertions, 0 deletions
diff --git a/patches/lcdproc-0.0.10-lcr-service.diff b/patches/lcdproc-0.0.10-lcr-service.diff
new file mode 100644
index 0000000..e298297
--- /dev/null
+++ b/patches/lcdproc-0.0.10-lcr-service.diff
@@ -0,0 +1,172 @@
+diff -up autopatch/lcd.c ./lcd.c
+--- autopatch/lcd.c Sun Mar 5 19:25:08 2006
++++ ./lcd.c Tue Mar 7 20:51:22 2006
+@@ -622,6 +622,9 @@ void cLcd::Action(void) { // LCD output
+ // RT
+ static int rtcycle;
+
++ // LCR
++ static int lcrCycle;
++
+ // backlight init
+ if ((lastBackLight=LcdSetup.BackLight))
+ sock_send_string(sock,"backlight on\n");
+@@ -705,6 +708,7 @@ void cLcd::Action(void) { // LCD output
+ if ((Present = Schedule->GetFollowingEvent()) != NULL)
+ nextLcdUpdate=(Present->GetTime()<nextLcdUpdate)?Present->GetTime():nextLcdUpdate;
+ rtcycle = 10; // RT
++ lcrCycle = 10; // LCR
+ }
+ }
+ if ( nextLcdUpdate <= time(NULL) )
+@@ -735,6 +739,7 @@ void cLcd::Action(void) { // LCD output
+ if ((Present = Schedule->GetFollowingEvent()) != NULL)
+ nextLcdUpdate=(Present->StartTime()<nextLcdUpdate)?Present->StartTime():nextLcdUpdate;
+ rtcycle = 10; // RT
++ lcrCycle = 10; // LCR
+ }
+ }
+ if ( nextLcdUpdate <= time(NULL) )
+@@ -763,7 +768,26 @@ void cLcd::Action(void) { // LCD output
+ }
+ rtcycle = 0;
+ //printf("lcdproc - get Radiotext ...\n");
+- }
++ }
++ // get&display LcrData
++ if (lcrCycle++ == 10) // every 10 times
++ {
++ lcrCycle = 0;
++ cPlugin *p;
++ p = cPluginManager::CallFirstService("LcrService-v1.0", NULL);
++ if (p)
++ {
++ LcrService_v1_0 lcrData;
++ if (cPluginManager::CallFirstService("LcrService-v1.0", &lcrData))
++ {
++ if ( strstr( lcrData.destination, "---" ) == NULL )
++ {
++ SetRunning(false, (const char *)lcrData.destination, (const char *)lcrData.price, (const char *)lcrData.pulse);
++ nextLcdUpdate = 0; //trigger next epg update
++ }
++ }
++ }
++ }
+ #endif
+
+ // replaying
+diff -up autopatch/lcd.c.orig ./lcd.c.orig
+--- autopatch/lcd.c.orig Sun Feb 26 20:11:02 2006
++++ ./lcd.c.orig Sun Mar 5 19:25:08 2006
+@@ -11,6 +11,7 @@
+ #include "lcd.h"
+ #include "sockets.h"
+ #include "i18n.h"
++#include <vdr/plugin.h>
+
+ #ifdef LCD_EXT_KEY_CONF
+ #include LCD_EXT_KEY_CONF
+@@ -390,6 +391,7 @@ void cLcd::SetRunning( bool nownext, con
+ void cLcd::SummaryInit(char *string) {
+ SummaryText = string;
+ SummaryTextL = strlen(string);
++ dsyslog("> %i", SummaryTextL);
+ SummaryCurrent=0;
+ }
+
+@@ -406,7 +408,7 @@ void cLcd::SummaryUp() {
+ }
+
+ void cLcd::SummaryDisplay() {
+- if ( (!connected) || (SummaryTextL < 1) ) return;
++ if ( (!connected) || (SummaryTextL < 1) || !SummaryText ) return;
+
+ char workstring[256];
+ unsigned int i, offset=0;
+@@ -617,6 +619,8 @@ void cLcd::Action(void) { // LCD output
+ bool Lcddirty[LCDMAXSTATES][4];
+ bool LcdShiftkeyPressed=false;
+ char priostring[35];
++ // RT
++ static int rtcycle;
+
+ // backlight init
+ if ((lastBackLight=LcdSetup.BackLight))
+@@ -700,6 +704,7 @@ void cLcd::Action(void) { // LCD output
+ SetRunning(false,tr("No EPG info available."), NULL);
+ if ((Present = Schedule->GetFollowingEvent()) != NULL)
+ nextLcdUpdate=(Present->GetTime()<nextLcdUpdate)?Present->GetTime():nextLcdUpdate;
++ rtcycle = 10; // RT
+ }
+ }
+ if ( nextLcdUpdate <= time(NULL) )
+@@ -729,12 +734,36 @@ void cLcd::Action(void) { // LCD output
+ SetRunning(false,tr("No EPG info available."), NULL);
+ if ((Present = Schedule->GetFollowingEvent()) != NULL)
+ nextLcdUpdate=(Present->StartTime()<nextLcdUpdate)?Present->StartTime():nextLcdUpdate;
++ rtcycle = 10; // RT
+ }
+ }
+ if ( nextLcdUpdate <= time(NULL) )
+ nextLcdUpdate=(time(NULL)/60)*60+60;
+ }
+
++#endif
++
++#if VDRVERSNUM >= 10330
++ // get&display Radiotext
++ if (++rtcycle > 10) { // every 10 times
++ cPlugin *p;
++ p = cPluginManager::CallFirstService("RadioTextService-v1.0", NULL);
++ if (p) {
++ RadioTextService_v1_0 rtext;
++ if (cPluginManager::CallFirstService("RadioTextService-v1.0", &rtext)) {
++ if (rtext.rds_info == 2 && strstr(rtext.rds_title, "---") == NULL) {
++ char timestr[20];
++ sprintf(timestr, "%02d:%02d", rtext.title_start->tm_hour, rtext.title_start->tm_min);
++ SetRunning(false, timestr, rtext.rds_title, rtext.rds_artist);
++ }
++ else if (rtext.rds_info > 0) {
++ SetRunning(false, NULL, rtext.rds_text);
++ }
++ }
++ }
++ rtcycle = 0;
++ //printf("lcdproc - get Radiotext ...\n");
++ }
+ #endif
+
+ // replaying
+diff -up autopatch/lcd.h ./lcd.h
+--- autopatch/lcd.h Sun Feb 26 20:11:01 2006
++++ ./lcd.h Tue Mar 7 20:46:30 2006
+@@ -89,4 +89,11 @@ struct RadioTextService_v1_0 {
+ struct tm *title_start;
+ };
+
++// LcrData
++struct LcrService_v1_0 {
++ cString destination;
++ cString price;
++ cString pulse;
++};
++
+ #endif //__LCD_H
+diff -up autopatch/lcd.h.orig ./lcd.h.orig
+--- autopatch/lcd.h.orig Sun Feb 26 20:11:02 2006
++++ ./lcd.h.orig Sun Feb 26 20:11:01 2006
+@@ -79,4 +79,14 @@ class cLcd : public cThread {
+ bool channelSwitched;
+ };
+
++// Radiotext
++struct RadioTextService_v1_0 {
++ int rds_info;
++ int rds_pty;
++ char *rds_text;
++ char *rds_title;
++ char *rds_artist;
++ struct tm *title_start;
++};
++
+ #endif //__LCD_H