spiralray gps decoder

Dependents:   SakuraIO_Evaluation_Board_Standard SakuraIO_Evalution_Board_Standard sakuraio_plus_rental_server

Committer:
misodengaku
Date:
Tue Jan 15 06:51:48 2019 +0000
Revision:
4:82d2fced184b
Parent:
3:fd806214d7cc
add GGA message support

Who changed what in which revision?

UserRevisionLine numberNew contents of line
misodengaku 0:8132a51314ec 1
misodengaku 0:8132a51314ec 2 #ifndef GPS_DECODER_H
misodengaku 0:8132a51314ec 3 #define GPS_DECODER_H
misodengaku 0:8132a51314ec 4
misodengaku 0:8132a51314ec 5 #include "mbed.h"
misodengaku 0:8132a51314ec 6 #include <string.h>
misodengaku 0:8132a51314ec 7 #include <stdint.h>
misodengaku 0:8132a51314ec 8 #include <stdlib.h>
misodengaku 0:8132a51314ec 9 #include <math.h>
misodengaku 0:8132a51314ec 10
misodengaku 0:8132a51314ec 11
misodengaku 0:8132a51314ec 12 #define NMEA_BUF_LEN 128
misodengaku 0:8132a51314ec 13 #define MAXTOKEN 32
misodengaku 0:8132a51314ec 14
misodengaku 0:8132a51314ec 15 class GPSDecoder
misodengaku 0:8132a51314ec 16 {
misodengaku 0:8132a51314ec 17 public:
misodengaku 0:8132a51314ec 18 GPSDecoder() { }
misodengaku 0:8132a51314ec 19 GPSDecoder(char *nmea_msg) {
misodengaku 0:8132a51314ec 20 set_nmea_message(nmea_msg);
misodengaku 0:8132a51314ec 21 }
misodengaku 0:8132a51314ec 22
misodengaku 0:8132a51314ec 23 void set_nmea_message(char *nmea_msg);
misodengaku 0:8132a51314ec 24 void decode();
misodengaku 0:8132a51314ec 25 uint8_t validate();
misodengaku 0:8132a51314ec 26 void dump_info(char *buf);
misodengaku 0:8132a51314ec 27
misodengaku 0:8132a51314ec 28 double get_latitude() {
misodengaku 0:8132a51314ec 29 return latitude;
misodengaku 0:8132a51314ec 30 }
misodengaku 0:8132a51314ec 31 double get_longitude() {
misodengaku 0:8132a51314ec 32 return longitude;
misodengaku 0:8132a51314ec 33 }
misodengaku 0:8132a51314ec 34 float get_speed() {
misodengaku 0:8132a51314ec 35 return speed;
misodengaku 0:8132a51314ec 36 }
misodengaku 0:8132a51314ec 37 float get_move_direction() {
misodengaku 0:8132a51314ec 38 return move_direction;
misodengaku 0:8132a51314ec 39 }
misodengaku 0:8132a51314ec 40 uint16_t get_year() {
misodengaku 0:8132a51314ec 41 return year;
misodengaku 0:8132a51314ec 42 }
misodengaku 0:8132a51314ec 43 uint8_t get_month() {
misodengaku 0:8132a51314ec 44 return month;
misodengaku 0:8132a51314ec 45 }
misodengaku 0:8132a51314ec 46 uint8_t get_day() {
misodengaku 0:8132a51314ec 47 return day;
misodengaku 0:8132a51314ec 48 }
misodengaku 0:8132a51314ec 49 uint8_t get_hour() {
misodengaku 0:8132a51314ec 50 return hour;
misodengaku 0:8132a51314ec 51 }
misodengaku 0:8132a51314ec 52 uint8_t get_min() {
misodengaku 0:8132a51314ec 53 return min;
misodengaku 0:8132a51314ec 54 }
misodengaku 0:8132a51314ec 55 uint8_t get_sec() {
misodengaku 0:8132a51314ec 56 return sec;
misodengaku 0:8132a51314ec 57 }
misodengaku 0:8132a51314ec 58 uint8_t get_msec() {
misodengaku 0:8132a51314ec 59 return msec;
misodengaku 0:8132a51314ec 60 }
misodengaku 3:fd806214d7cc 61 time_t get_unixtime();
misodengaku 0:8132a51314ec 62
misodengaku 0:8132a51314ec 63 private:
misodengaku 0:8132a51314ec 64 long str2int(char *src_ptr, uint8_t len);
misodengaku 0:8132a51314ec 65 int split(char *str, const char delim, char *token[], int max_item);
misodengaku 0:8132a51314ec 66
misodengaku 0:8132a51314ec 67 char nmea_line[NMEA_BUF_LEN];
misodengaku 0:8132a51314ec 68
misodengaku 0:8132a51314ec 69 double latitude;
misodengaku 0:8132a51314ec 70 double longitude;
misodengaku 0:8132a51314ec 71 float speed;
misodengaku 0:8132a51314ec 72 float move_direction;
misodengaku 0:8132a51314ec 73 uint16_t year;
misodengaku 0:8132a51314ec 74 uint8_t month;
misodengaku 0:8132a51314ec 75 uint8_t day;
misodengaku 0:8132a51314ec 76 uint8_t hour;
misodengaku 0:8132a51314ec 77 uint8_t min;
misodengaku 0:8132a51314ec 78 uint8_t sec;
misodengaku 0:8132a51314ec 79 uint16_t msec;
misodengaku 0:8132a51314ec 80 };
misodengaku 0:8132a51314ec 81
misodengaku 0:8132a51314ec 82
misodengaku 0:8132a51314ec 83 #endif