FBRLogger final version
Dependencies: EthernetInterface MSCAN Nanopb SDFileSystem mbed-rtos mbed
Diff: main.cpp
- Revision:
- 4:66928695da01
- Parent:
- 3:32206cf84eb4
- Child:
- 5:3c4f35ea3cd9
diff -r 32206cf84eb4 -r 66928695da01 main.cpp --- 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()