From 8cbe75be8424946f4e0874defc80e13edb19eb93 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Sat, 21 Jan 2006 17:43:25 +0000 Subject: [lcd4linux @ 2006-01-21 17:43:25 by reinelt] minor cosmetic fixes --- drv_G15.c | 398 ++++++++++++++++++++++++++++---------------------------------- 1 file changed, 181 insertions(+), 217 deletions(-) (limited to 'drv_G15.c') diff --git a/drv_G15.c b/drv_G15.c index 60e650a..1e504f5 100644 --- a/drv_G15.c +++ b/drv_G15.c @@ -1,4 +1,4 @@ -/* $Id: drv_G15.c,v 1.1 2006/01/21 13:26:44 reinelt Exp $ +/* $Id: drv_G15.c,v 1.2 2006/01/21 17:43:25 reinelt Exp $ * * Driver for Logitech G-15 keyboard LCD screen * @@ -24,6 +24,9 @@ * * * $Log: drv_G15.c,v $ + * Revision 1.2 2006/01/21 17:43:25 reinelt + * minor cosmetic fixes + * * Revision 1.1 2006/01/21 13:26:44 reinelt * Logitech G-15 keyboard LCD driver from Dave Ingram * @@ -79,210 +82,180 @@ static unsigned char *g15_image; static int drv_G15_open() { - struct usb_bus *bus; - struct usb_device *dev; - char dname[32]={0}; - - g15_lcd=NULL; - - info("%s: Scanning USB for G-15 keyboard...", Name); - - usb_init(); - usb_set_debug(0); - usb_find_busses(); - usb_find_devices(); - - for (bus=usb_get_busses(); bus; bus=bus->next) { - for (dev=bus->devices; dev; dev=dev->next) { - if ((g15_lcd=usb_open(dev))) { - if ((dev->descriptor.idVendor == G15_VENDOR) && - (dev->descriptor.idProduct == G15_DEVICE)) { - - // detach from the kernel if we need to - int retval=usb_get_driver_np(g15_lcd, 0, dname, 31); - if (retval==0 && strcmp(dname, "usbhid")==0) { - usb_detach_kernel_driver_np(g15_lcd, 0); - } - usb_set_configuration(g15_lcd,1); - usleep(100); - usb_claim_interface(g15_lcd,0); - return 0; - } else { - usb_close(g15_lcd); - } - } + struct usb_bus *bus; + struct usb_device *dev; + char dname[32] = { 0 }; + + g15_lcd = NULL; + + info("%s: Scanning USB for G-15 keyboard...", Name); + + usb_init(); + usb_set_debug(0); + usb_find_busses(); + usb_find_devices(); + + for (bus = usb_get_busses(); bus; bus = bus->next) { + for (dev = bus->devices; dev; dev = dev->next) { + if ((g15_lcd = usb_open(dev))) { + if ((dev->descriptor.idVendor == G15_VENDOR) && (dev->descriptor.idProduct == G15_DEVICE)) { + + /* detach from the kernel if we need to */ + int retval = usb_get_driver_np(g15_lcd, 0, dname, 31); + if (retval == 0 && strcmp(dname, "usbhid") == 0) { + usb_detach_kernel_driver_np(g15_lcd, 0); + } + usb_set_configuration(g15_lcd, 1); + usleep(100); + usb_claim_interface(g15_lcd, 0); + return 0; + } else { + usb_close(g15_lcd); } + } } + } - return -1; + return -1; } static int drv_G15_close(void) { - usb_release_interface(g15_lcd, 0); - if (g15_lcd) - usb_close(g15_lcd); + usb_release_interface(g15_lcd, 0); + if (g15_lcd) + usb_close(g15_lcd); - return 0; + return 0; } -static void drv_G15_send(const char *data, const unsigned int len) -{ - /* send data to the serial port is easy... */ - //drv_generic_serial_write(data, len); -} - static void drv_G15_update_img() { - int i,j,k; - unsigned char *output=malloc(160*43*sizeof(unsigned char)); - - DEBUG("entered"); - if (!output) - return; - - DEBUG("memory allocated"); - memset(output, 0, 160*43); - DEBUG("memory set"); - output[0]=0x03; - DEBUG("first output set"); - - for (k=0; k<6; k++) { - for (i=0; i<160; i++) { - int maxj=(k==5)?3:8; - for (j=0; j 255) - contrast = 255; - - /* call a 'contrast' function */ - /* assume 0x04 to be the 'set contrast' command */ - cmd[0] = 0x04; - cmd[1] = contrast; - drv_G15_send(cmd, 2); - - return contrast; + DEBUG("left"); } /* start graphic display */ static int drv_G15_start(const char *section) { - char *s; - //int contrast; - - DEBUG("entered"); + char *s; - /* read display size from config */ - DROWS = 160; - DCOLS = 43; + DEBUG("entered"); - DEBUG("display size set"); + /* read display size from config */ + DROWS = 160; + DCOLS = 43; - s = cfg_get(section, "Font", "6x8"); - if (s == NULL || *s == '\0') { - error("%s: no '%s.Font' entry from %s", Name, section, cfg_source()); - return -1; - } + DEBUG("display size set"); - XRES = -1; - YRES = -1; - if (sscanf(s, "%dx%d", &XRES, &YRES) != 2 || XRES < 1 || YRES < 1) { - error("%s: bad Font '%s' from %s", Name, s, cfg_source()); - return -1; - } + s = cfg_get(section, "Font", "6x8"); + if (s == NULL || *s == '\0') { + error("%s: no '%s.Font' entry from %s", Name, section, cfg_source()); + return -1; + } - /* Fixme: provider other fonts someday... */ - if (XRES != 6 && YRES != 8) { - error("%s: bad Font '%s' from %s (only 6x8 at the moment)", Name, s, - cfg_source()); - return -1; - } + XRES = -1; + YRES = -1; + if (sscanf(s, "%dx%d", &XRES, &YRES) != 2 || XRES < 1 || YRES < 1) { + error("%s: bad Font '%s' from %s", Name, s, cfg_source()); + return -1; + } - DEBUG("Finished config stuff"); - - DEBUG("allocating image buffer"); - /* you surely want to allocate a framebuffer or something... */ - g15_image=malloc(160*43*sizeof(unsigned char)); - if (!g15_image) - return -1; - DEBUG("allocated"); - memset(g15_image,0,160*43); - DEBUG("zeroed"); - - /* open communication with the display */ - DEBUG("opening display..."); - if (drv_G15_open() < 0) { - DEBUG("opening failed"); - return -1; - } - DEBUG("display open"); + /* Fixme: provider other fonts someday... */ + if (XRES != 6 && YRES != 8) { + error("%s: bad Font '%s' from %s (only 6x8 at the moment)", Name, s, cfg_source()); + return -1; + } - /* reset & initialize display */ - DEBUG("clearing display"); - drv_G15_update_img(); - DEBUG("done"); + DEBUG("Finished config stuff"); - /* - if (cfg_number(section, "Contrast", 0, 0, 255, &contrast) > 0) { - drv_G15_contrast(contrast); - } - */ + DEBUG("allocating image buffer"); + /* you surely want to allocate a framebuffer or something... */ + g15_image = malloc(160 * 43 * sizeof(unsigned char)); + if (!g15_image) + return -1; + DEBUG("allocated"); + memset(g15_image, 0, 160 * 43); + DEBUG("zeroed"); + + /* open communication with the display */ + DEBUG("opening display..."); + if (drv_G15_open() < 0) { + DEBUG("opening failed"); + return -1; + } + DEBUG("display open"); - DEBUG("left"); + /* reset & initialize display */ + DEBUG("clearing display"); + drv_G15_update_img(); + DEBUG("done"); - return 0; + /* + if (cfg_number(section, "Contrast", 0, 0, 255, &contrast) > 0) { + drv_G15_contrast(contrast); + } + */ + + DEBUG("left"); + + return 0; } @@ -290,13 +263,7 @@ static int drv_G15_start(const char *section) /*** plugins ***/ /****************************************/ -static void plugin_contrast(RESULT * result, RESULT * arg1) -{ - double contrast; - - contrast = drv_G15_contrast(R2N(arg1)); - SetResult(&result, R_NUMBER, &contrast); -} +/* none */ /****************************************/ @@ -318,61 +285,58 @@ static void plugin_contrast(RESULT * result, RESULT * arg1) /* list models */ int drv_G15_list(void) { - printf("generic"); - return 0; + printf("generic"); + return 0; } /* initialize driver & display */ int drv_G15_init(const char *section, const int quiet) { - WIDGET_CLASS wc; - int ret; + WIDGET_CLASS wc; + int ret; - DEBUG("entered"); + DEBUG("entered"); - /* real worker functions */ - drv_generic_graphic_real_blit = drv_G15_blit; + /* real worker functions */ + drv_generic_graphic_real_blit = drv_G15_blit; - /* start display */ - if ((ret = drv_G15_start(section)) != 0) - return ret; + /* start display */ + if ((ret = drv_G15_start(section)) != 0) + return ret; - /* initialize generic graphic driver */ - if ((ret = drv_generic_graphic_init(section, Name)) != 0) - return ret; + /* initialize generic graphic driver */ + if ((ret = drv_generic_graphic_init(section, Name)) != 0) + return ret; - if (!quiet) { - char buffer[40]; + if (!quiet) { + char buffer[40]; - qprintf(buffer, sizeof(buffer), "%s %dx%d", Name, DCOLS, DROWS); - if (drv_generic_graphic_greet(buffer, NULL)) { - sleep(3); - drv_generic_graphic_clear(); - } + qprintf(buffer, sizeof(buffer), "%s %dx%d", Name, DCOLS, DROWS); + if (drv_generic_graphic_greet(buffer, NULL)) { + sleep(3); + drv_generic_graphic_clear(); } + } - /* register text widget */ - wc = Widget_Text; - wc.draw = drv_generic_graphic_draw; - widget_register(&wc); + /* register text widget */ + wc = Widget_Text; + wc.draw = drv_generic_graphic_draw; + widget_register(&wc); - /* register icon widget */ - wc = Widget_Icon; - wc.draw = drv_generic_graphic_icon_draw; - widget_register(&wc); + /* register icon widget */ + wc = Widget_Icon; + wc.draw = drv_generic_graphic_icon_draw; + widget_register(&wc); - /* register bar widget */ - wc = Widget_Bar; - wc.draw = drv_generic_graphic_bar_draw; - widget_register(&wc); + /* register bar widget */ + wc = Widget_Bar; + wc.draw = drv_generic_graphic_bar_draw; + widget_register(&wc); - /* register plugins */ - //AddFunction("LCD::contrast", 1, plugin_contrast); + DEBUG("left"); - DEBUG("left"); - - return 0; + return 0; } @@ -380,28 +344,28 @@ int drv_G15_init(const char *section, const int quiet) /* close driver & display */ int drv_G15_quit(const int quiet) { - info("%s: shutting down.", Name); + info("%s: shutting down.", Name); - DEBUG("clearing display"); - /* clear display */ - drv_generic_graphic_clear(); + DEBUG("clearing display"); + /* clear display */ + drv_generic_graphic_clear(); - DEBUG("saying goodbye"); - /* say goodbye... */ - if (!quiet) { - drv_generic_graphic_greet("goodbye!", NULL); - } + DEBUG("saying goodbye"); + /* say goodbye... */ + if (!quiet) { + drv_generic_graphic_greet("goodbye!", NULL); + } - DEBUG("generic_graphic_quit()"); - drv_generic_graphic_quit(); + DEBUG("generic_graphic_quit()"); + drv_generic_graphic_quit(); - DEBUG("closing connection"); - drv_G15_close(); + DEBUG("closing connection"); + drv_G15_close(); - DEBUG("freeing image alloc"); - free(g15_image); + DEBUG("freeing image alloc"); + free(g15_image); - return (0); + return (0); } -- cgit v1.2.3