starting integration with XBee

Dependencies:   SDFileSystem mbed

Revision:
2:146625d6992d
Parent:
1:5fa445bd14a6
Child:
3:c611fff05072
--- a/main.cpp	Thu Mar 10 17:40:58 2016 +0000
+++ b/main.cpp	Tue Mar 15 17:48:34 2016 +0000
@@ -5,6 +5,8 @@
 
 #define NUM_PIXELS 2048
 #define BUF_SIZE 1024
+
+// TODO make a new file (name=timestamp) each time we start recording data
 #define OUTPUT_FILE "/sd/data.csv"
 
 // pinout for spectrometer
@@ -16,7 +18,7 @@
 // Pixel_rdy (#6) -> PTA1
 // Fifo_cs (#3) -> PTB23
 // Trigger (#13) -> PTA2
- 
+
 SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk
 
 DigitalIn pixel_rdy(PTA1);
@@ -38,22 +40,22 @@
 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
 FILE *fpData;
 
-void read_pixels() {
+void read_pixels()
+{
     int data[NUM_PIXELS];
     for (int i = 0; i < NUM_PIXELS; i++) {
-        
+
         while (!pixel_rdy);
-        
+
         fifo_cs = 0;
         data[i] = spi.write(0x00); // write a dummy byte just to read the data
         fifo_cs = 1;
-        
+
     }
-    
+
     // write to file and pc
     fpData = fopen(OUTPUT_FILE, "a");
-    for (int i = 0; i < NUM_PIXELS; i++)
-    {
+    for (int i = 0; i < NUM_PIXELS; i++) {
         pc.printf(",%d", data[i]);
         fprintf(fpData, ",%d", data[i]);
     }
@@ -62,61 +64,59 @@
     fclose(fpData);
 }
 
+void gps_read() {
+    char buffer[BUF_SIZE];
+    
+    get_nmea(&duino, buffer, BUF_SIZE);
+
+    struct NMEA_data nmea = parse_line(buffer);
+
+    // determine whether there's a lock
+    char lock_str[BUF_SIZE];
+    if ( nmea.lock_flag == 'A' )
+        sprintf(lock_str, "Has lock");
+    else
+        sprintf(lock_str, "No lock");
+
+    // assemble data into summary string
+    char status_str[BUF_SIZE];
+    sprintf(status_str, "%02d:%02d:%02d,%d/%d/%d,%dd %lf' %c %dd %lf' %c,%s",
+            nmea.hours, nmea.minutes, nmea.seconds,
+            nmea.month, nmea.day, nmea.year,
+            nmea.latitude, nmea.latitude_minutes, nmea.latitude_direction,
+            nmea.longitude, nmea.longitude_minutes, nmea.longitude_direction, lock_str);
+
+    // print to pc, sd card
+    pc.printf("%s", status_str);
+
+    fpData = fopen(OUTPUT_FILE, "a");
+    fprintf(fpData, "%s", status_str);
+    fclose(fpData);
+}
+
 int main()
 {
     pc.baud(115200); // make sure to set computer TERA Term or whatever to 115200 baud!!!
     duino.baud(9600);
     pc.printf("Initializing ...\r\n");
-    
+
     fifo_cs = 1;
     trigger = 0;
     wait(0.5f);
-    
-    char buffer[BUF_SIZE];
-    
+
+
     while (true) {
-        
+
         led = !led;
-        
-        // --- gps stuff --- //
-        get_nmea(&duino, buffer, BUF_SIZE);
-        
-        struct NMEA_data nmea = parse_line(buffer);
-            
-        // determine whether there's a lock
-        char lock_str[BUF_SIZE];
-        if ( nmea.lock_flag == 'A' )
-            sprintf(lock_str, "Has lock");
-        else 
-            sprintf(lock_str, "No lock");
-            
-        // assemble data into summary string
-        char status_str[BUF_SIZE];
-        sprintf(status_str, "%02d:%02d:%02d,%d/%d/%d,%dd %lf' %c %dd %lf' %c,%s", 
-            nmea.hours, nmea.minutes, nmea.seconds, 
-            nmea.month, nmea.day, nmea.year,
-            nmea.latitude, nmea.latitude_minutes, nmea.latitude_direction,
-            nmea.longitude, nmea.longitude_minutes, nmea.longitude_direction, lock_str);
-        
-        // print to pc, sd card
-        pc.printf("%s", status_str);
-        
-        fpData = fopen(OUTPUT_FILE, "a");
-        fprintf(fpData, "%s", status_str);
-        fclose(fpData);
-        
-        // --- end of gps stuff --- //
-        
-        
-        
+
+        gps_read();
+
         // Trigger an acquisition from spectrometer
         trigger = 1;
         wait_ms(1);
         trigger = 0;
         read_pixels();
-        
-        
-        
+
         wait(0.5f);
     }
 }
\ No newline at end of file