test

Dependencies:   GPS TextLCD mbed

Fork of GPS_classroom by Narongdet Phonphuak

Committer:
fookies
Date:
Sat May 23 04:27:29 2015 +0000
Revision:
2:8c0dcaa10883
Parent:
1:326b1e0bbe56
Child:
3:37086b58ab05
gg;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
narongdet 0:dfd102afb417 1 #include "mbed.h"
narongdet 0:dfd102afb417 2 #include "GPS.h"
narongdet 0:dfd102afb417 3 #include "TextLCD.h"
narongdet 0:dfd102afb417 4 GPS gps(PA_11,PA_12);
narongdet 0:dfd102afb417 5 I2C i2c_lcd(D14,D15);
narongdet 0:dfd102afb417 6 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2);
fookies 2:8c0dcaa10883 7 Serial esp(D8,D2);
fookies 2:8c0dcaa10883 8 uint8_t buffer[0x100];
fookies 2:8c0dcaa10883 9 uint16_t buffer_head;
fookies 2:8c0dcaa10883 10 uint16_t buffer_tail;
fookies 2:8c0dcaa10883 11
fookies 2:8c0dcaa10883 12 void rxcallback(void) {
fookies 2:8c0dcaa10883 13 uint8_t chr;
fookies 2:8c0dcaa10883 14 while (esp.readable()) {
fookies 2:8c0dcaa10883 15 chr = esp.getc();
fookies 2:8c0dcaa10883 16 pc.putc(chr);
fookies 2:8c0dcaa10883 17 buffer[buffer_head++] = chr;
fookies 2:8c0dcaa10883 18 if (buffer_head == BUFFER_SIZE)
fookies 2:8c0dcaa10883 19 {
fookies 2:8c0dcaa10883 20 buffer_head = 0;
fookies 2:8c0dcaa10883 21 }
fookies 2:8c0dcaa10883 22 }
fookies 2:8c0dcaa10883 23 }
fookies 2:8c0dcaa10883 24 void flush_fifo(void)
fookies 2:8c0dcaa10883 25 {
fookies 2:8c0dcaa10883 26 while (esp.readable())
fookies 2:8c0dcaa10883 27 {
fookies 2:8c0dcaa10883 28 (void)esp.getc();
fookies 2:8c0dcaa10883 29 }
fookies 2:8c0dcaa10883 30 buffer_head = 0;
fookies 2:8c0dcaa10883 31 buffer_tail = 0;
fookies 2:8c0dcaa10883 32 }
fookies 2:8c0dcaa10883 33 int find_response(const char *resp) {
fookies 2:8c0dcaa10883 34 /* Give some delay for buffer to fill up */
fookies 2:8c0dcaa10883 35 wait_ms(10);
fookies 2:8c0dcaa10883 36 int timeout = 0xFFFFFF;
fookies 2:8c0dcaa10883 37 int len = strlen(resp);
fookies 2:8c0dcaa10883 38 do
fookies 2:8c0dcaa10883 39 {
fookies 2:8c0dcaa10883 40 if (buffer_head > (buffer_tail + len))
fookies 2:8c0dcaa10883 41 {
fookies 2:8c0dcaa10883 42 if (!memcmp(&buffer[buffer_tail], resp, len))
fookies 2:8c0dcaa10883 43 {
fookies 2:8c0dcaa10883 44 flush_fifo();
fookies 2:8c0dcaa10883 45 return 0;
fookies 2:8c0dcaa10883 46 }
fookies 2:8c0dcaa10883 47 buffer_tail++;
fookies 2:8c0dcaa10883 48 }
fookies 2:8c0dcaa10883 49 }while(timeout--);
fookies 2:8c0dcaa10883 50 flush_fifo();
fookies 2:8c0dcaa10883 51 return 1;
fookies 2:8c0dcaa10883 52 }
fookies 2:8c0dcaa10883 53
narongdet 0:dfd102afb417 54 int main()
narongdet 0:dfd102afb417 55 {
narongdet 0:dfd102afb417 56 lcd.setMode(TextLCD::DispOn);
narongdet 0:dfd102afb417 57 lcd.setBacklight(TextLCD::LightOff);
narongdet 0:dfd102afb417 58 lcd.setCursor(TextLCD::CurOff_BlkOff);
fookies 2:8c0dcaa10883 59 esp.attach(&rxcallback, Serial::RxIrq);
narongdet 0:dfd102afb417 60 lcd.setAddress(0,0);
narongdet 0:dfd102afb417 61 lcd.printf("Initial GPS...\n");
fookies 2:8c0dcaa10883 62 esp.printf("AT+RST\r\n");
fookies 2:8c0dcaa10883 63
narongdet 0:dfd102afb417 64 while(1){
narongdet 0:dfd102afb417 65 if(gps.sample())
narongdet 0:dfd102afb417 66 {
narongdet 0:dfd102afb417 67 lcd.setAddress(0,1);
narongdet 0:dfd102afb417 68 lcd.printf("%6.3f,%7.3f",gps.latitude,gps.longitude);
narongdet 0:dfd102afb417 69 }
narongdet 0:dfd102afb417 70 wait(0.5);
narongdet 0:dfd102afb417 71 }
narongdet 0:dfd102afb417 72 }
narongdet 0:dfd102afb417 73