diff --git a/ChangeLog b/ChangeLog index 3ff92ee..b942dc5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -35,6 +35,7 @@ v.0.5dev (ongoing development) * fix custom characters [with NewFirmware=yes] & backlight in CFontz + ea65 - driver for VFD in AOpen XC Cube AV EA65 barebones (Karsten Festag) + picolcd - driver for Mini-box.com USB LCD picoLCD (Gatewood Green) + + new ConnectionType pertelian in hd44780 driver (Matteo Pillon) v.0.5.1 + config file support in lcdproc client (Andrew Foss) diff --git a/docs/lcdproc-user/drivers/hd44780.docbook b/docs/lcdproc-user/drivers/hd44780.docbook index 415c45b..491e1de 100644 --- a/docs/lcdproc-user/drivers/hd44780.docbook +++ b/docs/lcdproc-user/drivers/hd44780.docbook @@ -1283,6 +1283,24 @@ See http://www.jepsennet.de/vdr/ + +Pertelian X2040 "pertelian" + + +The Pertelian X2040 includes an hd44780 display with enclosure and usb +connection. In order to work with lcdproc you need usbserial and +ftdi_sio modules loaded. Display will be available on /dev/ttyUSB0. + + + + See product + page for more information. + + + + + PIC-an-LCD serial device "picanlcd" diff --git a/server/drivers/hd44780-drivers.h b/server/drivers/hd44780-drivers.h index c62bc77..47044e0 100644 --- a/server/drivers/hd44780-drivers.h +++ b/server/drivers/hd44780-drivers.h @@ -44,6 +44,7 @@ static const ConnectionMapping connectionMapping[] = { {"los-panel", hd_init_serial, "\tnone\n"}, {"vdr-lcd", hd_init_serial, "\tnone\n"}, {"vdr-wakeup", hd_init_serial, "\tnone\n"}, + {"pertelian", hd_init_serial, "\tnone\n"}, /* End serial connectiontypes */ {"lis2", hd_init_lis2, "\tnone\n"}, #ifdef HAVE_LIBUSB diff --git a/server/drivers/hd44780-serial.c b/server/drivers/hd44780-serial.c index fc38880..2d9c7f3 100644 --- a/server/drivers/hd44780-serial.c +++ b/server/drivers/hd44780-serial.c @@ -267,18 +267,19 @@ serial_HD44780_senddata (PrivateData *p, unsigned char displayID, unsigned char void serial_HD44780_backlight (PrivateData *p, unsigned char state) { + unsigned char send[1]; if (p->have_backlight) { if (SERIAL_IF.backlight_escape) { - unsigned char send[2]; send[0] = SERIAL_IF.backlight_escape; - send[1] = state ? 0 : 0xFF; - write(p->fd, &send, 2); + write(p->fd, &send, 1); + } + if (SERIAL_IF.backlight_on && SERIAL_IF.backlight_off) { + send[0] = state ? SERIAL_IF.backlight_on : SERIAL_IF.backlight_off; } else { - unsigned char send[1]; - send[0] = state ? SERIAL_IF.backlight_on : SERIAL_IF.backlight_off; - write(p->fd, &send, 1); + send[0] = state ? 0 : 0xFF; } + write(p->fd, &send, 1); } } diff --git a/server/drivers/hd44780-serial.h b/server/drivers/hd44780-serial.h index 67333ee..be9e9e5 100644 --- a/server/drivers/hd44780-serial.h +++ b/server/drivers/hd44780-serial.h @@ -18,6 +18,12 @@ typedef struct SerialInterface { char keypad; char keypad_escape; char backlight; + /* + if both escape and on/off codes are set means that display + can't set brightness, but can only switch light on or off and + needs both escape and on/off bytes (see pertelian, + http://pertelian.com/index.php?option=com_content&task=view&id=27&Itemid=33) + */ char backlight_escape; /* leave to 0 is the interface uses on/off codes */ char backlight_off; char backlight_on; /* leave these two to 0 is backlight_escape is set */ @@ -33,7 +39,8 @@ static const SerialInterface serial_interfaces[] = { { "lcdserializer", 0xFE, 0, 0x00, 0x00, 9600, 8, 0, 0x00, 0, 0, 0, 0, 0, 0 }, { "los-panel", 0xFE, 0, 0x00, 0x00, 9600, 4, 1, 0xFE, 1, 0xFF, 0, 0, 0, 0 }, { "vdr-lcd", 0xFE, 0, 0x00, 0x00, 9600, 4, 0, 0x00, 0, 0, 0, 0, 0, 0 }, - { "vdr-wakeup", 0xC0, 0xC4, 0xC0, 0xD0, 9600, 4, 0, 0x00, 1, 0, 0xC9, 0xC8, 1, 0xCF } + { "vdr-wakeup", 0xC0, 0xC4, 0xC0, 0xD0, 9600, 4, 0, 0x00, 1, 0, 0xC9, 0xC8, 1, 0xCF }, + { "pertelian", 0xFE, 0, 0x00, 0x00, 9600, 8, 0, 0x00, 1, 0xFE, 0x02, 0x03, 0, 0 } }; /* initialize this particular driver */