Simple USBHost GPS Dongle Receiver for FRDM-KL46Z test program

Dependencies:   KL46Z-USBHost mbed SLCD

FRDM-KL46ZをUSBホストにしてUSBタイプのGPSレシーバを読み取るテストプログラムです。
/media/uploads/va009039/frdm-kl46z-usbhost-gps.jpg

Revision:
1:2d8275968aaf
Parent:
0:4231f156a567
--- a/main.cpp	Sat Jan 18 13:43:06 2014 +0000
+++ b/main.cpp	Wed Feb 05 13:40:35 2014 +0000
@@ -1,23 +1,40 @@
-// Simple USBHost GPS Dongle for FRDM-KL46Z test program
 #include "USBHostGPS.h"
+#include "SLCD.h"
 
-DigitalOut led1(PTD5); // green
-DigitalOut led2(PTE29); // red
+DigitalOut led1(LED_GREEN);
+DigitalOut led2(LED_RED);
 #define LED_OFF 1
 #define LED_ON  0
 
+SLCD slcd;
+
+void callback_gps(char* buf, int size) {
+    for(int i = 0; i < size; i++) {
+        char c = buf[i];
+        printf("%c", c);
+    }
+    led2 = !led2;
+}
+
 int main() {
     // GT-730F/L 38400bps
     // Gosget SD-200 GPS DONGLE 4800bps
-    USBHostGPS gps(4800);
-    led2 = LED_OFF;
+     USBHostGPS gps(4800);
+    if (!gps.connect()) {
+        error("GPS not found.\n");
+    }
+    gps.attachEventRaw(callback_gps);
+
+    time_t prev = gps.nmea.update_t;
     while(1) {
-        char buf[64];
-        int result = gps.readNMEA(buf, sizeof(buf));
-        if (result > 0) {
-            for(int i = 0; i < result; i++) {
-                printf("%c", buf[i]);
-            }
+        USBHost::poll();
+        if (prev != gps.nmea.update_t) {
+            struct tm * timeinfo;
+            timeinfo = localtime(&gps.nmea.update_t);
+            char buf[5];
+            strftime(buf, sizeof(buf), "%M%S", timeinfo);
+            slcd.printf("%.4s", buf);
+            prev = gps.nmea.update_t;
             led1 = !led1;
         }
     }