Code for 'Smart Regulator' featured in 'Model Engineer', November 2020 on. Contains all work to August 2020 including all code described. Top level algorithm development is quite spares, leaving some work for you! Any questions - jon@jons-workshop.com
Dependencies: mbed BufferedSerial Servo2 PCT2075 I2CEeprom FastPWM
gps_mod.h@5:6ca3e7ffc553, 2020-12-05 (annotated)
- Committer:
- JonFreeman
- Date:
- Sat Dec 05 12:40:17 2020 +0000
- Revision:
- 5:6ca3e7ffc553
- Parent:
- 3:43cb067ecd00
Code for 'Smart Regulator' to August 2020, published as is. Basic low-level functions all thoroughly tested and debugged, top level algorithms have scope for further development - over to you! For help contact jon @ jons-workshop[.com
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JonFreeman | 3:43cb067ecd00 | 1 | #ifndef MBED_GPS_MOD_H |
JonFreeman | 3:43cb067ecd00 | 2 | #define MBED_GPS_MOD_H |
JonFreeman | 3:43cb067ecd00 | 3 | |
JonFreeman | 3:43cb067ecd00 | 4 | #include "mbed.h" |
JonFreeman | 3:43cb067ecd00 | 5 | const static double PI = 2.0 * acos(0.0), |
JonFreeman | 3:43cb067ecd00 | 6 | deg2rad = (PI / 180.0), |
JonFreeman | 3:43cb067ecd00 | 7 | km2miles = (39370.0/36.0/1760.0); |
JonFreeman | 3:43cb067ecd00 | 8 | class gps_mod |
JonFreeman | 3:43cb067ecd00 | 9 | { |
JonFreeman | 3:43cb067ecd00 | 10 | enum {NULLST, WAITING4DOLLAR, GOTDOLLAR, GOTHDR, WAITING4CR, WAITING4LF}; |
JonFreeman | 3:43cb067ecd00 | 11 | const static int MAXMSGLEN = 86; |
JonFreeman | 3:43cb067ecd00 | 12 | // private: by default |
JonFreeman | 3:43cb067ecd00 | 13 | bool inmsg, newdata; |
JonFreeman | 3:43cb067ecd00 | 14 | int ch, state, i, chcnt; |
JonFreeman | 3:43cb067ecd00 | 15 | char hdracc[8], dest[6*(MAXMSGLEN + 4)], |
JonFreeman | 3:43cb067ecd00 | 16 | posfix[4], |
JonFreeman | 3:43cb067ecd00 | 17 | numofsats[4], |
JonFreeman | 3:43cb067ecd00 | 18 | latstr[16], |
JonFreeman | 3:43cb067ecd00 | 19 | longstr[16], |
JonFreeman | 3:43cb067ecd00 | 20 | altistr[16], |
JonFreeman | 3:43cb067ecd00 | 21 | speed_mphourstr[16], |
JonFreeman | 3:43cb067ecd00 | 22 | headingstr[16], |
JonFreeman | 3:43cb067ecd00 | 23 | datestr[16], |
JonFreeman | 3:43cb067ecd00 | 24 | timestr[16]; |
JonFreeman | 3:43cb067ecd00 | 25 | char * destptr; |
JonFreeman | 3:43cb067ecd00 | 26 | public: |
JonFreeman | 3:43cb067ecd00 | 27 | //BufferedSoftSerial gps_module (PinName _pinTx, PinName _pinRx); |
JonFreeman | 3:43cb067ecd00 | 28 | gps_mod(); |
JonFreeman | 3:43cb067ecd00 | 29 | int update(); |
JonFreeman | 3:43cb067ecd00 | 30 | void tock_handler(); |
JonFreeman | 3:43cb067ecd00 | 31 | char * position_fix_indicator (); |
JonFreeman | 3:43cb067ecd00 | 32 | char * message(int); |
JonFreeman | 3:43cb067ecd00 | 33 | char * time (); |
JonFreeman | 3:43cb067ecd00 | 34 | char * date (); |
JonFreeman | 3:43cb067ecd00 | 35 | char * heading (); |
JonFreeman | 3:43cb067ecd00 | 36 | char * mph (); |
JonFreeman | 3:43cb067ecd00 | 37 | char * sat_count (); |
JonFreeman | 3:43cb067ecd00 | 38 | char * latitude(); |
JonFreeman | 3:43cb067ecd00 | 39 | char * longitude(); |
JonFreeman | 3:43cb067ecd00 | 40 | char * altitude(); |
JonFreeman | 3:43cb067ecd00 | 41 | bool fix_valid(); |
JonFreeman | 3:43cb067ecd00 | 42 | bool new_data(); |
JonFreeman | 3:43cb067ecd00 | 43 | double mergedegmin (char *, char *); |
JonFreeman | 3:43cb067ecd00 | 44 | double lat_merged (); |
JonFreeman | 3:43cb067ecd00 | 45 | double lon_merged (); |
JonFreeman | 3:43cb067ecd00 | 46 | }; |
JonFreeman | 3:43cb067ecd00 | 47 | |
JonFreeman | 3:43cb067ecd00 | 48 | //class Flasher { |
JonFreeman | 3:43cb067ecd00 | 49 | //public: |
JonFreeman | 3:43cb067ecd00 | 50 | // Flasher(PinName pin); |
JonFreeman | 3:43cb067ecd00 | 51 | // void flash(int n); |
JonFreeman | 3:43cb067ecd00 | 52 | // |
JonFreeman | 3:43cb067ecd00 | 53 | //private: |
JonFreeman | 3:43cb067ecd00 | 54 | // DigitalOut _pin; |
JonFreeman | 3:43cb067ecd00 | 55 | //}; |
JonFreeman | 3:43cb067ecd00 | 56 | |
JonFreeman | 3:43cb067ecd00 | 57 | #endif |
JonFreeman | 3:43cb067ecd00 | 58 |