usb_interrupt_write(lcd, USB_ENDPOINT_OUT + 1, (char *) data, size, 1000);
}
+static int drv_pL_read(unsigned char *data, int size)
+{
+ return usb_interrupt_read(lcd, USB_ENDPOINT_OUT + 1, (char *) data, size, 1000);
+}
+
+
static void drv_pL_clear(void)
{
return backlight;
}
+#define _USBLCD_MAX_DATA_LEN 24
+#define IN_REPORT_KEY_STATE 0x11
+static int drv_pL_gpi(int num)
+{
+ int ret;
+ unsigned char read_packet[_USBLCD_MAX_DATA_LEN];
+ ret = drv_pL_read(read_packet, _USBLCD_MAX_DATA_LEN);
+ if ((ret > 0) && (read_packet[0] == IN_REPORT_KEY_STATE)) {
+ debug("picoLCD: pressed key= 0x%02x\n", read_packet[1]);
+ return read_packet[1];
+ }
+ return 0;
+}
+
static int drv_pL_gpo(int num, int val)
{
unsigned char cmd[2] = { 0x81 }; /* set GPO */
SetResult(&result, R_NUMBER, &gpo);
}
-
/****************************************/
/*** widget callbacks ***/
/****************************************/
CHARS = 8; /* number of user-defineable characters */
CHAR0 = 0; /* ASCII of first user-defineable char */
GPOS = 8;
+ GPIS = 1;
INVALIDATE = 1;
GOTO_COST = 2; /* number of bytes a goto command requires */
drv_generic_text_real_write = drv_pL_write;
drv_generic_text_real_defchar = drv_pL_defchar;
drv_generic_gpio_real_set = drv_pL_gpo;
+ drv_generic_gpio_real_get = drv_pL_gpi;
/* start display */
if ((ret = drv_pL_start(section, quiet)) != 0)