From 3e616e419284a72c9e1b992c13b05365f50d97c4 Mon Sep 17 00:00:00 2001 From: marschap Date: Wed, 4 Apr 2007 13:14:15 +0000 Subject: [PATCH] support multi-controller LCDs (only tested with a single-controller LCD) --- server/drivers/hd44780-lcd2usb.c | 8 +++++--- server/drivers/hd44780-lcd2usb.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/server/drivers/hd44780-lcd2usb.c b/server/drivers/hd44780-lcd2usb.c index 6fcfaba..b4adb80 100644 --- a/server/drivers/hd44780-lcd2usb.c +++ b/server/drivers/hd44780-lcd2usb.c @@ -28,7 +28,7 @@ static usb_dev_handle *lcd2usb; // initialize the driver int -hd_init_lcd2usb (Driver *drvthis) +hd_init_lcd2usb(Driver *drvthis) { PrivateData *p = (PrivateData*) drvthis->private_data; @@ -130,9 +130,11 @@ hd_init_lcd2usb (Driver *drvthis) void lcd2usb_HD44780_senddata(PrivateData *p, unsigned char displayID, unsigned char flags, unsigned char ch) { -int type = (flags == RS_DATA) ? (LCD2USB_DATA | LCD2USB_CTRL_0) : (LCD2USB_CMD | LCD2USB_CTRL_0); +int type = (flags == RS_DATA) ? LCD2USB_DATA : LCD2USB_CMD; +int id = (displayID == 0) ? LCD2USB_CTRL_BOTH + : ((displayID == 1) ? LCD2USB_CTRL_0 : LCD2USB_CTRL_1); - usb_control_msg(lcd2usb, USB_TYPE_VENDOR, type, ch, 0, NULL, 0, 1000); + usb_control_msg(lcd2usb, USB_TYPE_VENDOR, (type | id), ch, 0, NULL, 0, 1000); } diff --git a/server/drivers/hd44780-lcd2usb.h b/server/drivers/hd44780-lcd2usb.h index 224a7ef..27d5e66 100644 --- a/server/drivers/hd44780-lcd2usb.h +++ b/server/drivers/hd44780-lcd2usb.h @@ -11,7 +11,7 @@ /* target is a bit map for CMD/DATA */ #define LCD2USB_CTRL_0 (1<<3) #define LCD2USB_CTRL_1 (1<<4) -#define LCD2USB_CTRL_BOTH (LCD_CTRL_0 | LCD_CTRL_1) +#define LCD2USB_CTRL_BOTH (LCD2USB_CTRL_0 | LCD2USB_CTRL_1) #define LCD2USB_ECHO (0<<5) #define LCD2USB_CMD (1<<5)