diff options
author | Joachim Wilke <vdr@joachim-wilke.de> | 2008-08-20 00:00:00 +0200 |
---|---|---|
committer | Joachim Wilke <vdr@joachim-wilke.de> | 2008-08-20 00:00:00 +0200 |
commit | e5d1d78501967ad8c7a6dc1766df661364aba454 (patch) | |
tree | ece0cd367727bb9045c4da1f982ec497a0d04cec | |
parent | 4b8b62e70a63206fe269842e9ab6ace76f8e84c9 (diff) | |
download | vdr-plugin-lcdproc-e5d1d78501967ad8c7a6dc1766df661364aba454.tar.gz vdr-plugin-lcdproc-e5d1d78501967ad8c7a6dc1766df661364aba454.tar.bz2 |
Version 0.0.10-jw5v0.0.10-jw5release/v0.0.10-jw5
-rw-r--r-- | HISTORY | 23 | ||||
-rw-r--r-- | SHF_EPG_3.diff | 258 | ||||
-rw-r--r-- | lcd.c | 1013 | ||||
-rw-r--r-- | lcd.h | 12 | ||||
-rw-r--r-- | lcdproc.c | 50 | ||||
-rw-r--r-- | lcdtranstbl.h | 760 | ||||
-rwxr-xr-x | po/it_IT.po | 2 | ||||
-rw-r--r-- | setup.c | 11 | ||||
-rw-r--r-- | setup.h | 2 | ||||
-rw-r--r-- | sockets.c | 2 | ||||
-rw-r--r-- | sockets.h | 2 |
11 files changed, 1304 insertions, 831 deletions
@@ -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; @@ -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 + } } } @@ -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); @@ -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" @@ -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; @@ -17,6 +17,8 @@ public: int ClientPrioN; int ClientPrioH; int BackLightWait; + int PrioWait; + int ClientPrioWait; int OutputNumber; int OutputFunction[LCDMAXOUTPUTS]; int RecordingStatus; @@ -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; @@ -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 |