From 5b6d9f3915d19b96833f0e5e5a3ba4db0e60f3cb Mon Sep 17 00:00:00 2001 From: mmdolze Date: Tue, 24 Feb 2009 21:55:59 +0000 Subject: [PATCH] Speed up lcd2usb driver by overriding uPause with an empty function (a lcd2usb device keeps track of the timing itself) Add more logging to backlight() --- server/drivers/hd44780-lcd2usb.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/drivers/hd44780-lcd2usb.c b/server/drivers/hd44780-lcd2usb.c index ce52091..871c772 100644 --- a/server/drivers/hd44780-lcd2usb.c +++ b/server/drivers/hd44780-lcd2usb.c @@ -31,6 +31,8 @@ void lcd2usb_HD44780_backlight(PrivateData *p, unsigned char state); unsigned char lcd2usb_HD44780_scankeypad(PrivateData *p); void lcd2usb_HD44780_close(PrivateData *p); void lcd2usb_HD44780_set_contrast(PrivateData *p, unsigned char value); +// Pseudo uPause function. A lcd2usb device takes care of timing itself. +void lcd2usb_HD44780_uPause(PrivateData *p, int usecs) {} /** @@ -98,6 +100,8 @@ hd_init_lcd2usb(Driver *drvthis) common_init(p, IF_4BIT); + // Replace uPause with empty one after initialization + p->hd44780_functions->uPause = lcd2usb_HD44780_uPause; return 0; } @@ -130,10 +134,13 @@ lcd2usb_HD44780_backlight(PrivateData *p, unsigned char state) { // Get backlight brightness. int promille = (state == BACKLIGHT_ON) ? p->brightness : p->offbrightness; + + p->hd44780_functions->drv_report(RPT_INFO, "lcd2usb_HD44780_backlight: Setting backlight to %d", promille); // And set it (converted from [0,1000] -> [0,255]). - usb_control_msg(p->usbHandle, USB_TYPE_VENDOR, LCD2USB_SET_BRIGHTNESS, - (promille * 255) / 1000, 0, NULL, 0, 1000); + if (usb_control_msg(p->usbHandle, USB_TYPE_VENDOR, LCD2USB_SET_BRIGHTNESS, + (promille * 255) / 1000, 0, NULL, 0, 1000) < 0) + p->hd44780_functions->drv_report(RPT_WARNING, "lcd2usb_HD44780_backlight: setting backlight failed"); }