summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Wilke <vdr@joachim-wilke.de>2008-08-20 00:00:00 +0200
committerJoachim Wilke <vdr@joachim-wilke.de>2008-08-20 00:00:00 +0200
commite5d1d78501967ad8c7a6dc1766df661364aba454 (patch)
treeece0cd367727bb9045c4da1f982ec497a0d04cec
parent4b8b62e70a63206fe269842e9ab6ace76f8e84c9 (diff)
downloadvdr-plugin-lcdproc-e5d1d78501967ad8c7a6dc1766df661364aba454.tar.gz
vdr-plugin-lcdproc-e5d1d78501967ad8c7a6dc1766df661364aba454.tar.bz2
-rw-r--r--HISTORY23
-rw-r--r--SHF_EPG_3.diff258
-rw-r--r--lcd.c1013
-rw-r--r--lcd.h12
-rw-r--r--lcdproc.c50
-rw-r--r--lcdtranstbl.h760
-rwxr-xr-xpo/it_IT.po2
-rw-r--r--setup.c11
-rw-r--r--setup.h2
-rw-r--r--sockets.c2
-rw-r--r--sockets.h2
11 files changed, 1304 insertions, 831 deletions
diff --git a/HISTORY b/HISTORY
index 0527ce2..b42fac6 100644
--- a/HISTORY
+++ b/HISTORY
@@ -47,5 +47,26 @@ VDR Plugin 'lcdproc' Revision History
(thanks for debugging and testing to
- Ville Aakko <ville.aakko@gmail.com>,
- MichaelB <http://www.vdr-portal.de/board/profile.php?userid=12822>
- - Joe_D <http://vdrportal.de/board/profile.php?userid=20491> )
+ - Joe_D <http://vdrportal.de/board/profile.php?userid=20491>)
+
+2008-08-20: Version 0.0.10-jw5
+- changed part of the code in the file lcdtranstbl.h in the section lcdtranstbl-hd44780.h
+ for proper display of Russian characters (provided by Andrey <andreyz@uniqinfo.ru>)
+- now trying to reconnect to LCDd, if first connection fails
+ (patch provided by SHF <http://vdrportal.de/board/profile.php?userid=9031>)
+- implemented SVDRP-Interface for suspending lcdproc access using "PLUG lcdproc OFF"
+ and resuming "PLUG lcdproc ON"
+ (patch provided by asciii <http://vdr-portal.de/board/profile.php?userid=14268>)
+- fixed some compiler warnings
+ (patch provided by asciii <http://vdr-portal.de/board/profile.php?userid=14268>)
+- added log message on LCDd connection failure
+ (patch provided by asciii <http://vdr-portal.de/board/profile.php?userid=14268>
+ and e-tobi <http://www.e-tobi.net>)
+- changing lcd-backlight and lcd-priority depending on user-activity
+ (patch provided by SHF <http://vdrportal.de/board/profile.php?userid=9031>)
+- modified displaying of volume bar on small displays
+ (based on a patch provided by SHF <http://vdrportal.de/board/profile.php?userid=9031>)
+- fixing method cLcdFeed::SetVolume to accept negative values
+ (suggested by SHF <http://vdrportal.de/board/profile.php?userid=9031>)
+
\ No newline at end of file
diff --git a/SHF_EPG_3.diff b/SHF_EPG_3.diff
new file mode 100644
index 0000000..f13ea23
--- /dev/null
+++ b/SHF_EPG_3.diff
@@ -0,0 +1,258 @@
+diff -rupbB ./lcdproc.c ../lcdproc-0.0.10.SHF-volume/lcdproc.c
+--- ./lcdproc.c 2008-05-27 00:03:09.000000000 +0200
++++ ../lcdproc-0.0.10.SHF-volume/lcdproc.c 2007-12-13 21:41:06.000000000 +0100
+@@ -61,7 +61,7 @@ protected:
+ virtual void OsdCurrentItem(const char *Text);
+ virtual void OsdTextItem(const char *Text, bool Scroll);
+ virtual void OsdChannel(const char *Text);
+- virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle);
++// virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle);
+ };
+
+
+@@ -70,10 +70,8 @@ void cLcdFeed::ChannelSwitch(const cDevi
+ //syslog(LOG_INFO, "lcdproc: cLcdFeed::ChannelSwitch %d %d", Device->CardIndex(), ChannelNumber);
+ if ( Device && Device->IsPrimaryDevice() ) {
+ if (ChannelNumber) {
+- LCDproc->SetLine(1,2," ");
+- LCDproc->SetLine(1,3," ");
+- LCDproc->SetRunning(false,tr("Waiting for EPG info."), NULL);
+ switched = true;
++ LCDproc->SetChannelSwitch( (cDevice *) Device, ChannelNumber);
+ } else switched = false;
+ LCDproc->SetPrimaryDevice( (cDevice *) Device );
+ }
+@@ -188,31 +186,31 @@ void cLcdFeed::OsdChannel(const char *Te
+ switched=false; menumode=false;
+ }
+
+-void cLcdFeed::OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle)
+-{
+- char buffer[25];
+- struct tm tm_r;
+- //syslog(LOG_INFO, "lcdproc: cLcdFeed::OsdProgramme");
+- strftime(buffer, sizeof(buffer), "%R", localtime_r(&PresentTime, &tm_r));
+- //syslog(LOG_INFO, "%5s %s", buffer, PresentTitle);
+- //syslog(LOG_INFO, "%5s %s", "", PresentSubtitle);
+-
+-
+- if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
+- LCDproc->SetRunning(false,buffer,PresentTitle,PresentSubtitle);
+- else if (!isempty(PresentTitle)) LCDproc->SetRunning(false,buffer,PresentTitle);
+- else LCDproc->SetRunning(false,tr("No EPG info available."), NULL);
+-
+-
+- strftime(buffer, sizeof(buffer), "%R", localtime_r(&FollowingTime, &tm_r));
+- //syslog(LOG_INFO, "%5s %s", buffer, FollowingTitle);
+- //syslog(LOG_INFO, "%5s %s", "", FollowingSubtitle);
+-
+- if ( (!isempty(FollowingTitle)) && (!isempty(FollowingSubtitle)) )
+- LCDproc->SetRunning(true,buffer,FollowingTitle,FollowingSubtitle);
+- else if (!isempty(FollowingTitle)) LCDproc->SetRunning(true,buffer,FollowingTitle);
+- else LCDproc->SetRunning(true,tr("No EPG info available."), NULL);
+-}
++// void cLcdFeed::OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle)
++// {
++// char buffer[25];
++// struct tm tm_r;
++// //syslog(LOG_INFO, "lcdproc: cLcdFeed::OsdProgramme");
++// strftime(buffer, sizeof(buffer), "%R", localtime_r(&PresentTime, &tm_r));
++// //syslog(LOG_INFO, "%5s %s", buffer, PresentTitle);
++// //syslog(LOG_INFO, "%5s %s", "", PresentSubtitle);
++//
++//
++// if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
++// LCDproc->SetRunning(false,buffer,PresentTitle,PresentSubtitle);
++// else if (!isempty(PresentTitle)) LCDproc->SetRunning(false,buffer,PresentTitle);
++// else LCDproc->SetRunning(false,tr("No EPG info available."), NULL);
++//
++//
++// strftime(buffer, sizeof(buffer), "%R", localtime_r(&FollowingTime, &tm_r));
++// //syslog(LOG_INFO, "%5s %s", buffer, FollowingTitle);
++// //syslog(LOG_INFO, "%5s %s", "", FollowingSubtitle);
++//
++// if ( (!isempty(FollowingTitle)) && (!isempty(FollowingSubtitle)) )
++// LCDproc->SetRunning(true,buffer,FollowingTitle,FollowingSubtitle);
++// else if (!isempty(FollowingTitle)) LCDproc->SetRunning(true,buffer,FollowingTitle);
++// else LCDproc->SetRunning(true,tr("No EPG info available."), NULL);
++// }
+
+ // ---
+
+diff -rupbB ./lcd.c ../lcdproc-0.0.10.SHF-volume/lcd.c
+--- ./lcd.c 2008-05-27 02:13:45.000000000 +0200
++++ ../lcdproc-0.0.10.SHF-volume/lcd.c 2008-05-27 02:13:22.000000000 +0200
+@@ -277,6 +277,15 @@ void cLcd::SetWarning( const char *strin
+ }
+ }
+
++void cLcd::SetChannelSwitch(const cDevice *Device, int ChannelNumber){
++ cLcd::SetLine(1,2," ");
++ cLcd::SetLine(1,3," ");
++ cLcd::SetRunning(false,tr("Waiting for EPG info."), NULL);
++ cLcd::SetRunning(true,tr("Waiting for EPG info."), NULL);
++ epg=false;
++ epg_retry=MAX_EPG_RETRY;
++}
++
+ void cLcd::ShowVolume(unsigned int vol, bool muted ) {
+ if (!connected) return;
+ BeginMutualExclusion();
+@@ -712,9 +721,15 @@ void cLcd::Action(void) { // LCD output
+
+ // epg update
+
++ if ( !epg && epg_retry > 0 ) {
++ epg_retry-- ;
++ if ( ( epg_retry % 5 ) == 0 ) nextLcdUpdate=time(NULL)-10;
++ } else epg = true;
++
+ #ifdef OLDVDR
+
+ if ( time(NULL) > nextLcdUpdate ) {
++ epg=true;
+ const cEventInfo *Present = NULL;
+ cMutexLock MutexLock;
+ const cSchedules *Schedules = cSIProcessor::Schedules(MutexLock);
+@@ -722,54 +737,99 @@ void cLcd::Action(void) { // LCD output
+ const cSchedule *Schedule = Schedules->GetSchedule();
+ if (Schedule) {
+ const char *PresentTitle, *PresentSubtitle;
++
+ PresentTitle = NULL; PresentSubtitle = NULL;
+ if ((Present = Schedule->GetPresentEvent()) != NULL) {
+- nextLcdUpdate=Present->GetTime()+Present->GetDuration();
++// nextLcdUpdate=Present->GetTime()+Present->GetDuration();
+ PresentTitle = Present->GetTitle();
+ PresentSubtitle = Present->GetSubtitle();
+ if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
+ SetRunning(false,Present->GetTimeString(),PresentTitle,PresentSubtitle);
+ else if (!isempty(PresentTitle)) SetRunning(false,Present->GetTimeString(),PresentTitle);
++ else {
++ SetRunning(false,tr("No EPG info available."), NULL);
++ }
+ } else
+ SetRunning(false,tr("No EPG info available."), NULL);
+- if ((Present = Schedule->GetFollowingEvent()) != NULL)
+- nextLcdUpdate=(Present->GetTime()<nextLcdUpdate)?Present->GetTime():nextLcdUpdate;
++
++ Present = NULL; PresentTitle = NULL; PresentSubtitle = NULL;
++ if ((Present = Schedule->GetFollowingEvent()) != NULL) {
++// nextLcdUpdate=Present->StartTime()+Present->Duration();
++ PresentTitle = Present->Title();
++ PresentSubtitle = Present->ShortText();
++ if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
++ SetRunning(true,Present->GetTimeString(),PresentTitle,PresentSubtitle);
++ else if (!isempty(PresentTitle)) SetRunning(true,Present->GetTimeString(),PresentTitle);
++ else {
++ SetRunning(true,tr("No EPG info available."), NULL);
++ epg=false;
+ }
++ } else {
++ SetRunning(true,tr("No EPG info available."), NULL);
++ epg=false;
+ }
+- if ( nextLcdUpdate <= time(NULL) )
+- nextLcdUpdate=(time(NULL)/60)*60+60;
+- else if ( nextLcdUpdate > time(NULL)+60 )
++
++// if ((Present = Schedule->GetFollowingEvent()) != NULL)
++// nextLcdUpdate=(Present->GetTime()<nextLcdUpdate)?Present->GetTime():nextLcdUpdate;
++ }
++ }
++// if ( nextLcdUpdate <= time(NULL) )
++// nextLcdUpdate=(time(NULL)/60)*60+60;
++// else if ( nextLcdUpdate > time(NULL)+60 )
+ nextLcdUpdate=(time(NULL)/60)*60+60;
+ }
+
+ #else
+
+ if ( time(NULL) > nextLcdUpdate ) {
++ epg=true;
+ cChannel *channel = Channels.GetByNumber(primaryDvbApi->CurrentChannel());
+ const cEvent *Present = NULL;
+ cSchedulesLock schedulesLock;
+ const cSchedules *Schedules = cSchedules::Schedules(schedulesLock);
+ if (Schedules) {
+ const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
++
+ if (Schedule) {
+ const char *PresentTitle, *PresentSubtitle;
++
+ PresentTitle = NULL; PresentSubtitle = NULL;
+ if ((Present = Schedule->GetPresentEvent()) != NULL) {
+- nextLcdUpdate=Present->StartTime()+Present->Duration();
++// nextLcdUpdate=Present->StartTime()+Present->Duration();
+ PresentTitle = Present->Title();
+ PresentSubtitle = Present->ShortText();
+ if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
+ SetRunning(false,Present->GetTimeString(),PresentTitle,PresentSubtitle);
+ else if (!isempty(PresentTitle)) SetRunning(false,Present->GetTimeString(),PresentTitle);
+- } else
++ else {
+ SetRunning(false,tr("No EPG info available."), NULL);
+- if ((Present = Schedule->GetFollowingEvent()) != NULL)
+- nextLcdUpdate=(Present->StartTime()<nextLcdUpdate)?Present->StartTime():nextLcdUpdate;
+ }
++ } else {
++ SetRunning(false,tr("No EPG info available."), NULL);
+ }
+- if ( nextLcdUpdate <= time(NULL) )
+- nextLcdUpdate=(time(NULL)/60)*60+60;
+- else if ( nextLcdUpdate > time(NULL)+60 )
++
++ Present = NULL; PresentTitle = NULL; PresentSubtitle = NULL;
++ if ((Present = Schedule->GetFollowingEvent()) != NULL) {
++// nextLcdUpdate=Present->StartTime()+Present->Duration();
++ PresentTitle = Present->Title();
++ PresentSubtitle = Present->ShortText();
++ if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
++ SetRunning(true,Present->GetTimeString(),PresentTitle,PresentSubtitle);
++ else if (!isempty(PresentTitle)) SetRunning(true,Present->GetTimeString(),PresentTitle);
++ else {
++ SetRunning(true,tr("No EPG info available."), NULL);
++ }
++ } else {
++ SetRunning(true,tr("No EPG info available."), NULL);
++ }
++
++// if ((Present = Schedule->GetFollowingEvent()) != NULL)
++// nextLcdUpdate=(Present->StartTime()<nextLcdUpdate)?Present->StartTime():nextLcdUpdate;
++ }
++ }
++// if ( nextLcdUpdate <= time(NULL) )
++// nextLcdUpdate=(time(NULL)/60)*60+60;
++// else if ( nextLcdUpdate > time(NULL)+60 )
+ nextLcdUpdate=(time(NULL)/60)*60+60;
+ }
+
+diff -rupbB ./lcd.h ../lcdproc-0.0.10.SHF-volume/lcd.h
+--- ./lcd.h 2008-05-27 02:11:55.000000000 +0200
++++ ../lcdproc-0.0.10.SHF-volume/lcd.h 2008-05-27 01:03:23.000000000 +0200
+@@ -14,6 +14,7 @@
+ #define LCDMAXWID 40
+ #define LCDMAXCARDS 4
+ #define LCDMAXFULLSTRING 1024
++#define MAX_EPG_RETRY 45 // : 8 = sec
+ #define MAX_LCDd_dead 12 // : 8 = sec
+
+ class cLcd : public cThread {
+@@ -40,6 +41,7 @@ class cLcd : public cThread {
+ void SetTitle( const char *string);
+ void SetMain( unsigned int n, const char *string);
+ void SetHelp( unsigned int n, const char *Red, const char *Green, const char *Yellow, const char *Blue);
++ void SetChannelSwitch(const cDevice *Device, int ChannelNumber);
+ void SetStatus( const char *string);
+ void SetWarning( const char *string);
+ void ShowVolume(unsigned int vol, bool muted );
+@@ -65,7 +67,9 @@ class cLcd : public cThread {
+ char host[100]; // 100 should be sufficient, I think.
+ unsigned int port;
+ bool connected;
++ bool epg;
+ unsigned int LCDd_dead;
++ int epg_retry;
+ struct StateData ThreadStateData;
+ time_t LastProgress;
+ cMutex CriticalArea;
diff --git a/lcd.c b/lcd.c
index 3677e67..cd1b3fc 100644
--- a/lcd.c
+++ b/lcd.c
@@ -30,9 +30,16 @@
// public:
cLcd::cLcd() {
- int i,j;
- connected=false; ThreadStateData.showvolume=false; ThreadStateData.newscroll=false; sock=wid=hgt=cellwid=cellhgt=0;closing = false;
- replayDvbApi=NULL; primaryDvbApi=NULL;
+ int i, j;
+ connected = false;
+ suspended = false;
+ ThreadStateData.showvolume = false;
+ ThreadStateData.newscroll = false;
+ sock = wid = hgt = cellwid = cellhgt = 0;
+ closing = false;
+ host = NULL;
+ replayDvbApi = NULL;
+ primaryDvbApi = NULL;
for (i=0;i<LCDMAXSTATES;i++) for (j=0;j<4;j++) {
ThreadStateData.lcdbuffer[i][j][0]=' ';
@@ -55,33 +62,52 @@ cLcd::cLcd() {
cLcd::~cLcd() {
if (connected) { cLcd::Close(); }
if (conv) { delete(conv); }
+ if (host) { free(host); }
}
-bool cLcd::Connect( char *host, unsigned int port ) {
+bool cLcd::Connect( const char *host, unsigned int port ) {
+ asprintf(&(this->host), "%s", host);
+ this->port = port;
+ cLcd::Open();
+
+ cLcd::Start(); SetThreadState(Title); // Start thread
+ return true;
+}
+
+bool cLcd::Open() {
char istring[1024];
unsigned int i=0;
if ( ( sock = sock_connect(host,port) ) < 1) {
+ syslog(LOG_INFO, "could not establish connection to LCDd at %s:%d.",host,port);
return connected=false;
}
ToggleMode=false;
sock_send_string(sock, "hello\n");
usleep(500000); // wait for a connect message
+ memset(istring,0,1024);
sock_recv(sock, istring, 1024);
- if ( strncmp("connect LCDproc",istring,15) != 0 ) { cLcd::Close(); return connected=false; }
+ if ( strncmp("connect LCDproc",istring,15) != 0 ) {
+ syslog(LOG_INFO, "LCDd at %s:%d does not respond.",host,port);
+ cLcd::Close();
+ return connected=false;
+ }
- while ( (strncmp("lcd",istring+i,3) != 0 ) && (i<(strlen(istring)-5)) ) i++;
+ while ( ((int)i<((int)strlen(istring)-5)) && (strncmp("lcd",istring+i,3) != 0 ) ) i++;
- if (sscanf( istring+i,"lcd wid %d hgt %d cellwid %d cellhgt %d"
- , &wid, &hgt, &cellwid, &cellhgt) ) connected=true;
+ if (sscanf(istring+i,"lcd wid %d hgt %d cellwid %d cellhgt %d", &wid, &hgt, &cellwid, &cellhgt)) connected=true;
if ((hgt < 4 ) || (wid < 16)) connected = false; // 4 lines are needed, may work with more than 4 though
- if ( (hgt==2) && (wid>31) ) { connected = true; wid=wid/2; LineMode=0; } // 2x32-2x40
+ if ((hgt==2) && (wid>31)) { connected = true; wid=wid/2; LineMode=0; } // 2x32-2x40
else if ( (hgt==2) && (wid>15) && (wid<32) ) { connected = true; ToggleMode=true; } // 2x16-2x31
- if (!connected) { cLcd::Close(); return connected; }
+ if (!connected) {
+ syslog(LOG_INFO, "Minimum Display Size is 2x16. Your LCD is to small, sorry.");
+ cLcd::Close();
+ return connected;
+ }
sock_send_string(sock,"screen_add VDR\n"); sock_recv(sock, istring, 1024);
sock_send_string(sock,"screen_set VDR -heartbeat off\n"); sock_recv(sock, istring, 1024);
@@ -97,8 +123,7 @@ bool cLcd::Connect( char *host, unsigned int port ) {
sock_send_string(sock,istring);
sock_recv(sock, istring, 1024);
}
-
- cLcd::Start(); SetThreadState(Title); // Start thread
+ syslog(LOG_INFO, "connection to LCDd at %s:%d established.",host,port);
return connected;
}
@@ -107,16 +132,43 @@ void cLcd::Close() {
fprintf(stderr,"Close Called \n");
if (connected) {
closing = true;
- sock_send_string(sock,"output off\n");
+ sock_send_string(sock,"screen_del VDR\n");
sock_recv(sock, istring, 1024);
- sleep(1);
- sock_close(sock);
+ usleep(1000000);
+ sock_close(sock);
+ usleep(500000);
}else{
- fprintf(stderr,"Not Connected !!! \n");
+ fprintf(stderr,"Not Connected !!! \n");
}
connected=false; sock=wid=hgt=cellwid=cellhgt=0;
}
+bool cLcd::Suspend() {
+ fprintf(stderr,"Suspend Called \n");
+ if (connected) {
+ suspended = true;
+ connected=false;
+ sock_send_string(sock,"screen_set VDR -priority hidden\n");
+ return true;
+ }else{
+ fprintf(stderr,"Not Connected !!! \n");
+ return false;
+ }
+}
+
+bool cLcd::Resume() {
+ fprintf(stderr,"Resume Called \n");
+ if (suspended) {
+ connected=true;
+ suspended = false;
+ sock_send_string(sock,"screen_set VDR -priority info\n");
+ return true;
+ }else{
+ fprintf(stderr,"Not suspended !!! \n");
+ return false;
+ }
+}
+
const char* cLcd::Convert(const char *s) {
// do character recoding to ISO-8859-1
if (!s) return s;
@@ -296,7 +348,7 @@ void cLcd::SetWarning( const char *string) {
}
}
-void cLcd::ShowVolume(unsigned int vol, bool absolute ) {
+void cLcd::ShowVolume(int vol, bool absolute ) {
if (!connected) return;
BeginMutualExclusion();
if (absolute)
@@ -314,7 +366,7 @@ if (!connected) return;
} else {
if (hgt==2) {
if (ToggleMode) {
- cLcd::SetLine(Vol,0,"|---|---|---|---|---|---|---|---|---|---");
+ cLcd::SetLine(Vol,0,tr("Volume "));
cLcd::SetLine(Vol,1," ");
} else {
cLcd::SetLine(Vol,0,"|---|---|---|---|---|---|---|---|---|---");
@@ -663,13 +715,15 @@ void cLcd::GetTimeDateStat( char *string, unsigned int OutStateData[] ) {
}
#define WakeUpCycle 125000 // us
+#define WorkString_Length 1024
void cLcd::Action(void) { // LCD output thread
- unsigned int i,j, barx=1, bary=1, barl=0, ScrollState=0, ScrollLine=1, lasttitlelen=0;
- int Current=0, Total=1, scrollpos=0, scrollcnt=0, scrollwaitcnt=10, lastAltShift=0, lastBackLight,lastPrio, lastPrioN, keycnt=0;
+ unsigned int i,j, barx, bary, barl, ScrollState, ScrollLine, lasttitlelen;
+ int Current, Total, scrollpos, scrollcnt, scrollwaitcnt, lastAltShift, lastBackLight,lastPrio, keycnt;
struct timeval now, voltime;
- char workstring[1024], lastkeypressed='\0';
- cLcd::ThreadStates PrevState=Menu;
+ char workstring[WorkString_Length];
+ char lastkeypressed='\0';
+ cLcd::ThreadStates PrevState = Menu;
struct cLcd::StateData OutStateData;
bool Lcddirty[LCDMAXSTATES][4];
bool LcdShiftkeyPressed=false;
@@ -680,423 +734,512 @@ void cLcd::Action(void) { // LCD output thread
// LCR
static int lcrCycle;
- // backlight init
- if ((lastBackLight=LcdSetup.BackLight))
- sock_send_string(sock,"backlight on\n");
- else
- sock_send_string(sock,"backlight off\n");
-
- // prio init
- if ( (lastPrio=LcdSetup.SetPrio) ) {
- if (LcdSetup.SetPrio == 1)
- sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioN );
- else
- sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioH );
- sock_send_string(sock,priostring);
- }
- lastPrioN=LcdSetup.ClientPrioN;
-
- syslog(LOG_INFO, "LCD output thread started (pid=%d), display size: %dx%d", getpid(),hgt,wid);
- cLcd::Write(LcdSetup.ShowTime?1:4," Welcome to V D R\0");
- cLcd::Write(LcdSetup.ShowTime?2:3,"--------------------\0");
- cLcd::Write(LcdSetup.ShowTime?3:1,"Video Disk Recorder\0");
- cLcd::Write(LcdSetup.ShowTime?4:2,"Version: "VDRVERSION"\0");
-
- // Output init
- if (LcdSetup.OutputNumber > 0){
- char lcdCommand[100];
-
- for (int o=0; o < LcdSetup.OutputNumber; o++){
- sprintf(lcdCommand,"output %d\n",1 << o);
- sock_send_string(sock,lcdCommand);
- usleep(150000);
- }
- for (int o= LcdSetup.OutputNumber-1; o >= 0; o--){
- sprintf(lcdCommand,"output %d\n",1 << o);
- sock_send_string(sock,lcdCommand);
- usleep(150000);
- }
- sprintf(lcdCommand,"output on\n");
- sock_send_string(sock,lcdCommand);
- usleep(500000);
- sprintf(lcdCommand,"output off\n");
- sock_send_string(sock,lcdCommand);
- }
-
-
- sleep(3); bool volume=false; OutStateData.showvolume=false; ThreadStateData.showvolume=false;
-
- if (primaryDvbApi) for (int k=0; k<primaryDvbApi->NumDevices() ; k++) SetCardStat(k,1);
-
- voltime.tv_sec=0;
- for (i=0;i<LCDMAXSTATES;i++) for (j=0;j<4;j++) Lcddirty[i][j]=true;
- time_t nextLcdUpdate = 0; // trigger first update immediately
- while (true) { // main loop, wakes up every WakeUpCycle, any output to LCDd is done here
- gettimeofday(&now,NULL);
-
- // epg update
- if (channelSwitched) {
- channelSwitched = false;
- nextLcdUpdate = 0; //trigger next epg update
- }
-
- if ( time(NULL) > nextLcdUpdate ) {
- cChannel *channel = Channels.GetByNumber(primaryDvbApi->CurrentChannel());
- const cEvent *Present = NULL;
- cSchedulesLock schedulesLock;
- const cSchedules *Schedules = cSchedules::Schedules(schedulesLock);
- if (Schedules) {
- const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
- if (Schedule) {
- const char *PresentTitle, *PresentSubtitle;
- PresentTitle = NULL; PresentSubtitle = NULL;
- if ((Present = Schedule->GetPresentEvent()) != NULL) {
- nextLcdUpdate=Present->StartTime()+Present->Duration();
- PresentTitle = Present->Title();
- PresentSubtitle = Present->ShortText();
- if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
- SetRunning(false,Present->GetTimeString(),PresentTitle,PresentSubtitle);
- else if (!isempty(PresentTitle)) SetRunning(false,Present->GetTimeString(),PresentTitle);
- } else
- SetRunning(false,tr("No EPG info available."), NULL);
- if ((Present = Schedule->GetFollowingEvent()) != NULL)
- nextLcdUpdate=(Present->StartTime()<nextLcdUpdate)?Present->StartTime():nextLcdUpdate;
- rtcycle = 10; // RT
- lcrCycle = 10; // LCR
- }
- }
- if ( nextLcdUpdate <= time(NULL) )
- nextLcdUpdate=(time(NULL)/60)*60+60;
- }
-
- // 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");
- }
- // 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
- }
- }
- }
- }
-
- // replaying
-
- if ( (now.tv_usec < WakeUpCycle) && (replayDvbApi) ) {
- char tempbuffer[16];
- replayDvbApi->GetIndex(Current, Total, false); Total=(Total==0)?1:Total;
- sprintf(tempbuffer,IndexToHMSF(Total));
- SetProgress(IndexToHMSF(Current),tempbuffer, (100 * Current) / Total);
- }
-
-
-
- // copy
-
- BeginMutualExclusion(); // all data needed for output are copied here
- memcpy(&OutStateData,&ThreadStateData, sizeof (cLcd::StateData));
- ThreadStateData.showvolume=false;
- if (ThreadStateData.newscroll) { scrollpos=0; scrollwaitcnt=LcdSetup.Scrollwait; ThreadStateData.newscroll=false; }
- for (i=0;i<LCDMAXSTATES;i++) for (j=0;j<4;j++) {
- ThreadStateData.lcddirty[i][j]=false;
- Lcddirty[i][j]= Lcddirty[i][j] || OutStateData.lcddirty[i][j];
- }
- EndMutualExclusion();
-
- // scroller
-
- if ( (OutStateData.State==PrevState) && ( OutStateData.State == Replay || OutStateData.State == Menu || OutStateData.State == Title ) ) {
- switch (OutStateData.State) {
- case Replay:
- ScrollState=LCDREPLAY; ScrollLine=1;
- break;
- case Menu:
- ScrollState=LCDMENU; ScrollLine=1;
- break;
- case Title:
- ScrollState=LCDTITLE;
- if (!ToggleMode) {
- ScrollLine=2;
- } else {
- ScrollLine=1;
- if (LcdSetup.ShowTime) {
- char tmpbuffer[1024];
- strcpy(tmpbuffer,OutStateData.lcdbuffer[LCDTITLE][1]);
- strcat(tmpbuffer," * ");
- strcat(tmpbuffer, OutStateData.lcdfullbuffer[LCDTITLE]);
- strcpy(OutStateData.lcdfullbuffer[LCDTITLE],tmpbuffer);
- }
- strncpy(OutStateData.lcdbuffer[LCDTITLE][1],OutStateData.lcdfullbuffer[LCDTITLE],wid);
+ time_t nextLcdUpdate, lastUserActivity;
+
+ while (true) { // outer (reconnect) loop
+ barx=1; bary=1; barl=0; ScrollState=0; ScrollLine=1; lasttitlelen=0;
+ Current=0, Total=1, scrollpos=0, scrollcnt=0, scrollwaitcnt=10, lastAltShift=0, lastBackLight=0 ,lastPrio=0, keycnt=0;
+ lastkeypressed='\0';
+ PrevState=Menu;
+ OutStateData.State=Title;
+ LcdShiftkeyPressed=false;
+ LCDd_dead=0;
+
+ while (! connected) {
+ sleep(120);
+ Open();
}
- if ( strlen(OutStateData.lcdfullbuffer[LCDTITLE]) != lasttitlelen ) {
- lasttitlelen=strlen(OutStateData.lcdfullbuffer[LCDTITLE]);
- scrollpos=0; scrollwaitcnt=LcdSetup.Scrollwait; ThreadStateData.newscroll=false;
- }
- break;
- default:
- break;
- }
-
- if ( ( strlen(OutStateData.lcdfullbuffer[ScrollState]) > (((ToggleMode)?1:2)*wid+3) )
- && ( (scrollpos) || !(scrollwaitcnt=(scrollwaitcnt+1)%LcdSetup.Scrollwait) ) ) {
- if ( !(scrollcnt=(scrollcnt+1)%LcdSetup.Scrollspeed) ) {
- scrollpos=(scrollpos+1)%strlen(OutStateData.lcdfullbuffer[ScrollState]);
- if ( scrollpos==1 ) scrollwaitcnt=0;
- for (i=0; i<wid; i++) {
- OutStateData.lcdbuffer[ScrollState][ScrollLine][i]=
- OutStateData.lcdfullbuffer[ScrollState][(scrollpos+i)%strlen(OutStateData.lcdfullbuffer[ScrollState])];
- }
- OutStateData.lcdbuffer[ScrollState][ScrollLine][wid]='\0';
- for (i=0; i<wid; i++) {
- OutStateData.lcdbuffer[ScrollState][ScrollLine+1][i]=
- OutStateData.lcdfullbuffer[ScrollState][(scrollpos+wid+i)%strlen(OutStateData.lcdfullbuffer[ScrollState])];
- }
- OutStateData.lcdbuffer[ScrollState][ScrollLine+1][wid]='\0';
- Lcddirty[ScrollState][ScrollLine]=Lcddirty[ScrollState][ScrollLine+1]=true;
- }
- } else if (!LcdSetup.ShowTime) Lcddirty[LCDTITLE][1]=true;
- }
- // volume
-
- if (OutStateData.showvolume) gettimeofday(&voltime,NULL);
- if ( voltime.tv_sec != 0) { // volume
- if ( ((now.tv_sec - voltime.tv_sec)*1000000+now.tv_usec-voltime.tv_usec ) > (100000*LcdSetup.VolumeKeep) ) {
- voltime.tv_sec=0;
- OutStateData.barx=1; OutStateData.bary=1; OutStateData.barl=0; volume=false;
- } else {
- volume=true;
- OutStateData.barx=1; OutStateData.bary=((hgt==2)?2:3);
- OutStateData.barl=(cellwid*((hgt==2)?2:1)*wid*OutStateData.volume)/255;
- }
- }
- if (volume) OutStateData.State = Vol;
-
- // prio
-
-
- // modes
-
- switch (OutStateData.State) {
-
- case Menu: // display menu = 0
- LineMode=1; if (!volume) { OutStateData.barx=1; OutStateData.bary=1; OutStateData.barl=0; }
- if (PrevState != Menu) for (i=0;i<4;i++) Lcddirty[LCDMENU][i]=true;
- for (i=0;i<4;i++) if (Lcddirty[LCDMENU][i]) {
- cLcd::Write(i+1,OutStateData.lcdbuffer[LCDMENU][i]);
- Lcddirty[LCDMENU][i]=false;
- }
- PrevState=Menu;
- break;
-
- case Title: // Display 'titlescsreen' = 1
- LineMode=0;
- if ( (LcdSetup.ShowTime) && ( (now.tv_usec < WakeUpCycle) || (PrevState != Title) ) ) {
- cLcd::GetTimeDateStat(workstring,OutStateData.CardStat);
- cLcd::Write(1,workstring);
- }
- if (PrevState != Title) for (i=LcdSetup.ShowTime?1:0;i<4;i++) Lcddirty[LCDTITLE][i]=true;
- for (i=LcdSetup.ShowTime?1:0;i<4;i++) if (Lcddirty[LCDTITLE][i]) {
- cLcd::Write(i+1,OutStateData.lcdbuffer[LCDTITLE][i]);
- Lcddirty[LCDTITLE][i]=false;
- }
- PrevState = Title;
- break;
-
- case Replay: // Display date/time during replaying = 2
- LineMode=1;
- if ( !ToggleMode && ((now.tv_usec < WakeUpCycle) || (PrevState != Replay)) ) {
- cLcd::GetTimeDateStat(workstring,OutStateData.CardStat);
- cLcd::Write(1,workstring);
- }
- if (PrevState != Replay) { scrollpos=0; for (i=1;i<4;i++) Lcddirty[LCDREPLAY][i]=true; }
- for (i=(ToggleMode)?0:1;i<4;i++) if (Lcddirty[LCDREPLAY][i]) {
- cLcd::Write(i+1,OutStateData.lcdbuffer[LCDREPLAY][i]);
- Lcddirty[LCDREPLAY][i]=false;
- }
- PrevState = Replay;
- break;
-
- case Misc: // Display messages = 3
- LineMode=0;
- if (PrevState != Misc) for (i=0;i<4;i++) Lcddirty[LCDMISC][i]=true;
- for (i=0;i<4;i++) if (Lcddirty[LCDMISC][i]) {
- cLcd::Write(i+1,OutStateData.lcdbuffer[LCDMISC][i]);
- Lcddirty[LCDMISC][i]=false;
- }
- PrevState = Misc;
- break;
-
- case Vol: // Display Volume = 4
- LineMode=0;
- if (PrevState != Vol) for (i=0;i<4;i++) Lcddirty[LCDVOL][i]=true;
- for (i=0;i<4;i++) if (Lcddirty[LCDVOL][i]) {
- cLcd::Write(i+1,OutStateData.lcdbuffer[LCDVOL][i]);
- Lcddirty[LCDVOL][i]=false;
- }
- PrevState = Vol;
- break;
-
- default: // quite impossible :)
- break;
- }
+ // backlight init
+ if ((lastBackLight=LcdSetup.BackLight))
+ sock_send_string(sock,"backlight on\n");
+ else
+ sock_send_string(sock,"backlight off\n");
+
+ // prio init
+ if (LcdSetup.SetPrio) {
+ if (LcdSetup.SetPrio == 1){
+ sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioN );
+ lastPrio=LcdSetup.ClientPrioN;
+ } else {
+ sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioH );
+ lastPrio=LcdSetup.ClientPrioH;
+ }
+
+ sock_send_string(sock,priostring);
+ }
+ lastUserActivity=time(NULL);
+
+ syslog(LOG_INFO, "LCD output thread started (pid=%d), display size: %dx%d", getpid(),hgt,wid);
+ cLcd::Write(LcdSetup.ShowTime?1:4," Welcome to V D R\0");
+ cLcd::Write(LcdSetup.ShowTime?2:3,"--------------------\0");
+ cLcd::Write(LcdSetup.ShowTime?3:1,"Video Disk Recorder\0");
+ cLcd::Write(LcdSetup.ShowTime?4:2,"Version: "VDRVERSION"\0");
+
+ // Output init
+ if (LcdSetup.OutputNumber > 0){
+ char lcdCommand[100];
+
+ for (int o=0; o < LcdSetup.OutputNumber; o++){
+ sprintf(lcdCommand,"output %d\n",1 << o);
+ sock_send_string(sock,lcdCommand);
+ usleep(150000);
+ }
+ for (int o= LcdSetup.OutputNumber-1; o >= 0; o--){
+ sprintf(lcdCommand,"output %d\n",1 << o);
+ sock_send_string(sock,lcdCommand);
+ usleep(150000);
+ }
+ sprintf(lcdCommand,"output on\n");
+ sock_send_string(sock,lcdCommand);
+ usleep(500000);
+ sprintf(lcdCommand,"output off\n");
+ sock_send_string(sock,lcdCommand);
+ }
- // bargraph
- if ( (OutStateData.barx != barx) || (OutStateData.bary != bary) || (OutStateData.barl != barl) ) {
- sprintf(workstring,"widget_set VDR prbar %d %d %d\n",OutStateData.barx,OutStateData.bary,OutStateData.barl);
- sock_send_string(sock,workstring);
- barx=OutStateData.barx; bary=OutStateData.bary; barl=OutStateData.barl;
- }
- // backlight
-
- if ( lastBackLight != LcdSetup.BackLight) {
- lastBackLight=LcdSetup.BackLight;
- if (lastBackLight)
- sock_send_string(sock,"backlight on\n");
- else
- sock_send_string(sock,"backlight off\n");
- }
-
- // keys
-
- if ( LcdMaxKeys && (lastAltShift != LcdSetup.AltShift) ) {
- lastAltShift=LcdSetup.AltShift;
- if (lastAltShift)
- sock_send_string(sock,"screen_set VDR -heartbeat slash\n");
- else
- sock_send_string(sock,"screen_set VDR -heartbeat heart\n");
- }
-
-
- if ( !(keycnt=(keycnt+1)%4) ) lastkeypressed='\0';
-
- workstring[0]='\0'; sock_recv(sock, workstring, 1023); workstring[1024]='\0';
- //if (workstring[0] != '\0') syslog(LOG_INFO, "%s", workstring);
- if ( LcdMaxKeys && ( strlen(workstring) > 4 ) ) {
- for (i=0; i < (strlen(workstring)-4); i++ ) {
- if (workstring[i]=='k' && workstring[i+1]=='e' && workstring[i+2]=='y'
- && workstring[i+3]==' ' && workstring[i+4]!=lastkeypressed ) {
- lastkeypressed=workstring[i+4];
- for (j=0; j<LcdMaxKeys && workstring[i+4]!=LcdUsedKeys[j]; j++ ) {}
- if (workstring[i+4] == LcdShiftKey) {
- LcdShiftkeyPressed = ! LcdShiftkeyPressed;
- if (LcdShiftkeyPressed)
- sock_send_string(sock,"screen_set VDR -heartbeat on\n");
- else
- sock_send_string(sock,"screen_set VDR -heartbeat off\n");
- }
- if ( (workstring[i+4] != LcdShiftKey) ) {
- if (LcdShiftkeyPressed) {
- //syslog(LOG_INFO, "shiftkey pressed: %c %d", workstring[i+4],j);
- cRemote::Put(LcdShiftMap[j]);
- LcdShiftkeyPressed=false;
- sock_send_string(sock,"screen_set VDR -heartbeat off\n");
- } else {
- //syslog(LOG_INFO, "normalkey pressed: %c %d", workstring[i+4],j);
- cRemote::Put(LcdNormalMap[j]);
- }
- }
- }
- }
- }
-
- // Output
-
- int OutValue = 0;
- char lcdCommand[100];
- if (!closing){
- if (LcdSetup.OutputNumber > 0){
- for (int o=0; o < LcdSetup.OutputNumber; o++){
- switch(LcdSetup.OutputFunction[o]){
- case 0: // Off
- break;
- case 1: // On
- OutValue += 1 << o;
- break;
- case 2: // Recording DVB 1
- if (OutStateData.CardStat[0] == 2)
- OutValue += 1 << o;
- break;
- case 3: // Recording DVB 2
- if (OutStateData.CardStat[1] == 2)
- OutValue += 1 << o;
- break;
- case 4: // Recording DVB 3
- if (OutStateData.CardStat[2] == 2)
- OutValue += 1 << o;
- break;
- case 5: // Recording DVB 4
- if (OutStateData.CardStat[3] == 2)
- OutValue += 1 << o;
- break;
- case 6: // Replay
- if (OutStateData.State == Replay)
- OutValue += 1 << o;
- break;
- case 7: // DVD
- if ( (OutStateData.State == Replay) && (!strncmp(OutStateData.lcdfullbuffer[LCDREPLAY],"DVD", 3)))
- OutValue += 1 << o;
- break;
- case 8: // Mplayer
- break;
- case 9: // MP3
- if ( (OutStateData.State == Replay) && OutStateData.lcdfullbuffer[LCDREPLAY][0]=='[' &&
- OutStateData.lcdfullbuffer[LCDREPLAY][3]==']' &&
- (OutStateData.lcdfullbuffer[LCDREPLAY][1]=='.' || OutStateData.lcdfullbuffer[LCDREPLAY][1]=='L' ) &&
- (OutStateData.lcdfullbuffer[LCDREPLAY][2]=='.' || OutStateData.lcdfullbuffer[LCDREPLAY][2]=='S' )
- )
- OutValue += 1 << o;
- break;
- case 10: // Mplayer + MP3
- // Until I find a better solution any replay that is not a DVD is flagged as Mplayer-Mp3
- if ( (OutStateData.State == Replay) && (strncmp(OutStateData.lcdfullbuffer[LCDREPLAY],"DVD",3))!= 0)
- OutValue += 1 << o;
- break;
- case 11: // User1
- break;
- case 12: // User2
- break;
- case 13: // User3
- break;
- default:
- ;
- }
- }
- sprintf(lcdCommand,"output %d\n",OutValue);
- sock_send_string(sock,lcdCommand);
- }
- }
- usleep(WakeUpCycle-(now.tv_usec%WakeUpCycle)); // sync to systemtime for nicer time output
+ sleep(3); bool volume=false; OutStateData.showvolume=false; ThreadStateData.showvolume=false;
+
+ if (primaryDvbApi) for (int k=0; k<primaryDvbApi->NumDevices() ; k++) SetCardStat(k,1);
+
+ voltime.tv_sec=0;
+ for (i=0;i<LCDMAXSTATES;i++) for (j=0;j<4;j++) Lcddirty[i][j]=true;
+ nextLcdUpdate = 0; // trigger first update immediately
+ while (true) { // main loop, wakes up every WakeUpCycle, any output to LCDd is done here
+ gettimeofday(&now,NULL);
+
+ // epg update
+ if (channelSwitched) {
+ channelSwitched = false;
+ nextLcdUpdate = 0; //trigger next epg update
+ }
+
+ if ( time(NULL) > nextLcdUpdate ) {
+ cChannel *channel = Channels.GetByNumber(primaryDvbApi->CurrentChannel());
+ const cEvent *Present = NULL;
+ cSchedulesLock schedulesLock;
+ const cSchedules *Schedules = cSchedules::Schedules(schedulesLock);
+ if (Schedules) {
+ const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
+ if (Schedule) {
+ const char *PresentTitle, *PresentSubtitle;
+ PresentTitle = NULL; PresentSubtitle = NULL;
+ if ((Present = Schedule->GetPresentEvent()) != NULL) {
+ nextLcdUpdate=Present->StartTime()+Present->Duration();
+ PresentTitle = Present->Title();
+ PresentSubtitle = Present->ShortText();
+ if ( (!isempty(PresentTitle)) && (!isempty(PresentSubtitle)) )
+ SetRunning(false,Present->GetTimeString(),PresentTitle,PresentSubtitle);
+ else if (!isempty(PresentTitle)) SetRunning(false,Present->GetTimeString(),PresentTitle);
+ } else
+ SetRunning(false,tr("No EPG info available."), NULL);
+ if ((Present = Schedule->GetFollowingEvent()) != NULL)
+ nextLcdUpdate=(Present->StartTime()<nextLcdUpdate)?Present->StartTime():nextLcdUpdate;
+ rtcycle = 10; // RT
+ lcrCycle = 10; // LCR
+ }
+ }
+ if ( nextLcdUpdate <= time(NULL) )
+ nextLcdUpdate=(time(NULL)/60)*60+60;
+ }
+
+ // 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");
+ }
+ // 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
+ }
+ }
+ }
+ }
+
+ // replaying
+
+ if ( (now.tv_usec < WakeUpCycle) && (replayDvbApi) ) {
+ char tempbuffer[16];
+ replayDvbApi->GetIndex(Current, Total, false); Total=(Total==0)?1:Total;
+ sprintf(tempbuffer,IndexToHMSF(Total));
+ SetProgress(IndexToHMSF(Current),tempbuffer, (100 * Current) / Total);
+ }
+
+
+
+ // copy
+
+ BeginMutualExclusion(); // all data needed for output are copied here
+ memcpy(&OutStateData,&ThreadStateData, sizeof (cLcd::StateData));
+ ThreadStateData.showvolume=false;
+ if (ThreadStateData.newscroll) { scrollpos=0; scrollwaitcnt=LcdSetup.Scrollwait; ThreadStateData.newscroll=false; }
+ for (i=0;i<LCDMAXSTATES;i++) for (j=0;j<4;j++) {
+ ThreadStateData.lcddirty[i][j]=false;
+ Lcddirty[i][j]= Lcddirty[i][j] || OutStateData.lcddirty[i][j];
+ }
+ EndMutualExclusion();
+
+ // scroller
+
+ if ( (OutStateData.State==PrevState) && ( OutStateData.State == Replay || OutStateData.State == Menu || OutStateData.State == Title ) ) {
+ switch (OutStateData.State) {
+ case Replay:
+ ScrollState=LCDREPLAY; ScrollLine=1;
+ break;
+ case Menu:
+ ScrollState=LCDMENU; ScrollLine=1;
+ break;
+ case Title:
+ ScrollState=LCDTITLE;
+ if (!ToggleMode) {
+ ScrollLine=2;
+ } else {
+ ScrollLine=1;
+ if (LcdSetup.ShowTime) {
+ char tmpbuffer[1024];
+ strcpy(tmpbuffer,OutStateData.lcdbuffer[LCDTITLE][1]);
+ strcat(tmpbuffer," * ");
+ strcat(tmpbuffer, OutStateData.lcdfullbuffer[LCDTITLE]);
+ strcpy(OutStateData.lcdfullbuffer[LCDTITLE],tmpbuffer);
+ }
+ strncpy(OutStateData.lcdbuffer[LCDTITLE][1],OutStateData.lcdfullbuffer[LCDTITLE],wid);
+ }
+ if ( strlen(OutStateData.lcdfullbuffer[LCDTITLE]) != lasttitlelen ) {
+ lasttitlelen=strlen(OutStateData.lcdfullbuffer[LCDTITLE]);
+ scrollpos=0; scrollwaitcnt=LcdSetup.Scrollwait; ThreadStateData.newscroll=false;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if ( ( strlen(OutStateData.lcdfullbuffer[ScrollState]) > (((ToggleMode)?1:2)*wid+3) )
+ && ( (scrollpos) || !(scrollwaitcnt=(scrollwaitcnt+1)%LcdSetup.Scrollwait) ) ) {
+ if ( !(scrollcnt=(scrollcnt+1)%LcdSetup.Scrollspeed) ) {
+ scrollpos=(scrollpos+1)%strlen(OutStateData.lcdfullbuffer[ScrollState]);
+ if ( scrollpos==1 ) scrollwaitcnt=0;
+ for (i=0; i<wid; i++) {
+ OutStateData.lcdbuffer[ScrollState][ScrollLine][i]=
+ OutStateData.lcdfullbuffer[ScrollState][(scrollpos+i)%strlen(OutStateData.lcdfullbuffer[ScrollState])];
+ }
+ OutStateData.lcdbuffer[ScrollState][ScrollLine][wid]='\0';
+ for (i=0; i<wid; i++) {
+ OutStateData.lcdbuffer[ScrollState][ScrollLine+1][i]=
+ OutStateData.lcdfullbuffer[ScrollState][(scrollpos+wid+i)%strlen(OutStateData.lcdfullbuffer[ScrollState])];
+ }
+ OutStateData.lcdbuffer[ScrollState][ScrollLine+1][wid]='\0';
+ Lcddirty[ScrollState][ScrollLine]=Lcddirty[ScrollState][ScrollLine+1]=true;
+ }
+ } else if (!LcdSetup.ShowTime) Lcddirty[LCDTITLE][1]=true;
+ }
+
+ // volume
+
+ if (OutStateData.showvolume) gettimeofday(&voltime,NULL);
+ if ( voltime.tv_sec != 0) { // volume
+ if ( ((now.tv_sec - voltime.tv_sec)*1000000+now.tv_usec-voltime.tv_usec ) > (100000*LcdSetup.VolumeKeep) ) {
+ voltime.tv_sec=0;
+ OutStateData.barx=1; OutStateData.bary=1; OutStateData.barl=0; volume=false;
+ } else {
+ volume=true;
+ OutStateData.barx=1; OutStateData.bary=((hgt==2)?2:3);
+ // shortening volume bar in togglemode (lcd with 2x20)
+ OutStateData.barl=(cellwid*((hgt==2 && !ToggleMode)?2:1)*wid*OutStateData.volume)/255;
+ }
+ }
+ if (volume) OutStateData.State = Vol;
+
+ // modes
+
+ switch (OutStateData.State) {
+
+ case Menu: // display menu = 0
+ lastUserActivity=time(NULL);
+ LineMode=1; if (!volume) { OutStateData.barx=1; OutStateData.bary=1; OutStateData.barl=0; }
+ if (PrevState != Menu) for (i=0;i<4;i++) Lcddirty[LCDMENU][i]=true;
+ for (i=0;i<4;i++) if (Lcddirty[LCDMENU][i]) {
+ cLcd::Write(i+1,OutStateData.lcdbuffer[LCDMENU][i]);
+ Lcddirty[LCDMENU][i]=false;
+ }
+ PrevState=Menu;
+ break;
+
+ case Title: // Display 'titlescsreen' = 1
+ LineMode=0;
+ if ( (LcdSetup.ShowTime) && ( (now.tv_usec < WakeUpCycle) || (PrevState != Title) ) ) {
+ cLcd::GetTimeDateStat(workstring,OutStateData.CardStat);
+ cLcd::Write(1,workstring);
+ }
+ if (PrevState != Title) for (i=LcdSetup.ShowTime?1:0;i<4;i++) Lcddirty[LCDTITLE][i]=true;
+ for (i=LcdSetup.ShowTime?1:0;i<4;i++) if (Lcddirty[LCDTITLE][i]) {
+ cLcd::Write(i+1,OutStateData.lcdbuffer[LCDTITLE][i]);
+ Lcddirty[LCDTITLE][i]=false;
+ }
+ PrevState = Title;
+ break;
+
+ case Replay: // Display date/time during replaying = 2
+ LineMode=1;
+ if ( !ToggleMode && ((now.tv_usec < WakeUpCycle) || (PrevState != Replay)) ) {
+ cLcd::GetTimeDateStat(workstring,OutStateData.CardStat);
+ cLcd::Write(1,workstring);
+ }
+ if (PrevState != Replay) { scrollpos=0; for (i=1;i<4;i++) Lcddirty[LCDREPLAY][i]=true; }
+ for (i=(ToggleMode)?0:1;i<4;i++) if (Lcddirty[LCDREPLAY][i]) {
+ cLcd::Write(i+1,OutStateData.lcdbuffer[LCDREPLAY][i]);
+ Lcddirty[LCDREPLAY][i]=false;
+ }
+ PrevState = Replay;
+ break;
+
+ case Misc: // Display messages = 3
+ LineMode=0;
+ lastUserActivity=time(NULL);
+ if (PrevState != Misc) for (i=0;i<4;i++) Lcddirty[LCDMISC][i]=true;
+ for (i=0;i<4;i++) if (Lcddirty[LCDMISC][i]) {
+ cLcd::Write(i+1,OutStateData.lcdbuffer[LCDMISC][i]);
+ Lcddirty[LCDMISC][i]=false;
+ }
+ PrevState = Misc;
+ break;
+
+ case Vol: // Display Volume = 4
+ LineMode=0;
+ lastUserActivity=time(NULL);
+ if (PrevState != Vol) for (i=0;i<4;i++) Lcddirty[LCDVOL][i]=true;
+ for (i=0;i<4;i++) if (Lcddirty[LCDVOL][i]) {
+ cLcd::Write(i+1,OutStateData.lcdbuffer[LCDVOL][i]);
+ Lcddirty[LCDVOL][i]=false;
+ }
+ PrevState = Vol;
+ break;
+
+ default: // quite impossible :)
+ break;
+ }
+
+ // bargraph
+ if ( (OutStateData.barx != barx) || (OutStateData.bary != bary) || (OutStateData.barl != barl) ) {
+ sprintf(workstring,"widget_set VDR prbar %d %d %d\n",OutStateData.barx,OutStateData.bary,OutStateData.barl);
+ sock_send_string(sock,workstring);
+ barx=OutStateData.barx; bary=OutStateData.bary; barl=OutStateData.barl;
+ }
+
+ // prio
+ // lastUserActivity=time(NULL); // <--------------------------------------- UserActivity Dummy !!!
+ if (LcdSetup.SetPrio != 0) {
+ if (LcdSetup.SetPrio == 1){
+ if (lastPrio != LcdSetup.ClientPrioN) {
+ sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioN );
+ lastPrio=LcdSetup.ClientPrioN;
+ sock_send_string(sock,priostring);
+ }
+ } else {
+ if(time(NULL) > (lastUserActivity + LcdSetup.PrioWait)) {
+ if (lastPrio != LcdSetup.ClientPrioN) {
+ sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioN );
+ lastPrio=LcdSetup.ClientPrioN;
+ sock_send_string(sock,priostring);
+ }
+ }
+ else if (lastPrio != LcdSetup.ClientPrioH) {
+ sprintf(priostring,"screen_set VDR -priority %d\n", LcdSetup.ClientPrioH );
+ lastPrio=LcdSetup.ClientPrioH;
+ sock_send_string(sock,priostring);
+ }
+ }
+ }
+
+ // backlight
+ if (LcdSetup.BackLight == 2) { // auto
+ if(time(NULL) > (lastUserActivity + LcdSetup.BackLightWait)){
+ if ( lastBackLight != 0) {
+ sock_send_string(sock,"backlight off\n");
+ lastBackLight = 0;
+ }
+ } else if ( lastBackLight != 1) {
+ sock_send_string(sock,"backlight on\n");
+ lastBackLight = 1;
+ }
+ }
+ else if ( lastBackLight != LcdSetup.BackLight) {
+
+ lastBackLight=LcdSetup.BackLight;
+ if (lastBackLight)
+ sock_send_string(sock,"backlight on\n");
+ else
+ sock_send_string(sock,"backlight off\n");
+ }
+
+ // keys
+
+ if ( LcdMaxKeys && (lastAltShift != LcdSetup.AltShift) ) {
+ lastAltShift=LcdSetup.AltShift;
+ if (lastAltShift)
+ sock_send_string(sock,"screen_set VDR -heartbeat slash\n");
+ else
+ sock_send_string(sock,"screen_set VDR -heartbeat heart\n");
+ }
+
+
+ if ( !(keycnt=(keycnt+1)%4) ) lastkeypressed='\0';
+
+ memset(workstring,0,WorkString_Length);
+ workstring[0]='\0';
+ sock_recv(sock, workstring, WorkString_Length);
+ workstring[WorkString_Length-1]='\0';
+ //if (workstring[0] != '\0') syslog(LOG_INFO, "%s", workstring);
+
+ // reconnect if LCDd died
+
+ sock_send_string(sock, "hello\n");
+ //syslog(LOG_INFO, "workstring1: %d : %d",strlen(workstring),(strlen(workstring)-17));
+ //syslog(LOG_INFO, "workstring2: %s",workstring);
+
+ j=0;
+ for (i=0; (int)i < ((int)strlen(workstring)-17); i++ ) {
+ if(strncmp("connect LCDproc",workstring+i,15) == 0){
+ j=1;
+ break;
+ }
+ }
+ if(!suspended) {
+ if (j==0){
+ if(LCDd_dead > MAX_LCDd_dead) {
+ syslog(LOG_INFO, "Connection to LCDd at %s:%d lost, trying to reestablish.",host,port);
+ Close();
+ break;
+ }
+ LCDd_dead++;
+ } else LCDd_dead=0;
+ }
+
+
+ // keys (again)
+
+ if ( LcdMaxKeys && ( strlen(workstring) > 4 ) ) {
+ for (i=0; i < (strlen(workstring)-4); i++ ) {
+ if (workstring[i]=='k' && workstring[i+1]=='e' && workstring[i+2]=='y'
+ && workstring[i+3]==' ' && workstring[i+4]!=lastkeypressed ) {
+ lastkeypressed=workstring[i+4];
+ for (j=0; j<LcdMaxKeys && workstring[i+4]!=LcdUsedKeys[j]; j++ ) {}
+ if (workstring[i+4] == LcdShiftKey) {
+ LcdShiftkeyPressed = ! LcdShiftkeyPressed;
+ if (LcdShiftkeyPressed)
+ sock_send_string(sock,"screen_set VDR -heartbeat on\n");
+ else
+ sock_send_string(sock,"screen_set VDR -heartbeat off\n");
+ }
+ if ( (workstring[i+4] != LcdShiftKey) ) {
+ if (LcdShiftkeyPressed) {
+ //syslog(LOG_INFO, "shiftkey pressed: %c %d", workstring[i+4],j);
+ cRemote::Put(LcdShiftMap[j]);
+ LcdShiftkeyPressed=false;
+ sock_send_string(sock,"screen_set VDR -heartbeat off\n");
+ } else {
+ //syslog(LOG_INFO, "normalkey pressed: %c %d", workstring[i+4],j);
+ cRemote::Put(LcdNormalMap[j]);
+ }
+ }
+ }
+ }
+ }
+
+ // Output
+
+ int OutValue = 0;
+ char lcdCommand[100];
+ if (!closing){
+ if (LcdSetup.OutputNumber > 0){
+ for (int o=0; o < LcdSetup.OutputNumber; o++){
+ switch(LcdSetup.OutputFunction[o]){
+ case 0: // Off
+ break;
+ case 1: // On
+ OutValue += 1 << o;
+ break;
+ case 2: // Recording DVB 1
+ if (OutStateData.CardStat[0] == 2)
+ OutValue += 1 << o;
+ break;
+ case 3: // Recording DVB 2
+ if (OutStateData.CardStat[1] == 2)
+ OutValue += 1 << o;
+ break;
+ case 4: // Recording DVB 3
+ if (OutStateData.CardStat[2] == 2)
+ OutValue += 1 << o;
+ break;
+ case 5: // Recording DVB 4
+ if (OutStateData.CardStat[3] == 2)
+ OutValue += 1 << o;
+ break;
+ case 6: // Replay
+ if (OutStateData.State == Replay)
+ OutValue += 1 << o;
+ break;
+ case 7: // DVD
+ if ( (OutStateData.State == Replay) && (!strncmp(OutStateData.lcdfullbuffer[LCDREPLAY],"DVD", 3)))
+ OutValue += 1 << o;
+ break;
+ case 8: // Mplayer
+ break;
+ case 9: // MP3
+ if ( (OutStateData.State == Replay) && OutStateData.lcdfullbuffer[LCDREPLAY][0]=='[' &&
+ OutStateData.lcdfullbuffer[LCDREPLAY][3]==']' &&
+ (OutStateData.lcdfullbuffer[LCDREPLAY][1]=='.' || OutStateData.lcdfullbuffer[LCDREPLAY][1]=='L' ) &&
+ (OutStateData.lcdfullbuffer[LCDREPLAY][2]=='.' || OutStateData.lcdfullbuffer[LCDREPLAY][2]=='S' )
+ )
+ OutValue += 1 << o;
+ break;
+ case 10: // Mplayer + MP3
+ // Until I find a better solution any replay that is not a DVD is flagged as Mplayer-Mp3
+ if ( (OutStateData.State == Replay) && (strncmp(OutStateData.lcdfullbuffer[LCDREPLAY],"DVD",3))!= 0)
+ OutValue += 1 << o;
+ break;
+ case 11: // User1
+ break;
+ case 12: // User2
+ break;
+ case 13: // User3
+ break;
+ default:
+ ;
+ }
+ }
+ sprintf(lcdCommand,"output %d\n",OutValue);
+ sock_send_string(sock,lcdCommand);
+ }
+ }
+ usleep(WakeUpCycle-(now.tv_usec%WakeUpCycle)); // sync to systemtime for nicer time output
+ }
}
}
diff --git a/lcd.h b/lcd.h
index 630581a..3e42ed2 100644
--- a/lcd.h
+++ b/lcd.h
@@ -13,6 +13,7 @@
#define LCDMAXWID 40
#define LCDMAXCARDS 4
#define LCDMAXFULLSTRING 1024
+#define MAX_LCDd_dead 12 // : 8 = sec
class cLcd : public cThread {
public:
@@ -32,7 +33,9 @@ class cLcd : public cThread {
};
cLcd();
~cLcd();
- bool Connect( char *host = LCDHOST , unsigned int port = LCDPORT );
+ bool Connect( const char *host = LCDHOST , unsigned int port = LCDPORT );
+ bool Suspend();
+ bool Resume();
void Close();
void Info();
void SetTitle( const char *string);
@@ -40,7 +43,7 @@ class cLcd : public cThread {
void SetHelp( unsigned int n, const char *Red, const char *Green, const char *Yellow, const char *Blue);
void SetStatus( const char *string);
void SetWarning( const char *string);
- void ShowVolume(unsigned int vol, bool muted );
+ void ShowVolume(int vol, bool muted );
void SetProgress(const char *begin=NULL, const char *end=NULL, int percent=0);
void SetLine(unsigned int n, unsigned int l, const char *string);
void SetLineC(unsigned int n, unsigned int l, const char *string);
@@ -60,7 +63,11 @@ class cLcd : public cThread {
char *SummaryText;
unsigned int SummaryTextL;
unsigned int SummaryCurrent;
+ char *host;
+ unsigned int port;
bool connected;
+ bool suspended;
+ unsigned int LCDd_dead;
struct StateData ThreadStateData;
time_t LastProgress;
cMutex CriticalArea;
@@ -70,6 +77,7 @@ class cLcd : public cThread {
const char* Convert(const char *s);
void BeginMutualExclusion();
void EndMutualExclusion();
+ bool Open();
void Copy(char *to, const char *from, unsigned int max);
void SetBuffer(unsigned int n,const char *l1=NULL,const char *l2=NULL,const char *l3=NULL,const char *l4=NULL);
void Split(char *string, char *string1, char *string2);
diff --git a/lcdproc.c b/lcdproc.c
index eefad8d..48811c5 100644
--- a/lcdproc.c
+++ b/lcdproc.c
@@ -15,7 +15,7 @@
#include "lcd.h"
#include "lcdtranstbl.h"
-static const char *VERSION = "0.0.10-jw4";
+static const char *VERSION = "0.0.10-jw5";
static const char *MAINMENUENTRY = NULL;
static const char *DESCRIPTION = trNOOP("LCDproc output");
@@ -26,7 +26,7 @@ bool switched=false;
bool textitem=false;
bool group=false;
char tempstringbuffer[80];
-char *LCDprocHOST=LCDHOST;
+const char *LCDprocHOST=LCDHOST;
unsigned int LCDprocPORT=LCDPORT;
static const char * OutputFunctionText[]= {"Off",
@@ -234,6 +234,8 @@ public:
virtual cOsdMenu *MainMenuAction(void);
virtual cMenuSetupPage *SetupMenu(void);
virtual bool SetupParse(const char *Name, const char *Value);
+ virtual const char **SVDRPHelpPages(void);
+ virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
};
cPluginLcd::cPluginLcd(void)
@@ -287,9 +289,10 @@ bool cPluginLcd::Start(void)
// Start any background activities the plugin shall perform.
lcdFeed = new cLcdFeed;
if ( LCDproc->Connect(LCDprocHOST,LCDprocPORT) ) {
- syslog(LOG_INFO, "connection to LCDd at %s:%d established.",LCDprocHOST,LCDprocPORT);
+ syslog(LOG_INFO, "LCDproc-Plugin started at %s:%d.",LCDprocHOST,LCDprocPORT);
return true;
}
+ syslog(LOG_INFO, "connection to LCDd at %s:%d failed.",LCDprocHOST,LCDprocPORT);
return false;
}
@@ -360,7 +363,8 @@ cMenuSetupLcd::cMenuSetupLcd(void)
Add(new cMenuEditStraItem( tr("SetClientPriority"), &newLcdSetup.SetPrio, 3, PrioBackFunctionText));
Add(new cMenuEditIntItem( tr("NormalClientPriority"),&newLcdSetup.ClientPrioN,0,255));
Add(new cMenuEditIntItem( tr("HighClientPriority"), &newLcdSetup.ClientPrioH,0,255));
- Add(new cMenuEditIntItem( tr("BackLightWait"), &newLcdSetup.BackLightWait,1,99));
+ Add(new cMenuEditIntItem( tr("BackLightWait"), &newLcdSetup.BackLightWait,1,999));
+ Add(new cMenuEditIntItem( tr("PrioWait"), &newLcdSetup.PrioWait,1,999));
Add(new cMenuEditIntItem( tr("OutputNumber"), &newLcdSetup.OutputNumber));
for (int i =0 ; i < newLcdSetup.OutputNumber; i++){
sprintf(str2,"%s %d",tr("OutputNumber"),i);
@@ -384,7 +388,8 @@ void cMenuSetupLcd::Store(void)
SetupStore("SetPrio", LcdSetup.SetPrio = newLcdSetup.SetPrio);
SetupStore("ClientPrioN", LcdSetup.ClientPrioN = newLcdSetup.ClientPrioN);
SetupStore("ClientPrioH", LcdSetup.ClientPrioH = newLcdSetup.ClientPrioH);
- SetupStore("BackLightWait", LcdSetup.ClientPrioH = newLcdSetup.BackLightWait);
+ SetupStore("BackLightWait", LcdSetup.BackLightWait = newLcdSetup.BackLightWait);
+ SetupStore("PrioWait", LcdSetup.PrioWait = newLcdSetup.PrioWait);
SetupStore("OutputNumber",LcdSetup.OutputNumber = newLcdSetup.OutputNumber);
for (int i =0 ; i < newLcdSetup.OutputNumber; i++){
sprintf(str2,"OutputNumber %d",i);
@@ -416,6 +421,7 @@ bool cPluginLcd::SetupParse(const char *Name, const char *Value)
else if (!strcasecmp(Name, "ClientPrioN")) LcdSetup.ClientPrioN = atoi(Value);
else if (!strcasecmp(Name, "ClientPrioH")) LcdSetup.ClientPrioH = atoi(Value);
else if (!strcasecmp(Name, "BackLightWait")) LcdSetup.BackLightWait = atoi(Value);
+ else if (!strcasecmp(Name, "PrioWait")) LcdSetup.PrioWait = atoi(Value);
else if (!strcasecmp(Name, "OutputNumber")) LcdSetup.OutputNumber= atoi(Value);
else if (!strcasecmp(Name, "OutputNumber 0")) LcdSetup.OutputFunction[0] = atoi(Value);
else if (!strcasecmp(Name, "OutputNumber 1")) LcdSetup.OutputFunction[1] = atoi(Value);
@@ -434,4 +440,38 @@ bool cPluginLcd::SetupParse(const char *Name, const char *Value)
return true;
}
+const char **cPluginLcd::SVDRPHelpPages(void)
+{
+ // Return help text for SVDRP commands this plugin implements
+ static const char *HelpPages[] = {
+ "ON\n"
+ " Connect to the LCDd socket.",
+ "OFF\n"
+ " Disconnect from the LCDd socket.",
+ NULL
+ };
+ return HelpPages;
+}
+
+cString cPluginLcd::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
+{
+ // Process SVDRP commands this plugin implements
+ if(!strcasecmp(Command, "ON")) {
+
+ if(LCDproc->Resume())
+ return "connection to LCDd resumed";
+ else
+ return "connection to LCDd not suspended";
+
+ } else if(!strcasecmp(Command, "OFF")) {
+ if(LCDproc->Suspend())
+ return "connection to LCDd suspended";
+ else
+ return "connection to LCDd already suspended";
+
+ } else { ReplyCode=501; return "Missing or unkown args"; }
+
+ return NULL;
+}
+
VDRPLUGINCREATOR(cPluginLcd); // Don't touch this!
diff --git a/lcdtranstbl.h b/lcdtranstbl.h
index c25961d..d53d93a 100644
--- a/lcdtranstbl.h
+++ b/lcdtranstbl.h
@@ -173,101 +173,101 @@ newline,tab and friends are mapped to ' '
/* 158 ( '~^') */ (unsigned char) 158,
/* 159 ( '~_') */ (unsigned char) 159,
/* 160 ( '| ') */ (unsigned char) 160,
-/* 161 ( '' ) */ (unsigned char) 161,
-/* 162 ( '' ) */ (unsigned char) 162,
-/* 163 ( '' ) */ (unsigned char) 163,
-/* 164 ( '' ) */ (unsigned char) 164,
-/* 165 ( '' ) */ (unsigned char) 165,
-/* 166 ( '' ) */ (unsigned char) 166,
-/* 167 ( '' ) */ (unsigned char) 167,
-/* 168 ( '' ) */ (unsigned char) 168,
-/* 169 ( '' ) */ (unsigned char) 169,
-/* 170 ( '' ) */ (unsigned char) 170,
-/* 171 ( '' ) */ (unsigned char) 171,
-/* 172 ( '' ) */ (unsigned char) 172,
-/* 173 ( '' ) */ (unsigned char) 173,
-/* 174 ( '' ) */ (unsigned char) 174,
-/* 175 ( '' ) */ (unsigned char) 175,
-/* 176 ( '' ) */ (unsigned char) 176,
-/* 177 ( '' ) */ (unsigned char) 177,
-/* 178 ( '' ) */ (unsigned char) 178,
-/* 179 ( '' ) */ (unsigned char) 179,
-/* 180 ( '' ) */ (unsigned char) 180,
-/* 181 ( '' ) */ (unsigned char) 181,
-/* 182 ( '' ) */ (unsigned char) 182,
-/* 183 ( '' ) */ (unsigned char) 183,
-/* 184 ( '' ) */ (unsigned char) 184,
-/* 185 ( '' ) */ (unsigned char) 185,
-/* 186 ( '' ) */ (unsigned char) 186,
-/* 187 ( '' ) */ (unsigned char) 187,
-/* 188 ( '' ) */ (unsigned char) 188,
-/* 189 ( '' ) */ (unsigned char) 189,
-/* 190 ( '' ) */ (unsigned char) 190,
-/* 191 ( '' ) */ (unsigned char) 191,
-/* 192 ( '' ) */ (unsigned char) 192,
-/* 193 ( '' ) */ (unsigned char) 193,
-/* 194 ( '' ) */ (unsigned char) 194,
-/* 195 ( '' ) */ (unsigned char) 195,
-/* 196 ( '' ) */ (unsigned char) 196,
-/* 197 ( '' ) */ (unsigned char) 197,
-/* 198 ( '' ) */ (unsigned char) 198,
-/* 199 ( '' ) */ (unsigned char) 199,
-/* 200 ( '' ) */ (unsigned char) 200,
-/* 201 ( '' ) */ (unsigned char) 201,
-/* 202 ( '' ) */ (unsigned char) 202,
-/* 203 ( '' ) */ (unsigned char) 203,
-/* 204 ( '' ) */ (unsigned char) 204,
-/* 205 ( '' ) */ (unsigned char) 205,
-/* 206 ( '' ) */ (unsigned char) 206,
-/* 207 ( '' ) */ (unsigned char) 207,
-/* 208 ( '' ) */ (unsigned char) 208,
-/* 209 ( '' ) */ (unsigned char) 209,
-/* 210 ( '' ) */ (unsigned char) 210,
-/* 211 ( '' ) */ (unsigned char) 211,
-/* 212 ( '' ) */ (unsigned char) 212,
-/* 213 ( '' ) */ (unsigned char) 213,
-/* 214 ( '' ) */ (unsigned char) 214,
-/* 215 ( '' ) */ (unsigned char) 215,
-/* 216 ( '' ) */ (unsigned char) 216,
-/* 217 ( '' ) */ (unsigned char) 217,
-/* 218 ( '' ) */ (unsigned char) 218,
-/* 219 ( '' ) */ (unsigned char) 219,
-/* 220 ( '' ) */ (unsigned char) 220,
-/* 221 ( '' ) */ (unsigned char) 221,
-/* 222 ( '' ) */ (unsigned char) 222,
-/* 223 ( '' ) */ (unsigned char) 223,
-/* 224 ( '' ) */ (unsigned char) 224,
-/* 225 ( '' ) */ (unsigned char) 225,
-/* 226 ( '' ) */ (unsigned char) 226,
-/* 227 ( '' ) */ (unsigned char) 227,
-/* 228 ( '' ) */ (unsigned char) 228,
-/* 229 ( '' ) */ (unsigned char) 229,
-/* 230 ( '' ) */ (unsigned char) 230,
-/* 231 ( '' ) */ (unsigned char) 231,
-/* 232 ( '' ) */ (unsigned char) 232,
-/* 233 ( '' ) */ (unsigned char) 233,
-/* 234 ( '' ) */ (unsigned char) 234,
-/* 235 ( '' ) */ (unsigned char) 235,
-/* 236 ( '' ) */ (unsigned char) 236,
-/* 237 ( '' ) */ (unsigned char) 237,
-/* 238 ( '' ) */ (unsigned char) 238,
-/* 239 ( '' ) */ (unsigned char) 239,
-/* 240 ( '' ) */ (unsigned char) 240,
-/* 241 ( '' ) */ (unsigned char) 241,
-/* 242 ( '' ) */ (unsigned char) 242,
-/* 243 ( '' ) */ (unsigned char) 243,
-/* 244 ( '' ) */ (unsigned char) 244,
-/* 245 ( '' ) */ (unsigned char) 245,
-/* 246 ( '' ) */ (unsigned char) 246,
-/* 247 ( '' ) */ (unsigned char) 247,
-/* 248 ( '' ) */ (unsigned char) 248,
-/* 249 ( '' ) */ (unsigned char) 249,
-/* 250 ( '' ) */ (unsigned char) 250,
-/* 251 ( '' ) */ (unsigned char) 251,
-/* 252 ( '' ) */ (unsigned char) 252,
-/* 253 ( '' ) */ (unsigned char) 253,
-/* 254 ( '' ) */ (unsigned char) 254,
-/* 255 ( '' ) */ (unsigned char) 255},
+/* 161 ( '�' ) */ (unsigned char) 161,
+/* 162 ( '�' ) */ (unsigned char) 162,
+/* 163 ( '�' ) */ (unsigned char) 163,
+/* 164 ( '�' ) */ (unsigned char) 164,
+/* 165 ( '�' ) */ (unsigned char) 165,
+/* 166 ( '�' ) */ (unsigned char) 166,
+/* 167 ( '�' ) */ (unsigned char) 167,
+/* 168 ( '�' ) */ (unsigned char) 168,
+/* 169 ( '�' ) */ (unsigned char) 169,
+/* 170 ( '�' ) */ (unsigned char) 170,
+/* 171 ( '�' ) */ (unsigned char) 171,
+/* 172 ( '�' ) */ (unsigned char) 172,
+/* 173 ( '�' ) */ (unsigned char) 173,
+/* 174 ( '�' ) */ (unsigned char) 174,
+/* 175 ( '�' ) */ (unsigned char) 175,
+/* 176 ( '�' ) */ (unsigned char) 176,
+/* 177 ( '�' ) */ (unsigned char) 177,
+/* 178 ( '�' ) */ (unsigned char) 178,
+/* 179 ( '�' ) */ (unsigned char) 179,
+/* 180 ( '�' ) */ (unsigned char) 180,
+/* 181 ( '�' ) */ (unsigned char) 181,
+/* 182 ( '�' ) */ (unsigned char) 182,
+/* 183 ( '�' ) */ (unsigned char) 183,
+/* 184 ( '�' ) */ (unsigned char) 184,
+/* 185 ( '�' ) */ (unsigned char) 185,
+/* 186 ( '�' ) */ (unsigned char) 186,
+/* 187 ( '�' ) */ (unsigned char) 187,
+/* 188 ( '�' ) */ (unsigned char) 188,
+/* 189 ( '�' ) */ (unsigned char) 189,
+/* 190 ( '�' ) */ (unsigned char) 190,
+/* 191 ( '�' ) */ (unsigned char) 191,
+/* 192 ( '�' ) */ (unsigned char) 192,
+/* 193 ( '�' ) */ (unsigned char) 193,
+/* 194 ( '�' ) */ (unsigned char) 194,
+/* 195 ( '�' ) */ (unsigned char) 195,
+/* 196 ( '�' ) */ (unsigned char) 196,
+/* 197 ( '�' ) */ (unsigned char) 197,
+/* 198 ( '�' ) */ (unsigned char) 198,
+/* 199 ( '�' ) */ (unsigned char) 199,
+/* 200 ( '�' ) */ (unsigned char) 200,
+/* 201 ( '�' ) */ (unsigned char) 201,
+/* 202 ( '�' ) */ (unsigned char) 202,
+/* 203 ( '�' ) */ (unsigned char) 203,
+/* 204 ( '�' ) */ (unsigned char) 204,
+/* 205 ( '�' ) */ (unsigned char) 205,
+/* 206 ( '�' ) */ (unsigned char) 206,
+/* 207 ( '�' ) */ (unsigned char) 207,
+/* 208 ( '�' ) */ (unsigned char) 208,
+/* 209 ( '�' ) */ (unsigned char) 209,
+/* 210 ( '�' ) */ (unsigned char) 210,
+/* 211 ( '�' ) */ (unsigned char) 211,
+/* 212 ( '�' ) */ (unsigned char) 212,
+/* 213 ( '�' ) */ (unsigned char) 213,
+/* 214 ( '�' ) */ (unsigned char) 214,
+/* 215 ( '�' ) */ (unsigned char) 215,
+/* 216 ( '�' ) */ (unsigned char) 216,
+/* 217 ( '�' ) */ (unsigned char) 217,
+/* 218 ( '�' ) */ (unsigned char) 218,
+/* 219 ( '�' ) */ (unsigned char) 219,
+/* 220 ( '�' ) */ (unsigned char) 220,
+/* 221 ( '�' ) */ (unsigned char) 221,
+/* 222 ( '�' ) */ (unsigned char) 222,
+/* 223 ( '�' ) */ (unsigned char) 223,
+/* 224 ( '�' ) */ (unsigned char) 224,
+/* 225 ( '�' ) */ (unsigned char) 225,
+/* 226 ( '�' ) */ (unsigned char) 226,
+/* 227 ( '�' ) */ (unsigned char) 227,
+/* 228 ( '�' ) */ (unsigned char) 228,
+/* 229 ( '�' ) */ (unsigned char) 229,
+/* 230 ( '�' ) */ (unsigned char) 230,
+/* 231 ( '�' ) */ (unsigned char) 231,
+/* 232 ( '�' ) */ (unsigned char) 232,
+/* 233 ( '�' ) */ (unsigned char) 233,
+/* 234 ( '�' ) */ (unsigned char) 234,
+/* 235 ( '�' ) */ (unsigned char) 235,
+/* 236 ( '�' ) */ (unsigned char) 236,
+/* 237 ( '�' ) */ (unsigned char) 237,
+/* 238 ( '�' ) */ (unsigned char) 238,
+/* 239 ( '�' ) */ (unsigned char) 239,
+/* 240 ( '�' ) */ (unsigned char) 240,
+/* 241 ( '�' ) */ (unsigned char) 241,
+/* 242 ( '�' ) */ (unsigned char) 242,
+/* 243 ( '�' ) */ (unsigned char) 243,
+/* 244 ( '�' ) */ (unsigned char) 244,
+/* 245 ( '�' ) */ (unsigned char) 245,
+/* 246 ( '�' ) */ (unsigned char) 246,
+/* 247 ( '�' ) */ (unsigned char) 247,
+/* 248 ( '�' ) */ (unsigned char) 248,
+/* 249 ( '�' ) */ (unsigned char) 249,
+/* 250 ( '�' ) */ (unsigned char) 250,
+/* 251 ( '�' ) */ (unsigned char) 251,
+/* 252 ( '�' ) */ (unsigned char) 252,
+/* 253 ( '�' ) */ (unsigned char) 253,
+/* 254 ( '�' ) */ (unsigned char) 254,
+/* 255 ( '�' ) */ (unsigned char) 255},
/*
lcdtranstbl-hd44780.h
@@ -438,101 +438,101 @@ newline,tab and friends are mapped to ' '
/* 158 ( '~^') */ (unsigned char) 158,
/* 159 ( '~_') */ (unsigned char) 159,
/* 160 ( '| ') */ (unsigned char) 160,
-/* 161 ( '' ) */ (unsigned char) 161,
-/* 162 ( '' ) */ (unsigned char) 162,
-/* 163 ( '' ) */ (unsigned char) 163,
-/* 164 ( '' ) */ (unsigned char) 164,
-/* 165 ( '' ) */ (unsigned char) 92,
-/* 166 ( '' ) */ (unsigned char) 166,
-/* 167 ( '' ) */ (unsigned char) 167,
-/* 168 ( '' ) */ (unsigned char) 168,
-/* 169 ( '' ) */ (unsigned char) 67,
-/* 170 ( '' ) */ (unsigned char) 170,
-/* 171 ( '' ) */ (unsigned char) 171,
-/* 172 ( '' ) */ (unsigned char) 172,
-/* 173 ( '' ) */ (unsigned char) 173,
-/* 174 ( '' ) */ (unsigned char) 174,
-/* 175 ( '' ) */ (unsigned char) 175,
-/* 176 ( '' ) */ (unsigned char) 223,
-/* 177 ( '' ) */ (unsigned char) 177,
-/* 178 ( '' ) */ (unsigned char) 50,
-/* 179 ( '' ) */ (unsigned char) 51,
-/* 180 ( '' ) */ (unsigned char) 180,
-/* 181 ( '' ) */ (unsigned char) 228,
-/* 182 ( '' ) */ (unsigned char) 182,
-/* 183 ( '' ) */ (unsigned char) 183,
-/* 184 ( '' ) */ (unsigned char) 184,
-/* 185 ( '' ) */ (unsigned char) 185,
-/* 186 ( '' ) */ (unsigned char) 223,
-/* 187 ( '' ) */ (unsigned char) 187,
-/* 188 ( '' ) */ (unsigned char) 188,
-/* 189 ( '' ) */ (unsigned char) 189,
-/* 190 ( '' ) */ (unsigned char) 190,
-/* 191 ( '' ) */ (unsigned char) 191,
-/* 192 ( '' ) */ (unsigned char) 65,
-/* 193 ( '' ) */ (unsigned char) 65,
-/* 194 ( '' ) */ (unsigned char) 65,
-/* 195 ( '' ) */ (unsigned char) 65,
-/* 196 ( '' ) */ (unsigned char) 225,
-/* 197 ( '' ) */ (unsigned char) 65,
-/* 198 ( '' ) */ (unsigned char) 225,
-/* 199 ( '' ) */ (unsigned char) 67,
-/* 200 ( '' ) */ (unsigned char) 69,
-/* 201 ( '' ) */ (unsigned char) 69,
-/* 202 ( '' ) */ (unsigned char) 69,
-/* 203 ( '' ) */ (unsigned char) 69,
-/* 204 ( '' ) */ (unsigned char) 73,
-/* 205 ( '' ) */ (unsigned char) 73,
-/* 206 ( '' ) */ (unsigned char) 73,
-/* 207 ( '' ) */ (unsigned char) 73,
-/* 208 ( '' ) */ (unsigned char) 68,
-/* 209 ( '' ) */ (unsigned char) 78,
-/* 210 ( '' ) */ (unsigned char) 79,
-/* 211 ( '' ) */ (unsigned char) 79,
-/* 212 ( '' ) */ (unsigned char) 79,
-/* 213 ( '' ) */ (unsigned char) 79,
-/* 214 ( '' ) */ (unsigned char) 239,
-/* 215 ( '' ) */ (unsigned char) 88,
-/* 216 ( '' ) */ (unsigned char) 48,
-/* 217 ( '' ) */ (unsigned char) 85,
-/* 218 ( '' ) */ (unsigned char) 85,
-/* 219 ( '' ) */ (unsigned char) 85,
-/* 220 ( '' ) */ (unsigned char) 245,
-/* 221 ( '' ) */ (unsigned char) 89,
-/* 222 ( '' ) */ (unsigned char) 222,
-/* 223 ( '' ) */ (unsigned char) 226,
-/* 224 ( '' ) */ (unsigned char) 97,
-/* 225 ( '' ) */ (unsigned char) 97,
-/* 226 ( '' ) */ (unsigned char) 97,
-/* 227 ( '' ) */ (unsigned char) 97,
-/* 228 ( '' ) */ (unsigned char) 225,
-/* 229 ( '' ) */ (unsigned char) 97,
-/* 230 ( '' ) */ (unsigned char) 230,
-/* 231 ( '' ) */ (unsigned char) 99,
-/* 232 ( '' ) */ (unsigned char) 101,
-/* 233 ( '' ) */ (unsigned char) 101,
-/* 234 ( '' ) */ (unsigned char) 101,
-/* 235 ( '' ) */ (unsigned char) 101,
-/* 236 ( '' ) */ (unsigned char) 105,
-/* 237 ( '' ) */ (unsigned char) 105,
-/* 238 ( '' ) */ (unsigned char) 105,
-/* 239 ( '' ) */ (unsigned char) 105,
-/* 240 ( '' ) */ (unsigned char) 100,
-/* 241 ( '' ) */ (unsigned char) 110,
-/* 242 ( '' ) */ (unsigned char) 111,
-/* 243 ( '' ) */ (unsigned char) 111,
-/* 244 ( '' ) */ (unsigned char) 111,
-/* 245 ( '' ) */ (unsigned char) 111,
-/* 246 ( '' ) */ (unsigned char) 239,
-/* 247 ( '' ) */ (unsigned char) 253,
-/* 248 ( '' ) */ (unsigned char) 248,
-/* 249 ( '' ) */ (unsigned char) 117,
-/* 250 ( '' ) */ (unsigned char) 117,
-/* 251 ( '' ) */ (unsigned char) 117,
-/* 252 ( '' ) */ (unsigned char) 245,
-/* 253 ( '' ) */ (unsigned char) 121,
-/* 254 ( '' ) */ (unsigned char) 254,
-/* 255 ( '' ) */ (unsigned char) 121},
+/* 161 ( '�' ) */ (unsigned char) 161,
+/* 162 ( '�' ) */ (unsigned char) 162,
+/* 163 ( '�' ) */ (unsigned char) 163,
+/* 164 ( '�' ) */ (unsigned char) 164,
+/* 165 ( '�' ) */ (unsigned char) 92,
+/* 166 ( '�' ) */ (unsigned char) 166,
+/* 167 ( '�' ) */ (unsigned char) 167,
+/* 168 ( '�' ) */ (unsigned char) 168,
+/* 169 ( '�' ) */ (unsigned char) 67,
+/* 170 ( '�' ) */ (unsigned char) 170,
+/* 171 ( '�' ) */ (unsigned char) 171,
+/* 172 ( '�' ) */ (unsigned char) 172,
+/* 173 ( '�' ) */ (unsigned char) 173,
+/* 174 ( '�' ) */ (unsigned char) 174,
+/* 175 ( '�' ) */ (unsigned char) 175,
+/* 176 ( '�' ) */ (unsigned char) 223,
+/* 177 ( '�' ) */ (unsigned char) 177,
+/* 178 ( '�' ) */ (unsigned char) 50,
+/* 179 ( '�' ) */ (unsigned char) 51,
+/* 180 ( '�' ) */ (unsigned char) 180,
+/* 181 ( '�' ) */ (unsigned char) 228,
+/* 182 ( '�' ) */ (unsigned char) 182,
+/* 183 ( '�' ) */ (unsigned char) 183,
+/* 184 ( '�' ) */ (unsigned char) 184,
+/* 185 ( '�' ) */ (unsigned char) 185,
+/* 186 ( '�' ) */ (unsigned char) 223,
+/* 187 ( '�' ) */ (unsigned char) 187,
+/* 188 ( '�' ) */ (unsigned char) 188,
+/* 189 ( '�' ) */ (unsigned char) 189,
+/* 190 ( '�' ) */ (unsigned char) 190,
+/* 191 ( '�' ) */ (unsigned char) 191,
+/* 192 ( \'А\' ) */ (unsigned char) 65,
+/* 193 ( \'Б\' ) */ (unsigned char) 160,
+/* 194 ( \'В\' ) */ (unsigned char) 66,
+/* 195 ( \'Г\' ) */ (unsigned char) 161,
+/* 196 ( \'Д\' ) */ (unsigned char) 224,
+/* 197 ( \'Е\' ) */ (unsigned char) 69,
+/* 198 ( \'Ж\' ) */ (unsigned char) 163,
+/* 199 ( \'З\' ) */ (unsigned char) 164,
+/* 200 ( \'И\' ) */ (unsigned char) 165,
+/* 201 ( \'Й\' ) */ (unsigned char) 166,
+/* 202 ( \'К\' ) */ (unsigned char) 75,
+/* 203 ( \'Л\' ) */ (unsigned char) 167,
+/* 204 ( \'М\' ) */ (unsigned char) 77,
+/* 205 ( \'Н\' ) */ (unsigned char) 72,
+/* 206 ( \'О\' ) */ (unsigned char) 79,
+/* 207 ( \'П\' ) */ (unsigned char) 168,
+/* 208 ( \'Р\' ) */ (unsigned char) 80,
+/* 209 ( \'С\' ) */ (unsigned char) 67,
+/* 210 ( \'Т\' ) */ (unsigned char) 84,
+/* 211 ( \'У\' ) */ (unsigned char) 169,
+/* 212 ( \'Ф\' ) */ (unsigned char) 170,
+/* 213 ( \'Х\' ) */ (unsigned char) 88,
+/* 214 ( \'Ц\' ) */ (unsigned char) 225,
+/* 215 ( \'Ч\' ) */ (unsigned char) 171,
+/* 216 ( \'Ш\' ) */ (unsigned char) 172,
+/* 217 ( \'Щ\' ) */ (unsigned char) 226,
+/* 218 ( \'Ъ\' ) */ (unsigned char) 173,
+/* 219 ( \'Ы\' ) */ (unsigned char) 174,
+/* 220 ( \'Ь\' ) */ (unsigned char) 173,
+/* 221 ( \'Э\' ) */ (unsigned char) 175,
+/* 222 ( \'Ю\' ) */ (unsigned char) 176,
+/* 223 ( \'Я\' ) */ (unsigned char) 177,
+/* 224 ( \'а\' ) */ (unsigned char) 97,
+/* 225 ( \'б\' ) */ (unsigned char) 178,
+/* 226 ( \'в\' ) */ (unsigned char) 179,
+/* 227 ( \'г\' ) */ (unsigned char) 180,
+/* 228 ( \'д\' ) */ (unsigned char) 227,
+/* 229 ( \'е\' ) */ (unsigned char) 101,
+/* 230 ( \'ж\' ) */ (unsigned char) 182,
+/* 231 ( \'з\' ) */ (unsigned char) 183,
+/* 232 ( \'и\' ) */ (unsigned char) 184,
+/* 233 ( \'й\' ) */ (unsigned char) 185,
+/* 234 ( \'к\' ) */ (unsigned char) 186,
+/* 235 ( \'л\' ) */ (unsigned char) 187,
+/* 236 ( \'м\' ) */ (unsigned char) 188,
+/* 237 ( \'н\' ) */ (unsigned char) 189,
+/* 238 ( \'о\' ) */ (unsigned char) 111,
+/* 239 ( \'п\' ) */ (unsigned char) 190,
+/* 240 ( \'р\' ) */ (unsigned char) 112,
+/* 241 ( \'с\' ) */ (unsigned char) 99,
+/* 242 ( \'т\' ) */ (unsigned char) 191,
+/* 243 ( \'у\' ) */ (unsigned char) 121,
+/* 244 ( \'ф\' ) */ (unsigned char) 228,
+/* 245 ( \'х\' ) */ (unsigned char) 120,
+/* 246 ( \'ц\' ) */ (unsigned char) 229,
+/* 247 ( \'ч\' ) */ (unsigned char) 192,
+/* 248 ( \'ш\' ) */ (unsigned char) 193,
+/* 249 ( \'щ\' ) */ (unsigned char) 230,
+/* 250 ( \'ъ\' ) */ (unsigned char) 194,
+/* 251 ( \'ы\' ) */ (unsigned char) 195,
+/* 252 ( \'ь\' ) */ (unsigned char) 196,
+/* 253 ( \'э\' ) */ (unsigned char) 197,
+/* 254 ( \'ю\' ) */ (unsigned char) 198,
+/* 255 ( \'я\' ) */ (unsigned char) 199},
/*
lcdtranstbl-CFontz.h
@@ -703,101 +703,101 @@ newline,tab and friends are mapped to ' '
/* 158 ( '~^') */ (unsigned char) 158,
/* 159 ( '~_') */ (unsigned char) 159,
/* 160 ( '| ') */ (unsigned char) 160,
-/* 161 ( '' ) */ (unsigned char) 64,
-/* 162 ( '' ) */ (unsigned char) 177,
-/* 163 ( '' ) */ (unsigned char) 161,
-/* 164 ( '' ) */ (unsigned char) 36,
-/* 165 ( '' ) */ (unsigned char) 163,
-/* 166 ( '' ) */ (unsigned char) 254,
-/* 167 ( '' ) */ (unsigned char) 95,
-/* 168 ( '' ) */ (unsigned char) 221,
-/* 169 ( '' ) */ (unsigned char) 171,
-/* 170 ( '' ) */ (unsigned char) 170,
-/* 171 ( '' ) */ (unsigned char) 171,
-/* 172 ( '' ) */ (unsigned char) 172,
-/* 173 ( '' ) */ (unsigned char) 173,
-/* 174 ( '' ) */ (unsigned char) 174,
-/* 175 ( '' ) */ (unsigned char) 175,
-/* 176 ( '' ) */ (unsigned char) 207,
-/* 177 ( '' ) */ (unsigned char) 140,
-/* 178 ( '' ) */ (unsigned char) 130,
-/* 179 ( '' ) */ (unsigned char) 131,
-/* 180 ( '' ) */ (unsigned char) 39,
-/* 181 ( '' ) */ (unsigned char) 143,
-/* 182 ( '' ) */ (unsigned char) 182,
-/* 183 ( '' ) */ (unsigned char) 183,
-/* 184 ( '' ) */ (unsigned char) 184,
-/* 185 ( '' ) */ (unsigned char) 129,
-/* 186 ( '' ) */ (unsigned char) 221,
-/* 187 ( '' ) */ (unsigned char) 187,
-/* 188 ( '' ) */ (unsigned char) 139,
-/* 189 ( '' ) */ (unsigned char) 138,
-/* 190 ( '' ) */ (unsigned char) 190,
-/* 191 ( '' ) */ (unsigned char) 96,
-/* 192 ( '' ) */ (unsigned char) 65,
-/* 193 ( '' ) */ (unsigned char) 226,
-/* 194 ( '' ) */ (unsigned char) 65,
-/* 195 ( '' ) */ (unsigned char) 65,
-/* 196 ( '' ) */ (unsigned char) 91,
-/* 197 ( '' ) */ (unsigned char) 174,
-/* 198 ( '' ) */ (unsigned char) 188,
-/* 199 ( '' ) */ (unsigned char) 169,
-/* 200 ( '' ) */ (unsigned char) 197,
-/* 201 ( '' ) */ (unsigned char) 191,
-/* 202 ( '' ) */ (unsigned char) 198,
-/* 203 ( '' ) */ (unsigned char) 69,
-/* 204 ( '' ) */ (unsigned char) 73,
-/* 205 ( '' ) */ (unsigned char) 227,
-/* 206 ( '' ) */ (unsigned char) 73,
-/* 207 ( '' ) */ (unsigned char) 73,
-/* 208 ( '' ) */ (unsigned char) 68,
-/* 209 ( '' ) */ (unsigned char) 43,
-/* 210 ( '' ) */ (unsigned char) 168,
-/* 211 ( '' ) */ (unsigned char) 228,
-/* 212 ( '' ) */ (unsigned char) 236,
-/* 213 ( '' ) */ (unsigned char) 79,
-/* 214 ( '' ) */ (unsigned char) 92,
-/* 215 ( '' ) */ (unsigned char) 120,
-/* 216 ( '' ) */ (unsigned char) 171,
-/* 217 ( '' ) */ (unsigned char) 85,
-/* 218 ( '' ) */ (unsigned char) 229,
-/* 219 ( '' ) */ (unsigned char) 85,
-/* 220 ( '' ) */ (unsigned char) 94,
-/* 221 ( '' ) */ (unsigned char) 250,
-/* 222 ( '' ) */ (unsigned char) 178,
-/* 223 ( '' ) */ (unsigned char) 190,
-/* 224 ( '' ) */ (unsigned char) 127,
-/* 225 ( '' ) */ (unsigned char) 231,
-/* 226 ( '' ) */ (unsigned char) 97,
-/* 227 ( '' ) */ (unsigned char) 97,
-/* 228 ( '' ) */ (unsigned char) 123,
-/* 229 ( '' ) */ (unsigned char) 175,
-/* 230 ( '' ) */ (unsigned char) 189,
-/* 231 ( '' ) */ (unsigned char) 200,
-/* 232 ( '' ) */ (unsigned char) 164,
-/* 233 ( '' ) */ (unsigned char) 165,
-/* 234 ( '' ) */ (unsigned char) 199,
-/* 235 ( '' ) */ (unsigned char) 101,
-/* 236 ( '' ) */ (unsigned char) 167,
-/* 237 ( '' ) */ (unsigned char) 232,
-/* 238 ( '' ) */ (unsigned char) 105,
-/* 239 ( '' ) */ (unsigned char) 105,
-/* 240 ( '' ) */ (unsigned char) 158,
-/* 241 ( '' ) */ (unsigned char) 125,
-/* 242 ( '' ) */ (unsigned char) 168,
-/* 243 ( '' ) */ (unsigned char) 228,
-/* 244 ( '' ) */ (unsigned char) 237,
-/* 245 ( '' ) */ (unsigned char) 237,
-/* 246 ( '' ) */ (unsigned char) 124,
-/* 247 ( '' ) */ (unsigned char) 47,
-/* 248 ( '' ) */ (unsigned char) 172,
-/* 249 ( '' ) */ (unsigned char) 166,
-/* 250 ( '' ) */ (unsigned char) 234,
-/* 251 ( '' ) */ (unsigned char) 239,
-/* 252 ( '' ) */ (unsigned char) 126,
-/* 253 ( '' ) */ (unsigned char) 235,
-/* 254 ( '' ) */ (unsigned char) 178,
-/* 255 ( '' ) */ (unsigned char) 183},
+/* 161 ( '�' ) */ (unsigned char) 64,
+/* 162 ( '�' ) */ (unsigned char) 177,
+/* 163 ( '�' ) */ (unsigned char) 161,
+/* 164 ( '�' ) */ (unsigned char) 36,
+/* 165 ( '�' ) */ (unsigned char) 163,
+/* 166 ( '�' ) */ (unsigned char) 254,
+/* 167 ( '�' ) */ (unsigned char) 95,
+/* 168 ( '�' ) */ (unsigned char) 221,
+/* 169 ( '�' ) */ (unsigned char) 171,
+/* 170 ( '�' ) */ (unsigned char) 170,
+/* 171 ( '�' ) */ (unsigned char) 171,
+/* 172 ( '�' ) */ (unsigned char) 172,
+/* 173 ( '�' ) */ (unsigned char) 173,
+/* 174 ( '�' ) */ (unsigned char) 174,
+/* 175 ( '�' ) */ (unsigned char) 175,
+/* 176 ( '�' ) */ (unsigned char) 207,
+/* 177 ( '�' ) */ (unsigned char) 140,
+/* 178 ( '�' ) */ (unsigned char) 130,
+/* 179 ( '�' ) */ (unsigned char) 131,
+/* 180 ( '�' ) */ (unsigned char) 39,
+/* 181 ( '�' ) */ (unsigned char) 143,
+/* 182 ( '�' ) */ (unsigned char) 182,
+/* 183 ( '�' ) */ (unsigned char) 183,
+/* 184 ( '�' ) */ (unsigned char) 184,
+/* 185 ( '�' ) */ (unsigned char) 129,
+/* 186 ( '�' ) */ (unsigned char) 221,
+/* 187 ( '�' ) */ (unsigned char) 187,
+/* 188 ( '�' ) */ (unsigned char) 139,
+/* 189 ( '�' ) */ (unsigned char) 138,
+/* 190 ( '�' ) */ (unsigned char) 190,
+/* 191 ( '�' ) */ (unsigned char) 96,
+/* 192 ( '�' ) */ (unsigned char) 65,
+/* 193 ( '�' ) */ (unsigned char) 226,
+/* 194 ( '�' ) */ (unsigned char) 65,
+/* 195 ( '�' ) */ (unsigned char) 65,
+/* 196 ( '�' ) */ (unsigned char) 91,
+/* 197 ( '�' ) */ (unsigned char) 174,
+/* 198 ( '�' ) */ (unsigned char) 188,
+/* 199 ( '�' ) */ (unsigned char) 169,
+/* 200 ( '�' ) */ (unsigned char) 197,
+/* 201 ( '�' ) */ (unsigned char) 191,
+/* 202 ( '�' ) */ (unsigned char) 198,
+/* 203 ( '�' ) */ (unsigned char) 69,
+/* 204 ( '�' ) */ (unsigned char) 73,
+/* 205 ( '�' ) */ (unsigned char) 227,
+/* 206 ( '�' ) */ (unsigned char) 73,
+/* 207 ( '�' ) */ (unsigned char) 73,
+/* 208 ( '�' ) */ (unsigned char) 68,
+/* 209 ( '�' ) */ (unsigned char) 43,
+/* 210 ( '�' ) */ (unsigned char) 168,
+/* 211 ( '�' ) */ (unsigned char) 228,
+/* 212 ( '�' ) */ (unsigned char) 236,
+/* 213 ( '�' ) */ (unsigned char) 79,
+/* 214 ( '�' ) */ (unsigned char) 92,
+/* 215 ( '�' ) */ (unsigned char) 120,
+/* 216 ( '�' ) */ (unsigned char) 171,
+/* 217 ( '�' ) */ (unsigned char) 85,
+/* 218 ( '�' ) */ (unsigned char) 229,
+/* 219 ( '�' ) */ (unsigned char) 85,
+/* 220 ( '�' ) */ (unsigned char) 94,
+/* 221 ( '�' ) */ (unsigned char) 250,
+/* 222 ( '�' ) */ (unsigned char) 178,
+/* 223 ( '�' ) */ (unsigned char) 190,
+/* 224 ( '�' ) */ (unsigned char) 127,
+/* 225 ( '�' ) */ (unsigned char) 231,
+/* 226 ( '�' ) */ (unsigned char) 97,
+/* 227 ( '�' ) */ (unsigned char) 97,
+/* 228 ( '�' ) */ (unsigned char) 123,
+/* 229 ( '�' ) */ (unsigned char) 175,
+/* 230 ( '�' ) */ (unsigned char) 189,
+/* 231 ( '�' ) */ (unsigned char) 200,
+/* 232 ( '�' ) */ (unsigned char) 164,
+/* 233 ( '�' ) */ (unsigned char) 165,
+/* 234 ( '�' ) */ (unsigned char) 199,
+/* 235 ( '�' ) */ (unsigned char) 101,
+/* 236 ( '�' ) */ (unsigned char) 167,
+/* 237 ( '�' ) */ (unsigned char) 232,
+/* 238 ( '�' ) */ (unsigned char) 105,
+/* 239 ( '�' ) */ (unsigned char) 105,
+/* 240 ( '�' ) */ (unsigned char) 158,
+/* 241 ( '�' ) */ (unsigned char) 125,
+/* 242 ( '�' ) */ (unsigned char) 168,
+/* 243 ( '�' ) */ (unsigned char) 228,
+/* 244 ( '�' ) */ (unsigned char) 237,
+/* 245 ( '�' ) */ (unsigned char) 237,
+/* 246 ( '�' ) */ (unsigned char) 124,
+/* 247 ( '�' ) */ (unsigned char) 47,
+/* 248 ( '�' ) */ (unsigned char) 172,
+/* 249 ( '�' ) */ (unsigned char) 166,
+/* 250 ( '�' ) */ (unsigned char) 234,
+/* 251 ( '�' ) */ (unsigned char) 239,
+/* 252 ( '�' ) */ (unsigned char) 126,
+/* 253 ( '�' ) */ (unsigned char) 235,
+/* 254 ( '�' ) */ (unsigned char) 178,
+/* 255 ( '�' ) */ (unsigned char) 183},
/*
lcdtranstbl-SGX120L.h
@@ -968,101 +968,101 @@ German Umlauts are mapped to characters set up in CHARS1.bmp
/* 158 ( '~^') */ (unsigned char) 158,
/* 159 ( '~_') */ (unsigned char) 159,
/* 160 ( '| ') */ (unsigned char) 160,
-/* 161 ( '' ) */ (unsigned char) 161,
-/* 162 ( '' ) */ (unsigned char) 162,
-/* 163 ( '' ) */ (unsigned char) 163,
-/* 164 ( '' ) */ (unsigned char) 164,
-/* 165 ( '' ) */ (unsigned char) 165,
-/* 166 ( '' ) */ (unsigned char) 166,
-/* 167 ( '' ) */ (unsigned char) 167,
-/* 168 ( '' ) */ (unsigned char) 168,
-/* 169 ( '' ) */ (unsigned char) 169,
-/* 170 ( '' ) */ (unsigned char) 170,
-/* 171 ( '' ) */ (unsigned char) 171,
-/* 172 ( '' ) */ (unsigned char) 172,
-/* 173 ( '' ) */ (unsigned char) 173,
-/* 174 ( '' ) */ (unsigned char) 174,
-/* 175 ( '' ) */ (unsigned char) 175,
-/* 176 ( '' ) */ (unsigned char) 176,
-/* 177 ( '' ) */ (unsigned char) 177,
-/* 178 ( '' ) */ (unsigned char) 178,
-/* 179 ( '' ) */ (unsigned char) 179,
-/* 180 ( '' ) */ (unsigned char) 180,
-/* 181 ( '' ) */ (unsigned char) 181,
-/* 182 ( '' ) */ (unsigned char) 182,
-/* 183 ( '' ) */ (unsigned char) 183,
-/* 184 ( '' ) */ (unsigned char) 184,
-/* 185 ( '' ) */ (unsigned char) 185,
-/* 186 ( '' ) */ (unsigned char) 186,
-/* 187 ( '' ) */ (unsigned char) 187,
-/* 188 ( '' ) */ (unsigned char) 188,
-/* 189 ( '' ) */ (unsigned char) 189,
-/* 190 ( '' ) */ (unsigned char) 190,
-/* 191 ( '' ) */ (unsigned char) 191,
-/* 192 ( '' ) */ (unsigned char) 192,
-/* 193 ( '' ) */ (unsigned char) 193,
-/* 194 ( '' ) */ (unsigned char) 194,
-/* 195 ( '' ) */ (unsigned char) 195,
-/* 196 ( '' ) */ (unsigned char) 132,
-/* 197 ( '' ) */ (unsigned char) 197,
-/* 198 ( '' ) */ (unsigned char) 198,
-/* 199 ( '' ) */ (unsigned char) 199,
-/* 200 ( '' ) */ (unsigned char) 200,
-/* 201 ( '' ) */ (unsigned char) 201,
-/* 202 ( '' ) */ (unsigned char) 202,
-/* 203 ( '' ) */ (unsigned char) 203,
-/* 204 ( '' ) */ (unsigned char) 204,
-/* 205 ( '' ) */ (unsigned char) 205,
-/* 206 ( '' ) */ (unsigned char) 206,
-/* 207 ( '' ) */ (unsigned char) 207,
-/* 208 ( '' ) */ (unsigned char) 208,
-/* 209 ( '' ) */ (unsigned char) 209,
-/* 210 ( '' ) */ (unsigned char) 210,
-/* 211 ( '' ) */ (unsigned char) 211,
-/* 212 ( '' ) */ (unsigned char) 212,
-/* 213 ( '' ) */ (unsigned char) 213,
-/* 214 ( '' ) */ (unsigned char) 133,
-/* 215 ( '' ) */ (unsigned char) 215,
-/* 216 ( '' ) */ (unsigned char) 216,
-/* 217 ( '' ) */ (unsigned char) 217,
-/* 218 ( '' ) */ (unsigned char) 218,
-/* 219 ( '' ) */ (unsigned char) 219,
-/* 220 ( '' ) */ (unsigned char) 134,
-/* 221 ( '' ) */ (unsigned char) 221,
-/* 222 ( '' ) */ (unsigned char) 222,
-/* 223 ( '' ) */ (unsigned char) 138,
-/* 224 ( '' ) */ (unsigned char) 224,
-/* 225 ( '' ) */ (unsigned char) 225,
-/* 226 ( '' ) */ (unsigned char) 226,
-/* 227 ( '' ) */ (unsigned char) 227,
-/* 228 ( '' ) */ (unsigned char) 135,
-/* 229 ( '' ) */ (unsigned char) 229,
-/* 230 ( '' ) */ (unsigned char) 230,
-/* 231 ( '' ) */ (unsigned char) 231,
-/* 232 ( '' ) */ (unsigned char) 232,
-/* 233 ( '' ) */ (unsigned char) 233,
-/* 234 ( '' ) */ (unsigned char) 234,
-/* 235 ( '' ) */ (unsigned char) 235,
-/* 236 ( '' ) */ (unsigned char) 236,
-/* 237 ( '' ) */ (unsigned char) 237,
-/* 238 ( '' ) */ (unsigned char) 238,
-/* 239 ( '' ) */ (unsigned char) 239,
-/* 240 ( '' ) */ (unsigned char) 240,
-/* 241 ( '' ) */ (unsigned char) 241,
-/* 242 ( '' ) */ (unsigned char) 242,
-/* 243 ( '' ) */ (unsigned char) 243,
-/* 244 ( '' ) */ (unsigned char) 244,
-/* 245 ( '' ) */ (unsigned char) 245,
-/* 246 ( '' ) */ (unsigned char) 136,
-/* 247 ( '' ) */ (unsigned char) 247,
-/* 248 ( '' ) */ (unsigned char) 248,
-/* 249 ( '' ) */ (unsigned char) 249,
-/* 250 ( '' ) */ (unsigned char) 250,
-/* 251 ( '' ) */ (unsigned char) 251,
-/* 252 ( '' ) */ (unsigned char) 137,
-/* 253 ( '' ) */ (unsigned char) 253,
-/* 254 ( '' ) */ (unsigned char) 254,
-/* 255 ( '' ) */ (unsigned char) 255},
+/* 161 ( '�' ) */ (unsigned char) 161,
+/* 162 ( '�' ) */ (unsigned char) 162,
+/* 163 ( '�' ) */ (unsigned char) 163,
+/* 164 ( '�' ) */ (unsigned char) 164,
+/* 165 ( '�' ) */ (unsigned char) 165,
+/* 166 ( '�' ) */ (unsigned char) 166,
+/* 167 ( '�' ) */ (unsigned char) 167,
+/* 168 ( '�' ) */ (unsigned char) 168,
+/* 169 ( '�' ) */ (unsigned char) 169,
+/* 170 ( '�' ) */ (unsigned char) 170,
+/* 171 ( '�' ) */ (unsigned char) 171,
+/* 172 ( '�' ) */ (unsigned char) 172,
+/* 173 ( '�' ) */ (unsigned char) 173,
+/* 174 ( '�' ) */ (unsigned char) 174,
+/* 175 ( '�' ) */ (unsigned char) 175,
+/* 176 ( '�' ) */ (unsigned char) 176,
+/* 177 ( '�' ) */ (unsigned char) 177,
+/* 178 ( '�' ) */ (unsigned char) 178,
+/* 179 ( '�' ) */ (unsigned char) 179,
+/* 180 ( '�' ) */ (unsigned char) 180,
+/* 181 ( '�' ) */ (unsigned char) 181,
+/* 182 ( '�' ) */ (unsigned char) 182,
+/* 183 ( '�' ) */ (unsigned char) 183,
+/* 184 ( '�' ) */ (unsigned char) 184,
+/* 185 ( '�' ) */ (unsigned char) 185,
+/* 186 ( '�' ) */ (unsigned char) 186,
+/* 187 ( '�' ) */ (unsigned char) 187,
+/* 188 ( '�' ) */ (unsigned char) 188,
+/* 189 ( '�' ) */ (unsigned char) 189,
+/* 190 ( '�' ) */ (unsigned char) 190,
+/* 191 ( '�' ) */ (unsigned char) 191,
+/* 192 ( '�' ) */ (unsigned char) 192,
+/* 193 ( '�' ) */ (unsigned char) 193,
+/* 194 ( '�' ) */ (unsigned char) 194,
+/* 195 ( '�' ) */ (unsigned char) 195,
+/* 196 ( '�' ) */ (unsigned char) 132,
+/* 197 ( '�' ) */ (unsigned char) 197,
+/* 198 ( '�' ) */ (unsigned char) 198,
+/* 199 ( '�' ) */ (unsigned char) 199,
+/* 200 ( '�' ) */ (unsigned char) 200,
+/* 201 ( '�' ) */ (unsigned char) 201,
+/* 202 ( '�' ) */ (unsigned char) 202,
+/* 203 ( '�' ) */ (unsigned char) 203,
+/* 204 ( '�' ) */ (unsigned char) 204,
+/* 205 ( '�' ) */ (unsigned char) 205,
+/* 206 ( '�' ) */ (unsigned char) 206,
+/* 207 ( '�' ) */ (unsigned char) 207,
+/* 208 ( '�' ) */ (unsigned char) 208,
+/* 209 ( '�' ) */ (unsigned char) 209,
+/* 210 ( '�' ) */ (unsigned char) 210,
+/* 211 ( '�' ) */ (unsigned char) 211,
+/* 212 ( '�' ) */ (unsigned char) 212,
+/* 213 ( '�' ) */ (unsigned char) 213,
+/* 214 ( '�' ) */ (unsigned char) 133,
+/* 215 ( '�' ) */ (unsigned char) 215,
+/* 216 ( '�' ) */ (unsigned char) 216,
+/* 217 ( '�' ) */ (unsigned char) 217,
+/* 218 ( '�' ) */ (unsigned char) 218,
+/* 219 ( '�' ) */ (unsigned char) 219,
+/* 220 ( '�' ) */ (unsigned char) 134,
+/* 221 ( '�' ) */ (unsigned char) 221,
+/* 222 ( '�' ) */ (unsigned char) 222,
+/* 223 ( '�' ) */ (unsigned char) 138,
+/* 224 ( '�' ) */ (unsigned char) 224,
+/* 225 ( '�' ) */ (unsigned char) 225,
+/* 226 ( '�' ) */ (unsigned char) 226,
+/* 227 ( '�' ) */ (unsigned char) 227,
+/* 228 ( '�' ) */ (unsigned char) 135,
+/* 229 ( '�' ) */ (unsigned char) 229,
+/* 230 ( '�' ) */ (unsigned char) 230,
+/* 231 ( '�' ) */ (unsigned char) 231,
+/* 232 ( '�' ) */ (unsigned char) 232,
+/* 233 ( '�' ) */ (unsigned char) 233,
+/* 234 ( '�' ) */ (unsigned char) 234,
+/* 235 ( '�' ) */ (unsigned char) 235,
+/* 236 ( '�' ) */ (unsigned char) 236,
+/* 237 ( '�' ) */ (unsigned char) 237,
+/* 238 ( '�' ) */ (unsigned char) 238,
+/* 239 ( '�' ) */ (unsigned char) 239,
+/* 240 ( '�' ) */ (unsigned char) 240,
+/* 241 ( '�' ) */ (unsigned char) 241,
+/* 242 ( '�' ) */ (unsigned char) 242,
+/* 243 ( '�' ) */ (unsigned char) 243,
+/* 244 ( '�' ) */ (unsigned char) 244,
+/* 245 ( '�' ) */ (unsigned char) 245,
+/* 246 ( '�' ) */ (unsigned char) 136,
+/* 247 ( '�' ) */ (unsigned char) 247,
+/* 248 ( '�' ) */ (unsigned char) 248,
+/* 249 ( '�' ) */ (unsigned char) 249,
+/* 250 ( '�' ) */ (unsigned char) 250,
+/* 251 ( '�' ) */ (unsigned char) 251,
+/* 252 ( '�' ) */ (unsigned char) 137,
+/* 253 ( '�' ) */ (unsigned char) 253,
+/* 254 ( '�' ) */ (unsigned char) 254,
+/* 255 ( '�' ) */ (unsigned char) 255},
diff --git a/po/it_IT.po b/po/it_IT.po
index 02ccc56..7b9491f 100755
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr@joachim-wilke.de>\n"
-"POT-Creation-Date: 2008-06-14 18:05+0200\n"
+"POT-Creation-Date: 2008-07-03 20:42+0200\n"
"PO-Revision-Date: 2008-03-30 19:32+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: <vdr@linuxtv.org>\n"
diff --git a/setup.c b/setup.c
index 7cc9e0f..923a395 100644
--- a/setup.c
+++ b/setup.c
@@ -11,11 +11,12 @@ cLcdSetup::cLcdSetup(void)
Scrollspeed = 3;
Charmap = 0;
AltShift = 0;
- BackLight = 1;
- ClientPrioN = 128;
- ClientPrioH = 16;
- SetPrio = 0;
- BackLightWait = 0;
+ BackLight = 2;
+ ClientPrioN = 100;
+ ClientPrioH = 255;
+ SetPrio = 2;
+ BackLightWait = 20;
+ PrioWait = 60;
OutputNumber = 0;
for (int i = 0; i < LCDMAXOUTPUTS; i++)
OutputFunction[i] = 0;
diff --git a/setup.h b/setup.h
index 76aa220..1539b6f 100644
--- a/setup.h
+++ b/setup.h
@@ -17,6 +17,8 @@ public:
int ClientPrioN;
int ClientPrioH;
int BackLightWait;
+ int PrioWait;
+ int ClientPrioWait;
int OutputNumber;
int OutputFunction[LCDMAXOUTPUTS];
int RecordingStatus;
diff --git a/sockets.c b/sockets.c
index 5a9bb15..ff3a6a6 100644
--- a/sockets.c
+++ b/sockets.c
@@ -92,7 +92,7 @@ sock_close (int fd)
// Send/receive lines of text
int
-sock_send_string (int fd, char *string)
+sock_send_string (int fd, const char *string)
{
int len;
int offset = 0;
diff --git a/sockets.h b/sockets.h
index 86df31f..25661c3 100644
--- a/sockets.h
+++ b/sockets.h
@@ -29,7 +29,7 @@ for more info.
int sock_connect (char *host, unsigned short int port);
int sock_close (int fd);
// Send/receive lines of text
-int sock_send_string (int fd, char *string);
+int sock_send_string (int fd, const char *string);
// Recv gives only one line per call...
int sock_recv_string (int fd, char *dest, size_t maxlen);
// Send/receive raw data