PLANET-Q AE-GPS Library

Dependents:   IZU2020_AVIONICS IZU2020_AVIONICS

Committer:
TsurunoYuma
Date:
Wed Dec 18 14:42:45 2019 +0000
Revision:
4:340220a33272
Parent:
2:c469139053eb
comment_corrected_02

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tanahashi 0:55b72d6ab099 1 #include "mbed.h"
tanahashi 0:55b72d6ab099 2 #include "PQAEGPS.h"
tanahashi 0:55b72d6ab099 3
tanahashi 0:55b72d6ab099 4 AEGPS::AEGPS(Serial &gps_serial)
tanahashi 0:55b72d6ab099 5 {
tanahashi 0:55b72d6ab099 6 _serial = &gps_serial;
tanahashi 0:55b72d6ab099 7 _serial->attach(callback(this, &AEGPS::receive), Serial::RxIrq);
tanahashi 0:55b72d6ab099 8 }
tanahashi 0:55b72d6ab099 9
tanahashi 0:55b72d6ab099 10 void AEGPS::receive()
tanahashi 0:55b72d6ab099 11 {
tanahashi 0:55b72d6ab099 12 char c = _serial->getc();
tanahashi 0:55b72d6ab099 13 if(c == '$') {
tanahashi 0:55b72d6ab099 14 index = 0;
tanahashi 0:55b72d6ab099 15 flag = 1;
tanahashi 0:55b72d6ab099 16 }
tanahashi 0:55b72d6ab099 17 if(flag == 1) {
tanahashi 0:55b72d6ab099 18 rx_buf[index] = c;
tanahashi 0:55b72d6ab099 19 if(c == '\n') {
tanahashi 0:55b72d6ab099 20 rx_buf[index + 1] = '\0';
tanahashi 0:55b72d6ab099 21 flag = 2;
tanahashi 0:55b72d6ab099 22 } else {
tanahashi 0:55b72d6ab099 23 index++;
tanahashi 0:55b72d6ab099 24 }
tanahashi 0:55b72d6ab099 25 }
tanahashi 0:55b72d6ab099 26 if(flag == 2) {
tanahashi 0:55b72d6ab099 27 sscanf(rx_buf, "$GPGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f,M,%f,M", &sec, &lat, &ns, &lon, &ew, &fix, &sat, &hdop, &alt, &geoid);
tanahashi 2:c469139053eb 28
tanahashi 0:55b72d6ab099 29 hour = (int)(sec / 10000);
tanahashi 0:55b72d6ab099 30 min = (int)(sec - hour * 10000) / 100;
tanahashi 0:55b72d6ab099 31 sec = sec - hour * 10000 - min * 100;
tanahashi 2:c469139053eb 32
tanahashi 0:55b72d6ab099 33 int d;
tanahashi 0:55b72d6ab099 34 float m;
tanahashi 0:55b72d6ab099 35
tanahashi 0:55b72d6ab099 36 d = (int)lat / 100;
tanahashi 0:55b72d6ab099 37 m = lat - (float)d * 100;
tanahashi 0:55b72d6ab099 38 lat = (float)d + m / 60;
tanahashi 0:55b72d6ab099 39 if(ns == 'S') {
tanahashi 0:55b72d6ab099 40 lat = -lat;
tanahashi 0:55b72d6ab099 41 }
tanahashi 0:55b72d6ab099 42
tanahashi 0:55b72d6ab099 43 d = (int)lon / 100;
tanahashi 0:55b72d6ab099 44 m = lon - (float)d * 100;
tanahashi 0:55b72d6ab099 45 lon = (float)d + m / 60;
tanahashi 0:55b72d6ab099 46 if(ns == 'W') {
tanahashi 0:55b72d6ab099 47 lon = -lon;
tanahashi 0:55b72d6ab099 48 }
tanahashi 2:c469139053eb 49
tanahashi 0:55b72d6ab099 50 flag = 0;
tanahashi 0:55b72d6ab099 51 }
tanahashi 0:55b72d6ab099 52 }
tanahashi 0:55b72d6ab099 53
tanahashi 2:c469139053eb 54 int AEGPS::get_hour()
tanahashi 2:c469139053eb 55 {
tanahashi 0:55b72d6ab099 56 return hour;
tanahashi 0:55b72d6ab099 57 }
tanahashi 0:55b72d6ab099 58
tanahashi 2:c469139053eb 59 int AEGPS::get_min()
tanahashi 2:c469139053eb 60 {
tanahashi 0:55b72d6ab099 61 return min;
tanahashi 0:55b72d6ab099 62 }
tanahashi 0:55b72d6ab099 63
tanahashi 2:c469139053eb 64 float AEGPS::get_sec()
tanahashi 2:c469139053eb 65 {
tanahashi 0:55b72d6ab099 66 return sec;
tanahashi 0:55b72d6ab099 67 }
tanahashi 0:55b72d6ab099 68
tanahashi 2:c469139053eb 69 float AEGPS::get_lat()
tanahashi 2:c469139053eb 70 {
tanahashi 0:55b72d6ab099 71 return lat;
tanahashi 0:55b72d6ab099 72 }
tanahashi 0:55b72d6ab099 73
tanahashi 2:c469139053eb 74 float AEGPS::get_lon()
tanahashi 2:c469139053eb 75 {
tanahashi 0:55b72d6ab099 76 return lon;
tanahashi 0:55b72d6ab099 77 }
tanahashi 0:55b72d6ab099 78
tanahashi 2:c469139053eb 79 int AEGPS::get_fix()
tanahashi 2:c469139053eb 80 {
tanahashi 0:55b72d6ab099 81 return fix;
tanahashi 0:55b72d6ab099 82 }
tanahashi 0:55b72d6ab099 83
tanahashi 2:c469139053eb 84 int AEGPS::get_sat()
tanahashi 2:c469139053eb 85 {
tanahashi 0:55b72d6ab099 86 return sat;
tanahashi 0:55b72d6ab099 87 }
tanahashi 0:55b72d6ab099 88
tanahashi 2:c469139053eb 89 float AEGPS::get_hdop()
tanahashi 2:c469139053eb 90 {
tanahashi 0:55b72d6ab099 91 return hdop;
tanahashi 0:55b72d6ab099 92 }
tanahashi 0:55b72d6ab099 93
tanahashi 2:c469139053eb 94 float AEGPS::get_alt()
tanahashi 2:c469139053eb 95 {
tanahashi 0:55b72d6ab099 96 return alt;
tanahashi 0:55b72d6ab099 97 }
tanahashi 0:55b72d6ab099 98
tanahashi 2:c469139053eb 99 float AEGPS::get_geoid()
tanahashi 2:c469139053eb 100 {
tanahashi 0:55b72d6ab099 101 return geoid;
tanahashi 0:55b72d6ab099 102 }