spiralray gps decoder
Dependents: SakuraIO_Evaluation_Board_Standard SakuraIO_Evalution_Board_Standard sakuraio_plus_rental_server
gps.h@2:fc3ce3241d89, 2017-11-29 (annotated)
- Committer:
- misodengaku
- Date:
- Wed Nov 29 06:23:34 2017 +0000
- Revision:
- 2:fc3ce3241d89
- Parent:
- 0:8132a51314ec
- Child:
- 3:fd806214d7cc
unixtime
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:fc3ce3241d89 | 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 |