GR-PEACH USBHost sample

Dependencies:   USBHost mbed

Revision:
0:9d06c92f4693
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Feb 27 09:30:13 2015 +0000
@@ -0,0 +1,244 @@
+// 1:USBHostMouse_HelloWorld
+// 2:USBHostKeyboard_HelloWorld
+// 3:USBHostMSD_HelloWorld
+// 4:USBHostSerial_HelloWorld
+// 5:USBHostHub_HelloWorld
+#define USB_HOST_TEST     5
+
+#if USB_HOST_TEST == 1
+// *******************************************************************
+// 1:USBHostMouse_HelloWorld
+// *******************************************************************
+#include "mbed.h"
+#include "USBHostMouse.h"
+
+DigitalOut led(LED1);
+
+void onMouseEvent(uint8_t buttons, int8_t x, int8_t y, int8_t z) {
+    printf("buttons: %d, x: %d, y: %d, z: %d\r\n", buttons, x, y, z);
+}
+
+void mouse_task(void const *) {
+
+    USBHostMouse mouse;
+
+    while(1) {
+        // try to connect a USB mouse
+        while(!mouse.connect())
+            Thread::wait(500);
+
+        // when connected, attach handler called on mouse event
+        mouse.attachEvent(onMouseEvent);
+
+        // wait until the mouse is disconnected
+        while(mouse.connected())
+            Thread::wait(500);
+    }
+}
+
+int main() {
+    Thread mouseTask(mouse_task, NULL, osPriorityNormal, 256 * 4);
+    while(1) {
+        led=!led;
+        Thread::wait(500);
+    }
+}
+
+#elif USB_HOST_TEST == 2
+// *******************************************************************
+// 2:USBHostKeyboard_HelloWorld
+// *******************************************************************
+#include "mbed.h"
+#include "USBHostKeyboard.h"
+
+DigitalOut led(LED1);
+
+void onKey(uint8_t key) {
+    printf("Key: %c\r\n", key);
+}
+
+void keyboard_task(void const *) {
+
+    USBHostKeyboard keyboard;
+
+    while(1) {
+        // try to connect a USB keyboard
+        while(!keyboard.connect())
+            Thread::wait(500);
+
+        // when connected, attach handler called on keyboard event
+        keyboard.attach(onKey);
+
+        // wait until the keyboard is disconnected
+        while(keyboard.connected())
+            Thread::wait(500);
+    }
+}
+
+int main() {
+    Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4);
+    while(1) {
+        led=!led;
+        Thread::wait(500);
+    }
+}
+
+#elif USB_HOST_TEST == 3
+// *******************************************************************
+// 3:USBHostMSD_HelloWorld
+// *******************************************************************
+#include "mbed.h"
+#include "USBHostMSD.h"
+
+DigitalOut led(LED1);
+
+void msd_task(void const *) {
+    
+    USBHostMSD msd("usb");
+    int i = 0;
+    
+    while(1) {
+        
+        // try to connect a MSD device
+        while(!msd.connect()) {
+            Thread::wait(500);
+        }
+        
+        // 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) {
+                fprintf(fp, "Hello fun USB World: %d!\r\n", i++);
+                printf("Goodbye World!\r\n");
+                fclose(fp);
+            } else {
+                printf("FILE == NULL\r\n");
+            }
+            
+            Thread::wait(500);
+        
+            // if device disconnected, try to connect again
+            if (!msd.connected())
+                break;
+        }
+            
+    }
+}
+
+
+int main() {
+    Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
+    while(1) {
+        led=!led;
+        Thread::wait(500);
+    }
+}
+
+#elif USB_HOST_TEST == 4
+// *******************************************************************
+// 4:USBHostSerial_HelloWorld
+// *******************************************************************
+#include "mbed.h"
+#include "USBHostSerial.h"
+ 
+DigitalOut led(LED1);
+Serial pc(USBTX, USBRX);
+ 
+void serial_task(void const*) {
+    USBHostSerial serial;
+
+    while(1) {
+
+        // try to connect a serial device
+        while(!serial.connect())
+            Thread::wait(500);
+
+        serial.baud(9600);
+        // in a loop, print all characters received
+        // if the device is disconnected, we try to connect it again
+        while (1) {
+            // print characters received
+            while (serial.available()) {
+                printf("%c", serial.getc());
+            }
+
+            Thread::wait(50);
+        }
+    }
+}
+ 
+int main() {
+    Thread serialTask(serial_task, NULL, osPriorityNormal, 256 * 4);
+    while(1) {
+        led=!led;
+        Thread::wait(500);
+    }
+}
+#elif USB_HOST_TEST == 5
+// *******************************************************************
+// 5:USBHostHub_HelloWorld
+// *******************************************************************
+#include "mbed.h"
+#include "USBHostKeyboard.h"
+#include "USBHostMouse.h"
+ 
+DigitalOut led(LED1);
+ 
+void onKey(uint8_t key) {
+    printf("Key: %c\r\n", key);
+}
+ 
+void onMouseEvent(uint8_t buttons, int8_t x, int8_t y, int8_t z) {
+    printf("buttons: %d, x: %d, y: %d, z: %d\r\n", buttons, x, y, z);
+}
+ 
+void keyboard_task(void const *) {
+    
+    USBHostKeyboard keyboard;
+    
+    while(1) {
+        // try to connect a USB keyboard
+        while(!keyboard.connect())
+            Thread::wait(500);
+    
+        // when connected, attach handler called on keyboard event
+        keyboard.attach(onKey);
+        
+        // wait until the keyboard is disconnected
+        while(keyboard.connected())
+            Thread::wait(500);
+    }
+}
+ 
+void mouse_task(void const *) {
+    
+    USBHostMouse mouse;
+    
+    while(1) {
+        // try to connect a USB mouse
+        while(!mouse.connect())
+            Thread::wait(500);
+    
+        // when connected, attach handler called on mouse event
+        mouse.attachEvent(onMouseEvent);
+        
+        // wait until the mouse is disconnected
+        while(mouse.connected())
+            Thread::wait(500);
+    }
+}
+ 
+int main() {
+    Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4);
+    Thread mouseTask(mouse_task, NULL, osPriorityNormal, 256 * 4);
+    while(1) {
+        led=!led;
+        Thread::wait(500);
+    }
+}
+
+#endif