diff --git a/ChangeLog b/ChangeLog index 848e584..349bb9d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -45,6 +45,7 @@ v.0.5dev (ongoing development) + i2500vfd driver for a graphocal Noritake VFD (Thomas Jarosch) * hd44780 driver: more complete initialization (idea by Pierre Ossman) * hd44780 driver: "euro" character mapping table (Markus Dolze) + * CwLnx driver: support for CW12832 v.0.5.2 * fix switching on/off the Load screen in lcdproc client using the menu diff --git a/LCDd.conf b/LCDd.conf index ac19ce6..74894a8 100644 --- a/LCDd.conf +++ b/LCDd.conf @@ -259,13 +259,13 @@ DrawBorder=yes ## Cwlinux driver ## [CwLnx] -# Select the LCD model [default: 12232; legal: 12232, 1602] +# Select the LCD model [default: 12232; legal: 12232, 12832, 1602] Model=12232 # Select the output device to use [default: /dev/lcd] Device=/dev/ttyUSB0 -# Select the LCD size [default: depending on model: 12232: 20x4, 1602: 16x2] +# Select the LCD size [default: depending on model: 12232: 20x4, 12832: 21x4, 1602: 16x2] Size=20x4 # Set the communication speed [default: 19200; legal: 9600, 19200] diff --git a/docs/lcdproc-user/drivers/CwLnx.docbook b/docs/lcdproc-user/drivers/CwLnx.docbook index bdfc1e9..3a1b781 100644 --- a/docs/lcdproc-user/drivers/CwLnx.docbook +++ b/docs/lcdproc-user/drivers/CwLnx.docbook @@ -2,7 +2,7 @@ The CwLnx Driver -This section talks about using LCDproc with the serial / USB LCDs CW12232 +This section talks about using LCDproc with the serial / USB LCDs CW12232, CW12832 and CW1602 by CwLinux. @@ -12,13 +12,16 @@ and CW1602 by CwLinux. The CwLinux CW12232 LCDs are graphical LCDs with 122 x 32 dots that also have a text mode with 20 x 4 characters, +the CW12832 are graphical displays with 128 x 32 dots and a +21 x 4 character text mode, the CW1602 LCDs are character LCDs that are 16 characters wide and 2 lines high. The modules can be ordered bare or as part of a kit mounted -on brackets that fit in half-height 5.25" drive bays. +on brackets that fit in half-height 5.25" (CW12232 and CW1608) +or 3,5" (CW12832) drive bays. The mounting brackets optionally feature a 6 button keypad that makes use of the keypad connector on the display modules. @@ -30,7 +33,7 @@ as 4 general purpose IO ports. -The CW12232 and CW1608 come in 2 variants that differ how they communicate +The displays come in 2 variants that differ how they communicate with the host: The serial modules are connected to the PC using a serial RS232 connection getting operating power using the standard floppy drive power connector, while the USB modules only require an USB connection. @@ -58,12 +61,14 @@ For more information see the 12232 + 12832 1602 - Select the LCD model [default: 12232; legal: 12232, 1602] + Select the LCD model [default: 12232; + legal: 12232, 12232, 1602] @@ -89,6 +94,7 @@ For more information see the Select the LCD size [default: depending on model: 12232: 20x4, + 12832: 21x4] 1602: 16x2] diff --git a/server/drivers/CwLnx.c b/server/drivers/CwLnx.c index ff668c1..f095266 100644 --- a/server/drivers/CwLnx.c +++ b/server/drivers/CwLnx.c @@ -133,8 +133,8 @@ static void CwLnx_set_char_unrestricted(Driver *drvthis, int n, unsigned char *d #define LCD_LIGHT_OFF 70 #define LCD_LIGHT_BRIGHTNESS 65 #define LCD_CLEAR 88 -#define LCD_SET_INSERT 71 -#define LCD_INIT_INSERT 72 +#define LCD_SET_INSERT 71 /* go to X,Y */ +#define LCD_INIT_INSERT 72 /* go to home */ #define LCD_SET_BAUD 57 #define LCD_ENABLE_WRAP 67 #define LCD_DISABLE_WRAP 68 @@ -142,7 +142,13 @@ static void CwLnx_set_char_unrestricted(Driver *drvthis, int n, unsigned char *d #define LCD_ENABLE_SCROLL 81 #define LCD_DISABLE_SCROLL 82 #define LCD_SOFT_RESET 86 -#define LCD_OFF_CURSOR 72 +#define LCD_OFF_CURSOR 72 /* is this correct? */ +#define LCD_UNDERLINE_CURSOR_ON 74 /* set cursor on at X,Y */ +#define LCD_UNDERLINE_CURSOR_OFF 75 +#define LCD_MOVE_CURSOR_LEFT 76 +#define LCD_MOVE_CURSOR_RIGHT 77 +#define LCD_INVERSE_TEXT_ON 102 +#define LCD_INVERSE_TEXT_OFF 103 #define LCD_PUT_PIXEL 112 #define LCD_CLEAR_PIXEL 113 @@ -467,12 +473,12 @@ CwLnx_init(Driver *drvthis) /* Read config file */ - /* Which model is it (1602 or 12232)? */ + /* Which model is it (1602, 12232 or 12832)? */ tmp = drvthis->config_get_int(drvthis->name, "Model", 0, 12232); debug(RPT_INFO, "%s: Model (in config) is '%d'", __FUNCTION__, tmp); - if ((tmp != 1602) && (tmp != 12232)) { + if ((tmp != 1602) && (tmp != 12232) && (tmp != 12832)) { tmp = 12232; - report(RPT_WARNING, "%s: Model must be 12232 or 1602; using default %d", + report(RPT_WARNING, "%s: Model must be 12232, 12832 or 1602; using default %d", drvthis->name, tmp); } p->model = tmp; @@ -488,6 +494,11 @@ CwLnx_init(Driver *drvthis) default_speed = DEFAULT_SPEED_12232; p->cellwidth = DEFAULT_CELL_WIDTH_12232; p->cellheight = DEFAULT_CELL_HEIGHT_12232; + } else if (p->model == 12832) { + default_size = DEFAULT_SIZE_12832; + default_speed = DEFAULT_SPEED_12832; + p->cellwidth = DEFAULT_CELL_WIDTH_12832; + p->cellheight = DEFAULT_CELL_HEIGHT_12832; } /* Which device should be used */ diff --git a/server/drivers/CwLnx.h b/server/drivers/CwLnx.h index 5cc149a..ec01d68 100644 --- a/server/drivers/CwLnx.h +++ b/server/drivers/CwLnx.h @@ -35,18 +35,22 @@ #define DEFAULT_CELL_WIDTH_1602 5 #define DEFAULT_CELL_WIDTH_12232 6 +#define DEFAULT_CELL_WIDTH_12832 6 #define DEFAULT_CELL_WIDTH DEFAULT_CELL_WIDTH_12232 #define DEFAULT_CELL_HEIGHT_1602 8 #define DEFAULT_CELL_HEIGHT_12232 8 +#define DEFAULT_CELL_HEIGHT_12832 8 #define DEFAULT_CELL_HEIGHT DEFAULT_CELL_HEIGHT_12232 #define DEFAULT_SPEED_1602 19200 #define DEFAULT_SPEED_12232 19200 +#define DEFAULT_SPEED_12832 19200 #define DEFAULT_SPEED DEFAULT_SPEED_12232 -#define DEFAULT_SIZE_1602 "16x2" -#define DEFAULT_SIZE_12232 "20x4" +#define DEFAULT_SIZE_1602 "16x2" +#define DEFAULT_SIZE_12232 "20x4" +#define DEFAULT_SIZE_12832 "21x4" #define DEFAULT_SIZE DEFAULT_SIZE_12232