FBRLogger final version

Dependencies:   EthernetInterface MSCAN Nanopb SDFileSystem mbed-rtos mbed

Revision:
4:66928695da01
Parent:
3:32206cf84eb4
Child:
5:3c4f35ea3cd9
--- a/main.cpp	Sun Feb 17 19:19:19 2013 +0000
+++ b/main.cpp	Tue Feb 19 20:38:58 2013 +0000
@@ -4,6 +4,9 @@
 #include <stdint.h>
 #include <fstream>
 #include <iomanip>
+#include "pb.h"
+#include "pb_encode.h"
+#include "fbr.pb.h"
 
 #define LOGGING_INTERVAL    0.1
 #define ANALOG_SCALE        3.3
@@ -31,25 +34,50 @@
     return false;
 }
 
+static bool write_callback(pb_ostream_t *stream, const uint8_t *buf, size_t count)
+{
+    ostream* out = (ostream*)stream->state;
+    out->write(reinterpret_cast<const char*>(buf), count);
+    return out->bad();
+}
+
 void take_sample()
 {
     ofstream out;
-
-    float value;
-
-    out.open(logFileName);
-
-    // Write the Analog Sensors
-    for(int i = 0; i < 6; i++) {
-        value = analogInputs[i].read() * ANALOG_SCALE;
-        out << setw(10) << value << ",";
-    }
-
-    //Write the ECU data (in binary form)
-    out.write(reinterpret_cast<char*>(&car), sizeof(State));
+    telemetry_message telemetry;
+    
+    pb_ostream_t pb_out = {&write_callback, out, 1000, 0};
+    uint8_t zero = 0;
+    
+    telemetry.rpm = car.rpm;
+    telemetry.throttle_pos = car.throttle_pos;
+    telemetry.manifold_pres = car.manifold_pres;
+    telemetry.air_temp = car.air_temp;
+    telemetry.coolant_temp = car.coolant_temp;
+    telemetry.lambda = car.lambda;
+    telemetry.speed = car.speed;
+    telemetry.gear = car.gear;
+    telemetry.oil_temp = car.oil_temp;
+    telemetry.warnings = car.warnings;
+    telemetry.voltage = car.voltage;
     
-    out << endl;
-    out.close();
+    telemetry.accel_x = analogInputs[4].read();
+    telemetry.accel_y = analogInputs[5].read();
+    
+    pb_encode(&pb_out, telemetry_message_fields, &telemetry);
+    pb_write(&pb_out, &zero, 1);
+    
+//    float value;
+//
+//    out.open(logFileName);
+//
+//    // Write the Analog Sensors
+//
+//    //Write the ECU data (in binary form)
+//    out.write(reinterpret_cast<char*>(&car), sizeof(State));
+//    
+//    out << endl;
+//    out.close();
 }
 
 int main()