Simple driver for GNSS functions on BG96 module.
Dependents: mbed-os-example-cellular-gps-bg96
Note: this is early version
BG96 module needs to be already running to use this. Configuration only inside of this class. (hardcoded values)
BG96_GNSS.h@0:6a2a480672be, 2020-02-19 (annotated)
- Committer:
- Pawel Zarembski
- Date:
- Wed Feb 19 11:02:17 2020 +0100
- Revision:
- 0:6a2a480672be
- Child:
- 1:c3a5d3a0b437
init: simple version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Pawel Zarembski |
0:6a2a480672be | 1 | #ifndef BG96_GNSS_H |
Pawel Zarembski |
0:6a2a480672be | 2 | #define BG96_GNSS_H |
Pawel Zarembski |
0:6a2a480672be | 3 | |
Pawel Zarembski |
0:6a2a480672be | 4 | #include "mbed.h" |
Pawel Zarembski |
0:6a2a480672be | 5 | |
Pawel Zarembski |
0:6a2a480672be | 6 | #define SUCCESS 0 |
Pawel Zarembski |
0:6a2a480672be | 7 | #define FAILURE 1 |
Pawel Zarembski |
0:6a2a480672be | 8 | |
Pawel Zarembski |
0:6a2a480672be | 9 | #define BG96_AT_TIMEOUT 1000 |
Pawel Zarembski |
0:6a2a480672be | 10 | |
Pawel Zarembski |
0:6a2a480672be | 11 | class BG96_GNSS |
Pawel Zarembski |
0:6a2a480672be | 12 | { |
Pawel Zarembski |
0:6a2a480672be | 13 | public: |
Pawel Zarembski |
0:6a2a480672be | 14 | typedef struct gps_data_t { |
Pawel Zarembski |
0:6a2a480672be | 15 | float utc; // hhmmss.sss |
Pawel Zarembski |
0:6a2a480672be | 16 | float lat; // latitude. (-)dd.ddddd |
Pawel Zarembski |
0:6a2a480672be | 17 | float lon; // longitude. (-)dd.ddddd |
Pawel Zarembski |
0:6a2a480672be | 18 | float hdop; // Horizontal precision: 0.5-99.9 |
Pawel Zarembski |
0:6a2a480672be | 19 | float altitude; // altitude of antenna from sea level (meters) |
Pawel Zarembski |
0:6a2a480672be | 20 | int fix; // GNSS position mode 2=2D, 3=3D |
Pawel Zarembski |
0:6a2a480672be | 21 | float cog; // Course Over Ground ddd.mm |
Pawel Zarembski |
0:6a2a480672be | 22 | float spkm; // Speed over ground (Km/h) xxxx.x |
Pawel Zarembski |
0:6a2a480672be | 23 | float spkn; // Speed over ground (knots) xxxx.x |
Pawel Zarembski |
0:6a2a480672be | 24 | char date[7]; // data: ddmmyy |
Pawel Zarembski |
0:6a2a480672be | 25 | int nsat; // number of satellites 0-12 |
Pawel Zarembski |
0:6a2a480672be | 26 | } gps_data; |
Pawel Zarembski |
0:6a2a480672be | 27 | // todo: include gps data type in name |
Pawel Zarembski |
0:6a2a480672be | 28 | |
Pawel Zarembski |
0:6a2a480672be | 29 | BG96_GNSS(bool debug = false); |
Pawel Zarembski |
0:6a2a480672be | 30 | |
Pawel Zarembski |
0:6a2a480672be | 31 | /* init methods */ |
Pawel Zarembski |
0:6a2a480672be | 32 | void serial_at_parser_init(const char *delimiter, bool debug_en); |
Pawel Zarembski |
0:6a2a480672be | 33 | void check_if_ready(void); |
Pawel Zarembski |
0:6a2a480672be | 34 | int set_gps_power(bool state); |
Pawel Zarembski |
0:6a2a480672be | 35 | |
Pawel Zarembski |
0:6a2a480672be | 36 | /* module check state methods */ |
Pawel Zarembski |
0:6a2a480672be | 37 | |
Pawel Zarembski |
0:6a2a480672be | 38 | /* data acquisition methods */ |
Pawel Zarembski |
0:6a2a480672be | 39 | int get_gps_data(gps_data *data); |
Pawel Zarembski |
0:6a2a480672be | 40 | |
Pawel Zarembski |
0:6a2a480672be | 41 | private: |
Pawel Zarembski |
0:6a2a480672be | 42 | UARTSerial *_serial; |
Pawel Zarembski |
0:6a2a480672be | 43 | ATCmdParser *_parser; |
Pawel Zarembski |
0:6a2a480672be | 44 | } |