---------------------------------------------------------------------
GraphLCD driver library

The AX 206 digital photoframe driver
---------------------------------------------------------------------

Description
-----------
The ax206dpf driver supports AX 206 based DPFs.
For more information about these DPFs see:
http://tech.section5.ch/news/?p=68

The driver was tested with this display:
http://www.pearl.de/a-PX1184-5618.shtml or http://www.pearl.de/a-HPM1184-5618.shtml

Important Notes
---------------
This driver is experimental and not enabled by default.
To use this driver uncomment the HAVE_DRIVER_AX206DPF line in
Make.config and recompile the library.
The DPF does not work out of the box with this driver. 
It has to be modified with a custom firmware (see "Hacking your DPF").
If your DPF is already hacked, there is no need to install the "dpf-ax" package
described in "Hacking your DPF". All necessary routines to access a hacked
DPF are included in this driver.

Multi-display setups
--------------------
This driver supports up to 4 displays. The displays can be aligned horizontal,
vertical or tiled (See "Example multi-display setups").

Hot plugging
------------
Hot plugging of displays is supported. The driver will add/remove displays automatically
as they are plugged in or removed. For multi-display setups the scan for new displays will
continue until all needed displays are detected.

Non-root users
--------------
The driver needs write access to the USB port of the display module.
If the enclosed udev-rules file '99-graphlcd-base.rules' is installed, add
the user(s) that should be authorised to use the display to the group 'uucp'.

If the enclosed udev-rule will not be used a custom rule needs to be provided if
other users than root are to be authorised:

ATTRS{idVendor}=="1908", ATTRS{idProduct}=="0102", GROUP="<user_group>", MODE="0660"
Replace <user_group> through a unix group of your desire.


Configuration Parameters
------------------------
The driver supports the following parameters in config file:

Device
 Selects a specific display.
 'dpf0' = first detected display, 'dpf1' = second detected display, ...
 Default value: 'dpf0'

Width
 Sets the horizontal size of the display. If this parameter is not
 given, a default value according to the selected DPF is used.
 Default value: 320 or 240 (see 'Portrait')

Height
 Sets the vertical size of the display. If this parameter is not
 given, a default value according to the selected DPF is used.
 Default value: 240 or 320 (see 'Portrait')

UpsideDown
 Rotates the display output by 180 degrees. This might be useful, if
 the display is mounted upside-down.
 Possible values: 'yes', 'no'
 Default value: 'no'
 
Brightness
 Sets the brightness of the display's backlight.
 Possible values: 0 <= x <= 100)
 Default value: 100

Portrait
 Select portrait or landscape mode.
 Rotate display output by 90 degrees if necessary.
 Possible values: 'yes' -> default size = 240 x 320
                  'no' -> default size = 320 x 240
 Default value: 'no'

Zoom
 Determines if pixels should be magnified.
 Possible values: 1, 2, 3, 4
 Default value: 1

The following parameters are for multi-display setups only (see "Example multi-display setups").

Horizontal
Sets the number of displays in horizontal direction.
 Possible values if Vertical=1: 1, 2, 3, 4
                 if Vertical=2: 1, 2
 Default value: 1

Vertical
 Sets the number of displays in vertical direction.
 Possible values if Horizontal=1: 1, 2, 3, 4
                 if Horizontal=2: 1, 2
 Default value: 1

Flip
 Rotates a single displays output by 180 degrees. This might be useful, if
 some displays are mounted upside-down.
 Possible values for every display : 'y', 'n'
 Default value: 'nnnn'


Example multi-display setups
----------------------------
'#' = position of USB-connector

Portrait=y      Portrait=n          Portrait=n      Portrait=n          
Horizontal=2    Horizontal=2        Horizontal=1    Horizontal=2
Vertical=1      Vertical=1          Vertical=3      Vertical=2
Flip=nn         Flip=ny             Flip=nyn        Flip=nyny

+-+  +-+        +---+  +---+        +---+           +---+  +---+
| |  | |      # +---+  +---+#      #+---+          #+---+  +---+#
+-+  +-+          1      2            1               1      2
 #    #                             +---+           +---+  +---+
 1    2                             +---+#         #+---+  +---+#
                                      2               3      4
                                    +---+
                                   #+---+ 
                                      3

Hacking your DPF
----------------
For hacking your DPF you need this dpf-ax package:
http://tech.section5.ch/files/dpfhack-0.12devel.tgz

First of all, let me quote this from the dpf-ax README ((c) 4/2011, hackfin):
[quote]
Also note: NO SUPPORT! NO WARRANTY! FRIENDS DON'T MAKE FRIENDS HACK THEIR
DPF! LET ALONE NON-FRIENDS! (Bottomline: Don't ask me if I can hack your DPF).

If you wish to hack your DPF, please check the sites listed below.
.
.
Find updates and documentation here:

http://tech.section5.ch/news/?p=68
or here:
http://picframe.spritesserver.nl/wiki/index.php/DPF_with_AppoTech_AX206
For our german users, a very good explanation is found here:
http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/
[/quote]

So if you are not sure if you have the right DPF or something goes wrong:
don't ask me either - I'm like you only a user and not involved in the
development of the hack!

A guide how to hack the Pearl display can be found here (in german):
http://www.vdr-portal.de/board1-news/board2-vdr-news/p1015287-announce-graphlcd-base-vdr-plugin-touchcol-branch/#post1015287