int lpc31_usbhost_initialize(void) { pid_t pid; int ret; /* First, register all of the class drivers needed to support the drivers * that we care about */ #ifdef CONFIG_USBHOST_HUB /* Initialize USB hub support */ ret = usbhost_hub_initialize(); if (ret < 0) { syslog(LOG_ERR, "ERROR: usbhost_hub_initialize failed: %d\n", ret); } #endif #ifdef CONFIG_USBHOST_MSC /* Register theUSB host Mass Storage Class */ ret = usbhost_msc_initialize(); if (ret != OK) { uerr("ERROR: Failed to register the mass storage class: %d\n", ret); } #endif #ifdef CONFIG_USBHOST_CDCACM /* Register the CDC/ACM serial class */ ret = usbhost_cdcacm_initialize(); if (ret != OK) { uerr("ERROR: Failed to register the CDC/ACM serial class\n"); } #endif #ifdef CONFIG_USBHOST_HIDKBD /* Register the USB host HID keyboard class driver */ ret = usbhost_kbdinit(); if (ret != OK) { uerr("ERROR: Failed to register the KBD class\n"); } #endif /* Then get an instance of the USB EHCI interface. */ g_ehciconn = lpc31_ehci_initialize(0); if (!g_ehciconn) { uerr("ERROR: lpc31_ehci_initialize failed\n"); return -ENODEV; } /* Start a thread to handle device connection. */ pid = task_create("EHCI Monitor", CONFIG_USBHOST_DEFPRIO, CONFIG_USBHOST_STACKSIZE, (main_t)ehci_waiter, (FAR char * const *)NULL); if (pid < 0) { uerr("ERROR: Failed to create ehci_waiter task: %d\n", ret); return -ENODEV; } return OK; }
int sam_usbhost_initialize(void) { pid_t pid; int ret; /* First, register all of the class drivers needed to support the drivers * that we care about * * Register theUSB host Mass Storage Class: */ ret = usbhost_storageinit(); if (ret != OK) { udbg("ERROR: Failed to register the mass storage class: %d\n", ret); } /* Register the USB host HID keyboard class driver */ ret = usbhost_kbdinit(); if (ret != OK) { udbg("ERROR: Failed to register the KBD class\n"); } /* Then get an instance of the USB host interface. */ #ifdef CONFIG_SAMA5_OHCI /* Get an instance of the USB OHCI interface */ g_ohciconn = sam_ohci_initialize(0); if (!g_ohciconn) { udbg("ERROR: sam_ohci_initialize failed\n"); return -ENODEV; } /* Start a thread to handle device connection. */ pid = TASK_CREATE("OHCI Monitor", CONFIG_USBHOST_DEFPRIO, CONFIG_USBHOST_STACKSIZE, (main_t)ohci_waiter, (FAR char * const *)NULL); if (pid < 0) { udbg("ERROR: Failed to create ohci_waiter task: %d\n", ret); return -ENODEV; } #endif #ifdef CONFIG_SAMA5_EHCI /* Get an instance of the USB EHCI interface */ g_ehciconn = sam_ehci_initialize(0); if (!g_ehciconn) { udbg("ERROR: sam_ehci_initialize failed\n"); return -ENODEV; } /* Start a thread to handle device connection. */ pid = TASK_CREATE("EHCI Monitor", CONFIG_USBHOST_DEFPRIO, CONFIG_USBHOST_STACKSIZE, (main_t)ehci_waiter, (FAR char * const *)NULL); if (pid < 0) { udbg("ERROR: Failed to create ehci_waiter task: %d\n", ret); return -ENODEV; } #endif return OK; }
int hidkbd_main(int argc, char *argv[]) { char buffer[256]; pid_t pid; ssize_t nbytes; int fd; int ret; /* First, register all of the USB host HID keyboard class driver */ printf("hidkbd_main: Register class drivers\n"); ret = usbhost_kbdinit(); if (ret != OK) { printf("hidkbd_main: Failed to register the KBD class\n"); } /* Then get an instance of the USB host interface */ printf("hidkbd_main: Initialize USB host keyboard driver\n"); g_drvr = usbhost_initialize(0); if (g_drvr) { /* Start a thread to handle device connection. */ printf("hidkbd_main: Start hidkbd_waiter\n"); #ifndef CONFIG_CUSTOM_STACK pid = task_create("usbhost", CONFIG_EXAMPLES_HIDKBD_DEFPRIO, CONFIG_EXAMPLES_HIDKBD_STACKSIZE, (main_t)hidkbd_waiter, (const char **)NULL); #else pid = task_create("usbhost", CONFIG_EXAMPLES_HIDKBD_DEFPRIO, (main_t)hidkbd_waiter, (const char **)NULL); #endif /* Now just sleep. Eventually logic here will open the kbd device and * perform the HID keyboard test. */ for (;;) { /* Open the keyboard device. Loop until the device is successfully * opened. */ do { printf("Opening device %s\n", CONFIG_EXAMPLES_HIDKBD_DEVNAME); fd = open(CONFIG_EXAMPLES_HIDKBD_DEVNAME, O_RDONLY); if (fd < 0) { printf("Failed: %d\n", errno); fflush(stdout); sleep(3); } } while (fd < 0); printf("Device %s opened\n", CONFIG_EXAMPLES_HIDKBD_DEVNAME); fflush(stdout); /* Loop until there is a read failure */ do { /* Read a buffer of data */ nbytes = read(fd, buffer, 256); if (nbytes > 0) { /* On success, echo the buffer to stdout */ (void)write(1, buffer, nbytes); } } while (nbytes >= 0); printf("Closing device %s: %d\n", CONFIG_EXAMPLES_HIDKBD_DEVNAME, (int)nbytes); fflush(stdout); close(fd); } } return 0; }
int stm32l4_usbhost_initialize(void) { int pid; #if defined(CONFIG_USBHOST_HUB) || defined(CONFIG_USBHOST_MSC) || \ defined(CONFIG_USBHOST_HIDKBD) || defined(CONFIG_USBHOST_HIDMOUSE) int ret; #endif /* First, register all of the class drivers needed to support the drivers * that we care about: */ uvdbg("Register class drivers\n"); #ifdef CONFIG_USBHOST_HUB /* Initialize USB hub class support */ ret = usbhost_hub_initialize(); if (ret < 0) { udbg("ERROR: usbhost_hub_initialize failed: %d\n", ret); } #endif #ifdef CONFIG_USBHOST_MSC /* Register the USB mass storage class class */ ret = usbhost_msc_initialize(); if (ret != OK) { udbg("ERROR: Failed to register the mass storage class: %d\n", ret); } #endif #ifdef CONFIG_USBHOST_CDCACM /* Register the CDC/ACM serial class */ ret = usbhost_cdcacm_initialize(); if (ret != OK) { udbg("ERROR: Failed to register the CDC/ACM serial class: %d\n", ret); } #endif #ifdef CONFIG_USBHOST_HIDKBD /* Initialize the HID keyboard class */ ret = usbhost_kbdinit(); if (ret != OK) { udbg("Failed to register the HID keyboard class\n"); } #endif #ifdef CONFIG_USBHOST_HIDMOUSE /* Initialize the HID mouse class */ ret = usbhost_mouse_init(); if (ret != OK) { udbg("Failed to register the HID mouse class\n"); } #endif /* Then get an instance of the USB host interface */ uvdbg("Initialize USB host\n"); g_usbconn = stm32l4_otgfshost_initialize(0); if (g_usbconn) { /* Start a thread to handle device connection. */ uvdbg("Start usbhost_waiter\n"); pid = task_create("usbhost", CONFIG_STM32L4DISCO_USBHOST_PRIO, CONFIG_STM32L4DISCO_USBHOST_STACKSIZE, (main_t)usbhost_waiter, (FAR char * const *)NULL); return pid < 0 ? -ENOEXEC : OK; } return -ENODEV; }
int stm32_usbhost_initialize(void) { int rv; #ifdef CONFIG_USBHOST_MSC uinfo("INFO: Initializing USB MSC class\n"); if ((rv = usbhost_msc_initialize()) < 0) { uerr("ERROR: Failed to register mass storage class: %d\n", rv); } #endif #ifdef CONFIG_USBHOST_CDACM uinfo("INFO: Initializing CDCACM usb class\n"); if ((rv = usbhost_cdacm_initialize()) < 0) { uerr("ERROR: Failed to register CDC/ACM serial class: %d\n", rv); } #endif #ifdef CONFIG_USBHOST_HIDKBD uinfo("INFO: Initializing HID Keyboard usb class\n"); if ((rv = usbhost_kbdinit()) < 0) { uerr("ERROR: Failed to register the KBD class: %d\n", rv); } #endif #ifdef CONFIG_USBHOST_HIDMOUSE uinfo("INFO: Initializing HID Mouse usb class\n"); if ((rv = usbhost_mouse_init()) < 0) { uerr("ERROR: Failed to register the mouse class: %d\n", rv); } #endif #ifdef CONFIG_USBHOST_HUB uinfo("INFO: Initializing USB HUB class\n"); if ((rv = usbhost_hub_initialize()) < 0) { uerr("ERROR: Failed to register hub class: %d\n", rv); } #endif if ((g_usbconn = stm32_otgfshost_initialize(0))) { pthread_attr_t pattr; struct sched_param schparam; pthread_attr_init(&pattr); pthread_attr_setstacksize(&pattr, 2048); schparam.sched_priority = 50; pthread_attr_setschedparam(&pattr, &schparam); return pthread_create(NULL, &pattr, usbhost_detect, NULL); } return -ENODEV; }