Generation 2 of the Harp project
Dependencies: Servo TMP36 GZ chan_fatfs_sd buffered-serial1 nmea_parser watchdog mbed-rtos mbed
Diff: main.cpp
- 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) { }