SerialGPS test , Read GPS from USART 1 ( PA_9,PA_10) Parse and Send GPS information to PC

Dependencies:   SerialGPS mbed

Committer:
veyselka
Date:
Mon Jan 05 15:34:58 2015 +0000
Revision:
0:e0a6c18ea0fb
SerialGPS library test Nucleo STM32F401RE; Read GPS from USART 1; Send GPS information USART PC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
veyselka 0:e0a6c18ea0fb 1 #include "mbed.h"
veyselka 0:e0a6c18ea0fb 2 #include "SerialGPS.h"
veyselka 0:e0a6c18ea0fb 3
veyselka 0:e0a6c18ea0fb 4
veyselka 0:e0a6c18ea0fb 5 Serial pc(USBTX, USBRX); // tx, rx
veyselka 0:e0a6c18ea0fb 6 SerialGPS gps(PA_9,PA_10); // tx, rx
veyselka 0:e0a6c18ea0fb 7
veyselka 0:e0a6c18ea0fb 8
veyselka 0:e0a6c18ea0fb 9
veyselka 0:e0a6c18ea0fb 10
veyselka 0:e0a6c18ea0fb 11 /**
veyselka 0:e0a6c18ea0fb 12 * A callback function for logging data.
veyselka 0:e0a6c18ea0fb 13 */
veyselka 0:e0a6c18ea0fb 14 void cbfunc_log(char *s) {
veyselka 0:e0a6c18ea0fb 15
veyselka 0:e0a6c18ea0fb 16 }
veyselka 0:e0a6c18ea0fb 17
veyselka 0:e0a6c18ea0fb 18 /**
veyselka 0:e0a6c18ea0fb 19 * A callback function for GGA.
veyselka 0:e0a6c18ea0fb 20 *
veyselka 0:e0a6c18ea0fb 21 * GGA - Global Positioning System Fixed Data.
veyselka 0:e0a6c18ea0fb 22 */
veyselka 0:e0a6c18ea0fb 23 void cbfunc_gga(SerialGPS::gps_gga_t *p) {
veyselka 0:e0a6c18ea0fb 24
veyselka 0:e0a6c18ea0fb 25 pc.printf("%02d:%02d:%02d(P%d,S%d)\r\n", p->hour, p->min, p->sec, p->position_fix, p->satellites_used);
veyselka 0:e0a6c18ea0fb 26
veyselka 0:e0a6c18ea0fb 27 pc.printf("%c=%10.4f\r\n", p->ns, p->latitude);
veyselka 0:e0a6c18ea0fb 28
veyselka 0:e0a6c18ea0fb 29 pc.printf("%c=%10.4f\r\n", p->ew, p->longitude);
veyselka 0:e0a6c18ea0fb 30
veyselka 0:e0a6c18ea0fb 31 }
veyselka 0:e0a6c18ea0fb 32
veyselka 0:e0a6c18ea0fb 33 /**
veyselka 0:e0a6c18ea0fb 34 * A callback function for GSA.
veyselka 0:e0a6c18ea0fb 35 *
veyselka 0:e0a6c18ea0fb 36 * GSA - GNSS DOP and Active Satellites.
veyselka 0:e0a6c18ea0fb 37 */
veyselka 0:e0a6c18ea0fb 38 void cbfunc_gsa(SerialGPS::gps_gsa_t *p) {
veyselka 0:e0a6c18ea0fb 39
veyselka 0:e0a6c18ea0fb 40 pc.printf("SEL:%c FIX:%d\r\n", p->selmode, p->fix);
veyselka 0:e0a6c18ea0fb 41
veyselka 0:e0a6c18ea0fb 42 }
veyselka 0:e0a6c18ea0fb 43
veyselka 0:e0a6c18ea0fb 44 /**
veyselka 0:e0a6c18ea0fb 45 * A callback function for GSV.
veyselka 0:e0a6c18ea0fb 46 *
veyselka 0:e0a6c18ea0fb 47 * GSV - GNSS Satellites in View.
veyselka 0:e0a6c18ea0fb 48 */
veyselka 0:e0a6c18ea0fb 49 void cbfunc_gsv(SerialGPS::gps_gsv_t *p) {
veyselka 0:e0a6c18ea0fb 50
veyselka 0:e0a6c18ea0fb 51 pc.printf("Satellites:%2d\r\n", p->satcnt);
veyselka 0:e0a6c18ea0fb 52
veyselka 0:e0a6c18ea0fb 53 }
veyselka 0:e0a6c18ea0fb 54
veyselka 0:e0a6c18ea0fb 55 /**
veyselka 0:e0a6c18ea0fb 56 * A callback function for RMC.
veyselka 0:e0a6c18ea0fb 57 *
veyselka 0:e0a6c18ea0fb 58 * RMC - Recommended Minimum Specific GNSS Data.
veyselka 0:e0a6c18ea0fb 59 */
veyselka 0:e0a6c18ea0fb 60 void cbfunc_rmc(SerialGPS::gps_rmc_t *p) {
veyselka 0:e0a6c18ea0fb 61
veyselka 0:e0a6c18ea0fb 62 pc.printf("%02d:%02d:%02d(%c)\r\n", p->hour, p->min, p->sec, p->status);
veyselka 0:e0a6c18ea0fb 63
veyselka 0:e0a6c18ea0fb 64 }
veyselka 0:e0a6c18ea0fb 65
veyselka 0:e0a6c18ea0fb 66 /**
veyselka 0:e0a6c18ea0fb 67 * Entry point.
veyselka 0:e0a6c18ea0fb 68 */
veyselka 0:e0a6c18ea0fb 69
veyselka 0:e0a6c18ea0fb 70
veyselka 0:e0a6c18ea0fb 71
veyselka 0:e0a6c18ea0fb 72
veyselka 0:e0a6c18ea0fb 73 int main() {
veyselka 0:e0a6c18ea0fb 74
veyselka 0:e0a6c18ea0fb 75 pc.baud(9600);
veyselka 0:e0a6c18ea0fb 76
veyselka 0:e0a6c18ea0fb 77
veyselka 0:e0a6c18ea0fb 78 pc.printf("TEST\r\n");
veyselka 0:e0a6c18ea0fb 79 wait(0.5);
veyselka 0:e0a6c18ea0fb 80
veyselka 0:e0a6c18ea0fb 81 SerialGPS::gps_callback_t cb;
veyselka 0:e0a6c18ea0fb 82 cb.cbfunc_log = cbfunc_log;
veyselka 0:e0a6c18ea0fb 83 cb.cbfunc_gga = cbfunc_gga;
veyselka 0:e0a6c18ea0fb 84 cb.cbfunc_gsa = cbfunc_gsa;
veyselka 0:e0a6c18ea0fb 85 cb.cbfunc_gsv = cbfunc_gsv;
veyselka 0:e0a6c18ea0fb 86 cb.cbfunc_rmc = cbfunc_rmc;
veyselka 0:e0a6c18ea0fb 87 gps.attach(&cb);
veyselka 0:e0a6c18ea0fb 88
veyselka 0:e0a6c18ea0fb 89 while(1) {
veyselka 0:e0a6c18ea0fb 90
veyselka 0:e0a6c18ea0fb 91
veyselka 0:e0a6c18ea0fb 92 gps.processing();
veyselka 0:e0a6c18ea0fb 93
veyselka 0:e0a6c18ea0fb 94 }
veyselka 0:e0a6c18ea0fb 95 }
veyselka 0:e0a6c18ea0fb 96