Generation 3 of the Harp project

Dependencies:   Servo TMP36 GZ buffered-serial1 chan_fatfs_sd nmea_parser watchdog mbed-rtos mbed

Fork of HARP2 by Tyler Weaver

Revision:
14:dce4d8c29b17
Parent:
13:db6af0620264
Child:
15:ceac642f6b75
--- a/main.cpp	Wed Dec 12 16:01:30 2012 +0000
+++ b/main.cpp	Wed Dec 12 16:22:09 2012 +0000
@@ -23,7 +23,7 @@
 Queue<gps_line, 16> queue_gps_line;
 
 typedef struct {
-    float gps_battery; // gps battery voltage
+    char line[80];
 } sensor_line;
 MemoryPool<sensor_line, 16> mpool_sensor_line;
 Queue<sensor_line, 16> queue_sensor_line;
@@ -37,10 +37,11 @@
     gps.baud(4800);
 
     while(true) {
+        gps_led = 1;
         gps.read_line(buffer);
-        gps_led = !gps_led;
-        pc.puts(buffer);
+        //pc.puts(buffer);
         // send to log...
+        gps_led = 0;
         gps_line *message = mpool_gps_line.alloc();
         strcpy(message->line, buffer);
         queue_gps_line.put(message);
@@ -58,46 +59,55 @@
     f_mount(0, &fs);
     f_open(&fp_gps, "0:gps.txt", FA_CREATE_ALWAYS | FA_WRITE);
     f_open(&fp_sensor, "0:sensor.txt", FA_CREATE_ALWAYS | FA_WRITE);
-    log_led = 1;
 
     while(1) {
-        osEvent evt = queue_gps_line.get(1);
-        if (evt.status == osEventMessage) {
-            gps_line *message = (gps_line*)evt.value.p;
+        log_led = 1;
+        osEvent evt1 = queue_gps_line.get(1);
+        if (evt1.status == osEventMessage) {
+            gps_line *message = (gps_line*)evt1.value.p;
 
-            log_led = !log_led;
             f_puts(message->line, &fp_gps);
             f_sync(&fp_gps);
             
             mpool_gps_line.free(message);
         }
         
-        evt = queue_sensor_line.get(1);
-        if(evt.status == osEventMessage) {
-            sensor_line *message = (sensor_line*)evt.value.p;
+        osEvent evt2 = queue_sensor_line.get(1);
+        if(evt2.status == osEventMessage) {
+            sensor_line *message = (sensor_line*)evt2.value.p;
             
-            sprintf(buffer, "%f\r\n", message->gps_battery);
+            f_puts(message->line, &fp_sensor);
+            f_sync(&fp_sensor);
             
             mpool_sensor_line.free(message);
         }
+        log_led = 0;
     }
 }
 
 void sensor_thread(const void* args)
 {
+    DigitalOut sensor_led(LED2);
+    
+    sensor_line *message = mpool_sensor_line.alloc();
+    strcpy(message->line, "GPS Battery,\r\n");
+    queue_sensor_line.put(message);
+    
     while(true)
     {
         //get sensor line memory
+        sensor_led = 1;
         sensor_line *message = mpool_sensor_line.alloc();
         
         //gps battery
         float sample = gps_battery.read();
-        float voltage = sample*BAT_MUL*3.3;
-        message->gps_battery = voltage;
+        float gps_battery_voltage = sample*BAT_MUL*3.3;
         
         // more sensors
         
-        queue_sensor_line.put(message);        
+        sprintf(message->line, "%f,\r\n", gps_battery_voltage);
+        queue_sensor_line.put(message);
+        sensor_led = 0;        
         Thread::wait(1000);
     }
 }
@@ -107,7 +117,7 @@
     pc.baud(9600);
     Thread thread(gps_thread, NULL, osPriorityHigh);
     Thread thread2(log_thread, NULL, osPriorityNormal);
-    //Thread thread3(sensor_thread, NULL, osPriorityNormal);
+    Thread thread3(sensor_thread, NULL, osPriorityNormal);
 
     while(true) {
     }