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)

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?

UserRevisionLine numberNew 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 }