library 'serdisplib' Revision History ------------------------------------- 2017-02-04: v 2.01 (supersedes both v1.97.x and v1.98.x) - API-enhancements * new function serdisp_defaultdevice(displayname): returns default device identifier for given display name this function renders setting of device expressions unnecessary in most cases (testserdisp -n sdl -p out: can now be simply entered as testserdisp -n sdl) - new displays / drivers / features: * SDC-Megtron USB-displays 240x128 * output to an SDL window * Electronic Assembly EA KIT128-GXT (via serial port) * Omaura OLED (via serial port) * DG-16080 160x80 * DG-16080-11 160x80 (non-square pixels) * displays driven by USB13700 USB module * Bolymin BL160128A colour OLED 18bit * 4DOLED-282815 colour OLED 18bit * Linux4Media L4M-2.8T320LCD USB LCD 320 Touch * Framebuffer device * GLCD2USB based device * experimental driver 'remote' (use configure-option --enable-experimental to enable) * support for mouse/touch events (SDL, L4M320T, framebuffer, displaylink) * added tool for generating touchscreen calibration info (framebuffer, displaylink) * added udev-rules file with rules for displays supported by serdisplib - linking * option to compile library with libdl-support (libSDL, libusb, and libpthread are not linked to the library but loaded at runtime) * SONAME pattern matching added for maximum linux distribution compatibility (no more need for installed libusb-dev(el)) * dynamic loading can be turned of with configure-option --disable-dynloading * compiling * compile option added to only build library without any tools (--disable-tools) * support for RPi and RPi2 (Raspberry 1-3) including cross-compiling (via environment variable $PROJECT) - drivers: enhancements / bug-removal * framebuffer: support for 'ugly' damage reporting (write '\n' to framebuffer device) - deprecated: * driver displaylink is deprecated (use configure-option --enable-deprecated to reactivate it) * bug fixes and much more (see SVN log for full history) 2011-03-20: parallel development of branches v1.98 and v1.97.x (since v1.97.2) - workaround: serdisp_connect.h, struct serdisp_CONN_s {} * qt (moc) has problems with field signals[] (because of name-clash) -> workaround: field signals[] is wrapped into an #ifndef __cplusplus -> lcdbuilder (lcdbuilder.sf.net) should no longer have problems with this issue - API-enhancements / bug-removals / library enhancements * new function serdisp_isdisplay(displayname): returns 1, if a certain display name is supported * new function serdisp_nextstaticoptiondesc(displayname, &optiondesc): this function provides the same functionality as serdisp_nextoptiondescription() but the display is identified by its textual name. the function may be used for retrieving the options provided by a display _without_ the need of a connected and initialised display (eg. for GUI-applications) * sdtools_generic_get/setpixel() were extended to be usable for depth = {1,2,4,8,12,16} * serdisp_control.c now also manages to allocate space for depth >= 8 if not set in driver (needed for remote) * macros sd_error() and sd_debug() are now wrapped in a block (thanks to maf for this hint) * serdisp_nextoptiondescription() didn't free resources -> fixed * graphlcd-plugin (vdr) should no longer crash if usb-based display is removed * serdisp_fullreset() now does reset in a more intelligent way * serdisp_connect_usb(): commit bug in IOW24-part of SDCONNusb_write() fixed * serdisp_tools.c: corrected bug in sdtools_strncpy() when force-setting string termination * all index()-occurences are replaced through strchr() * support added for pkgconfig * use doxygen for documentation of code and API * command processor added which is used in testserdisp. can also be used via telnet from 'outside' (if supported by specific driver) - drivers: enhancements / bug-removal / new ones * n3510i: corrected problem with empty struct (initialising failed because of this issue) * n3510i: corrected update problem: now no more pixels should be missing when using usb * sed133x: improved clock-cycles from 4 to 3 steps * l4m320t: support added for 'digital devices usb lcd 320 touch' a.k.a l4m320t-displays (including support for touchpad) * l4m320t, l4m132c: added additional alias for 'alarmdays': 'alday' * l4m320t: support for new vendorID * l4m320t: added option 'alarmmode' * framebuffer: generic framebuffer support added (including different ways for damage reporting). linux only! * displaylink: generic displaylink device support added (via libdlo), but framebuffer-driver + udlfb should be used instead because development for libdlo seems to be dead and libdlo is not stable enough. - tools: * l4m320t_tool: tool for l4m320t devices: firmware updates, change bootlogos, set alarms, calibrate touchscreen * l4m132c_tool: tool for l4m132c devices: change bootlogo, set alarms, set time, change contrast * sdcmegtron_tool: tool for sdcmegtron devices: change bootlogo, change brightness - code-beautifying * all driver-routines except serdisp_*_setup() are no longer visible outside the driver (seen at maf's code) * because of this, all serdisp_specific_*.h have been removed. all serdisp_*_setup() prototypes can now be found in serdisp_control.h * removed code-duplication from serdisp_specific_sed153x.c - linking * libusb is no longer required at linking time. for usb-support only the header files from libusb are required at compile time * all extra libraries like libpthread, libusb, ... are now loaded at runtime by dlopen() (libdl) -> when using linux all programs that statically link serdisplib are required to link to libdl - introducing support for GPIs and GPOs GPIs: general purpose input (e.g.: touchpad events, IR-events, buttons) GPOs: general purpose output (e.g.: extra symbols, LEDs) - client / server enhancements (only available if configure is called with --enable-experimental): * new display driver 'remote', contributed by maf * serdispd: server daemon, controls >= 1 displays, contributed by maf data is exchanged via internet using serdisplib driver 'remote' * lirc-support for c't-includ-display - contributed by maf serdisplearn, serdispproxy: generate lirc-compliants events (c't-include) - all changes that were forgotten ... HISTORY for parallel development of version 1.97.x since v1.97.2 and development branch of v1.98.x 2010-02-21: v 1.97.9 (= SVN r286) - enhancements / bug-removal / changes * testserdisp.c: -> w/h info in test-pattern 'test' may now display up to 4 digits -> new test patterns for displaying gradients: 'gradient': display four gradient bars (black to white / red / green / blue) 'gradient R', 'gradient G', 'gradient B': red/green/blue gradient 'gradient r', 'gradient g', 'gradient b': ditto, but different algorithm * new options: -> DSPAREAWIDTH, DSPAREAHEIGHT (both optional): user definable display area dimension (used for calculating aspect ratio) -> BRIGHTNESS (values: 0 (dark) to 100 (full brightness)) (for all displays/modules with support for 'CONTRAST') * output device: -> usb: additionally accept textual device names like "FTDI/DLP2232M" (additionally to "0x403/0x6010") -> usb: support for protocol differentiation (e.g.: USB@SPI) added. (better differentiation between 'connection types' and 'protocols' in code and messages, removed 'USBSPI' as connection type ('USB@SPI' now to be used instead)) * serdisp_control.c: -> additionally accept hexadecimal values for options (if starting with 0x or 0X) -> support added for additional (optional) field 'mid_contrast': (to be able to use a power function based calculation of the contrast values) * serdisp_colour.c / serdisp_tools.c / serdisp_control.c: -> added functions, support, and enhancements for colour depths 18 (RGB666), 24, and 32 -> bugfix for macro SD_CS_ISGREY() * serdisp_tools.c: -> support for calculating bounding boxes added (sdtools_calc_bbox()) -> support for simple libm-independend replacements for log(), exp(), and pow() - enhancements to ./configure and Makefiles * new option --enable-libSDL: enable driver 'directgfx' / SDL-output * cleaner linking (only link shared objects that are really required) * removed many bumps that caused problems with opensolaris and freebsd/pcbsd * many cleanups - display driver bug-removal and enhancements * alphacool: -> usb initialisation problem (every 2nd start no output) solved (but a minor problem where de-initialisation may last some seconds remains) * n6100/s1d15g10: -> initialisation/resetting of scrolling commands added * l4m132c: added support for -> depth=1 (faster output) -> setting of fore/background colours (when using depth=1) -> resolution mode 128x64 (spare pixels are then used for visual IR signal confirmation) -> setting of alarm time (only if supported by firmware of module) - new displays/controllers: * USB13700-module support * new driver 'directgfx' with support for SDL-output * LC7981-based displays (so far: DG-16080 series) * BL160128A added to ssdoled.c: Bolymin BL160128A colour OLED, 160x128, 18bit * 4DOLED282815 added to ssdoled.c: 4DOLED-282815 colour OLED, 128x128, 18bit - new tools * l4m132c_tool (standalone tool for l4m132c modules): -> change bootlogo -> set alarm time / alarm days -> set module time -> change contrast/brightness * sdcmegtron_tool (standalone tool for sdcmegtron modules): -> change bootlogo -> save screenshot -> change brightness - many cleanups and small bugfixes (eg: enforcing/fixing scope visibility limits) * see SVN revision log for detailed information 2008-07-31: v1.97.8 - enhancements / bug-removal / changes * testserdisp.c: changed starting point of moving box in pattern #6 * bitbake file is now created automatically using PACKAGE_VERSION * serdisp_control.c: serdisp_clear() is now customisable by the driver (to be able to support 'clear' commands) * testserdisp.c: new test pattern 'gshade' (draws a grey level pattern) * testserdisp.c: new test pattern 'rgbtest' (draws a test pattern (RGB/CMYK) for colour displays) * testserdisp.c: pattern 'p 6' now draws coloured bars in the background on colour displays * testserdisp.c: commands 'sl' and 'sr' no longer crash on erraneous input * testserdisp.c: pattern 'p 0' now draws coloured digits on colour displays * serdisp_connect_usb.c: claiming of interface now immediately after usb_open() * added conversion functions for internal/external represenation of contrast and rotation value - enhancements to ./configure * drivers are now (de)selectable using --with-drivers=driver1,driver2 or --with-drivers=all,!unwanteddriver1,!unwanteddriver2 * new option --enable-statictools (default = yes) links testserdisp and multidisplay statically to libserdisp.a (if ==no: dynamically to libserdisp.so) - display driver bug-removal and enhancements * nokcol driver: -> added 12bit colour modus for S1D15G10-based displays (wow, that was a pain in the a...) -> corrected incorrect setting of contrast for S1D15G10-based displays * FTDI support -> enhanced and enabled support for FTDI 2232 and 245 modules (for drivers supporting streaming and if the display/controller is connected to the parallel port) -> two modes are supported for now: SPI (8 and 9bit) and direct IO (up to 8 signal lines) * t6963 driver added new item 'scrbuf_bits_used' to struct 'serdisp_s'. 'scrbuf_bits_used' replaces field 'fontwidth' which has been removed. * l4m driver added support for colour display modules 132x65 interfaces are no longer hard-wired but now auto-detected * sed153x driver removed nasty typo (introduced in 1.97.5 and undiscovered since then) which rendered - Alps LSU7S1011A display modules and - Optrex 323 display modules unusable when connected using default wiring * sed133x driver initialisation rewritten - now bigger panels should work - dual panel displays are now supported (untested) support for s1d13700-based displays added * ks0108 driver inverted EN-signal when connected to parport -> improved signal quality (thanks to Alexey Martynov) * removal of code-redundancy -> drivers lh155, nokcol, sed133x, and t6963 now use generic set/getpixel_greyhoriz from serdisp_tools.c - new displays/controllers: * goldelox support for displays that are driven by the GOLDELOX-MD1 module * stv8105 for Osram Pictiva OLED 256x64 * Digital Devices 132x65 colour display module * S1D13700-based displays (added to sed133x-driver) * Ericsson T65 (pinout and controller compliant to Ericsson R520) 2007-10-08: v1.97.7 (= SVN rev.15) - enhancements / bug-removal * serdisp_connect_usb.c: move interface-claiming part into separate function and do the claiming stuff not until the end of SDCONNusb_open() - now alphacool usb-display works fine with solaris10 and init-problems seem to be fixed * serdisp_connect.h: small hack for c++-based projects: hide label of field 'signals' in struct serdisp_CONN_s (the library will/should always be compiled with gcc, so this hack shouldn't lead to any problems) * fixed erraneous pinouts in PINOUTS (S1D15G10-based displays and PCF8511) - some preparations for re-merging 1.97.x-tree with devel-tree - changes in bitbake file for openembedded linux * added do_stage()-section * minor changes - display driver bug-removal and enhancements * ssdoled driver: -> fixed min/max-contrast settings for Osram Pictiva 128X64 OLED 4bit * nokcol driver: -> x/y startpos offset now variable through options OFFSETX and OFFSETY: Abhishek uses shiftx=0 and shifty=2; my displays use 1/1. so i made both offset settings variable (default: OFFSETX=1;OFFSETY=1) - new displays/controllers: * linux4media L4M-5Ei usb-device (libusb and ioctl/hiddev) (cool usb-display with IR-sensor that connects as HID-device that is working out of the box when using linux) * alphacool 200x64 and 240x128 usb displays (libusb) 2007-07-31: v1.97.6 (2nd driver backport release) - fixed potential linking problem in src/Makefile (thanks to Bernhard Walle): libserdisp.so is now linked against libusb (if --enable-libusb is set) - enhancements / bug-removal * serdisp_tools.c: corrected bug in sdtools_strncpy() when force-setting string termination * serdisp_tools.c: sdtools_generic_get/setpixel() now capable of depth = {1,2,4,8,12,16} * serdisp_tools.c: get/setpixel-routines for displays with horizontal bit-orders added * serdisp_colour.c: colour routines added, support for handling of self emitting displays (eg. OLEDs) * testserdisp.c: support for OLED-displays (inverse handling of default foreground/background colour) * testserdisp.c: 'test' now displays a colour/greyscale test image if applicable. to force a black/white test image, 'bwtest' should be used to force a greyscale or colour test image, 'ctest' should be used - extended display support * nokcol driver: -> added support for S1D15G10-based displays (green connector, nokia 6100 and co. (130x130 colour displays) contributed by Abhishek Dutta -> driver now uses generic sdtools_generic_get/setpixel() functions * PCD8544 driver: -> added support for PCF8511-based displays (nokia 5310, 6310) contributed by Jeroen Domburg - backported the following displays/controllers (from current devel version): * Osram Pictiva 96X36 OLED 1bit, 1", monochrome * Osram Pictiva 96X64 OLED 16bit, 1", colour * Osram Pictiva 128X64 OLED 4bit, 2.7", greyscale - some countless minor changes / code beautifyings 2007-03-07: v1.97.5 (driver backport release) - adapted some driver specs to current devel version (following to this all serdisp_specific_*.h were now obsolete and have been removed) - backported the following displays/controllers (from current devel version): * lh155-based displays (eg. Sharp M078CKA 240x64) - only 8080-mode supported for now * E08552 96x32 1bit (controller SED1530) * enhanced t6963-driver: -> includes support for parallel-to-serial converters found in some t6963c-based display modules -> support for switchable background light (RD-signal no longer available thus ready-check no longer available when using this mode!) * slightly fastened sed133x-driver: improved clock-cycles from 4 to 3 steps 2007-02-22: v1.97.4 (very small interim error fix release) - bug removal in ctinclud drawing routines - bug removal in serdisp_messges.h: fixed missing bracketings in some defines - bug removal in src/Makefile.in: LIB_NAME=libserdip -> LIB_NAME=serdisp (the former resulted in liblibserdisp.so... ) - serdisp.spec: dependency changed from libusb to libusb-devel - version information in serdisp_control.h now generated using configure 2007-02-11: v1.97.3 (very small interim error fix release) - bug removal in n3510i-driver (descripted here: http://sourceforge.net/tracker/index.php?func=detail&aid=1522810&group_id=98249&atid=620440) allocating an empty struct caused n3510i to fail because of sdtools_malloc() returning 0 HISTORY until version v1.97.2 2006-04-02: v1.97.2 (interim problem solve release) - bug(?)/problem removal * usb_bulk_read() causes some problems on certain linux-versions: replaced through usb_clear_halt() (usb_bulk_read() would be the right way to go, but it may cause big problems (no clue why...)) * $(TARGET_LDFLAGS) included in Makefiles (for cross-compiling) 2006-03-27: v1.97 - bug removal * serdisp_connect.c: section linux-includes: include sys/io.h only if directIO is supported (otherwise useless or even leading to comp. errors) - thanks to Christoph Haderer for pointing this out bugs removed in SD_CS_IS_*: | was used instead of & * serdisp_specific_sed133x.c: added an extra NOP at the end of the update-function to avoid erraneous pixels when releasing the parallel port * multidisplay corrected a bug resulting in a wrong background colour when in dithering mode (since v.1.96) - enhancements * a SONAME is now set in libserdisp (enabled only when using linux) * additional functions SDCONN_writedelay() and SDCONN_commit() in serdisp_connect.c * serdisp_nokcol.c: set min/max_contrast borders to useful values for n3510i/n3530 * serdisp_connect.c: new signal aliasnames: AD0-AD7, BD0-BD7 (BD4-BD7 for usb devices only) * serdisp_specific_ed156x.c: changes to enable generic backlight support * enhanced accuracy for serdisp_ARGB2GREY(): using (77*r + 150*g + 28*b) / 255 instead of (30*r + 59*g + 11*b) / 100. thanks to Michael Reinelt (maintainer of lcd4linux) for pointing this out * new connection type: SERDISPCONNTYPE_IOW24: for c't includ display using iowarrior kernel module by codemercs * USB support via libusb (for now: IO Warrior 24 / c't includ display) - disabled by default (see README for additional info) - new displays supported * ericsson r520 displays (101x67, 4 grey levels, i2c. thanks to z01 from lcdinfo-forum for tracing the i2c-traffic) * ks0108-based displays (up to 4 controllers, > 2 controllers when using a multiplexer) * c't includ usb-display (ks0108/io warrior 24-based - www.includ.de) - multidisplay * removed option -l (threshhold level) because it was useless anyways (since some changes in the floyd steinberg algorithm) * new option -S (scaling algorithm) * animation support (new option -L <loops>) * graphlcd's .glcd-images supported (single and animated) * multiple image-file support for -f (note that -f should be the last parameter) if more than one image file is given for -f, a slideshow will be done by multidisplay - architecture support * linux/mips successfully runs serdisplib. tested by Christoph Haderer (on his Asus WL-500G router). he also created a serdisplib package for openwrt (http://www.openwrt.org) - limitations: * usb support (libusb) is not working with solaris and freebsd at the moment (solaris: unsolved problems with rights for interface 1) - postponed to next release v1.98: * GPOs (general purpose objects), eg. symbols, leds, ... that are supported by certain displays * generic FTDI support (it is working, but some things are still missing and the whole implementation is not tested very well. so support for FTDI-chips has been disabled in this release) 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)