%
% Achtung: Dateien muessen mit latin1-Encoding gespeichert werden!
% Attention: Files must be saved using latin1 encoding!
%

\chapter{Das Lcd-Paket}

    Dieses Paket wurde urspr"unglich von Nico Wallmeier zusammengestellt und 
	sp"ater dem eisfair-Team "ubergeben.


\section{Die Einleitung}

    Dieses Paket erm"oglicht es, ein an den Server angeschlossenes LC-Display
    anzusteuern. Das hat den Vorteil, dass Informationen angezeigt werden
    k"onnen, auch wenn kein Monitor am Server angeschlossen ist.

    Zum Einsatz kommt die Software lcd4linux.


\section{Die Installation}

    Das Lcd-Paket wird "uber das Setup-Men"u installiert. War das Paket noch 
	nicht installiert, wird direkt der Konfigurations-Editor gestartet. 
	Anderenfalls wird die vorhandene Konfiguration, sofern notwendig, 
	konvertiert. Nach Beendigung dieses Schrittes werden die nativen 
	Konfigurationsdateien f"ur lcd4linux generiert und alle ben"otigten 
	Programme gestartet.


\section{Das Men"u im Setup-Programm}

    Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \begin{itemize}
        \item View documentation: Anzeigen der Dokumentation
        \item Edit main configuration: Bearbeiten der Hauptkonfiguration
        \item Edit widgets: Bearbeiten der Widgetkonfiguration
        \item Status: Den Status des lcd-Daemons anzeigen
        \item Start lcd4linux: Den lcd-Daemon starten
        \item Stop lcd4linux: Den lcd-Daemon anhalten
        \item Advanced configuration file handling: Vergleichen/Rekonstruieren
        von Konfigurationen. Dieses Men"u "offnet ein Untermen"u, in welchem
		die Hauptkonfigurationen sowie die Konfiguration der Widgets getrennt 
		voneinander gesichert bzw. wiederhergestellt werden kann.
    \end{itemize}

    Die Men"upunkte d"urften selbsterkl"arend sein, da sie keinerlei weitere 
	Eingabe erwarten.


\section{Die "Anderung der Konfiguration}

    Die LCD-Konfiguration kann "uber die beiden Men"upunkte 'Edit main 
	configuration' bzw. 'Edit widgets' ge"andert werden. Nachdem der Editor 
	beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden soll. 
	Wird dies best"atigt, werden die modifizierten "Anderungen umgehend wirksam 
	gemacht.


\section{Die Konfigurationsdatei}

    In der Konfigurationsdatei sind folgende Parameter vorhanden. F"ur eine 
	Bearbeitung von Hand sie diese unter /etc/config.d/lcd bzw. 
	/etc/config.d/lcd-widgets zu finden.


\section{Die Parameter}
	In den folgenden Abschnitten werden die Konfigurationsparameter beschrieben.
	
\subsection{Hauptkonfiguration}

\begin{description}
    \config{START\_LCD}{START\_LCD}{STARTLCD}
        F"ur die Aktivierung der Lcd-Ansteuerung muss dieser Parameter lediglich 
		auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert die
        Ansteuerung.

        G"ultige Werte: yes, no

    \config{LCD\_TYPE}{LCD\_TYPE}{LCDTYPE}
        Hier wird der Typ sowie das Modell des angeschlossenen LCDs eingestellt. 
		Dabei wird Typ und Modell durch ':' getrennt, bspw.	'HD44780:Soekris'. 
		Die m"oglichen Werte dieser Variable sind dabei wie folgt:
		\begin{itemize}
			\item HD44780 komptable Displays:
				\begin{itemize}
						\item HD44780: f"ur HD44780 und kompatible Kontroller
						\item HD66712: f"ur HD66712 und kompatible Kontroller
				\end{itemize}
			\item M50530 kompatible Displays:
				\begin{itemize}
						\item M50530
				\end{itemize}
			\item Matrix Orbital Displays:
				\begin{itemize}
						\item LCD0821: 2 lines by 8 characters
						\item LCD1621: 2 lines by 16 characters
						\item LCD2021: 2 lines by 20 characters
						\item LCD2041: 4 lines by 20 characters
						\item LCD4021: 2 lines by 40 characters
						\item LK202-25: 2 lines by 20 characters
						\item LK204-25: 4 lines by 20 characters
				\end{itemize}
			\item CrystalFontz Displays:
				\begin{itemize}
						\item 626
						\item 632
						\item 634
						\item 636
				\end{itemize}
			\item Milford Instruments:
				\begin{itemize}
						\item MI216: 2 lines by 16 characters
						\item MI220: 2 lines by 20 characters
						\item MI240: 2 lines by 40 characters
						\item MI420: 4 lines by 20 characters
				\end{itemize}
			\item Cwlinux:
				\begin{itemize}
						\item CW12232
						\item CW1602
				\end{itemize}
			\item Monitor:                  \begin{itemize}
						\item Text
				\end{itemize}
		\end{itemize}

    \config{LCD\_PORT}{LCD\_PORT}{LCDPORT}
		Die IO-Adresse des LPT-Ports oder das serielle Device, an welches das
		Display angeschlossen wurde.

		G"ultige Werte: '0x378', '0x278', '0x3bc', '/dev/ttySx', '/dev/parportx'

	\config{LCD\_WIRING}{LCD\_WIRING}{LCDWIRING}
		Legt die Verdrahtung bei HD44780-kompatiblen Displays fest. F"ur 
		genauere Informationen siehe Abschnitt \jumplabel{Anschlussbelegung
		HD44780-kompatibler Displays}{belegung}.

		G"ultige Werte: 'fli4l', 'winamp'

	\config{LCD\_SPEED}{LCD\_SPEED}{LCDSPEED}
		Bestimmt die Geschwindigkeit der seriellen Schnittstelle bei Cwlinux,
		MatrixOrbital, CrystalFontz-Displays und MilfordInstruments.

		G"ultige Werte:
		\begin{itemize}
		\item Cwlinux: 1200, 2400, 9600 oder 19200
		\item Crystalfontz: 1200, 2400, 4800, 9600, 19200, 38400 oder 115200
		\item MatrixOrbital: 1200, 2400, 9600 oder 19200
		\item MilfordInstruments: 1200, 2400, 4800, 9600, 19200, 38400 oder 115200
		\end{itemize}

	\config{LCD\_CONTRAST}{LCD\_CONTRAST}{LCDCONTRAST}
		Legt den Display-Kontrast bei Matrix Orbital und CrystalFontz-Displays
		fest. Bei MatrixOrbital sind Werte zwischen 0 (hell) und 256 (dunkel) 
		m"oglich, LCD2USB wird mit 0 (dunkel) bis 255 (hell) konfiguriert. Der
		Default-Wert ist 160. Bei CrystalFontz hingegen sind Werte zwischen 0 
		(hell) und 100 (dunkel) m"oglich.

		G"ultige Werte: Zahl

	\config{LCD\_BACKLIGHT}{LCD\_BACKLIGHT}{LCDBACKLIGHT}
		Legt die St"arke der Hintergrundbeleuchtung von seriellen CrystalFontz 
		und Cwlinux Displays fest. F"ur Crystalfonts Displays sind Werte 
		zwischen 0 (aus) und 100 (voll ein) m"oglich, f"ur Cwlinux zwischen 0 
		(aus) und 8 (voll ein) und f"ur LCD2USB zwischen 0 (aus) und 255 (voll 
		ein). Der Default-Wert ist 80.

		G"ultige Werte: Zahl

    \config{LCD\_COLS}{LCD\_COLS}{LCDCOLS}
        Anzahl der Zeichen pro Zeile. Typische Werte sind 16, 20, 24, 32 und
        40.

        G"ultige Werte: Zahl

    \config{LCD\_ROWS}{LCD\_ROWS}{LCDROWS}
        Anzahl der physikalischen Zeilen des Displays. Typische Werte sind 1, 2
        und 4.

        G"ultige Werte: Zahl

	\config{LCD\_LAYOUT\_N}{LCD\_LAYOUT\_N}{LCDLAYOUTN}
		Die Anzahl der zu konfigurierenden Layouts. In der momentanen Version 
		von lcd4linux wird nur ein aktives Layout unterst"utzt.

		G"ultige Werte: Zahl

	\config{LCD\_LAYOUT\_x\_NAME}{LCD\_LAYOUT\_x\_NAME}{LCDLAYOUTxNAME}
		Der Name das aktuellen Layouts. Unter diesem Namen wird das Layout in 
		der nativen lcd4linux Konfiguration eingebunden.

		G"ultige Werte: Eindeutiger Name

	\config{LCD\_LAYOUT\_x\_ACTIVE}{LCD\_LAYOUT\_x\_ACTIVE}{LCDLAYOUTxACTIVE}
		Soll das aktuelle Layout aktiv sein oder nicht. In der momentanen 
		Version von lcd4linux wird nur ein aktives Layout unterst"utzt. Wird 
		mehr als ein Layout aktiviert, so wird das letzte aktive Layout 
		eingebunden.
		
		G"ultige Werte: yes/no
		
	\config{LCD\_LAYOUT\_x\_ELEMENT\_N}{LCD\_LAYOUT\_x\_ELEMENT\_N}{LCDLAYOUTxELEMENTN}
		Anzahl der in diesem Layout enthaltenen Elemente resp. Widgets.
		
		G"ultige Werte: Zahl
		
	\config{LCD\_LAYOUT\_x\_ELEMENT\_x\_NAME}{LCD\_LAYOUT\_x\_ELEMENT\_x\_NAME}{LCDLAYOUTxELEMENTxNAME}
		Name des einzubindenden Widgets. Dieser Name muss einem der 
		konfigurierten Widgets entsprechen und als Prefix durch : abgetrennt 
		den Typ des Widgets enthalten.
		
		G"ultige Werte: [Text|Bar|Icon]:<String>
		
	\config{LCD\_LAYOUT\_x\_ELEMENT\_x\_ACTIVE}{LCD\_LAYOUT\_x\_ELEMENT\_x\_ACTIVE}{LCDLAYOUTxELEMENTxACTIVE}
		Soll das aktuelle Element resp. Widget eingebunden werden oder nicht.
		
		G"ultige Werte: yes/no
		
	\config{LCD\_LAYOUT\_x\_ELEMENT\_x\_ROW}{LCD\_LAYOUT\_x\_ELEMENT\_x\_ROW}{LCDLAYOUTxELEMENTxROW}
		Angabe der Zeile, auf welcher das Widget dargestellt werden soll.
		
		G"ultige Werte: Zahl

	\config{LCD\_LAYOUT\_x\_ELEMENT\_x\_COL}{LCD\_LAYOUT\_x\_ELEMENT\_x\_COL}{LCDLAYOUTxELEMENTxCOL}
		Angabe der Spalte, in welcher das Widget dargestellt werden soll.
		
		G"ultige Werte: Zahl
		
	\config{LCD\_USE\_SHUTDOWN\_LAYOUT}{LCD\_USE\_SHUTDOWN\_LAYOUT}{LCDUSESHUTDOWNLAYOUT}
		Hier wird ein spezielles Layout aktiviert, welches beim Shutdown des 
		Servers zur Anwendung gebracht wird. Dieses Layout enth"alt keine 
		Ausgaben sowie die geringst m"oglichen Werte f"ur Kontrast sowie 
		Hintergrundbeleuchtung.
		
		G"ultige Werte: yes/no


	TODO: Update/Refactor/Check the following sections

	\config{LCD\_ROWS\_N}{LCD\_ROWS\_N}{LCDROWSN}
        Anzahl der darzustellenden Zeilen. Dieser Wert muss gr"o"ser oder gleich
        LCD\_ROWS sein. Ist dieser Wert gr"o"ser als LCD\_ROWS werden die Zeilen
        durchgescrollt - mit LCD\_SCROLL und LCD\_TURN kann das Verhalten dazu
        beeinflusst werden.

        G"ultige Werte: Zahl

    \config{LCD\_ROWS\_x}{LCD\_ROWS\_x}{LCDROWSX}
	
        Diese Variable bestimmt, was in der x-ten Zeile des Displays dargestellt
        werden soll. Daf"ur bietet das lcd4linux-Programm einige vordefinierte
        Werte, als auch die M"oglichkeit eigene Informationen anzeigen zu lassen.

        Der anzuzeigende Text kann die folgenden Direktiven beinhalten, die
        durch die entsprechenden Werte ersetzt werden oder Balken erzeugen:
        \begin{itemize}
        \item '$\backslash$nnn' erzeugt das ASCII-Zeichen nnn (oktal)
        \item '<token>' wird durch den Wert des <token> ersetzt
        \item '\%\%' wird durch '\%' ersetzt
        \item '\%\$' wird durch '\$' ersetzt
        \item '\$<direction><length><token>$[$+<token>$]$' erzeugt einen Balken
        der angegebenen Richtung und L"ange (in Zeichen) mit dem Wert von
        <token>. Mit '+<token>' kann ein zweiter Wert festgelegt werden, somit
        k"onnen zwei unabh"angige Balken in einer einzelnen Zeile dargestellt
        werden. F"ur <direction> gibt es die M"oglichkeiten:
        \begin{itemize}
                \item 'l' links
                \item 'r' rechts
                \item 'u' hoch
                \item 'd' runter
        \end{itemize}
        Wenn <direction> in Gro"sbuchstaben angegeben wurde, wird eine
        logarithmische Skalierung benutzt.
        \item '$\&$<num>' zeichnet das Icon mit der Nummer num an die aktuelle
        Stelle.
                \end{itemize}

                Als Tokens sind definiert:
                \begin{itemize}
                \item 'o'  operating system name ('Linux')
                \item 'v'  operating system release ('2.0.38')
                \item 'p'  processor ('i686')
                \item 'r'  total amount of memory installed (MB)
                \item 'mt' total memory from /proc/meminfo (kB)
                \item 'mu' used memory (kB)
                \item 'mf' free memory (kB)
                \item 'ms' shared memory (kB)
                \item 'mb' buffers (kB)
                \item 'mc' page cache (kB)
                \item 'ma' application memory (kB) = used - buffer - cache
                \item 'l1' load average for the past 1 minute
                \item 'l2' load average for the past 5 minutes
                \item 'l3' load average for the past 15 minutes
%               \item 'L'  '!' if load > overload (from config)
                \item 'cu' percentage of CPU in user mode
                \item 'cn' percentage of CPU in niced tasks
                \item 'cs' percentage of CPU in system mode
                \item 'cb' percentage of CPU busy (=100-idle)
                \item 'ci' percentage of CPU idle
                \item 'dr' disk blocks read
                \item 'dw' disk blocks written
                \item 'dt' disk blocks total (read+write)
                \item 'dm' disk blocks max (read, write)
                \item 'nr' network bytes received
                \item 'nw' network bytes transmitted
                \item 'nt' network bytes total (receive+transmit)
                \item 'nm' network bytes max (receive, transmit)
                \item 'ii' ISDN bytes received
                \item 'io' ISDN bytes sent
                \item 'it' ISDN bytes total (received+send)
                \item 'im' ISDN bytes max (received, send)
                \item 'ic' ISDN connected (0=offline, 1=online)
                \item 'ti' PPP bytes received
                \item 'to' PPP bytes sent
                \item 'tt' PPP bytes total (received+send)
                \item 'tm' PPP bytes max (received, send)
%               \item 's*' temperature of sensor 1-9
                \item 'bp' battery percentage (APM by now)
                \item 'bs' battery status ('=' = online, '+' = charging, '-' discharging)
                \item 'bd' battery duration in s{econds}, m{ins}, h{ours} or d{ays}
%               \item 'hc' seti@home \% completed
%               \item 'ht' seti@home time spent on workunit
                \item 'e*' mails in mailbox 1-9, total mail
                \item 'u*' mails in mailbox 1-9, unseen mail
                \item 'x*' output of command 1-9
                \end{itemize}
                F"ur die folgenden Tokens werden Daten vom Imond abgefragt:
                \begin{itemize}
                \item 'jc' CPU-Auslastung
                \item 'jd' Datum
                \item 'jm' Uhrzeit
                \item 'jv' imond-Version
                \item 'js*' Status von Kanal 1-9 (Offline, Dialing, Online)
                \item 'jn*' Circuit-Name des Kanals 1-9
                \item 'jk*' Aufgelaufene Kosten des Kanals 1-9
                \item 'jp*' IP-Adresse des Kanals 1-9
                \item 'jt*' Online-Zeit der aktuellen Verbindung des Kanals 1-9
                \item 'ji*' "Ubertragungsrate eingehend der aktuellen Verbindung des
                Kanals 1-9
                \item 'jo*' "Ubertragungsrate ausgehend der aktuellen Verbindung des
                Kanals 1-9
                \end{itemize}
                F"ur die folgenden Tokens werden Daten vom Telmond abgefragt:
                \begin{itemize}
                \item 'kn' Nummer des Anrufers
                \item 'km' angerufene MSN
                \item 'kt' Uhrzeit des Anrufes
                \item 'kd' Datum des Anrufes
                \end{itemize}

        \config{LCD\_SCROLL}{LCD\_SCROLL}{LCDSCROLL}
                Wenn LCD\_ROWS\_N einen gr"o"seren Wert als LCD\_ROWS hat, werden die
                Zeilen durchgescrollt. LCD\_SCROLL gibt dabei an, wieviele Zeilen auf
                einmal gescrollt werden sollen. Wird ein Vielfaches von LCD\_ROWS
                angegeben, wird das komplette Display gewechselt.

                G"ultige Werte: Zahl

        \config{LCD\_TURN}{LCD\_TURN}{LCDTURN}
                Gibt an, wieviele Millisekunden zwischen den Scroll-Ereignissen liegen
                sollen.

                G"ultige Werte: Zahl

        \config{LCD\_TEXTUPDATE}{LCD\_TEXTUPDATE}{LCDTEXTUPDATE}
                Zeit in Millisekunden zwischen Textaktualisierungen. Text braucht nicht
                so oft aktualisiert werden wie die Balken.

                G"ultige Werte: Zahl

        \config{LCD\_BARUPDATE}{LCD\_BARUPDATE}{LCDBARUPDATE}
                Zeit in Millisekunden zwischen Balken-Aktualisierungen.

                G"ultige Werte: Zahl

        \config{LCD\_ICONUPDATE}{LCD\_ICONUPDATE}{LCDICONUPDATE}
                Zeit in Millisekunden zwischen Iconaktualisierungen.

                G"ultige Werte: Zahl

        \config{LCD\_CMDS\_N}{LCD\_CMDS\_N}{LCDCMDSN}
                Anzahl der Befehle dessen Ergebnis auf dem LC-Display angezeigt werden
                sollen.

                G"ultige Werte: Zahl < 10

        \config{LCD\_CMDS\_x\_CMD}{LCD\_CMDS\_x\_CMD}{LCDCMDSXCMD}
                Befehl der ausgef"uhrt werden soll. Dieser muss sich in einem der
                folgenden Pfade /usr/local/bin, /usr/bin oder /bin befinden. Mittels
                \$X1 \ldots \$X9 k"onnen auf die Ergebnisse der Befehle 1 \ldots 9 im
                Environment zugegriffen werden.

        \config{LCD\_CMDS\_x\_DELAY}{LCD\_CMDS\_x\_DELAY}{LCDCMDSXDELAY}
                Zeit in Sekunden zwischen Aktualisierungen.

                G"ultige Werte: Zahl

        \config{LCD\_CMDS\_x\_MIN}{LCD\_CMDS\_x\_MIN}{LCDCMDSXMIN}
                Minimaler Wert f"ur eine Balkendarstellung.

                G"ultige Werte: Zahl

        \config{LCD\_CMDS\_x\_MAX}{LCD\_CMDS\_x\_MAX}{LCDCMDSXMAX}
                Maximaler Wert f"ur eine Balkendarstellung.

                G"ultige Werte: Zahl

        \config{LCD\_MAILBOX\_N}{LCD\_MAILBOX\_N}{LCDMAILBOXN}
                Anzahl der Mailboxen bzw. Newsgroups die abgefragt werden sollen.

                G"ultige Werte: Zahl < 10

        \config{LCD\_MAILBOX\_x\_CMD}{LCD\_MAILBOX\_x\_DELAY}{LCDMAILBOXXCMD}
                M"ogliche Werte sind:
                \begin{itemize}
                \item 'pop3:[user[:pass]@]machine[:port]'
                \item 'imap4:[user[:pass]@]machine[:port][/dir]'
                \item 'nntp:[user[:pass]@]machine[:port][/dir]'
                \end{itemize}

        \config{LCD\_MAILBOX\_x\_DELAY}{LCD\_MAILBOX\_x\_DELAY}{LCDMAILBOXXDELAY}
                Zeit in Sekunden zwischen Aktualisierungen.

                G"ultige Werte: Zahl

        Die folgenden Variablen werden nur ausgewertet, wenn ein Token benutzt wird,
        der Daten vom imond auswertet.

        \config{LCD\_ICON\_N}{LCD\_ICON\_N}{LCDICONN}
                Anzahl der benutzerdefinierten (animierten) Icons. Zu Ber"ucksichtigen
                ist, dass jedes Icon, welches hier definiert wird, nicht mehr die Balken
                zur Verf"ugung steht. Die meisten Display k"onnen nur 8 userdefinierbare
                Zeichen darstellen und ein Doppelbalken ben"otigt bis zu 5 dieser
                Zeichen. Deshalb sollten nicht mehr als 3 Icons parallel mit Balken
                benutzt werden.

                G"ultige Werte: Zahl < 10

        \config{LCD\_ICON\_X\_ROW\_Y}{LCD\_ICON\_X\_ROW\_Y}{LCDICONXROWY}
                Ein Icon hat die Gr"o"se wie ein Zeichen - also 5 Spalten und 8 Zeilen.
                Das Icon wird durch zwei Zeichen definiert:
                \begin{itemize}
                        \item '.' (Punkt) f"ur Pixel nicht gesetzt
                        \item '*' (Stern) f"ur Pixel gesetzt
                \end{itemize}
                Um animierte Icons zu erzeugen, werden die weiteren Bilder einfach
                mittels dem Zeichen '|' (senkrechter Strich) aneinandergef"ugt.

        \config{LCD\_IMOND\_HOST}{LCD\_IMOND\_HOST}{LCDIMONDHOST}
                Der Host auf dem imond l"auft. Somit ist es auch m"oglich, beispielsweise
                Daten eines fli4l-Routers auf dem Display darzustellen. Wenn das
                Routing-Paket f"ur eisfair auf dem Rechner l"auft, lautet der Eintrag
                'localhost'.

                G"ultige Werte: DNS-Name, IP-Adresse oder localhost

        \config{LCD\_IMOND\_PORT}{LCD\_IMOND\_PORT}{LCDIMONDPORT}
                Der TCP-Port auf dem imond horcht - im Normalfall ist dies der Port
                5000.

                G"ultige Werte: Zahl

        \config{LCD\_IMOND\_PASS}{LCD\_IMOND\_PASS}{LCDIMONDPASS}
                Wird ein entfernter Rechner "uberwacht und ist dort IMOND\_PASS gesetzt,
                muss dieses hier angegeben werden.

        \config{LCD\_CHANNELS\_N}{LCD\_CHANNELS\_N}{LCDCHANNELSN}
                Anzahl der Imond-Channels, die "uberwacht werden sollen.

                G"ultige Werte: Zahl < 10

        \config{LCD\_CHANNELS\_x\_DEV}{LCD\_CHANNELS\_x\_DEV}{LCDCHANNELSXDEV}
                Hier muss der zu "uberwachende Imond-Channel angegeben werden - siehe
                dazu Kapitel 8.1 der fli4l-Dokumentation. M"ogliche Werte sind:
                \begin{itemize}
                \item 'pppoe' f"ur einen DSL-Channel (egal ob pppoe oder pptp)
                \item Zahl f"ur einen ISDN-Kanal, 1 steht f"ur den ersten, \ldots
                \end{itemize}

        \config{LCD\_CHANNELS\_x\_MAXIN}{LCD\_CHANNELS\_x\_MAXIN}{LCDCHANNELSXMAXIN}
                Mit wieviel kBits k"onnen Daten von dem Kanal empfangen werden.

                G"ultige Werte: Zahl

        \config{LCD\_CHANNELS\_x\_MAXOUT}{LCD\_CHANNELS\_x\_MAXOUT}{LCDCHANNELSXMAXOUT}
                Mit wieviel kBits k"onnen Daten "uber den Kanal gesendet werden.

                G"ultige Werte: Zahl

        \config{LCD\_TELMOND\_HOST}{LCD\_TELMOND\_HOST}{LCDTELMONDHOST}
                Der Host auf dem telmond l"auft. Somit ist es auch m"oglich, den letzten
                Anrufer auf dem Display anzeigen zu lassen.

                G"ultige Werte: DNS-Name, IP-Adresse oder localhost

        \config{LCD\_TELMOND\_PORT}{LCD\_TELMOND\_PORT}{LCDTELMONDPORT}
                Der TCP-Port auf dem telmond horcht - im Normalfall ist dies der Port
                5001.

                G"ultige Werte: Zahl

        \config{LCD\_TELMOND\_PHONEBOOK}{LCD\_TELMOND\_PHONEBOOK}{LCDTELMONDPHONEBOOK}
                Hier kann eine Datei angegeben werden, die als Telefonbuch fungiert.
                Wird in dieser Datei die gesuchte Telefonnummer oder MSN gefunden, wird
                statt der Nummer der gefundene Namen angezeigt. Der Aufbau der Datei ist
                der selbe, der bei fli4l verwendet wird. Pro Zeile kann eine
                Telefonnummer aufgel"ost werden:
                [Nummer]=[Name]

\end{description}



\subsection{Die Widgetkonfiguration}

\begin{description}
    \config{START\_LCD\_WIDGET}{START\_LCD\_WIDGET}{STARTLCDWIDGET}
        F"ur die Aktivierung der Widgetkonfiguration muss diese Variable 
		lediglich auf den Wert 'yes' gestellt werden.

        G"ultige Werte: yes, no

	\config{LCD\_TEXT\_WIDGET\_N}{LCD\_TEXT\_WIDGET\_N}{LCDTEXTWIDGETN}
		Definiert die Anzahl der zu konfigurierenden Textwidgets.
		
		G"ultige Werte: Zahl
		
	\config{LCD\_TEXT\_WIDGET\_x\_NAME}{LCD\_TEXT\_WIDGET\_x\_NAME}{LCDTEXTWIDGETxNAME}
		Ein eindeutiger Name f"ur dieses Widget. Er darf keine Leerzeichen 
		enthalten.
		
		G"ultige Werte: String ohne Leerzeichen
		
	\config{LCD\_TEXT\_WIDGET\_x\_ACTIVE}{LCD\_TEXT\_WIDGET\_x\_ACTIVE}{LCDTEXTWIDGETxACTIVE}
		De-/Aktivieren dieses Widgets.
		
		G"ultige Werte: yes/no

		
	\config{LCD\_TEXT\_WIDGET\_x\_EXP}{LCD\_TEXT\_WIDGET\_x\_EXP}{LCDTEXTWIDGETxEXP}
		Was soll dargestellt werden? Dieser Ausdruck wird ausgewertet und dessen
		Ergebnis angezeigt. Siehe dazu http://ssl.bulix.org/projects/lcd4linux/

	\config{LCD\_TEXT\_WIDGET\_x\_PREFIX}{LCD\_TEXT\_WIDGET\_x\_PREFIX}{LCDTEXTWIDGETxPREFIX}
		Der hier angegebene String wird als Prefix vor den aktuellen Wert 
		geschrieben. Diese Variable ist optional.
		
	\config{LCD\_TEXT\_WIDGET\_x\_POSTFIX}{LCD\_TEXT\_WIDGET\_x\_POSTFIX}{LCDTEXTWIDGETxPOSTFIX}
		Der hier angegebene String wird nach dem aktuellen Wert geschrieben. 
		Diese Variable ist optional.
		
	\config{LCD\_TEXT\_WIDGET\_x\_WIDTH}{LCD\_TEXT\_WIDGET\_x\_WIDTH}{LCDTEXTWIDGETxWIDTH}
		L"ange des gesamten Textelements (inklusive Prefix und Postfix!)

		G"ultige Werte: Zahl
		
	\config{LCD\_TEXT\_WIDGET\_x\_PRECISION}{LCD\_TEXT\_WIDGET\_x\_PRECISION}{LCDTEXTWIDGETxPRECISION}
		Maximalwert der Anzahl der Kommastellen

		Wenn der 'precision'-Parameter weggelassen wird, behandelt LCD4Linux das
		Ergebnis des Ausdrucks als Zeichenkette und zeigt sie auch so an.

		Wenn eine Pr"azision angegeben wird, wird der Wert in eine 
		Gleitkommazahl umgewandelt und mit der angegebenen Anzahl von 
		Kommastellen ausgegeben. Wenn die Zahl nicht in den verf"ugbaren Platz
		passt (welcher mit 'width' - length(prefix) - length(postfix) angegeben
		wird), werden Kommastellen von rechts abgeschnitten, bis genug Platz 
		vorhanden ist. Wenn die letzte Kommastelle abgetrennt wurde, wird auch 
		der Dezimalpunkt weggelassen. Wenn der Wert nun immer noch nicht passt,
		wird er durch '*' (Asterisk) ersetzt.

		Es besteht also ein grosser Unterschied zwischen 'precision 0' und
		"uberhaupt keiner Pr"azision!

		G"ultige Werte: Zahl oder leer
		
	\config{LCD\_TEXT\_WIDGET\_x\_ALIGN}{LCD\_TEXT\_WIDGET\_x\_ALIGN}{LCDTEXTWIDGETxALIGN}
		Wenn der 'Align'-Parameter angegeben wird, wird nur der aktuelle Wert
		ausgerichtet. Das Prefix ist immer linksb"undig und das Postfix immer
		rechtsb"undig! Verwendet man eine Laufschrift ('Marquee'), so werden 
		Prefix, der aktuelle Wert und das Postfix einfach verkettet, und die 
		resultierende Zeichenkette wird zirkular angezeigt. Das heisst, alle
		entsprechend dem Wert aus LCD\_TEXT\_WIDGET\_x\_SPEED msec ein Zeichen 
		vorr"uckend.

		G"ultige Werte: 'Left' (Default), 'Center', 'Right' oder 'Marquee'.

	\config{LCD\_TEXT\_WIDGET\_x\_SPEED}{LCD\_TEXT\_WIDGET\_x\_SPEED}{LCDTEXTWIDGETxSPEED}
		Laufschrift-Scroll-Intervall (msec), Standard ist 500msec

		G"ultige Werte: Zahl
		
	\config{LCD\_TEXT\_WIDGET\_x\_UPDATE}{LCD\_TEXT\_WIDGET\_x\_UPDATE}{LCDTEXTWIDGETxUPDATE}
		Update-Intervall (msec), Standard ist 500msec.

		G"ultige Werte: Zahl
		
	\config{LCD\_BAR\_WIDGET\_N}{LCD\_BAR\_WIDGET\_N}{LCDBARWIDGETN}
		Definiert die Anzahl der zu konfigurierenden Balkenwidgets.

		LCD4Linux versucht, Balken so gut wie m"oglich zu behandeln. Es 
		unterst"utzt vertikale, horizontale und gesplittete Balken (zwei 
		unabh"angige Balken in einer Zeile), alle Balkentypen k"onnen 
		gleichzeitig verwendet werden.

		G"ultige Werte: Zahl
		
	\config{LCD\_BAR\_WIDGET\_x\_NAME}{LCD\_BAR\_WIDGET\_x\_NAME}{LCDBARWIDGETxNAME}
		Ein eindeutiger Name f"ur dieses Widget. Er darf keine Leerzeichen 
		enthalten.

		G"ultige Werte: String ohne Leerzeichen
		
	\config{LCD\_BAR\_WIDGET\_x\_ACTIVE}{LCD\_BAR\_WIDGET\_x\_ACTIVE}{LCDBARWIDGETxACTIVE}
		De-/Aktivieren dieses Widgets.

		G"ultige Werte: yes/no
		
	\config{LCD\_BAR\_WIDGET\_x\_EXP}{LCD\_BAR\_WIDGET\_x\_EXP}{LCDBARWIDGETxEXP}
		Was soll dargestellt werden? Dieser Ausdruck wird ausgewertet und das 
		Ergebnis angezeigt. Siehe dazu http://ssl.bulix.org/projects/lcd4linux/
		
	\config{LCD\_BAR\_WIDGET\_x\_EXP2}{LCD\_BAR\_WIDGET\_x\_EXP2}{LCDBARWIDGETxEXP2}
		Falls ein Doppelbalken dargestellt werden soll, wird mit dieser 
		Variablen der zweite Balken bestimmt. Siehe LCD\_BAR\_WIDGET\_x\_EXP.
		
	\config{LCD\_BAR\_WIDGET\_x\_LENGTH}{LCD\_BAR\_WIDGET\_x\_LENGTH}{LCDBARWIDGETxLENGTH}
		L"ange des gesamten Balkenelements

		G"ultige Werte: Zahl
		
	\config{LCD\_BAR\_WIDGET\_x\_MIN}{LCD\_BAR\_WIDGET\_x\_MIN}{LCDBARWIDGETxMIN}
		scale: Wert mit dem der Balken startet

		Gew"ohnlich skalieren Balken automatisch. Das heisst sie starten bei 
		einem Wert von 0 (Null), merken sich den Maximalwert und skalieren 
		automatisch bis zum Maximum. Manchmal ist aber ein anderes Verhalten 
		erw"unscht (z.B. bei Temperaturen). In diesem Fall muss nur der Minimal-
		und der Maximalwert mit den Parametern 'min' bzw. 'max' angegeben 
		werden.

		G"ultige Werte: Zahl oder leer
		
	\config{LCD\_BAR\_WIDGET\_x\_MAX}{LCD\_BAR\_WIDGET\_x\_MAX}{LCDBARWIDGETxMAX}
		scale: Wert mit dem der Balken endet

		Gew"ohnlich skalieren Balken automatisch. Das heisst sie starten bei 
		einem Wert von 0 (Null), merken sich den Maximalwert und skalieren 
		automatisch bis zum Maximum. Manchmal ist aber ein anderes Verhalten 
		erw"unscht (z.B. bei Temperaturen). In diesem Fall muss nur der Minimal-
		und der Maximalwert mit den Parametern 'min' bzw. 'max' angegeben 
		werden.

		G"ultige Werte: Zahl oder leer
		
	\config{LCD\_BAR\_WIDGET\_x\_DIRECTION}{LCD\_BAR\_WIDGET\_x\_DIRECTION}{LCDBARWIDGETxDIRECTION}
		M"ogliche Werte:
			- 'North' (von unten nach oben)
			- 'East' (von links nach rechts, das ist der Standard)
			- 'South' (south: von oben nach unten)
			- 'West' (von rechts nach links)

	\config{LCD\_BAR\_WIDGET\_x\_STYLE}{LCD\_BAR\_WIDGET\_x\_STYLE}{LCDBARWIDGETxSTYLE}
		Default Darstellung oder 'Hollow' (with a frame).

		G"ultige Werte: leer oder 'Hollow'
		
	\config{LCD\_BAR\_WIDGET\_x\_UPDATE}{LCD\_BAR\_WIDGET\_x\_UPDATE}{LCDBARWIDGETxUPDATE}
		Update-Intervall (msec), Standard ist 500msec.

		G"ultige Werte: Zahl
		
	\config{LCD\_ICON\_WIDGET\_N}{LCD\_ICON\_WIDGET\_N}{LCDICONWIDGETN}
		Definiert die Anzahl der zu konfigurierenden Iconwidgets.

		Das Icon-Widget wird verwendet, um benutzerdefinierte Zeichen ('Icons')
		anzuzeigen. Icons k"onnen nur verwendet werden, wenn das Display
		benutzerdefinierte Zeichen unterst"utzt (was die meisten Displays tun),
		oder das Display ein grafisches Display ist (z.B. T6963).

		Wenn aus irgendeinem Grund das Icon nicht angezeigt werden kann, wird
		an dessen Stelle ein Asterisk ('*') angezeigt.

		G"ultige Werte: Zahl
		
	\config{LCD\_ICON\_WIDGET\_x\_NAME}{LCD\_ICON\_WIDGET\_x\_NAME}{LCDICONWIDGETxNAME}
		Ein eindeutiger Name f"ur dieses Widget. Er darf keine Leerzeichen 
		enthalten.

		G"ultige Werte: String ohne Leerzeichen
		
	\config{LCD\_ICON\_WIDGET\_x\_ACTIVE}{LCD\_ICON\_WIDGET\_x\_ACTIVE}{LCDICONWIDGETxACTIVE}
		De-/Aktivieren dieses Widgets.

		G"ultige Werte: yes/no
		
	\config{LCD\_ICON\_WIDGET\_x\_ROW1-8}{LCD\_ICON\_WIDGET\_x\_ROW1-8}{LCDICONWIDGETxROW1-8}
		Ein Icon hat die Gr"o"se wie ein Zeichen - also 5 Spalten und 8 Zeilen. 
		Das Icon wird durch zwei Zeichen definiert:

		- '.' (Punkt) f"ur Pixel nicht gesetzt
		- '*' (Stern) f"ur Pixel gesetzt

		Um animierte Icons zu erzeugen, werden die weiteren Bilder einfach 
		mittels dem Pipe-Zeichen '|' aneinandergef"ugt.
		
	\config{LCD\_ICON\_WIDGET\_x\_VISIBLE}{LCD\_ICON\_WIDGET\_x\_VISIBLE}{LCDICONWIDGETxVISIBLE}
		Ausdruck, welcher die Sichtbarkeit "uberwacht (f"ur Blink-Effekte)
		
	\config{LCD\_ICON\_WIDGET\_x\_SPEED}{LCD\_ICON\_WIDGET\_x\_SPEED}{LCDICONWIDGETxSPEED}
		Update-Intervall (msec) bei animierten Icons, Standard ist 500msec.

		G"ultige Werte: Zahl
\end{description}

\section{Die Anschlussbelegung eines LCD-Moduls am Parallelport}

\marklabel{belegung}{\subsection{HD44780 kompatible Displays}}

\paragraph{fli4l/eisfair Verdrahtung}
Wenn \jumplabel{LCD\_WIRING}{LCDWIRING}='fli4l' gesetzt wurde, muss das Display
wie folgt angeschlossen werden.

\begin{verbatim}
   13 ____________________________ 1 Draufsicht auf den
      \ o o o o o o o o o o o o o/   Parallelport, Rueck-
       \ o o o o o o o o o o o o/    seite PC
     25 ------------------------ 14
\end{verbatim}


 Der Anschluss eines LCD-Moduls an den Router wird folgenderma"sen aufgetrennt:


\begin{verbatim}

 Parallelport-Pin   Beschreibung   LCD-Modul    LCD-Pin
         18-25      GND                             --|
                    GND                          1  --|- Bruecke
                    R/W                          5  --|
                    +5V                          2
             1      STROBE         EN(1)         6
             2      D0             D0            7
             3      D1             D1            8
             4      D2             D2            9
             5      D3             D3           10
             6      D4             D4           11
             7      D5             D5           12
             8      D6             D6           13
             9      D7             D7           14
            14      Autofeed       RS            4

  Bei Display mit Hintergrundbeleuchtung:
                                   HG+          15 (mit Vorwiderstand ca. 20Ohm)
                                   GND          16
\end{verbatim}

  Handelt es sich um ein 4x40er Display, muss EN(2) des Displays mit SELECT~IN
  (Pin 17) des Parallel-Ports verbunden werden.

  An Pin 3 kann der Abgriff eines >= 20kOhm Potis zwischen +5V und GND
  geschaltet werden. Damit kann der Kontrast des Displays reguliert werden.
  Bei meinem Display (Conrad) liegt Pin 3 direkt an Masse und man kann
  alles einwandfrei erkennen.

\begin{verbatim}

  +5V ---+
         /
         \ <--+
         /    |
         \    |
  GND ---+    +--- VL (Pin 3 - driver input)
\end{verbatim}

\paragraph{winamp Verdrahtung}
Ist hingegen \jumplabel{LCD\_WIRING}{LCDWIRING}='winamp' gesetzt worden, ergeben
sich die folgenden "Anderungen zur anderen Verdrahtung:
\begin{itemize}
\item RS des LCD-Moduls wird mit INIT des Parallel-Port (Pin 16) verbunden
\item R/W wird mit Autofeed (Pin 14) verbunden
\end{itemize}

\subsection{M50530 kompatible Displays}
\begin{tabular}{lllll}
LCD-Pin & LCD-Modul & Paralellport-Pin & Beschreibung & Sonstiges \\ \vline
1 & Shield & & & GND \\
2 & DB0 & 2 & DB0 \\
3 & DB1 & 3 & DB1 \\
4 & DB2 & 4 & DB2 \\
5 & DB3 & 5 & DB3 \\
6 & DB4 & 6 & DB4 \\
7 & DB5 & 7 & DB5 \\
8 & DB6 & 8 & DB6 \\
9 & DB7 & 9 & DB7 \\
10 & ex & 1 & STROBE \\
11 & RW & & & GND \\
12 & IOC2 & 14 & AUTOFEED \\
13 & IOC1 & 17 & SELECT \\
14 & VFF & & & ~10V (Display Kontrast) \\
15 & 5V & & & 5V \\
16 & GND & 18-25 & GND & GND
\end{tabular}

\section{N"utzliche Hilfsskripte}
In diesem Abschnitt werden mitgelieferte Skripte vorgestellt, um die
Anzeigem"oglichkeiten von lcd4linux zu erweitern. Diese Skripte k"onnen mit dem
exec-Plugin angesprochen werden. Das exec-Plugin erwartet zwei Parameter: Das
auszuf"uhrende Kommando und das Intervall, mit welchem dieses Kommando 
ausgef"uhrt werden soll.

\subsection{hd.sh}
Im Verzeichnis /usr/local/bin befindet sich ein Skript hd.sh, welches die
Ausgabe von df geeignet auswertet und aufbereitet. Das Skript erwartet zwei
Parameter:
\begin{enumerate}
\item Die Partition - z.B. hda1
\item Die Info, die ausgegeben werden soll. M"ogliche Werte sind:
\begin{itemize}
        \item f: freier Speicher
        \item u: belegter Speicher
        \item s: Partitiongr"o"se
        \item m: Mountpoint
        \item p: Prozentangabe des belegten Speichers
\end{itemize}
\end{enumerate}

Es ist zu beachten, dass die Angabe der Partition in der Form erfolgt, wie diese
ab dem Verzeichnis /dev/ aufgel"ost wird. Bei eisfair-2 wird bspw. die 
Partition /data wie folgt eingebunden:

\begin{verbatim}
eis2 # df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/mapper/vg-data   455G  130G  303G  30% /data
\end{verbatim}

Um den verf"ugbaren Plattenplatz dieser Partition abzufragen, muss der Aufruf 
von hd.sh im entsprechenden Feld LCD\_TEXT\_WIDGET\_x\_EXP wie folgt konfiguriert 
werden:

\begin{verbatim}
exec('hd.sh mapper/vg-data f', 60000)
\end{verbatim}

Damit wird alle 60s der verf"ugbare Plattenplatz aktualisiert.


\subsection{mpd2lcd}
Stammt von Alexander Dahl.

Beim Aufruf verlangt das Skript drei Parameter: als erstes, welche Info
erw"unscht ist ('t' f"ur title oder 'a' f"ur artist), dann die L"ange der
m"oglichen Zeile und als drittes 'l' f"ur linksb"undig oder 'z' f"ur zentriert
Bei mehr, weniger oder falschen Parametern wird Fehlermeldung zur"uckgegeben.
Sonst kommt eben Title oder Artist auf die L"ange formatiert zur"uck.

Beispiel f"ur zentrierte Ausgabe des Titels auf eine L"ange von 24 Zeichen:\\
mpd2lcd t 24 z
