library 'serdisplib' Revision History
-------------------------------------

2005-10-19: v1.96
- many internal changes (again and again):
  * replaced disp_code through disp_id. disp_id is no longer a unique code but a id used within a driver to differ 
    display types supported by the driver
  * removed all display codes (from now on distinguishing between displays using the display name or an alias name)
  * cleaned up source tree
  * enabled serdisplib for autoconf (not 100% perfect for now, but working quite fine - tested on linux and solaris)
  * removed PPEXCL when connecting to the parallel port because that caused problems with lp-based programs connected 
    to another parallel port (thanks to Michael Reinelt)
  * replaced dd->curr_reverse / dd->feature_reverse / FEATURE_REVERSE through 
    dd->curr_invert / dd->feature_invert / FEATURE_INVERT to avoid two names for the same thing 
    (to guarantee backward compatibility: FEATURE_REVERSE is now a define to FEATURE_INVERT)
  * serdisp_reset() rewritten. now this function only does a display reset (device reset broke this function sometimes).
    to do a full reset of device and display use:
  * serdisp_fullreset(): does a full reset of the device, display, and contrast. 
    if resetting was successful a new display descriptor is returned.

- deprecated functions / routines:
  * serdisp_feature() is now deprecated (superseded by serdisp_setopion())
  
- new functions / routines:
  * serdisp_getoption(), serdisp_setoption(), serdisp_isoption(), 
    serdisp_getoptiondescription(), serdisp_nextoptiondescription() .. get/set/query options
  * serdisp_getdisplayname(), serdisp_isdisplay(), serdisp_getdisplaydescription(),
    serdisp_nextdisplaydescription(), serdisp_currdisplaydescription() .. query display informations / settings
  * serdisp_transcolour(), serdisp_transgrey(),    .. hardware independend colour info to hw dependend format
    serdisp_lookupcolour(), serdisp_lookupgrey()   .. hardware dependend colour info to independend format

- new defines / macros:
  * SERDISP_VERSION_GET_MAJOR(versioncode) and SERDISP_VERSION_GET_MINOR(versioncode)
  * sd_getdebuglevel(), sd_setdebuglevel()  .. get/set the debug level
  * sd_setlogmedium()  .. set the medium where to output debugging information

- new display category: colour displays

- new displays supported: 
  * nokia 3510i / 3530 colour displays (98x67, 256 or 4096 colours)
  * lph7508 displays (100x64 monochrome; using display module kit by pollin)
  * Hyundai HP12542R displays (128x64 monochrome; using display module kit by pollin) - thanks to cypher_head, I30R6

- testserdisp and multidisplay
  * version information (new option -V)
  * extended help showing supported displays and display information
  * testserdisp now only shows interactive commands that are supported by the active display when entering 'help'
  * testserdisp: new interactive commands 'i' / 'info' and 'fg'  (enter 'help' for more information)
  * multidisplay: fixed bug in option -B (backlight on/off)

- .spec file included for generating RPMs for RedHat/Fedora-based distributions (see README for further informations)


2005-05-10: v1.95
- bug removal:
  * setpixels()
    erraneous loop-calculations corrected (reported by anonymous person at sourceforge bug forum)
  * strncpy-calls replaced through sdtools_strncpy using a workaorund to avoid strncpy-bugs
    strlcpy is used on solaris to avoid strange behaviour of strncpy when n < 4
    there also seems to be a problem on linux with strncpy ...
  * corrected a bug in serdisp_blink() - now all displays should be able to blink (by inverting the screen)

- many internal changes
  * dd now stores colour depth instead of amount of colours
  * restricted colour depth to a maximum of 8 (may be extended in the future. 
    at the moment, only colour depth 1 is used anyways)
  * logical to physical x/y positions are calculated using relocation tables; thus the following was possible:
    - driver specific get/setpixel functions were replaced through generic set/getpixel functions
    - optrex 323 support is now accomplished by sed1530 driver 
      (sed1530 and sed1531 (used by optrex 323) are using the same command set and protocol)
      new name of module: serdisp_specific_sed153x.c|h
  * memset instead of loops for serdisp_clearbuffer() and serdisp_rewrite()
  * many unlisted internal enhancements and code-beautifyings
  * setpixel()/getpixel(): type change
    parameter 'colour' changed from int to long, getpixel returns now long instead of int
    (recompilation the whole stuff should do it. on 32-bit machines, int and long are both 4 byte)
    background: long is always 4 bytes, int is not (16-bit architectures: 2 byte, 32-bit: 4 byte)


- 90 and 270 degree rotations added
  * now displays may be rotated 0, 90, 180, and 270 degrees
    eg: a 96x65 display may be used as a 65x96 display if rotated 90 or 270 degrees 

    NOTA BENE: dd->height and dd->width will always return unrotated height and width, 
               use serdisp_getwidth(dd) and serdisp_getheight(dd) to get width and heigth when display is rotated.

- customisable wirings and options (key-value pairs separated by semi-colons)
  * serdisp_init() now understands key-value pairs which may contain options (eg. INVERT=YES) and wiring definitions
  * enhanced serdisp_connect.c which now also supports parallel displays and reading from the parallel port
    (thanks to Andreas 'powARman' Regel for helping me find and eliminate mistakes)
  * renamed serdisp_conntype_s.conncode to serdisp_conntype_s.conntype 
    (defines now are called "CONNTYPE" and not longer "CONNCODE")

- new methods for serdisp_control
  * serdisp_getpixelaspect()
    get pixel aspect ratio (useful for displays with non-quadratic pixels)
  * serdisp_getdepth()
    get colour depth
  * serdisp_getversioncode()
    get version code of serdisplib
    
- testserdisp
  * time measuring (ts=1) 
  * setpixel()/getpixel() replaced through more generic setcolour()/getcolour

- new displays supported: (serdisplib goes parallel!)
  * Toshiba TLX-1391 (128x128)
  * generic T6963-display support (default resolution: 240x128)
    (thanks to Andreas 'powARman' Regel for testing generic support using his 240x128 display)
  * SED 1330/1335-based displays
  * nec 21a ("skyper") display module support (sed1561)
  * lph7690 display (look at 'pcd8544 driver enhancements' below)

- operating systems and compiler support:
  * support added for solaris 10 (ecpp only). tested on solaris 10 x86
  * support for *BSD suspended due to lack of interest (will be resumed if someone finally tests it)
  * tested with gcc 2.96, gcc 3.x, and gcc 4.0
  * pointer operations are all 64-bit aware
    
- pcd8544 driver enhancements (driver now supports pcd8544 and compliant command sets):
  * unused signal CS removed (circuits, descriptions, ... have been adapted, too)
  * added support for lph7690-displays (found in nokia 6210/6310 and others). resolution: 96x60
      
- new tool 'multidisplay'
  * displays pictures (jpg, png for the moment) 
    auto-scaling and auto-pixel aspect ratio correction
  * displays messages or files
  * displays variable command output
  * picture may be set as background for text output
  * libgd used for picture processing and generating text-output
    -> 5 built-in fonts
    -> support for truetype fonts


2004-07-22: v1.94

- new display supported: 
  * ALPS LSU7S1011A, controller SED1530  (sold by pollin.de)

- start with some internal aggregation and enhancements


2004-07-18: v1.93

- serdisplib: version info:
  * SERDISP_VERSION_MAJOR, SERDISP_VERSION_MINOR:
    major and minor version number of currently installed serdisplib
  * SERDISP_VERSION_CODE: version code of currently installed serdisplib
  * SERDISP_VERSION(a,b): calculates a SERDISP_VERSION_CODE

  eg: #if SERDISP_VERSION_CODE < SERDISP_VERSION(1,93)
      if (SERDISP_VERSION_CODE >= SERDISP_VERSION(1,92)) ....

- serdisplib: beautifying:
  * code beautifying and removing warnings in all modules

  * replaced fprintf()-messages through sd_debug() and sd_error() which use syslog()
    sd_error() also sets an error string (sd_errmsg) which can be used for own error messages

  * sd_runtime_error() returns whether a runtime error occured (eg: ioctl-commands where unsuccessful)

- new display type supported: i2c-displays
  * ericsson t2x displays (eg: t28)  (101x33 pixels)

- new output device supported:
  * serial port (only for i2c-displays),
    either ioctl (eg: /dev/ttyS0) or direct-IO (eg: 0x3f8)

- serdisp_control: new / changed functions:
  * serdisp_getSDCONN(): get serdisp connect descriptor
  * serdisp_reset(): resets display (resets sd_runtime_error() and tries to re-init output device)
  * serdisp_quit(): release output device and close display
  * serdisp_close(): release output device but do NOT clear and close display
                     (this may be used for example for programs that display a message and quit)

                     ATTENTION: this does NOT work with serial port in combination with ioctl!
                                (serial port in combination with direcct-IO works as expected)

- serdisp_control: new elements in display descriptor
  * delay:  how many nanoseconds to delay after each write-operation
  * connection_types: which connection types (parport, serport, ..) are supported by display  

- serdisp_specific_*.c
  * corrected bug in serdisp_feature(): FEATURE_ROTATE now works as expected

- changes to api: 
  * in the future, more output devices will be supported
    (besides parport and since this release serport for i2c)
    thus serdisp_parport.h, PP_open, PP_close and PP_write where replaced through
    serdisp_connect.h, SDCONN_open, SDCONN_close and SDCONN_write.
    also the descriptor serdisp_PP_t was renamed to serdisp_CONN_t

    for backward compatibility serdisp_parport.h is still existing and contains defines
    that resemble the old names (but it is recommended to only use serdisp_connect.h)

    no display descriptor fields should be accessed directly. so ONLY serdisp_close() or
    serdisp_quit() should be used for shutting down the output device (no more SDCONN_close(dd->sdcd);)

  * SDCONN_read will be used for reading data from the output device (eg: i2c acknowledge bit)

- testserdisp
  * better/corrected error messages, printing of usage
  * some cleaning up
  * additional parameters (type 'help' at the prompt)
  * test picture is now generated, no more *.xbm are needed
  * test picture now displayed after starting testserdisp
  * some more/changed/better test patterns

- serdisp_specific_optrex323.c
  * #define OPT_MRPROPER no longer activated -> speedup (in some cases enormous speedup)
    (if you face faulty pixels at the two unused borders, please reactivate)

- Makefile
  * mkdir -p now used for recursively creating $(DRIVERINCLUDE_PATH)/serdisplib
    (thanks to Alan Carvalho for this hint)

- serdisplib now compiles under the following operating systems:
  * linux   (compiles and tested with kernel 2.4.x and 2.6.x)

  * freebsd (compiles, but not tested; only ioctl for now)
  * openbsd (compiles, but not tested; only ioctl for now)
  * netbsd  (should compile, could not verify)



2004-03-22: v1.92
- changed version numbering back from beta to number format
- removed common history information from source file
  history information can now be found here
- new: serdisp_tools. will contain handy functions
    sdtools_genericrotate ... (unoptimised) rotation of display
                              will be unoptimised because it will be nearly
                              never used anyway
- changes to api: 
  * now both, direct outp and ioctl-calls are supported for writing to the 
    parport
    instead of a filedesc ('int fd') a struct 'ppd' (parport descriptor)
    is now used
    (thus changed: PP_open, PP_close, PP_write, serdisp_init)

  * additional parameter for serdisp_init:  char extra[]
    can be (char*)0, "" or additional settings (future use)
    may contain settings like non-standard wiring, non standard dimensions, ...

- now more than 8 pages are supported for monochrome displays

- functions added:
    serdisp_getpixel      ... gets colour at position (x/y)
- version information added to serdisp_control.h

- two new fields in dd-struct:  startxcol and startycol (needed for example by nokia 7110)

- new display/controller supported: nokia 7110 (or generic: controller sed1565)
  "NOKIA7110" (96x65 nokia 7110 display)
  "SED1565"   (132x65 generic. don't use this with nokia7110, use string above)

- enhanced makefile
  now both, static and shared library are built when 'make install'
  include-files are now installed, too

- corrected minor bugs (typos, misleading comments, ... )


2004-02-04: v1.9b1
- corrected some typos
- tarball now unpacks into separate directory

2004-02-03: v1.9b: first release to the public

2004/Jan    rewrite again. be more modular and generic
            html-pages for serdisplib went into production (hardware, ...)
            (http://serdisplib.sourceforge.net)

2003/Dec    rewrite  (support for new display class: += pcd8544-based ones)

2003/July   start of library (only display: optrex 323)
            library is used only as sub-system for graphlcd for now


former version were experimental w/o useful Makefile 
and stuff like that (first functioning version: ~ july 2003)
