0.4.3 -> 0.5 merging

This commit is contained in:
reenoo
2002-05-28 12:29:44 +00:00
parent 09d913ca26
commit 094be0cccc
22 changed files with 3616 additions and 727 deletions
+67 -47
View File
@@ -1,21 +1,24 @@
.TH LCDd 8 "9 September 2001" LCDproc
.TH LCDd 8 "4 March 2002" LCDproc
.SH NAME
LCDd - LCDproc server daemon
.SH SYNOPSIS
.B LCDd
[\-\-help]
[\-\-type <\fIsize\fP>]
[\-\-driver <\fIdriver\fP> [\fIargs\fP] ]
[\-\-foreground \fI\fP]
[\-\-backlight <\fImode\fP>]
[\-\-serverinfo off]
[\-hfiws]
[\-c <\fIconfig\fP>]
[\-d <\fIdriver\fP>]
[\-a <\fIaddr\fP>]
[\-p <\fIport\fP>]
[\-u <\fIuser\fP>]
[\-w <\fItime\fP>]
[\-r <\fIlevel\fP>]
.SH DESCRIPTION
LCDd is the server portion of LCDproc which listens to a certain port (normally 13666) and displays information on an LCD display. It works with several types
and sizes of displays.
.PP
LCDd will attempt to open /dev/lcd by default and will error if this
device is not available. In most cases, it should be sufficient to
link /dev/lcd to the appropriate serial or parallel device.
As of version 0.4.3 of LCDproc most settings are configured through the LCDd configuration
file, which is normally /etc/LCDd.conf. Before running LCDd you should carefully read through
that file and modify everything neccessary according to your needs. Otherwise you might encounter
LCDd not running properly on your system.
.PP
To make full use of LCDd, a client such as lcdproc(1) is required.
.SH OPTIONS
@@ -23,41 +26,52 @@ Available
.I LCDd
options are:
.TP 8
.B \-h, \-\-help
.B \-h
Display this help screen
.TP 8
.B \-t, \-\-type <size>
select an LCD size (20x4, 16x2, etc...)
.B \-c <config>
Use a configuration file other than /etc/LCDd.conf
.TP 8
.B \-d, \-\-driver <\fIdriver\fP> [\fIargs\fP]
Adds (another) driver to use to display information. Any \fIargs\fP specified will be
passed to the chosen driver for initialization.
.B \-d <driver>
Add a driver to use (output only to first)
.TP 8
.B \-f, \-\-foreground
Run in the foreground (no daemon)
.B \-f
Run in the foreground
.TP 8
.B \-b\fP,\fB \-\--backlight \fI<mode>\fP
Set backlight mode (on, off, open)
.B \-i
Disable showing of the main LCDproc server screen
.TP 8
.B \-i, \-\-serverinfo off
Set the server screen to low priority
.PP
Help on each driver's parameters are obtained upon request:
"LCDd -d driver --help"
.B \-w <waittime>
Time to pause at each screen (in seconds)
.TP 8
.B \-a <addr>
Network IP address to bind to
.TP 8
.B \-p <port>
Network port to listen for connections on
.TP 8
.B \-u <user>
User to run as
.TP 8
.B \-s
Output messages to syslog
.TP 8
.B \-r <level>
Report level (default=2)
.SS
Supported Drivers
Supported display drivers include:
Currently supported display drivers include:
.TP
.B CFontz
.B CFontz (or CrystalFontz)
CrystalFontz LCD displays
.TP
.B curses
.B curses (or ncurses)
Standard video display using the ncurses library
.TP
.B HD44780
Hitachi HD44780 LCD displays
.TP
.B BayRad
.B BayRAD
EMAC BayRad displays
.TP
.B irmanin
@@ -72,14 +86,17 @@ Wirz SLI driver (unknown)
.B joy
Joystick driver (input)
.TP
.B MtxOrb
.B MtxOrb (or MatrixOrbital)
Matrix Orbital displays (not Matrix Orbital GLK displays)
.TP
.B glk
Matrix Orbital GLK graphical LCD displays
.TP
.B LB216
LB216 LCD display
.TP
.B glk
Matrix Orbital GLK graphical LCD displays
.B lcdm001 (or LCDM001)
kernelconcepts.de 20x4 serial LCD displays
.TP
.B text
Standard "hard-copy" text display
@@ -88,12 +105,13 @@ Standard "hard-copy" text display
Undocumented debug driver
.PP
Multiple drivers can be used simultaneously; thus, for example, a Matrix Orbital display (MtxOrb driver)
can be combined with the an infrared driver (irmanin driver).
can be combined with an infrared driver (irmanin driver).
.SH INVOCATION
.TP
LCDd -d MtxOrb "--device /dev/lcd --contrast 200" -d joy
Start LCDd with the Matrix Orbital driver and the Joystick input driver,
with the /dev/lcd device and a contrast value of 200.
LCDd -d MtxOrb -d joy
As of version 0.4.3, driver parameters are read from a configuration file (default location /etc/LCDd.conf) rather than being passed on the command line as arguments.
The invocation example above will start LCDd with the Matrix Orbital driver and the Joystick input driver,
and attempt to load the driver parameters from the default configuration file.
.SH SERVER PROTOCOL
There is a basic sequence:
.TP 8
@@ -273,7 +291,7 @@ frames per movement; a negative number indicates movements per frame.
left top right bottom wid hgt dir speed
.sp
Frames define a visible "box" on screen,
from the (\fIleft\fR, \fItop\fR) corner to the
>from the (\fIleft\fR, \fItop\fR) corner to the
(\fIright\fR, \fIbottom\fR) corner. The actual data may be bigger,
and is defined as \fIwid\fR (width) by \fIhgt\fR (height); if it is
bigger, then the frame will scroll in the direction (\fIdir\fR)
@@ -284,23 +302,25 @@ check the order of the options and the quoting involved. Some combinations
of options will be misread and thus fail.
.PP
Try using the -d option last.
.SH FILES
.na
.nf
\fB/etc/LCDd.conf\fR, LCDd default configuration file
.Sh SEE ALSO
.Xr lcdproc 1
.SH AUTHOR
LCDd was written by William Ferrell (choadster@earthlink.net) and Scott Scriv
LCDd was originally written by William Ferrell (wwf@splatwerks.org) and Scott Scriv
en (scriven@cs.colostate.edu).
Since that time various people have contributed to LCDproc.
The newest version of LCDd should be available from here as part of the lcdproc package:
http://lcdproc.omnipotent.net/
.SH LEGAL STUFF
The lcdproc package is released as "WorksForMe-Ware". In other words, it is free, kinda nea
t, and we don't guarantee that it will do anything in particular on any machine
except the ones it was developed on.
The lcdproc package is released as "WorksForMe-Ware". In other words, it is free, kinda neat, and we don't guarantee that it will do anything in particular on any machine except the ones it was developed on.
.PP
It is technically released under the GNU GPL license (you should have received t
he file, "COPYING", with LCDproc) (also, look on http://www.fsf.org/ for more in
formation), so you can distribute and use it for free -- but you must make the s
ource code freely available to anyone who wants it.
It is technically released under the GNU GPL license (you should have received the file, "COPYING", with LCDproc) (also, look on http://www.fsf.org/ for more information), so you can distribute and use it for free -- but you must make the source code freely available to anyone who wants it.
.PP
For any sort of real legal information, read the GNU GPL (GNU General Public Lic
ense). It's worth reading.
For any sort of real legal information, read the GNU GPL (GNU General Public License). It's worth reading.
+2 -1
View File
@@ -1,2 +1,3 @@
man_MANS = lcdproc.1 LCDd.8
EXTRA_DIST = README.dg README.dg2 hd44780_howto.txt lcdproc.sgml menustuff.txt netstuff.txt lcdproc.1 LCDd.8
SUBDIRS = lcdproc-user
EXTRA_DIST = README.dg README.dg2 menustuff.txt netstuff.txt lcdproc.1 LCDd.8
+2
View File
@@ -0,0 +1,2 @@
SUBDIRS = drivers
EXTRA_DIST = bookinfo.docbook configuration.docbook contact.docbook drivers.docbook how-to-obtain.docbook installation.docbook introduction.docbook lcdproc-user.docbook license.docbook README.docbook running.docbook
+14
View File
@@ -0,0 +1,14 @@
README.docbook
You can generate the documentation of LCDproc using
the Docbook utilities.
$ docbook2html lcdproc-user.docbook
should generate ist as HTML.
On my box (Mdk 8.1) I have to run
$ docbook2html -c /etc/sgml/catalog lcdproc-user.docbook
(-c defines the location of the SGML catalog)
+70
View File
@@ -0,0 +1,70 @@
<bookinfo>
<title>LCDproc User's Guide</title>
<subtitle>The Ultimate Guide to LCDproc 0.4.3</subtitle>
<authorgroup>
<author>
<firstname>Rene</firstname>
<surname>Wagner</surname>
<affiliation><address><email>reenoo@gmx.de</email></address></affiliation>
</author>
<author>
<firstname>Guillaume</firstname>
<surname>Filion</surname>
<affiliation><address><email>gfk@logidac.com</email></address></affiliation>
</author>
<author>
<firstname>William W.</firstname>
<surname>Ferrell</surname>
<affiliation><address><email>wwf@splatwerks.org</email></address></affiliation>
</author>
</authorgroup>
<date>2002-03-01</date>
<releaseinfo>0.0.1</releaseinfo>
<abstract>
<para>
This document is a guide to LCDproc written for users. It covers LCDproc 0.4.3 ONLY.
Some things may be valid for 0.5 as well, but a lot has changed since 0.4.1 and a lot
will change for 0.5.
</para>
</abstract>
<copyright>
<year>2002</year>
<holder>Rene Wagner</holder>
</copyright>
<copyright>
<year>2002</year>
<holder>Guillaume Filion</holder>
</copyright>
<copyright>
<year>1999</year>
<holder>William W. Ferrell</holder>
</copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version
1.1 or any later version published by the Free Software Foundation; with
no Invariant Sections, with no Front-Cover texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".
</para>
</legalnotice>
<keywordset>
<keyword>documentation</keyword>
<keyword>LCDproc</keyword>
<keyword>0.4.3</keyword>
<keyword>user's guide</keyword>
</keywordset>
</bookinfo>
+428
View File
@@ -0,0 +1,428 @@
<chapter id="configuration">
<title>LCDproc Configuration</title>
<sect1 id="configure-lcdd">
<title>Configure LCDd</title>
<para>
As mentioned in the <link linkend=introduction>introduction</link>
LCDd, the LCDproc server, now (with version 0.4.3 of LCDproc) has its
own configuration file, which is normally <filename>/etc/LCDd.conf</filename>.
</para>
<note>
<para>
If you have not installed LCDproc from the sources the configuration
file might have a different location. You should find it when making
your system's package manager list all the files in the LCDproc package.
</para>
</note>
<para>
The format of the <filename>/etc/LCDd.conf</filename> is ini-file-like.
</para>
<para>
It is divided into sections that start at
markers that look like [section]. Comments are all line-based comments,
and are lines that start with '#' or ';'.
</para>
<para>
The server has a 'central' section named [server]. Further each driver
has a section which defines how the driver acts. Those sections start with
[drivername].
</para>
<para>
<anchor id=which-driver>The drivers are activated by specifiying them in a driver= line in the
server section, like:
</para>
<example>
<title><filename>LCDd.conf</filename>: Specify which driver to use</title>
<programlisting>
Driver=curses
</programlisting>
</example>
<para>
This tells LCDd to use the curses driver. The first driver specified here
that is capable of output functionality will be used as 'the' output driver.
All extra drivers can only serve as input.
The default driver to use is curses.
</para>
<warning>
<para>
If LCDd is started automatically by an init-script using the curses driver
will lock <filename>/dev/tty1</filename>! So, be careful about what you are
doing here.
</para>
</warning>
<para>
The drivers can read their own options from the config file, but most of
them don't do this yet. They expect 'command-line'-format parameters that
were previously placed on the command line. These parameters can be
given to the driver in the following way:
</para>
<example>
<title><filename>LCDd.conf</filename>: Compatibility mode for drivers written for 0.4.1</title>
<programlisting>
Arguments="place arguments here"
</programlisting>
</example>
<para>
The arguments between the quotes are passed to the driver.
As said before these are the same arguments that would have
been passed to the driver using the old command line format of
</para>
<para>
<command>LCDd -d driver "driverargs"</command>
</para>
<note>
<para>
The -d option still works, but does not allow driverargs any more.
</para>
<para>
If -d is specified on the command line, the Driver= options in the
config file are ignored.
</para>
</note>
<sect2 id="server-section">
<title><filename>LCDd.conf</filename>: The [server] Section</title>
<para>
The [server] section of the <filename>LCDd.conf</filename> contains the
settings for the LCDproc server <application>LCDd</application>.
</para>
<variablelist>
<varlistentry>
<term>Driver=</term>
<listitem>
<para>
Tells the server which driver(s) to use. See
<link linkend=which-driver>above</link> for details
</para>
<note>
<para>
The default setting is Driver=none which makes the server exit right
after the start. This is neccessary to avoid trouble with package installations.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>Bind=</term>
<listitem>
<para>
Tells the server to bind to the given interface. Default to Bind=127.0.0.1 which
is actually the safest variant.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Port=</term>
<listitem>
<para>
Tells the server to listen to this specified port; defaults to 13666.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ReportLevel=</term>
<listitem>
<para>
Sets the reporting level; defaults to 2 (warnings and errors only).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ReportToSyslog=</term>
<listitem>
<para>
Should we report to syslog instead of stderr ? Defaults to no.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>WaitTime=
</term>
<listitem>
<para>
Sets the default time in seconds to display a screen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>User=
</term>
<listitem>
<para>
User to run as. LCDd will drop its root privileges,
if any, and run as this user instead. Defaults to User=nobody.
</para>
<note>
<para>
If you want to use the server menu, to shutdown or reboot your system,
you will have to set this to root. Otherwise LCDd does not have the
privileges to run commands like <command>init 6</command>.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>ServerScreen=
</term>
<listitem>
<para>
Enables the server screen even when other screens are active. Defaults to
no.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Foreground=</term>
<listitem>
<para>
The server will stay in the foreground if set to true.
Otherwise the server will fork to background and report
to syslog. Defaults to yes.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="input-section">
<title><filename>LCDd.conf</filename>: The [input] Section</title>
<para>
The [input] section enables you to set some general ("global")
options related to the way <application>LCDd</application> handles
input "events".
</para>
<table>
<title>The Standard LCDd Input Keys</title>
<tgroup cols="3">
<thead>
<row>
<entry>Keyname</entry>
<entry>Function</entry>
</row>
<row>
<entry></entry>
<entry>Normal context</entry>
<entry>Menu context</entry>
</row>
</thead>
<tbody>
<row>
<entry>PauseKey</entry>
<entry>Pause/Continue</entry>
<entry>Enter/select</entry>
</row>
<row>
<entry>BackKey</entry>
<entry>Back (Go to previous screen)</entry>
<entry>Up/Left</entry>
</row>
<row>
<entry>ForwardKey</entry>
<entry>Forward (Go to next screen)</entry>
<entry>Down/Right</entry>
</row>
<row>
<entry>MainMenuKey</entry>
<entry>Open main menu</entry>
<entry>Exit/Cancel</entry>
</row>
</tbody>
</tgroup>
</table>
<note>
<para>
The way input keys are handled will change completely in LCDproc 0.5.
</para>
</note>
<sect3 id="freekeyoptions">
<title><filename>LCDd.conf</filename>: [input] Section: The Free*Key Options</title>
<para>
The Free*Key Options are interesting for those users whose keypad (or other input source)
has got only four (or less) keys. In this case LCDd would normally use all those
keys to enable you to control the server menu and the other server functions (like
switching to the next screen). If these keys are used by a client to do anything
but noticing that the user has e.g. entered the menu or switched to another screen,
this will probably cause trouble, as one keypress has several effects at the same
time.
</para>
<para>
The Free*Key options enable you to influence this behaviour.
</para>
<variablelist>
<varlistentry>
<term>FreePauseKey=</term>
<listitem>
<para>
If set to yes, this prevents LCDd from handling the PauseKey itself.
Then a client can request the key 'A' and handle it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>FreeBackKey=</term>
<listitem>
<para>
If set to yes, this prevents LCDd from handling the BackKey itself.
Then a client can request the key 'B' and handle it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>FreeForwardKey=</term>
<listitem>
<para>
If set to yes, this prevents LCDd from handling the ForwardKey itself.
Then a client can request the key 'C' and handle it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>FreeMainMenuKey=</term>
<listitem>
<para>
If set to yes, this prevents LCDd from handling the MainMenuKey itself.
Then a client can request the key 'D' and handle it.
</para>
<tip>
<para>
Even if you "free" the above keys, you can still use the menu
provided you set FreeMainMenuKey to no.
</para>
</tip>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="drivers-section">
<title><filename>LCDd.conf</filename>: The Drivers Section</title>
<para>
As mentioned earlier, each driver has its own section in the
<filename>LCDd.conf</filename>.
</para>
<para>
The settings are more or less self-explanatory. So, read through the
section of your driver and change everything neccessary.
</para>
</sect2>
</sect1>
<sect1 id="init-scripts">
<title>The LCDproc Init Scripts</title>
<para>
The LCDproc distribution contains init scripts for RedHat- and Debian-based
GNU/Linux distributions. You can find them in the <filename>docs/</filename>
directory of the LCDproc sources.
</para>
<note>
<para>
The init scripts are generated using autoconf. So, again it is important that
you have run <command>./configure</command> with the correct options for your
system.
</para>
</note>
<para>
Refer to your system's manual on how to install the scripts.
</para>
<sect2 id="init-lcdd">
<title>init-LCDd</title>
<para>
The file <filename>scripts/init-LCDd.*</filename> is the init script for the
LCDproc server LCDd. It does not require modification.
</para>
</sect2>
<sect2 id="init-lcdproc">
<title>init-lcdproc</title>
<para>
The file <filename>scripts/init-lcdproc.*</filename> is the init script for the
LCDproc "main" client lcdproc. As lcdproc itself does not (yet) have a configuration file
you may want to modify the options the init script passes to lcdproc.
</para>
<note>
<para>
You can retrieve a listing of all options of lcdproc running <command>lcdproc --help</command>.
</para>
</note>
<para>
The lcdproc init script retrieves the options it will pass to lcdproc from the file
<filename>/etc/lcdproc.conf</filename> (<filename>scripts/lcdproc.conf</filename> in the
sources distribution).
</para>
<example>
<title><filename>lcdproc.conf</filename>: Modify the option passed to lcdproc</title>
<programlisting>
# /etc/lcdproc.conf
#
# Configuration file of the main LCDproc client "lcdproc"
# NOTE: The configuration file of LCDd is /etc/LCDd.conf
# Set SCREENS to the screens you want lcdproc to send to LCDd
# lcdproc --help will give you a list of the screens available
SCREENS="C X"
</programlisting>
</example>
<para>
In this example lcdproc will only send information on the CPU usage [C] and system load [X] to the server.
</para>
</sect2>
</sect1>
</chapter>
+100
View File
@@ -0,0 +1,100 @@
<chapter id="contact">
<title>Contact Us</title>
<sect1 id="errata">
<title>Errata</title>
<para>
Of course LCDproc is not perfect (yet). We do our very best
to improve it, but in some cases we are very much restricted
in our efforts.
</para>
<para>
The main reason for that is the fact that we do NOT have all
the hardware people have writte. drivers for. Unfortunately
some developers have kind of vanished and don't react to mails
from the mailing list any more.
</para>
<para>
So, as far as drivers are concerned we rely on YOU as testers.
We have developed elaborate "coding in the dark" skills over the
time. E.g. the CFontz driver has been updated and ported to 0.4.3
without the developers having the hardware.
</para>
</sect1>
<sect1 id="mailing-list">
<title>The LCDproc Mailing List</title>
<para>
We are a bit lazy about the bug-tracking and whatever stuff
on SourceForge. So, please contact us directly through the mailing
list.
</para>
<para>
For details on how to subscribe to the list see
<ulink url="http://lcdproc.omnipotent.net/mail.php3">http://lcdproc.omnipotent.net/mail.php3</ulink>.
</para>
<para>
We like people to subscribe to the list with their real names.
Of course we cannot and do not want to force you to do so.
Anyway, we need to know your name, if you want to contribute code
to LCDproc (legal issues of copyrights).
</para>
</sect1>
<sect1 id="reporting-bugs">
<title>Reporting Bugs</title>
<para>
Possibly you will find a bug in the LCDproc distribution.
Before reporting this to the mailing list, please respect the following:
</para>
<itemizedlist>
<listitem><para>Your system should be more or less up to date. This does not mean
that you have to update from GNU/Linux kernel 2.0.x to 2.2.x or from 2.2.x to
2.4.x. But we would like to make sure that your problem is not related to a
known bug in the kernel or maybe your compiler.
</para></listitem>
<listitem><para>Especially LCDd might need certain privileges to execute
a command. Make sure LCDd HAS the rights to do so.</para></listitem>
<listitem>
<para>
When experiencing problems with LCDd, make sure that your hardware is OK.
E.g. you should make sure that the wireing for your (in this case most
likely parallel) device is correct.
</para>
</listitem>
<listitem><para>Make sure that you use the correct speed settings for your device.
Incorrect speed settings (baud rate) are most likely to produce garbage
scrolling on your display.
Refer to the specifications of your device. If your device needs a speed
setting that is not supported by LCDd send us a mail.</para></listitem>
<listitem><para>Make sure that you have modified the configuration file according
to your needs and that LCDd actually uses the configuration file. I.e. you might
have to run LCDd with the -c <link linkend="lcdd-commandline-options">option</link>
</para></listitem>
</itemizedlist>
<para>
Anyway, no question is too stupid to ask ;) Feel free to ask whatever you want.
Unfortunately replying to mails takes time as well (a damn lot of time). So, if
you want LCDproc to develop faster, please try to solve a problem yourself first.
</para>
<para>
BUT if you have actually FOUND A BUG we will be quite happy if you let us know.
We NEED YOU as testers and appreciate any feedback.
</para>
</sect1>
</chapter>
+15
View File
@@ -0,0 +1,15 @@
<chapter id="drivers">
<title>LCDproc Drivers</title>
<para>
This chapter contains the documentation of each LCDproc driver,
which may include the installation process of the hardware as
well as the configuration of LCDd.
</para>
&hd44780;
&ppttrouble;
&mtxorb;
&lircin;
</chapter>
+1
View File
@@ -0,0 +1 @@
EXTRA_DIST = hd44780.docbook lircin.docbook mtxorb.docbook ppttrouble.docbook
File diff suppressed because it is too large Load Diff
+172
View File
@@ -0,0 +1,172 @@
<sect1 id="lircin">
<title>The lircin Driver</title>
<para>
The lircin driver enables you to use any IR remote control
that works with LIRC to control the LCDproc server
(<application>LCDd</application>)
and/or clients that can handle input.
</para>
<para>
Of course you need a working LIRC setup. Refer to
<ulink url="http://www.lirc.org">http://www.lirc.org</ulink> for more
information on LIRC itself.
</para>
<sect2 id="lirc-install">
<title>Checking Your LIRC Setup</title>
<para>
Basically all you need is a running <application>lircd</application>.
And of course you have to start <application>lircd</application>
as root.
</para>
<para>
Also, make sure that the permission of <filename>/dev/lircd</filename>
are correct.
</para>
</sect2>
<sect2 id="lircin-configure">
<title>Build LCDd with the lircin Driver</title>
<para>
You need to add lircin to the --enable-drivers=... list.
</para>
<para>
Then simply run make.
</para>
</sect2>
<sect2 id="lircin-config">
<title>Configure LCDd to Use the lircin Driver</title>
<para>
First of all you need to activate the driver by adding a Driver=lircin line
to your <filename>LCDd.conf</filename>
</para>
<example>
<title><filename>LCDd.conf</filename>: Activate the lircin driver</title>
<programlisting>
Driver=mtxorb
Driver=lircin
</programlisting>
</example>
<para>
This activates the mtxorb driver as the output driver and the lirc driver
as the input driver.
</para>
<para>
Then you have to modify the [lircin] section of your
<filename>LCDd.conf</filename>.
</para>
<sect3 id="lircin-section">
<title><filename>LCDd.conf</filename>: The [lircin] Section</title>
<para>
The [lircin] section of the <filename>LCDd.conf</filename> contains the
settings for the lircin LCDproc driver.
</para>
<variablelist>
<varlistentry>
<term>lircrc=</term>
<listitem>
<para>
<anchor id=which-lircrc>Normally all LIRC clients scan the file <filename>~/.lircrc</filename>.
However, you might want to have a separate file to configure the
LCDproc lircin driver only.
</para>
<para>
This option enables you to specify the file you want the lircin
driver to scan.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>prog=</term>
<listitem>
<para>
All LIRC keys are assigned to a program using the prog=... option
in the <filename>~/.lircrc</filename> (or the file you have specified
with lircrc=...).
</para>
<para>
The prog=... line must be the same as in your <filename>~/.lircrc</filename>
(or the file you have specified with lircrc=...).
</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="lircrc">
<title>Modify Your <filename>~/.lircrc</filename></title>
<para>
As mentioned above you can either modify the <filename>~/.lircrc</filename>
or use a separate file for the lircin LCDproc driver (See
<link linkend=which-lircrc>above</link> for details).
</para>
<para>
No matter which file you use, you have to add at least the following
lines to the file:
</para>
<example>
<title><filename>~/.lircrc</filename>: Specify the keys for the lircin driver</title>
<programlisting>
begin
prog = lcdd
button = 2
config = A
end
begin
prog = lcdd
button = 4
config = B
end
begin
prog = lcdd
button = 6
config = C
end
begin
prog = lcdd
button = 8
config = D
end
</programlisting>
</example>
<para>
Which buttons you specify here depends on your RC and your LIRC configuration.
Anyways, config=A/B/C/D is neccessary to control the server menu of LCDd.
Of course you can define other keys. Those keys will not be handled by the
server but sent to a client. Refer to the documentation of the client you want
to use, to find out which keys are neccessary for that client.
</para>
</sect2>
</sect1>
+221
View File
@@ -0,0 +1,221 @@
<sect1 id="mtxorb">
<title>The Matrix Orbital Driver (MtxOrb)</title>
<para>
This section covers the installation process for the Matrix Orbital LCD
module intended for use with LCDproc.
</para>
<para>
We will examine the installation process of the hardware in
small steps, as it is vitally important to pay close attention to detail during
hardware installation to avoid damaging equipment.
</para>
<sect2>
<title>Matrix Orbital LCD Modules</title>
<para>
LCDproc was born out of original tinkering by William Ferrell with
one of these LCD modules. Their ease of installation and use (as well
as the amazing amount of patience demonstrated by the folks at
Matrix Orbital whilst William figured things out) meant one less thing
to worry about during the early stages of LCDproc's life.
</para>
<para>
These 20x4 alphanumeric modules are connected via standard DB-9 cabling and
connectors. They draw either 5V or 12V, depending on the module purchased,
and are attached with a standard floppy cable connector (with a slightly
modified wire configuration).
</para>
<para>
Once connected, using them is a breeze. They can operate at any number of
different baud rates and serial configurations, but normally they run at
19,200 baud, 8-N-1, making them quite quick. Sending ASCII to the module
will make it simply display that text at its current cursor position. The
module has a built-in BIOS that recognizes commands (sent by transmitting a
single-byte "marker" signifying that a command is on the way, followed by
the single-byte command character itself along with any parameters, if needed)
allowing the programmer to clear the screen, position the cursor anywhere,
define custom characters (up to 8 at a time), draw bar graphs and large numbers,
change the LCD's contrast, and so on.
</para>
<para>
The BIOS included also implements line-wrapping (i.e. writing past the
twentieth character on the first row will automatically move the cursor
to the first character on the second row), and screen scrolling (i.e.
writing past the twentieth character on the fourth row causes the whole
screen to scroll up one row, clearing the fourth line and positioning the
cursor at the first character on that line).
</para>
<para>
These modules are fast. Using the auto-line-wrap feature and disabling
the auto-scrolling feature, the screen can be updated thirty times per
second if *every* character on the screen is changed. If updating less
than the whole screen, the LCD can update faster than can be seen by
the human eye. This, of course, more than meets LCDproc's needs.
</para>
</sect2>
<sect2>
<title>Matrix Orbital Hardware Installation</title>
<para>
Regardless of what specific type of hardware you intend to use with LCDproc,
installation is usually straightforward, and requires only a few steps. Regardless,
you must use caution while working inside your computer system or with any hardware
attachments.
</para>
<warning>
<para>
Installing new hardware inside a computer system can be dangerous to both
system components and the installer. Use caution whenever adding a component
to the inside of your system, altering a power cable, or physically mounting
a device inside a computer system.
</para>
<para>
When installing hardware inside a computer, make sure it's turned off and that
its power is disconnected. This is especially important when making changes to
power cables (as some LCD modules require).
</para>
</warning>
<sect3>
<title>Matrix Orbital LCD/VFD Module Installation</title>
<para>
The LCD and VFD modules from Matrix Orbital are relatively straightforward
to install. With a small, regular (flat-head) screwdriver, a spare floppy drive
power cable, and a bit of luck, installation will take less than an hour.
</para>
<para>
These installation instructions assume that you are installing the module into
a PC or PC-style system (one with AT- or ATX-compliant power cabling) and that
you have some idea of where you intend to permanently mount the module. For
mounting ideas and tips, refer to the section "Mounting" below.
</para>
<Tip>
<Title>Before you start</title>
<para>
Your Matrix Orbital LCD or VFD module should be clearly marked with an
indication of the module's power requirements. It should be either a 5 volt
or 12 volt unit. You should have this information available before proceeding.
</para>
</tip>
<sect4>
<title>Power Cable Modification</title>
<para>
The first step in installing the module is making the necessary modifications
to a floppy drive power cable in order to provide power to the module. The
modifications must be made based on the module's power requirements -- either
5V or 12V -- depending on which module you purchased.
</para>
<para>
A standard floppy drive power cable has a smaller connection than a "normal"
PC power connector. However, like a "normal" power connector, it has four
wires: one yellow, one red, and two black. The red wire provides +5V power, and
is "hot" or live when the system is powered up. The yellow wire provides +12V
power, and is also hot when the system is powered up. Both black wires are
ground.
[TODO: INCLUDE A FIGURE HERE SHOWING A "STANDARD" FLOPPY CONNECTOR]
</para>
<para>
One of the hot wires and one of the black wires will not be needed for your
module's power connection; they will be completely removed when the power cable
modification is complete.
</para>
<warning>
<para>
Do NOT make this modification to a power cable attached to a running
system! Electrocution resulting in personal injury and/or damage to the
system can result.
</para>
</warning>
<para>
Using a regular screwdriver, press down the small metal locking flap of one
of the two black wires on the small end of the cable, and pull the black wire
from the connector. Using a pair of needle-nose pliers, squeeze the other end
of the same black wire, and pull it out of the large end of the cable. This
black wire can be set aside; it will not be used for the module's power
connection. Either wire can be safely removed; you may safely remove either
wire.
[TODO: INCLUDE A FIGURE HERE SHOWING THIS PROCESS]
</para>
<para>
Next, using the same procedure, remove the unneeded hot wire. If your module
is 5V, you do not need the yellow (+12V) wire. Conversely, if your module is
12V, you do not need the red (+5V) wire. The removed wire can be set aside;
it will not be used for the module's power connection.
[TODO: INCLUDE A FIGURE HERE]
</para>
<para>
The floppy power connector should now have only two wires attached to it.
Leave the larger end alone from now on; these connections are correct (the
larger end connects to your system's power mains). Move the two remaining wires
to the outside connectors on the small end of the cable. Orientation does not
particularly matter here; the connector will fit on the module's receptacle
in either orientation.
[TODO: A FIGURE HERE]
</para>
<para>
You should now have a properly modified power connector. When physically
attaching this connector to the module, the black (ground) lead should be
connected to the pin labelled GND, while the colored (+5V/+12V) lead should
be connected to the pin labelled +5V/+12V.
</para>
<para>
Test the power connection before connecting the data line or mounting the
module. Connect the module to the power connector, and the connector to your
system's power mains. Turn the system on.
</para>
<caution>
<para>
If the module does not immediately display its initial BIOS screen and light
up its backlight (or light up the screen if a VFD module is being used),
<EMPHASIS>immediately</EMPHASIS> power down the system, disconnect the module
and connector, and double-check the modification before trying again. Do NOT
leave the system on if the module does not immediately respond; module or
system damage could result.
</para>
</caution>
<para>
When the LCD powers up and displays its initial BIOS screen, you've gotten the
power connection wired properly and can now properly mount the module and make
its final connections. Matrix Orbital Corporation sells a PC bay insert mount
for the 20x4 and 20x2 modules (LCDproc, however, only supports the 20x4 at
present). The inserts provide an easy means of mounting the LCD modules inside
a PC using one (for the 20x2) or two (for the 20x4) 5 1/4" bays.
</para>
<note>
<para>
Describing how to physically mount the module in a PC case is beyond the
scope of this document; LCDproc's website contains more detailed mounting
information and examples.
</para>
</note>
</sect4>
<sect4>
<title>Serial Connection</title>
<para>
The LCD module uses a standard DB9 serial connector. You can attach the module
to your system using a direct cable to the motherboard, or by removing one of
your system's serial ports from the back of the case, then connecting it to a
standard serial cable to the module.
</para>
<para>
While connecting the serial cable to the module, be sure to configure the
module's serial interface settings. Typically, setting the module to its fastest
setting (19,200 baud, 8-N-1) is recommended. The speed settings can
be configured from the config file <filename>/etc/LCDd.conf</filename>. If not specified in the config file,
the Matrix Orbital module driver in LCDproc default to use these settings.
</para>
</sect4>
</sect3>
</sect2>
<sect2 id="mtxorb-copy">
<title>Copyright</title>
<para>
This section was originally part of the lcdproc.sgml file by William W. Ferrell <email>wwf@splatwerks.org</email>
</para>
<para>
Slightly modified in order to include it in this document March 2002, Rene Wagner <email>reenoo@gmx.de</email>
</para>
</sect2>
</sect1>
@@ -0,0 +1,187 @@
<sect1 id="ppttrouble">
<title>Parallel Port Troubleshooting</title>
<para>
Unfortunately attaching an LCD module to a parallel port is not
trivial.
</para>
<para>
In most cases it requires soldering abilities and basic knowledge
of electronics.
</para>
<para>
The following hints might be helpful:
</para>
<sect2 id="ppt-check-wiring">
<title>Check The Wiring</title>
<para>
Wiring errors can easily be made. If you are unexperienced
with the soldering iron better have someone solder it for
you. Display modules are sensitive to electro static
discharges, so touch an earthed surface (computer case,
water pipes...) before you handle these.
</para>
</sect2>
<sect2 id="ppt-power">
<title>Power Source Unregulated / Noisy</title>
<para>
Make sure your power supply delivers steady 5 Volts with-
out noise or interruptions. The bare wall plug in trans-
former is not suitable, though you can make it stabilized
by adding an 7805 and a few capacitors.
Some noise induced in the supply lines my be tricky to
track, even if you have an oscilloscope.
</para>
</sect2>
<sect2 id="ppt-GND-lift">
<title>Ground Lift</title>
<para>
The power supply wires and especially the GND wires should
be a little thicker than the other wires. If GND is not
thick enough (or not existent, see 1) the resistance of the
wire may cause differing GND potentials in the circuit.
This may lead to strange display behaviour. It may also be
wise to solder a 100nF capacitor directly to the GND and
VDD pins of the display.
</para>
</sect2>
<sect2 id="ppt-latchup">
<title>Latchup</title>
<para>
Never let the supply voltage get much below the io signal
voltage. It may lead to a latchup condition which will
destroy the controller chip on the display.
</para>
</sect2>
<sect2 id="ppt-contrast">
<title>Contrast</title>
<para>
If you don't see anything on your display it may be that
your contrast voltage is set wrong. Turn your contrast
potentiometer all the way to the end connected to GND.
Contrast is highest then.
</para>
<note>
<title>Beware</title>
<para>
The module you got so ultra cheap may be an
enhanced temperature model which needs a negative
contrast voltage for sufficient contrast - see chapter
99 on how to make negative voltage.
</para>
</note>
</sect2>
<sect2 id="ppt-voltage">
<title>Parallel Port Voltage</title>
<para>
Many modern mainboards and especially notebooks will not
nearly output 5V for a logic H as the older parallel ports
did, because the operating voltage of computers is lower than
5V these days. I have measured voltages between 2.5V and 4V
for logic H, which is barely within specification of the
HD44780. If you account RCL of your cable, this may not be
enough and can cause unreliable operation.
</para>
</sect2>
<sect2 id="ppt-signal-rise-timing">
<title>Enable Signal Rise Time</title>
<para>
If you ever read the HD44780 datasheet you will notice that
somewhere in the 'signal timing' table is written: 'Enable
Signal Rise Time max. 20nS'. That means the Voltage on the
HD44780 pin called 'Enable' has to rise from 0 Volts to 5
Volts within 20 Nanoseconds and the other way round. They
should better print that in big fat red letters, because
most HD44780s are really picky about the enable signal rise
time.
</para>
<para>
That is a Problem: If you count together the bad driving
characteristics of the parallel port combined with the
capacitance of flat ribbon cable you may easily get an
order of magnitude slower rise time.
Therefore you should only use really short cable ( shorter
than 50cm) for connecting the display to the parallel port.
It may also be useful to use pull-up resistors on the display
module or a schmitt-trigger.
</para>
<note>
<para>
The rise time of a digital output can (usually) not be
altered by Software.
</para>
</note>
</sect2>
<sect2 id="ppt-emi">
<title>EMI</title>
<para>
The cable from the parallel port to the display may
be sensible to electromagnetic interference and may emit
electromagnetic radiation. If you place your cellphone near
the cable, you may get unexpected display readings, on
the other hand your house neighbour may not be able to listen
to his/her favourite radio station any more - so better use
shielded cable and put the display in a metallic case, perhaps
a computer case.
</para>
</sect2>
<sect2 id="ppt-black-lines">
<title>One or Two Black Lines</title>
<para>
If you see one or two black lines on the display it means
nothing more than that the display is powered and contrast
voltage is present. If one or two black lines appear the
controller has not been reset properly by the on chip power
on reset generator. No need to worry - it will be reset by
the <application>LCDd</application> software. But if the
black line will not disappear
although the wiring is working, the controller on the display
may be defective.
</para>
</sect2>
<sect2 id="ppt-too-fast">
<title>Software Too Fast</title>
<para>
If you have a super GHz computer it may happen that the signal
timing generated by <application>LCDd</application> is too fast.
Adjust DELAYMULT in the
source file to a bigger value. Parallel port wirings usually
don't permit to read back the busy flag of the controller chip,
so timing must be adjust so that the controller never is busy.
</para>
</sect2>
<sect2 id="ppt-backlight">
<title>LED Backlight</title>
<para>
Check whether you need a resistor for your LED Backlight and
which value it should have. If you forget the required resistor
the backlighting LEDs might become hot and draw excessive
current.
</para>
</sect2>
<sect2 id="ppt-hd44780-compatible">
<title>HD44780 Compatible</title>
<para>
The original HD44780 controller that we advertise to support
has become the industry standard for alphanumeric character
displays. The original HD44780 is out of production. It has
many successors from many manufactures, which sometimes won't
tell you that their chips are 'compatible'.
</para>
<para>
To name a few: KS 0066, KS 0070, KS 0076, LC 7985, NT 3881,
SED 1278, ST 7066 ...
</para>
</sect2>
<sect2 id="ppt-misc">
<title>Miscellania</title>
<para>
This text has originally been taken from a <ulink url="http://lists.omnipotent.net/pipermail/lcdproc/2002-May/005832.html">message</ulink> by
Robin Adams <email>robin@adams-online.de</email>
</para>
<para>
Converted to docbook and slightly modified May 2002, Rene Wagner <email>reenoo@gmx.de</email>
</para>
</sect2>
</sect1>
+220
View File
@@ -0,0 +1,220 @@
<chapter id="how-to-obtain">
<title>How to Obtain LCDproc</title>
<sect1 id="versioning">
<title>Versioning</title>
<para>
At the time of writing there were four versions of LCDproc floating around on the
Internet.
</para>
<variablelist>
<varlistentry>
<term>LCDproc 0.4.1</term>
<listitem>
<para>
LCDproc 0.4.1 was the last "stable" release of LCDproc. It still uses the old
command line configuration.
</para>
<warning>
<para>
There are known security problems with LCDproc 0.4.1. A remote exploit is possible.
An attacker can make use of some buffer-overflows in the client communication
code of LCDd, in order to get root access to your system.
Therefore running LCDproc 0.4.1 is NOT RECOMMENDED!
</para>
</warning>
</listitem>
</varlistentry>
<varlistentry>
<term>LCDproc 0.4.2</term>
<listitem>
<para>
LCDproc 0.4.2 was meant to be the next stable release of LCDproc. As 0.4.1
it uses the old command line configuration.
</para>
<note>
<para>
The known issues about 0.4.1 had been fixed. Unfortunately the guy who had the last pending
patches on his box kind of "vanished" from the LCDproc mailing list.
Of course you can get 0.4.2 from CVS. BUT its current state is unknown.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>LCDproc 0.4.3</term>
<listitem>
<para>
LCDproc 0.4.3 is the current stable release of LCDproc. It no longer uses the old
command line configuration, but introduces the configuration file <filename>/etc/LCDd.conf</filename>.
As well the driver API has slightly changed, which should not
make older drivers incompatible, but might cause some trouble. As well the way
<application>LCDd</application> reports messages (including error messages) has changed.
</para>
<note>
<para>
Even though LCDproc 0.4.3 is the most stable version we can offer, it is still not perfect.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>LCDproc 0.4.4</term>
<listitem>
<para>
LCDproc 0.4.4 will be the next stable release of LCDproc.
</para>
<note>
<para>
The 0.4.x branch will only be slightly updated. E.g. we plan better support
of lcdproc (the client) for *BSD. Yet, the active development will move to
0.5 now.
</para>
<para>
As 0.5 will not be stable in the near future, we may also work on porting drivers
from 0.4.1 to 0.4.4 on demand. We do not have all the hardware LCDd supports. So, we
only work on drivers that can be tested by YOU.
</para>
<para>
As well, the development and inclusion of new drivers is possible.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>LCDproc 0.5</term>
<listitem>
<para>
LCDproc 0.5 is the developement version of LCDproc. Everything is possible ;) Drivers can already be
loaded at runtime. We will also work on client supplied menus and other nifty stuff.
</para>
<warning>
<para>
From time to time LCDproc 0.5 might not even compile due to drastic changes.
You have been warned!
</para>
<para>
Furthermore older drivers will NOT work with LCDproc 0.5 AT ALL!
Feel free to port a driver that has not been ported to 0.5 yet ;)
</para>
</warning>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="tar">
<title>Download Last Day's CVS Version of LCDproc as a Tarball</title>
<para>
There are nightly distributions of the CVS branches of LCDproc. You can download them from
<ulink url="http://lcdproc.sourceforge.net/nightly/">http://lcdproc.sourceforge.net/nightly/</ulink>
</para>
<para>
To extract the files run either
</para>
<screen>
<prompt>$</prompt> <userinput>tar xvfz lcdproc-CVS-*.tar.gz</userinput>
</screen>
<para>
or
</para>
<screen>
<prompt>$</prompt> <userinput>bunzip2 -c lcdproc-CVS-*.tar.bz2 | tar xv</userinput>
</screen>
</sect1>
<sect1 id="cvs">
<title>Download The Latest Version of LCDproc from CVS</title>
<para>
Of course you can download the latest stuff from CVS via anonymous login.
</para>
<para>
Create a "cvs" directory somewhere on your machine (not really neccessary but useful):
</para>
<screen>
<prompt>$</prompt> <userinput>mkdir ~/cvs</userinput>
<prompt>$</prompt> <userinput>cd ~/cvs</userinput>
</screen>
<para>
Login to CVS:
</para>
<screen>
<prompt>$</prompt> <userinput>cvs -d:pserver:anonymous@cvs.lcdproc.sourceforge.net:/cvsroot/lcdproc login</userinput>
</screen>
<para>
(Hit enter when prompted for a password.)
</para>
<para>
Get the files from CVS:
</para>
<screen>
<prompt>$</prompt> <userinput>cvs -d:pserver:anonymous@cvs.lcdproc.sourceforge.net:/cvsroot/lcdproc checkout -r stable-0-4-3 lcdproc</userinput>
</screen>
<para>
Once you've done that and want to update the downloaded files to the latest stuff
you can use the "update" command of CVS (Make sure you have logged in to CVS first.):
</para>
<screen>
<prompt>$</prompt> <userinput>cvs -d:pserver:anonymous@cvs.lcdproc.sourceforge.net:/cvsroot/lcdproc update -r stable-0-4-3 lcdproc</userinput>
</screen>
<para>
Now that you have downloaded the files you can prepare them for compiling, but first
you should (you don't have to) copy them to another place on your machine:
</para>
<screen>
<prompt>$</prompt> <userinput>mkdir ~/lcdproc-cvs</userinput>
<prompt>$</prompt> <userinput>cp -f -R ~/cvs/lcdproc ~/lcdproc-cvs/`date +%Y%m%d`</userinput>
<prompt>$</prompt> <userinput>cd ~/lcdproc-cvs/`date +%Y%m%d`</userinput>
</screen>
</sect1>
<sect1 id="apt-get">
<title>apt-get</title>
<para>
Debian GNU/Linux users can get the debian package of LCDproc, which is in the unstable and testing distributions.
</para>
<para>
Provided apt-get is configured properly. You should be able to install the package running:
</para>
<screen>
<prompt>$</prompt> <userinput>su</userinput>
<prompt>Password:</prompt> <userinput>top secret</userinput>
<prompt>#</prompt> <userinput>apt-get install lcdproc</userinput>
</screen>
</sect1>
</chapter>
+188
View File
@@ -0,0 +1,188 @@
<chapter id="installation">
<title>Installation</title>
<sect1 id="build-and-install">
<title>Build LCDproc</title>
<para>
Now that you have downloaded the LCDproc distribution you can
start building it.
</para>
<note>
<para>
If you have installed the debian package with apt-get (or another
debian tool), you can skip this this chapter.
</para>
</note>
<para>
If you're building this version from CVS, you'll need
autoconf, automake, aclocal & autoheader installed.
</para>
<para>
If you have autoconf and friends, run:
</para>
<screen>
<prompt>$</prompt> <userinput>sh autogen.sh</userinput>
</screen>
<para>
This produces the configure script and supporting files. It has allready
been run if you using the tarball distribution.
</para>
<para>
Once the above command has run, the rest is pretty standard:
</para>
<screen>
<prompt>$</prompt> <userinput>./configure --help</userinput>
</screen>
<para>
Read about the options, figure out what to use.
</para>
<screen>
<prompt>$</prompt> <userinput>./configure --prefix=/usr/local --enable-drivers=ncurses,cfontz</userinput>
</screen>
<para>
Be sure to replace /usr/local with the prefixdir you want (e.g. /usr
for RedHat) and ncurses,cfontz with comma-separated list
of drivers you want.
</para>
<screen>
<prompt>$</prompt> <userinput>make</userinput>
</screen>
<para>
Congratulations: You have just compiled your version of LCDproc ;)
</para>
</sect1>
<sect1 id="direct-install">
<title>Install LCDproc Directly From The Sources </title>
<para>
If you want to install LCDproc more or less permanently you
can run:
</para>
<screen>
<prompt>$</prompt> <userinput>su</userinput>
<prompt>Password:</prompt> <userinput>top secret</userinput>
<prompt>#</prompt> <userinput>make install</userinput>
</screen>
<note>
<para>
make install is absolutely OPTIONAL
You can also run LCDproc directly from the source directory. See
<link linkend="lcdd-commandline">below</link> for details.
</para>
</note>
</sect1>
<sect1 id="package-install">
<title>Generate And Install Packages of LCDproc</title>
<para>
As an alternative (which is actually better ;) to installing
directly from the sources you can generate packages using the
packaging tool EPM.
</para>
<para>
First of all you may need to download EPM from
<ulink url="http://www.easysw.com/epm/">http://www.easysw.com/epm/</ulink>
and install it according to the instructions that are included
in its source distribution.
</para>
<para>
Debian users (who do not want to download the official debs via apt-get)
can of course use the debian package of epm:
</para>
<screen>
<prompt>#</prompt> <userinput>apt-get install epm</userinput>
</screen>
<note>
<para>
There are of course other and maybe better ways to generate
packages for your system. The reason for us to choose EPM
was that it provide the developers with a tool that makes it
possible to write one list file for all platforms defining
what the resulting package is meant to look like. This way we
do not have to learn all the package managing tools of the
different platforms that are supported by LCDproc.
</para>
</note>
<para>
To generate an LCDproc package follow these instructions:
</para>
<tip>
<para>
It is of certain importance that you have run ./configure with
the correct pathname settings for your system. Otherwise the
resulting package will install the files in the wrong directories.
</para>
</tip>
<screen>
<prompt>$</prompt> <userinput>epm -v -f native LCDproc</userinput>
</screen>
<note>
<para>
Generating an RPM package as a non-root user will fail, RPM wants
to generate the files from the tree under <filename>/usr/src/RPM</filename>,
which you do not have write access to as a non-root user.
If you want to generate the package as a non-root user anyway, you may
want to follow these instructions.
</para>
</note>
<para>
A workaround for the described problem is creating a file named
<filename>~/.rpmmacros</filename>
which contains:
</para>
<screen>
<![CDATA[
%_topdir ~/rpm
]]>
</screen>
<important>
<para>
<filename>~/rpm</filename> must contain the same tree usually found under
<filename>/usr/src/RPM</filename>
</para>
</important>
<para>
Unfortunately epm does not read <filename>~/.rpmmacros</filename>
and of course returns warnings.
Don't worry! That's OK ;)
</para>
<para>
In order to actually install the generated package follow the instructions
in your system's manual.
</para>
</sect1>
</chapter>
+145
View File
@@ -0,0 +1,145 @@
<chapter id="introduction">
<title>Introduction</title>
<sect1 id="what-is-this">
<title>About this Document</title>
<para>
This document was meant as a tutorial for LCDproc users. It tries to introduce
you into the world of LCDproc giving you an overview of the project.
After reading this document you will be able to set up your own LCDproc'ed system.
</para>
<note><para>
Please note that this document is still "under construction". We hope to finish it
until the final release of LCDproc, which will probably take place in May or June 2002.
If you run into any trouble feel free to write to the LCDproc mailing list.
See <ulink url="http://lcdproc.omnipotent.net/mail.php3">http://lcdproc.omnipotent.net/mail.php3</ulink>
for details on how to subscribe to the list.
</para>
<para>
Therefore you might want to have a look at <ulink url="http://lcdproc.sourceforge.net/docs/">http://lcdproc.sourceforge.net/docs/</ulink>,
to get the latest version of this document (, unless you want to generate it yourself from the
docbook files in the CVS).
</para></note>
<para>
This document was written for LCDproc 0.4.3. At the time of writing there had already
been the "LCDproc User's Guide" written by William W. Ferrel in 1999. His version covered
an early version of LCDproc and therefore concentrated on Matrix Orbital displays.
</para>
<para>
William's document was "recycled" for the description of the Matrix Orbital display driver
and for other parts of this document.
</para>
<para>
In several other places e-mails and other documents have been included in this
document. The authors of those are listed below every such document.
</para>
</sect1>
<sect1 id="what-is-lcdproc">
<title>What is LCDproc?</title>
<para>
LCDproc is a client/server suite including drivers for all kinds of
nifty LCD displays.
</para>
<para>
The server 'LCDd' makes it possible to display text and other data on
an LCD display. As well LCDd can handle certain input devices.
</para>
<para>
Support for devices is added by drivers. We distinguish between output
and input drivers.
LCDd currently supports only one single output driver, which may at the
same time handle input. Nevertheless several input (only) drivers are
supported.
</para>
<para>Currently there are drivers for several serial devices:
Matrix Orbital, Crystal Fontz, Bayrad, LB216, LCDM001 (kernelconcepts.de),
Wirz-SLI and PIC-an-LCD; and some devices connected to the LPT port:
HD44780, STV5730, T6963, SED1520 and SED1330.
There are input (only) drivers for LIRC and joysticks.
</para>
<para>
Clients can connect to LCDd through common sockets.
</para>
<para>
Various clients are available. The "main" client
<application>lcdproc</application>, which is shipped with the LCDproc
distribution, can display things like CPU load, system load, memory
usage, uptime, and a lot more.
</para>
</sect1>
<sect1 id="lcdd">
<title>The LCDproc Server - LCDd</title>
<para>
<application>LCDd</application> is one of those well known *NIX daemons.
BUT it's not just *one* daemon. It's the one that is supposed to drive
your LCD ;)
</para>
<para>
<application>LCDd</application> can either be run from the command line
or automatically by the init scripts shipped with the distribution.
</para>
<para>
As other daemons, <application>LCDd</application> has to be configured.
In this respect a lot has changed since LCDproc 0.4.1. While LCDd retrieved
all its configuration settings from the command line in 0.4.1, it now has a
configuration file, which is normally <filename>/etc/LCDd.conf</filename>.
</para>
</sect1>
<sect1 id="lcdproc">
<title>The LCDproc "Main" Client - lcdproc</title>
<para>
While <application>LCDd</application> only offer the functionality of
displaying text on a display, <application>lcdproc</application> actually
retrieves data worth displaying.
</para>
<para>
<application>lcdproc</application> gets its information from the
<filename>/proc</filename> filesystem.
</para>
<para>
<application>lcdproc</application> can connect to an LCDproc
server either on the local system or on a remote system as long as it
is reachable. It extracts the same statistics regardless of where it
sends this information. The statistics it gathers include CPU
utilization, memory utilization, disk utilization, network utilization,
system uptime, time, and date, and so on. It displays this information
in assorted ways, and can be tailored to taste.
</para>
</sect1>
<sect1 id="other-clients">
<title>Other LCDproc Clients</title>
<para>
As it is rather simple to write an LCDproc client, you can find various
clients on the Internet.
</para>
<para>
Unfortunately we cannot provide a list of LCDproc clients (yet). So, have
fun searching <ulink url="http://www.google.com">google</ulink> or
<ulink url="http://freshmeat.net">freshmeat</ulink>. Simply type 'lcdproc'
for the keyword.
</para>
</sect1>
</chapter>
+32
View File
@@ -0,0 +1,32 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY bookinfo SYSTEM "bookinfo.docbook">
<!ENTITY introduction SYSTEM "introduction.docbook">
<!ENTITY how-to-obtain SYSTEM "how-to-obtain.docbook">
<!ENTITY installation SYSTEM "installation.docbook">
<!ENTITY configuration SYSTEM "configuration.docbook">
<!ENTITY drivers SYSTEM "drivers.docbook">
<!ENTITY running SYSTEM "running.docbook">
<!ENTITY contact SYSTEM "contact.docbook">
<!ENTITY license SYSTEM "license.docbook">
<!ENTITY hd44780 SYSTEM "drivers/hd44780.docbook">
<!ENTITY ppttrouble SYSTEM "drivers/ppttrouble.docbook">
<!ENTITY mtxorb SYSTEM "drivers/mtxorb.docbook">
<!ENTITY lircin SYSTEM "drivers/lircin.docbook">
]>
<book id="lcdproc-user" lang="en">
&bookinfo;
&introduction;
&how-to-obtain;
&installation;
&configuration;
&drivers;
&running;
&contact;
&license;
</book>
+464
View File
@@ -0,0 +1,464 @@
<appendix id="gfdl">
<title>GNU Free Documentation License</title>
<!-- - GNU Project - Free Software Foundation (FSF) -->
<!-- LINK REV="made" HREF="mailto:webmasters@gnu.org" -->
<!-- sect1>
<title>GNU Free Documentation License</title -->
<para>Version 1.1, March 2000</para>
<blockquote>
<para>Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.</para>
</blockquote>
<sect1 id="gfdl-0">
<title>PREAMBLE</title>
<para>The purpose of this License is to make a manual, textbook,
or other written document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
author and publisher a way to get credit for their work, while not
being considered responsible for modifications made by
others.</para>
<para>This License is a kind of "copyleft", which means that
derivative works of the document must themselves be free in the
same sense. It complements the GNU General Public License, which
is a copyleft license designed for free software.</para>
<para>We have designed this License in order to use it for manuals
for free software, because free software needs free documentation:
a free program should come with manuals providing the same
freedoms that the software does. But this License is not limited
to software manuals; it can be used for any textual work,
regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works
whose purpose is instruction or reference.</para>
</sect1>
<sect1 id="gfdl-1">
<title>APPLICABILITY AND DEFINITIONS</title>
<para>This License applies to any manual or other work that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. The "Document",
below, refers to any such manual or work. Any member of the
public is a licensee, and is addressed as "you".</para>
<para>A "Modified Version" of the Document means any work
containing the Document or a portion of it, either copied
verbatim, or with modifications and/or translated into another
language.</para>
<para>A "Secondary Section" is a named appendix or a front-matter
section of the Document that deals exclusively with the
relationship of the publishers or authors of the Document to the
Document's overall subject (or to related matters) and contains
nothing that could fall directly within that overall subject.
(For example, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.)
The relationship could be a matter of historical connection with
the subject or with related matters, or of legal, commercial,
philosophical, ethical or political position regarding
them.</para>
<para>The "Invariant Sections" are certain Secondary Sections
whose titles are designated, as being those of Invariant Sections,
in the notice that says that the Document is released under this
License.</para>
<para>The "Cover Texts" are certain short passages of text that
are listed, as Front-Cover Texts or Back-Cover Texts, in the
notice that says that the Document is released under this
License.</para>
<para>A "Transparent" copy of the Document means a
machine-readable copy, represented in a format whose specification
is available to the general public, whose contents can be viewed
and edited directly and straightforwardly with generic text
editors or (for images composed of pixels) generic paint programs
or (for drawings) some widely available drawing editor, and that
is suitable for input to text formatters or for automatic
translation to a variety of formats suitable for input to text
formatters. A copy made in an otherwise Transparent file format
whose markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".</para>
<para>Examples of suitable formats for Transparent copies include
plain ASCII without markup, Texinfo input format, LaTeX input
format, SGML or XML using a publicly available DTD, and
standard-conforming simple HTML designed for human modification.
Opaque formats include PostScript, PDF, proprietary formats that
can be read and edited only by proprietary word processors, SGML
or XML for which the DTD and/or processing tools are not generally
available, and the machine-generated HTML produced by some word
processors for output purposes only.</para>
<para>The "Title Page" means, for a printed book, the title page
itself, plus such following pages as are needed to hold, legibly,
the material this License requires to appear in the title page.
For works in formats which do not have any title page as such,
"Title Page" means the text near the most prominent appearance of
the work's title, preceding the beginning of the body of the
text.</para>
</sect1>
<sect1 id="gfdl-2">
<title>VERBATIM COPYING</title>
<para>You may copy and distribute the Document in any medium,
either commercially or noncommercially, provided that this
License, the copyright notices, and the license notice saying this
License applies to the Document are reproduced in all copies, and
that you add no other conditions whatsoever to those of this
License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or
distribute. However, you may accept compensation in exchange for
copies. If you distribute a large enough number of copies you
must also follow the conditions in section 3.</para>
<para>You may also lend copies, under the same conditions stated
above, and you may publicly display copies.</para>
</sect1>
<sect1 id="gfdl-3">
<title>COPYING IN QUANTITY</title>
<para>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts,
you must enclose the copies in covers that carry, clearly and
legibly, all these Cover Texts: Front-Cover Texts on the front
cover, and Back-Cover Texts on the back cover. Both covers must
also clearly and legibly identify you as the publisher of these
copies. The front cover must present the full title with all
words of the title equally prominent and visible. You may add
other material on the covers in addition. Copying with changes
limited to the covers, as long as they preserve the title of the
Document and satisfy these conditions, can be treated as verbatim
copying in other respects.</para>
<para>If the required texts for either cover are too voluminous to
fit legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto
adjacent pages.</para>
<para>If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a
machine-readable Transparent copy along with each Opaque copy, or
state in or with each Opaque copy a publicly-accessible
computer-network location containing a complete Transparent copy
of the Document, free of added material, which the general
network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the
latter option, you must take reasonably prudent steps, when you
begin distribution of Opaque copies in quantity, to ensure that
this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.</para>
<para>It is requested, but not required, that you contact the
authors of the Document well before redistributing any large
number of copies, to give them a chance to provide you with an
updated version of the Document.</para>
</sect1>
<sect1 id="gfdl-4">
<title>MODIFICATIONS</title>
<para>You may copy and distribute a Modified Version of the
Document under the conditions of sections 2 and 3 above, provided
that you release the Modified Version under precisely this
License, with the Modified Version filling the role of the
Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition,
you must do these things in the Modified Version:</para>
<orderedlist numeration="upperalpha">
<listitem><para>Use in the Title Page
(and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if
there were any, be listed in the History section of the
Document). You may use the same title as a previous version if
the original publisher of that version gives permission.</para>
</listitem>
<listitem><para>List on the Title Page,
as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version,
together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than
five).</para>
</listitem>
<listitem><para>State on the Title page
the name of the publisher of the Modified Version, as the
publisher.</para>
</listitem>
<listitem><para>Preserve all the
copyright notices of the Document.</para>
</listitem>
<listitem><para>Add an appropriate
copyright notice for your modifications adjacent to the other
copyright notices.</para>
</listitem>
<listitem><para>Include, immediately
after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this
License, in the form shown in the Addendum below.</para>
</listitem>
<listitem><para>Preserve in that license
notice the full lists of Invariant Sections and required Cover
Texts given in the Document's license notice.</para>
</listitem>
<listitem><para>Include an unaltered
copy of this License.</para>
</listitem>
<listitem><para>Preserve the section
entitled "History", and its title, and add to it an item stating
at least the title, year, new authors, and publisher of the
Modified Version as given on the Title Page. If there is no
section entitled "History" in the Document, create one stating
the title, year, authors, and publisher of the Document as given
on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.</para>
</listitem>
<listitem><para>Preserve the network
location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network
locations given in the Document for previous versions it was
based on. These may be placed in the "History" section. You
may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.</para>
</listitem>
<listitem><para>In any section entitled
"Acknowledgements" or "Dedications", preserve the section's
title, and preserve in the section all the substance and tone of
each of the contributor acknowledgements and/or dedications
given therein.</para>
</listitem>
<listitem><para>Preserve all the
Invariant Sections of the Document, unaltered in their text and
in their titles. Section numbers or the equivalent are not
considered part of the section titles.</para>
</listitem>
<listitem><para>Delete any section
entitled "Endorsements". Such a section may not be included in
the Modified Version.</para>
</listitem>
<listitem><para>Do not retitle any
existing section as "Endorsements" or to conflict in title with
any Invariant Section.</para>
</listitem>
</orderedlist>
<para>If the Modified Version includes new front-matter sections
or appendices that qualify as Secondary Sections and contain no
material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do this,
add their titles to the list of Invariant Sections in the Modified
Version's license notice. These titles must be distinct from any
other section titles.</para>
<para>You may add a section entitled "Endorsements", provided it
contains nothing but endorsements of your Modified Version by
various parties--for example, statements of peer review or that
the text has been approved by an organization as the authoritative
definition of a standard.</para>
<para>You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text, to the
end of the list of Cover Texts in the Modified Version. Only one
passage of Front-Cover Text and one of Back-Cover Text may be
added by (or through arrangements made by) any one entity. If the
Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity
you are acting on behalf of, you may not add another; but you may
replace the old one, on explicit permission from the previous
publisher that added the old one.</para>
<para>The author(s) and publisher(s) of the Document do not by
this License give permission to use their names for publicity for
or to assert or imply endorsement of any Modified Version.</para>
</sect1>
<sect1 id="gfdl-5">
<title>COMBINING DOCUMENTS</title>
<para>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for
modified versions, provided that you include in the combination
all of the Invariant Sections of all of the original documents,
unmodified, and list them all as Invariant Sections of your
combined work in its license notice.</para>
<para>The combined work need only contain one copy of this
License, and multiple identical Invariant Sections may be replaced
with a single copy. If there are multiple Invariant Sections with
the same name but different contents, make the title of each such
section unique by adding at the end of it, in parentheses, the
name of the original author or publisher of that section if known,
or else a unique number. Make the same adjustment to the section
titles in the list of Invariant Sections in the license notice of
the combined work.</para>
<para>In the combination, you must combine any sections entitled
"History" in the various original documents, forming one section
entitled "History"; likewise combine any sections entitled
"Acknowledgements", and any sections entitled "Dedications". You
must delete all sections entitled "Endorsements."</para>
</sect1>
<sect1 id="gfdl-6">
<title>COLLECTIONS OF DOCUMENTS</title>
<para>You may make a collection consisting of the Document and
other documents released under this License, and replace the
individual copies of this License in the various documents with a
single copy that is included in the collection, provided that you
follow the rules of this License for verbatim copying of each of
the documents in all other respects.</para>
<para>You may extract a single document from such a collection,
and distribute it individually under this License, provided you
insert a copy of this License into the extracted document, and
follow this License in all other respects regarding verbatim
copying of that document.</para>
</sect1>
<sect1 id="gfdl-7">
<title>AGGREGATION WITH INDEPENDENT WORKS</title>
<para>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of
a storage or distribution medium, does not as a whole count as a
Modified Version of the Document, provided no compilation
copyright is claimed for the compilation. Such a compilation is
called an "aggregate", and this License does not apply to the
other self-contained works thus compiled with the Document, on
account of their being thus compiled, if they are not themselves
derivative works of the Document.</para>
<para>If the Cover Text requirement of section 3 is applicable to
these copies of the Document, then if the Document is less than
one quarter of the entire aggregate, the Document's Cover Texts
may be placed on covers that surround only the Document within the
aggregate. Otherwise they must appear on covers around the whole
aggregate.</para>
</sect1>
<sect1 id="gfdl-8">
<title>TRANSLATION</title>
<para>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
4. Replacing Invariant Sections with translations requires
special permission from their copyright holders, but you may
include translations of some or all Invariant Sections in addition
to the original versions of these Invariant Sections. You may
include a translation of this License provided that you also
include the original English version of this License. In case of
a disagreement between the translation and the original English
version of this License, the original English version will
prevail.</para>
</sect1>
<sect1 id="gfdl-9">
<title>TERMINATION</title>
<para>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any
other attempt to copy, modify, sublicense or distribute the
Document is void, and will automatically terminate your rights
under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses
terminated so long as such parties remain in full
compliance.</para>
</sect1>
<sect1 id="gfdl-10">
<title>FUTURE REVISIONS OF THIS LICENSE</title>
<para>The Free Software Foundation may publish new, revised
versions of the GNU Free Documentation License from time to time.
Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or
concerns. See <ulink
url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>.</para>
<para>Each version of the License is given a distinguishing
version number. If the Document specifies that a particular
numbered version of this License "or any later version" applies to
it, you have the option of following the terms and conditions
either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation.
If the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.</para>
</sect1>
<sect1 id="gfdl-11">
<title>How to use this License for your documents</title>
<para>To use this License in a document you have written, include
a copy of the License in the document and put the following
copyright and license notices just after the title page:</para>
<blockquote><para>
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
</para></blockquote>
<para>If you have no Invariant Sections, write "with no Invariant
Sections" instead of saying which ones are invariant. If you have
no Front-Cover Texts, write "no Front-Cover Texts" instead of
"Front-Cover Texts being LIST"; likewise for Back-Cover
Texts.</para>
<para>If your document contains nontrivial examples of program
code, we recommend releasing these examples in parallel under your
choice of free software license, such as the GNU General Public
License, to permit their use in free software.</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-parent-document: ("referenz.sgml" "appendix")
sgml-exposed-tags:nil
sgml-local-ecat-files:nil
sgml-local-catalogs: CATALOG
sgml-validate-command: "nsgmls -s referenz.sgml"
ispell-skip-sgml: t
End:
-->
+138
View File
@@ -0,0 +1,138 @@
<chapter id="running">
<title>Running LCDproc</title>
<sect1 id="running-lcdd">
<title>Running LCDd</title>
<para>
If you have installed the init-scripts you can simply start, stop
and restart LCDd with the init-script.
</para>
<sect2 id="lcdd-commandline">
<title>Running LCDd from the command line</title>
<para>
There are several reasons for running LCDd from the command line
</para>
<itemizedlist>
<listitem><para>You don't want to install LCDd but run it from the source directory.</para></listitem>
<listitem><para>You want to do some debugging.</para></listitem>
<listitem><para>You want to get the output directly on stderr.</para></listitem>
<listitem><para>...</para></listitem>
</itemizedlist>
<note>
<para>
If you run LCDd as a "normal" user, it will not change to the user
specified in the config file.
For parallel port devices you will need root privileges anyway ;)
</para>
</note>
<para>
The simplest command that will run LCDd is the following. It is useful for
running LCDd from the source directory, e.g. after building.
</para>
<screen>
<prompt>$</prompt> <userinput>server/LCDd -c LCDd.conf</userinput>
</screen>
</sect2>
<sect2 id="lcdd-commandline-options">
<title>The Command Line Options of LCDd</title>
<para>
Running <command>LCDd -h</command> gives you an overview of the currently available
command line options, including a list of the compiled in drivers.
</para>
<example>
<title><command>LCDd -h</command></title>
<screen> <![CDATA[
LCDd Server Daemon (part of lcdproc), 0.4.3dev
Copyright (c) 1999 Scott Scriven, William Ferrell, and misc contributors
This program is freely redistributable under the terms of the GNU Public License
Usage: LCDd [ -hfiws ] [ -c <config> ] [ -d <driver> ] [ -a <addr> ] \
[ -p <port> ] [ -u <user> ] [ -w <time> ] [ -r <level> ]
Available options are:
-h Display this help screen
-c <config> Use a configuration file other than /etc/LCDd.conf
-d <driver> Add a driver to use (output only to first)
-f Run in the foreground
-i Disable showing of the main LCDproc server screen
-w <waittime> Time to pause at each screen (in seconds)
-a <addr> Network (IP) address to bind to
-p <port> Network port to listen for connections on
-u <user> User to run as
-s Output messages to syslog
-r <level> Report level (default=2)
Currently available drivers:
lcdm001, LCDM001, MtxOrb, MatrixOrbital, CFontz, CrystalFontz, LB216, text,
curses, ncurses, BayRAD, glk, glc
]]>
</screen>
</example>
</sect2>
</sect1>
<sect1 id="running-lcdproc">
<title>Running lcdproc</title>
<para>
You will probably more often run <command>lcdproc</command> from the command line than
you will run LCDd.
</para>
<sect2 id="lcdproc-commandline-options">
<title>The Command Line Options of lcdproc</title>
<para>
Running <command>lcdproc -h</command> gives you an overview of the currently available
command line options.
</para>
<example>
<title><command>lcdproc -h</command></title>
<screen> <![CDATA[
LCDproc, 0.4.3dev
Usage: lcdproc [-s server] [-p port] [modelist]
Options in []'s are optional.
modelist is "mode [mode mode ...]"
Mode letters: [C]pu [G]raph [T]ime [M]emory [X]load [D]isk [B]attery
proc_[S]izes [O]ld_time big_cloc[K] [U]ptime CPU_SM[P]
[A]bout
Use "man lcdproc" for more info.
Example:
lcdproc -s my.lcdproc.server.com C M X -p 13666
]]>
</screen>
</example>
<note>
<para>
You will not be able to connect to a remote server, unless it listens to
the correct interface and port! See <link linkend="server-section">
<filename>LCDd.conf</filename>: The [server] Section</link>
for details on the server setup.
</para>
</note>
</sect2>
</sect1>
</chapter>
+10 -3
View File
@@ -1,9 +1,9 @@
.TH lcdproc 1 "1-aug-01" "LCDproc"
.SH NAME
lcdproc - displays system status on LCDproc server
lcdproc - displays system status on LCDproc server (LCDd(8))
.SH SYNOPSIS
.B lcdproc
[\-s \fIserver\fP] [\-p \fIport\fP] [\fImode\fP [\fImode\fP ...]]
[\-s \fIserver\fP] [\-p \fIport\fP] [\-d] [\fImode\fP [\fImode\fP ...]]
.SH DESCRIPTION
lcdproc connects to the LCDproc server to display status information about the system.
.PP
@@ -18,6 +18,9 @@ Set the hostname which LCDproc is running on, assumed to be localhost unless oth
.B \-p \fIport\fP
Set the port which LCDproc is accepting connections on, assumed to be 13666 unless otherwise set
.TP 8
.B \-d
Daemonize right after startup
.TP 8
.B \fImode\fP
Where mode is one of the following letters:
.RS
@@ -44,8 +47,12 @@ connects to the LCDproc server and specifies the following modes:
.PP
.Sh SEE ALSO
.Xr LCDd 8
.SH AUTHOR
LCDproc was written by William Ferrell (wwf@splatwerks.org) and Scott Scriven (scriven@cs.colostate.edu).
LCDproc was originally written by William Ferrell (wwf@splatwerks.org) and Scott Scriven (scriven@cs.colostate.edu).
Since that time various people have contributed to LCDproc.
The newest version of LCDproc should be available from here:
-674
View File
@@ -1,674 +0,0 @@
<!DOCTYPE book PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
<book>
<bookinfo>
<date>1999-02-08</date>
<title>LCDproc User's Guide</title>
<subtitle>Installation and Client Development Guide</subtitle>
</bookinfo>
<toc></toc>
<chapter>
<title>Introduction</title>
<para>LCDproc is a system status monitoring application that drives a
variety of different LCD-based display devices. It provides a powerful
framework for networked statistic gathering, adding new monitors or
LCD-aware applications, and adding new devices.
</para>
<para>The client shipped with LCDproc v0.4 can connect to an LCDproc
server either on the local system or on a remote system as long as it
is reachable. It extracts the same statistics regardless of where it
sends this information. The statistics it gathers include CPU
utilization, memory utilization, disk utilization, network utilization,
system uptime, time, and date, and so on. It displays this information
in assorted ways, and can be tailored to taste.
</para>
<sect1>
<title>Supported Hardware</title>
<para>As shipped, LCDproc v0.4 supports LCD modules from Matrix
Orbital Corporation, HD447800-controlled LCDs, and can emulate an LCD with
the curses library or plain, raw, ugly text.
</para>
<sect2>
<title>Matrix Orbital LCD Modules</title>
<para>
LCDproc was born out of original tinkering by William Ferrell with
one of these LCD modules. Their ease of installation and use (as well
as the amazing amount of patience demonstrated by the folks at
Matrix Orbital whilst William figured things out) meant one less thing
to worry about during the early stages of LCDproc's life.
</para>
<para>
These 20x4 alphanumeric modules are connected via standard DB-9 cabling and
connectors. They draw either 5V or 12V, depending on the module purchased,
and are attached with a standard floppy cable connector (with a slightly
modified wire configuration).
</para>
<para>
Once connected, using them is a breeze. They can operate at any number of
different baud rates and serial configurations, but normally they run at
19,200 baud, 8-N-1, making them quite quick. Sending ASCII to the module
will make it simply display that text at its current cursor position. The
module has a built-in BIOS that recognizes commands (sent by transmitting a
single-byte "marker" signifying that a command is on the way, followed by
the single-byte command character itself along with any parameters, if needed)
allowing the programmer to clear the screen, position the cursor anywhere,
define custom characters (up to 8 at a time), draw bar graphs and large numbers,
change the LCD's contrast, and so on.
</para>
<para>
The BIOS included also implements line-wrapping (i.e. writing past the
twentieth character on the first row will automatically move the cursor
to the first character on the second row), and screen scrolling (i.e.
writing past the twentieth character on the fourth row causes the whole
screen to scroll up one row, clearing the fourth line and positioning the
cursor at the first character on that line).
</para>
<para>
These modules are fast. Using the auto-line-wrap feature and disabling
the auto-scrolling feature, the screen can be updated thirty times per
second if *every* character on the screen is changed. If updating less
than the whole screen, the LCD can update faster than can be seen by
the human eye. This, of course, more than meets LCDproc's needs.
</para>
</sect2>
<sect2>
<title>HD44780 Controller-Based LCDs</title>
<para>
These LCDs are controlled by the Hitachi HD44780 LCD controller, and
connect to a system's parallel port. Not much else is known about these
devices at this time. [Update this section].
</para>
</sect2>
<sect2>
<title>LCD Emulation</title>
<para>
LCDproc can emulate an LCD on a curses terminal (or even on a dumb terminal
by writing raw text out, if you're that desperate). The output is confined to
a 20x4 character area, just like on a real LCD, and can be "swallowed" into
window manager panels such as fvwmbuttons.
</para>
</sect2>
</sect1>
<sect1>
<title>LCDproc Documentation</title>
<para>
This document is intended to be full, complete documentation for
LCDproc. While some information presented in this document is present
in assorted files scattered across the LCDproc distribution tarball,
this document is meant to encompass all aspects of dealing with
LCDproc, from installation, all the way to developing custom clients
using LCDproc's client/server API.
</para>
<para>
README and INSTALL files will always be distributed with LCDproc, along
with the requisite copyright and licensing information, but this document
will eventually replace the content of the README and INSTALL files.
</para>
<para>
This documentation was written in SGML and
<ULINK URL="http://www.oasis-open.org/docbook/">DocBook</ULINK>. SGML is a
generalized markup language (of which HTML is a subset), and DocBook is a set of
layout tools and markups using SGML that lends itself quite nicely to the publishing
of technical manuals and software documentation like this.
</para>
<para>
In Linux, one can produce DVI, PostScript, HTML, Unix Manual Pages and Info
pages from the same SGML/DocBook source using
<ULINK URL="http://www.sgmltools.org/">SGMLtools</ULINK>. Take a look at this set
of tools if you have any large-scale documentation to write. It might have a bit of
a steep learning curve, but it's certainly worth the effort.
</para>
</sect1>
</chapter>
<chapter>
<title>Installation</title>
<para>
This chapter covers the installation process for both LCDproc, and the actual LCD
module intended for use with LCDproc. Since our experience has involved almost
exclusively the Matrix Orbital modules, we will spend little time on installation
instructions for other hardware.
</para>
<para>
If you have successfully installed LCDproc-compatible hardware and would care to
document how you did so, please e-mail the author of this book
(choadster@earthlink.net).
</para>
<para>
We will examine the installation process of LCDproc and the hardware it drives in
small steps, as it is vitally important to pay close attention to detail during
hardware installation to avoid damaging equipment, as well as during LCDproc's
installation, since things have become a little more complicated since LCDproc's
split into a client and server model.
</para>
<para>
First, hardware installation is discussed. If you are not using physical LCD
hardware to run LCDproc, you can safely skip the hardware installation sections and
move on to the software installation sections.
</para>
<sect1>
<title>Hardware Installation</title>
<para>
Regardless of what specific type of hardware you intend to use with LCDproc,
installation is usually straightforward, and requires only a few steps. Regardless,
you must use caution while working inside your computer system or with any hardware
attachments.
</para>
<Warning>
<Title>Warning!</Title>
<para>
Installing new hardware inside a computer system can be dangerous to both
system components and the installer. Use caution whenever adding a component
to the inside of your system, altering a power cable, or physically mounting
a device inside a computer system.
</para>
<para>
When installing hardware inside a computer, make sure it's turned off and that
its power is disconnected. This is especially important when making changes to
power cables (as some LCD modules require).
</para>
</Warning>
<sect2>
<title>Matrix Orbital LCD/VFD Module Installation</title>
<para>
The LCD and VFD modules from Matrix Orbital are relatively straightforward
to install. With a small, regular (flat-head) screwdriver, a spare floppy drive
power cable, and a bit of luck, installation will take less than an hour.
</para>
<para>
These installation instructions assume that you are installing the module into
a PC or PC-style system (one with AT- or ATX-compliant power cabling) and that
you have some idea of where you intend to permanently mount the module. For
mounting ideas and tips, refer to the section "Mounting" below.
</para>
<Tip>
<Title>Before you start</title>
<para>
Your Matrix Orbital LCD or VFD module should be clearly marked with an
indication of the module's power requirements. It should be either a 5 volt
or 12 volt unit. You should have this information available before proceeding.
</para>
</tip>
<sect3>
<title>Power Cable Modification</title>
<para>
The first step in installing the module is making the necessary modifications
to a floppy drive power cable in order to provide power to the module. The
modifications must be made based on the module's power requirements -- either
5V or 12V -- depending on which module you purchased.
</para>
<para>
A standard floppy drive power cable has a smaller connection than a "normal"
PC power connector. However, like a "normal" power connector, it has four
wires: one yellow, one red, and two black. The red wire provides +5V power, and
is "hot" or live when the system is powered up. The yellow wire provides +12V
power, and is also hot when the system is powered up. Both black wires are
ground.
[TODO: INCLUDE A FIGURE HERE SHOWING A "STANDARD" FLOPPY CONNECTOR]
</para>
<para>
One of the hot wires and one of the black wires will not be needed for your
module's power connection; they will be completely removed when the power cable
modification is complete.
</para>
<Warning>
<title>Warning!</title>
<para>
Do NOT make this modification to a power cable attached to a running
system! Electrocution resulting in personal injury and/or damage to the
system can result.
</para>
</Warning>
<para>
Using a regular screwdriver, press down the small metal locking flap of one
of the two black wires on the small end of the cable, and pull the black wire
from the connector. Using a pair of needle-nose pliers, squeeze the other end
of the same black wire, and pull it out of the large end of the cable. This
black wire can be set aside; it will not be used for the module's power
connection. Either wire can be safely removed; you may safely remove either
wire.
[TODO: INCLUDE A FIGURE HERE SHOWING THIS PROCESS]
</para>
<para>
Next, using the same procedure, remove the unneeded hot wire. If your module
is 5V, you do not need the yellow (+12V) wire. Conversely, if your module is
12V, you do not need the red (+5V) wire. The removed wire can be set aside;
it will not be used for the module's power connection.
[TODO: INCLUDE A FIGURE HERE]
</para>
<para>
The floppy power connector should now have only two wires attached to it.
Leave the larger end alone from now on; these connections are correct (the
larger end connects to your system's power mains). Move the two remaining wires
to the outside connectors on the small end of the cable. Orientation does not
particularly matter here; the connector will fit on the module's receptacle
in either orientation.
[TODO: A FIGURE HERE]
</para>
<para>
You should now have a properly modified power connector. When physically
attaching this connector to the module, the black (ground) lead should be
connected to the pin labelled GND, while the colored (+5V/+12V) lead should
be connected to the pin labelled +5V/+12V.
</para>
<para>
Test the power connection before connecting the data line or mounting the
module. Connect the module to the power connector, and the connector to your
system's power mains. Turn the system on.
</para>
<Caution>
<Title>Caution</Title>
<para>
If the module does not immediately display its initial BIOS screen and light
up its backlight (or light up the screen if a VFD module is being used),
<EMPHASIS>immediately</EMPHASIS> power down the system, disconnect the module
and connector, and double-check the modification before trying again. Do NOT
leave the system on if the module does not immediately respond; module or
system damage could result.
</para>
</Caution>
<para>
When the LCD powers up and displays its initial BIOS screen, you've gotten the
power connection wired properly and can now properly mount the module and make
its final connections. Matrix Orbital Corporation sells a PC bay insert mount
for the 20x4 and 20x2 modules (LCDproc, however, only supports the 20x4 at
present). The inserts provide an easy means of mounting the LCD modules inside
a PC using one (for the 20x2) or two (for the 20x4) 5 1/4" bays.
</para>
<Note>
<title>Note</title>
<para>
Describing how to physically mount the module in a PC case is beyond the
scope of this document; LCDproc's website contains more detailed mounting
information and examples.
</para>
</Note>
</sect3>
<sect3>
<title>Serial Connection</title>
<para>
The LCD module uses a standard DB9 serial connector. You can attach the module
to your system using a direct cable to the motherboard, or by removing one of
your system's serial ports from the back of the case, then connecting it to a
standard serial cable to the module.
</para>
<para>
While connecting the serial cable to the module, be sure to configure the
module's serial interface settings. Typically, setting the module to its fastest
setting (19,200 baud, 8-N-1) is recommended. At present, the Matrix Orbital
module driver in LCDproc is hardwired to use these settings; using different
ones will require minor changes to the driver's code.
</para>
</sect3>
</sect2>
<sect2>
<title>Other Display Types</title>
<para>
At present, we do not have any detailed information regarding the installation
of other types of LCDs. If you have any information that would be useful to
include here, please contact William Ferrell
(<ULINK URL="mailto:choadster@earthlink.net">choadster@earthlink.net</ULINK>).
</para>
</sect2>
</sect1>
</chapter>
<chapter>
<title>LCDproc Distribution Layout</title>
<para>The current LCDproc distribution contains both the LCDproc server
and the LCDproc client. It also contains sparse documentation (this
document will hopefully solve this problem), and a sample Perl client.
[THIS WILL CHANGE -- REWRITE THIS PARAGRAPH]</para>
<sect1>
<title>Basic Layout</title>
<para>
LCDproc is distributed in a single archive containing both the client(s)
and the server:
<SimpleList columns=2>
<Member>clients/</Member>
<Member>docs/</Member>
<Member>old/</Member>
<Member>server/</Member>
<Member>server/drivers/</Member>
<Member>shared/</Member>
<Member>tests/</Member>
<Member>BUGS</Member>
<Member>COPYING</Member>
<Member>INSTALL</Member>
<Member>Makefile</Member>
<Member>Makefile.config</Member>
<Member>README</Member>
<Member>TODO</Member>
<Member>WHATSNEW</Member>
<Member>Contains the LCDproc client and the sample Perl client</Member>
<Member>Documentation (sparse at the moment)</Member>
<Member>Contains older source code, unused in compiling v0.4</Member>
<Member>Contains the LCDproc server</Member>
<Member>Contains LCDproc's device drivers</Member>
<Member>Contains shared code</Member>
<Member>Contains test code not used in compiling</Member>
<Member>A list of known bugs in the current version</Member>
<Member>The GNU General Public License</Member>
<Member>Installation Instructions</Member>
<Member>File for the "make" utility, used to compile LCDproc</Member>
<Member>Contains compile-time user-tunable defaults for LCDproc</Member>
<Member>Read this file first! Contains basic information regarding LCDproc,
what it does, how it works, and how to start building it.</Member>
<Member>List of planned changes and improvements.</Member>
<Member>List of revisions that have been made to LCDproc throughout its
development. [This should be changed to ChangeLog]</Member>
</Simplelist>
</para>
</sect1>
<sect1>
<title>A Stroll Through the Code</title>
<para>
This section attempts to document how LCDproc works. Both the server and
the client are explored at the source code level. This section was written
as an exercise for the author to help him better understand LCDproc's
inner workings, allowing him to better document LCDproc for end users and
developers. Feel free to skip past this entire section unless you really
feel like reading how LCDproc renders screens, manages clients, deals with
input, and handles trouble.
</para>
<sect2>
<title>The LCDproc Server, LCDd</title>
<para>
LCDd is the central component of LCDproc. It is responsible for several
different activities:
<SimpleList>
<Member>Initializing the output device</Member>
<Member>Initializing the incoming socket</Member>
<Member>Listening for client connections and accepting them</Member>
<Member>Storing screens provided by clients</Member>
<Member>Storing stats provided by clients</Member>
<Member>Choose the best screen to display on the LCD based on order of
client and screen arrival, and by priority</Member>
<Member>Provide a rich screen-drawing widget set for clients to use</Member>
<Member>Render screens to the LCD</Member>
<Member>Gracefully handle dead sockets and clients</Member>
<Member>Gracefully remove screens and clients when asked to by clients or
the user</Member>
</SimpleList>
</para>
<para>
To accomplish all this, LCDd splits into dozens of source files to handle
different bits of the job. We will examine each of these source files one by
one (and, to make things easier, in alphabetical order). Header files (*.h)
will not be included in this discussion.
</para>
<sect3>
<title>server/client_data.c</title>
<para>
This file appears to contain code that handles the creation and destruction
of linked lists for client data.
</para>
</sect3>
<sect3>
<title>server/client_functions.c</title>
<para>
This file actually describes itself as its first comment! It contains
definitions for all the functions that the clients can run. They are to
be called only from server/parse.c.
</para>
<para>
Here the functions that clients call when connected to LCDd are actually
defined and performed.
</para>
</sect3>
<sect3>
<title>server/clients.c</title>
<para>
This file contains code allowing LCDd to handle client connections and
data structures. It contains functions to initialize the internal list
of clients, terminate client connections, add new clients to the list,
add, remove, and retrieve messages to clients' message queues, and
locating a client's socket.
</para>
</sect3>
<sect3>
<title>server/input.c</title>
<para>
This file contains functions that handle input from keypads, joysticks,
etc.
</para>
</sect3>
<sect3>
<title>server/main.c</title>
<para>
Where the action is.
</para>
<para>
This file contains LCDd's main() function and supporting code. It begins
life by configuring signal handlers, then by immediately initializing the
LCD drivers. (Huh?) It then parses the command line, configuring the
LCD driver appropriately, then initializes its internal lists and the
socket.</para>
<para>
Next, it forks into a daemon process (shedding its controlling terminal)
and enters the main loop. The main loop: listens for connections from
new clients and for input from already connected ones, parses all input
from connected clients, checks for input, then updates the screen list
and updates the LCD.
</para>
<para>
Also present are functions to handle graceful exits when various signals
are received, and a help screen.
</para>
</sect3>
<sect3>
<title>server/menu.c</title>
<para>
This appears to be code to handle server-generated menu screens on the LCD.
[I don't understand this file in the slightest ... study this harder later]
</para>
</sect3>
<sect3>
<title>server/parse.c</title>
<para>
This file contains code that parses input from the clients.
parse_all_client_messages() is called once each time through main()'s loop.
</para>
</sect3>
<sect3>
<title>server/render.c</title>
<para>
This file contains code that actually generates the full screen data to
send to the LCD. draw_screen() takes a screen definition and a counter as its
arguments. It builds the screen according to the definition, and using the
counter as a reference.
</para>
</sect3>
<sect3>
<title>server/screen.c</title>
<para>
This file stores all the screen definition-handling code. Functions here
provide means to create new screens and destroy existing ones. Screens are
identified by client and by the client's own identifiers for screens.
</para>
</sect3>
<sect3>
<title>server/screenlist.c</title>
<para>
This appears to be the screenlist handler that decides which screen to
display based on priorities and screen creation order.
</para>
</sect3>
<sect3>
<title>server/serverscreens.c</title>
<para>
This file contains code to allow the server to generate its own screens.
Currently, only the server status screen is provided, showing total number
of connected clients, and the combined total of screens they provide (this
count does not include the server's screens).
</para>
<para>
It is interesting to note that the server creates a special screen
definition for its screens, but uses the same widget set made available
to clients.
</para>
</sect3>
<sect3>
<title>server/sock.c</title>
<para>
This file contains all the sockets code used by the server. This contains
the code called upon by main() to initialize the listening socket, as well
as code to deal with sending messages to clients, maintaining connections,
accepting new connections, closing dead connections (or connections
associated with dying/exiting clients), etc.
</para>
</sect3>
<sect3>
<title>server/widget.c</title>
<para>
This file houses code that handles the creation and destruction of widget
objects for the server. These functions are called using the arguments
passed by the client, then they store the specified widget into a generic
container that is parsed later by the screen renderer.
</para>
</sect3>
<sect3>
<title>server/drivers/*</title>
<para>
These are the individual driver files. Each driver allows LCDproc to display
its output on a different device. A driver is responsible for accepting
LCD-like handling instructions from LCDd, and for returning input from the
device to LCDd.
</para>
<para>
Currently, drivers provided are MtxOrb, hd44780, curses, and joy. The
joystick (joy) driver doesn't provide output, but only input.
</para>
</sect3>
</sect2>
<sect2>
<title>The LCDproc Client</title>
<para>
The client shipped with LCDproc performs all of the statistic gathering
previously performed by LCDproc v0.3.x. Instead of driving the LCD directly,
in this version it now connects to LCDd and sends its screens and data there.
</para>
<para>
In this implementation of the statistic-gathering portions of LCDproc, the
layout departs substantially from the older v0.3.x code. Each screen is
generated by functions stored in separate files -- one file per screen.
This keeps files smaller, and code much simpler to maintain and update.
</para>
<para>
The client appears to use files from the share/ tree as well.
</para>
<sect3>
<title>clients/lcdproc/batt.c, chrono.c, cpu.c, disk.c, load.c, mem.c</title>
<para>
These files contain the functions implementing all the screens provided by
LCDproc.
</para>
<para>
Each contains several functions, mostly related to actual statistic gathering.
They are also apparently responsible for actually transmitting their screen
definitions to the server and answering the server's requests for statistic
updates. The functions here do *no* checking to determine if they are being
asked for. They *do* check to see if they need to create a new screen
definition or merely update it. It would appear that the client's main() or
other higher-level function is responsible for calling this function when the
server asks for an update.
</para>
</sect3>
<sect3>
<title>clients/lcdproc/main.c</title>
<para>
This file contains the LCDproc client's main() function, as well as a few
supporting functions.
</para>
<para>
It first declares and fills a modelist (used only internally by this client)
that determines which screens will run by default (if the user doesn't
specify a custom modelist on the command line). The first thing main() itself
does is configure the signal handlers.
</para>
<para>
Next, it parses the command line for options, yelling at the user if an
invalid or nonsensical argument has been specified. After it has done this,
it tries to open a socket connection to LCDd. If successful, execution
continues. If unsuccessful, the client exits gracefully.
</para>
<para>
Assuming a valid socket connection is established, it sends the "hello"
command to the server, introducing itself and convincing the server that yes,
it really *should* serve this client. Next, it calls the mode_init() function
which appears to set up data structures for the various modes, and then finally
the main_loop() function which executes indefinitely until the client is
killed or is asked to stop. Then the program exits cleanly.
</para>
<para>
main_loop() is defined in this file as well. The main loop listens for any
input from the server, and reacts on what it receives. It appears capable of
dealing with keypresses, listen/ignore signals, and menu activity. After it
has reacted appropriately to inputs, it runs the screen asked for by the
server.
</para>
<para>
The old main() is commented out, but included here for reference. Eventually,
this will be removed from LCDproc's source. For now, however, it serves as a
useful reference.
</para>
</sect3>
<sect3>
<title>clients/lcdproc/mode.c</title>
<para>
This file contains functions responsible for initializing mode screens and
calling the appropriate mode screen update function when asked to do so.
main_loop() passes the server's parsed messages to this function to enable it
to select which screen is called for.
</para>
<para>
This file also contains reread() and getentry() functions which are used by
many of the mode screens.
</para>
</sect3>
</sect2>
<sect2>
<title>Shared Files</title>
<para>
Both LCDd and the LCDproc client make extensive use of linked lists and sockets
code. Much of that code is shared, and stored in the shared/ tree.
</para>
<sect3>
<title>shared/config.c</title>
<para>
This file contains the beginnings of configuration file code.
</para>
</sect3>
<sect3>
<title>shared/LL.c</title>
<para>
This file contains all of the functions used in implementing LCDproc's
linked lists. Functions exist here to create new lists, destroy lists,
remove an entry from a list, add an entry to a list, move a pointer to
the beginning or end of a list, move a pointer to the next item in a
list, the previous item of a list, or to retrieve individual items from
a list.
</para>
</sect3>
<sect3>
<title>shared/sockets.c</title>
<para>
This file contains all the functions used in implementing LCDproc's socket
handling capabilities. Full bi-directional communication is implemented by
these functions.
</para>
</sect3>
<sect3>
<title>shared/str.c</title>
<para>
This file contains only one function, get_args(). It appears to parse
command lines (or command line-like strings) for arguments, and returns them
in a more useful form.
</para>
</sect3>
</sect2>
</sect1>
</chapter>
</book>
+4 -2
View File
@@ -159,8 +159,8 @@ screen_set #id [-priority integer] [-name "my_name"] [-duration integer]
widget_add #screen #id type [-in #id]
Add something onscreen
Widget types can be any of the following: "string", "hbar",
"vbar", "title", "icon", "scroller", "frame", ... more later?
Widgets are drawn in the order you create them.
"vbar", "title", "icon", "num" "scroller", "frame", ... more
later? Widgets are drawn in the order you create them.
You can put a widget inside a frame by adding "-in #id", where
#id is the name of a frame.
@@ -182,6 +182,8 @@ widget_set #screen #id data
icon x y binary_data
num x number_between_0_and_9
title text
scroller left top right bottom direction speed text