Sample program for the USB Host lib with HID
Dependencies: USBHost_DISCO-F746NG mbed
main.cpp
- Committer:
- DieterGraef
- Date:
- 2016-06-17
- Revision:
- 2:ca1b5b911ba8
- Parent:
- 0:af2040964256
File content as of revision 2:ca1b5b911ba8:
#include "mbed.h" #include "rtos.h" #include "USBHostMouseKeyboard.h" #include "USBHostMSD.h" #define FastSpeedInterface 0 #define HighSpeedInterface 1 DigitalOut led(LED1); void onMouseEventdev0(uint8_t buttons, int8_t x, int8_t y, int8_t z) { printf("0m: %d, x: %d, y: %d, z: %d\r\n", buttons, x, y, z); } void onKeydev0(uint8_t key) { printf("0Key: %c\r\n", key); } void mouse_task(void const *) { // At the moment only one Interface can be used for the Host due to the use of USBHostMouseKb dev0(FastSpeedInterface); while(1) { // try to connect while(!dev0.connect()) Thread::wait(500); // when connected, attach handler dev0.attachMouseEvent(onMouseEventdev0); dev0.attachKb(onKeydev0); while(1) { USBHost::poll(); Thread::wait(50); } } } void msd_task(void const *) { USBHostMSD msd("usb",HighSpeedInterface); int i = 0; int res; int error=0; while(1) { // try to connect a MSD device while(!msd.connect()) { Thread::wait(500); printf("waiting\n"); } // in a loop, append a file // if the device is disconnected, we try to connect it again while(1) { // append a file FILE * fp = fopen("/usb/test1.txt", "a"); if (fp != NULL) { res=fprintf(fp, "Hello fun USB Drive World: %d!\r\n", i++); printf("Goodbye World!\r\n"); if (error==1) { printf("Goodbye New World!\r\n"); error=0; } fclose(fp); if(res<0) { printf("FILE write ERROR\r\n"); msd.unmount(); wait_ms(5000); msd.mount() ; error=1; } } else { printf("FILE == NULL\r\n"); msd.unmount(); wait_ms(5000); msd.mount() ; error=1; } Thread::wait(500); // if device disconnected, try to connect again if (!msd.connected()) break; } } } int main() { Thread mouseTask(mouse_task, NULL, osPriorityNormal, 256 * 4); Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4); while(1) { led=!led; Thread::wait(500); } }