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

Committer:
tylerjw
Date:
Fri Dec 07 19:19:00 2012 +0000
Revision:
7:d8ecabe16c9e
Parent:
6:204487243310
Child:
8:13360ec824a7
rtos, MODSERIAL implementation demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tylerjw 0:ce5f06c3895f 1 #include "mbed.h"
tylerjw 7:d8ecabe16c9e 2 #include "rtos.h"
tylerjw 7:d8ecabe16c9e 3 #include "MODSERIAL.h"
tylerjw 0:ce5f06c3895f 4
tylerjw 0:ce5f06c3895f 5 Serial pc(USBTX, USBRX);
tylerjw 7:d8ecabe16c9e 6
tylerjw 7:d8ecabe16c9e 7 float test_lat = 39.943039;
tylerjw 7:d8ecabe16c9e 8 float test_long = -104.978226;
tylerjw 7:d8ecabe16c9e 9
tylerjw 7:d8ecabe16c9e 10 // Connect the TX of the GPS module to p10 RX input
tylerjw 7:d8ecabe16c9e 11 MODSERIAL gps(NC, p14);
tylerjw 7:d8ecabe16c9e 12
tylerjw 7:d8ecabe16c9e 13 DigitalOut irq_led(LED1);
tylerjw 7:d8ecabe16c9e 14
tylerjw 7:d8ecabe16c9e 15 bool newline_detected = false;
tylerjw 0:ce5f06c3895f 16
tylerjw 7:d8ecabe16c9e 17 // Called everytime a new character goes into
tylerjw 7:d8ecabe16c9e 18 // the RX buffer. Test that character for \n
tylerjw 7:d8ecabe16c9e 19 // Note, rxGetLastChar() gets the last char that
tylerjw 7:d8ecabe16c9e 20 // we received but it does NOT remove it from
tylerjw 7:d8ecabe16c9e 21 // the RX buffer.
tylerjw 7:d8ecabe16c9e 22 void rxCallback(MODSERIAL_IRQ_INFO *q)
tylerjw 7:d8ecabe16c9e 23 {
tylerjw 7:d8ecabe16c9e 24 newline_detected = true;
tylerjw 7:d8ecabe16c9e 25 irq_led = !irq_led;
tylerjw 7:d8ecabe16c9e 26 }
tylerjw 7:d8ecabe16c9e 27
tylerjw 7:d8ecabe16c9e 28 void gps_thread(void const *args)
tylerjw 7:d8ecabe16c9e 29 {
tylerjw 7:d8ecabe16c9e 30 char buffer[512];
tylerjw 7:d8ecabe16c9e 31
tylerjw 7:d8ecabe16c9e 32 gps.baud(4800);
tylerjw 6:204487243310 33 pc.baud(9600);
tylerjw 7:d8ecabe16c9e 34 gps.autoDetectChar('\n');
tylerjw 7:d8ecabe16c9e 35 gps.attach(&rxCallback, MODSERIAL::RxAutoDetect);
tylerjw 7:d8ecabe16c9e 36
tylerjw 7:d8ecabe16c9e 37 while(true) {
tylerjw 7:d8ecabe16c9e 38 // Wait here until we detect the \n going into the buffer.
tylerjw 7:d8ecabe16c9e 39 while (! newline_detected ) ;
tylerjw 7:d8ecabe16c9e 40
tylerjw 7:d8ecabe16c9e 41 // When we get here the RX buffer now contains a NMEA sentence.
tylerjw 7:d8ecabe16c9e 42 // ...
tylerjw 7:d8ecabe16c9e 43 memset(buffer, 0, 512);
tylerjw 7:d8ecabe16c9e 44 gps.move(buffer, 512);
tylerjw 7:d8ecabe16c9e 45 pc.puts(buffer);
tylerjw 0:ce5f06c3895f 46 }
tylerjw 7:d8ecabe16c9e 47
tylerjw 7:d8ecabe16c9e 48 }
tylerjw 7:d8ecabe16c9e 49
tylerjw 7:d8ecabe16c9e 50
tylerjw 7:d8ecabe16c9e 51 int main()
tylerjw 7:d8ecabe16c9e 52 {
tylerjw 7:d8ecabe16c9e 53 Thread thread(gps_thread);
tylerjw 7:d8ecabe16c9e 54
tylerjw 7:d8ecabe16c9e 55 while(true);
tylerjw 0:ce5f06c3895f 56 }