Write about the client language.

This commit is contained in:
mmdolze
2012-09-02 12:22:14 +00:00
parent c11ec7adea
commit d3cc108f57
+89 -14
View File
@@ -15,7 +15,7 @@ In addition to alphanumeric characters represented by segments or pixels,
LCD/VFD displays are often capable to show additional pictograms, mostly
arranged around the alphanumeric display part.
These pictograms can be switched on or off, or by changing their appearance
These pictograms can be switched on or off, or can change their appearance
as seen for volume settings.
LCDproc comes with icons that are integrated into the alphanumeric display
@@ -27,7 +27,7 @@ application which wants to make use of these pictograms need to know the
exact type of display driver used and how that drivers handles values to the
output() function.
This document aims to specify client language and driver API extensions
This document aims to specify client language and driver API extensions to
address pictograms in a manner not specific to certain drivers.
.. note::
@@ -40,7 +40,87 @@ address pictograms in a manner not specific to certain drivers.
Client language
===============
This section should talk about the client language.
The LCDproc client language will be extended with two new functions that can
be called by a client.
pictogram_list
--------------
.. code::
pictogram_list
If this function is called the server will respond with a list of supported
pictograms.
Clients are required to call this command first to retrieve the list of
supported pictograms. If the server does not support the pictogram feature,
it will respond with "huh? unknown command". Clients must not use
pictogram_set then.
If the server does support pictograms, it will respond with a list of
pictograms that are currently understood by at least one driver.
This means the list changes accordingly to the loaded drivers and may even
be empty if no loaded driver uses pictograms!
The response will look like:
.. code::
pictograms [name:type[:group_id:group_type]]*
List entries are separated by a space character. Each list entry does consist
of 2 or 4 fields, separated by colon:
Name:
The name by which the pictogram is known to the server. It is an US-ASCII
string not containing any spaces.
Type:
The type of the pictogram. This will be the string 'bool' for boolean-type
or 'num' for numeric-type pictograms.
Group_id:
This optional part contains a group identifier. The group_id is a number
in the range 1-(2^32-1). It is used by the driver to inform the client
that certain pictograms have a relation.
Group_type:
The group_type must be present if a group_id is set. It describes how
pictograms in the same group behave. It will be either the string 'alt'
(alternate) for groups in which only one pictogram can be active at any
time or 'mul' (multiple) for groups which can have several pictograms
active at the same time.
Client shall process the strings case-insensitive.
pictogram_set
-------------
.. code::
pictogram_set pictogram_name:value
By calling this command a single pictogram is changed. The pictogram is
referenced by its name and a value, according to the given type. The reserved
name 'all' can be used to turn off all pictograms at the same time.
.. note:: It has not yet been defined if 'all' can be used to turn on all
pictograms at the same time.
For boolean-type pictograms the following values are recognized:
* String 'on' (case-insensitive) or value 1:
This will turn the pictogram on.
* String 'off' (case-insensitive) or value 0:
This will turn the pictogram off.
.. note:: Strings are to be used without the quotes.
For numeric-type pictograms value is a number between 0-1000 (inclusive).
The value 0 shall turn the pictogram off.
Driver API
@@ -59,15 +139,13 @@ and the second parameter will be its value. The function will return 0
(zero) if the pictogram is understood by the driver and -1 (minus one) if it
is not supported.
.. note::
There will be no alternative implementation in LCDd core if a driver does
not understand a pictogram (like it is done for icons).
Their will be no alternative implementation in LCDd core if a driver does
not understand a pictogram (like it is done for icons).
This function will never be called with multiple pictogram IDs combined
into one. It will be called for each pictogram to be set / cleared. If a
driver wishes to reduce communication with the hardware it may implement
some kind of cache and write the changes on a call to flush().
This function will never be called with multiple pictogram IDs combined into
one. It will be called for each pictogram to be set / cleared. If a driver
wishes to reduce communication with the hardware it may implement some kind
of cache and write the changes on a call to flush().
The pictogram ID is defined in the file called lcd_pictograms.h as an
enumerated type. It will have a symbolic name prefixed with [Definition:
@@ -103,9 +181,6 @@ shall be turned off or on.
* Drivers may define their local set of pictogram ID and assorted client
language names.
* Pictograms may be implemented as widgets. In this case LCDd core will
keep track of its value.
Internal implementation
=======================