GPS GNSS

Dependencies:   Vector3

Committer:
cocorlow
Date:
Wed Sep 08 13:21:55 2021 +0000
Revision:
5:f23265e8d4aa
Parent:
4:708e05b10257
Elevation -> Altitude

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cocorlow 0:6c7f7ed85f2c 1 #ifndef __GPS_HAPS_HPP__
cocorlow 0:6c7f7ed85f2c 2 #define __GPS_HAPS_HPP__
cocorlow 0:6c7f7ed85f2c 3
cocorlow 0:6c7f7ed85f2c 4 #include "mbed.h"
cocorlow 0:6c7f7ed85f2c 5 #include "Vector3.hpp"
cocorlow 0:6c7f7ed85f2c 6
cocorlow 0:6c7f7ed85f2c 7 /*
cocorlow 0:6c7f7ed85f2c 8 $GNRMC,090439.00,A,3542.93385,N,13945.73884,E,0.444,,060921,,,A,V*15
cocorlow 0:6c7f7ed85f2c 9 $GNVTG,,T,,M,0.444,N,0.822,K,A*31
cocorlow 0:6c7f7ed85f2c 10 $GNGGA,090439.00,3542.93385,N,13945.73884,E,1,08,1.32,76.5,M,39.4,M,,*79
cocorlow 0:6c7f7ed85f2c 11 $GNGSA,A,3,13,15,18,24,10,23,,,,,,,2.11,1.32,1.65,1*08
cocorlow 0:6c7f7ed85f2c 12 $GNGSA,A,3,,,,,,,,,,,,,2.11,1.32,1.65,2*02
cocorlow 0:6c7f7ed85f2c 13 $GNGSA,A,3,07,08,,,,,,,,,,,2.11,1.32,1.65,3*0C
cocorlow 0:6c7f7ed85f2c 14 $GNGSA,A,3,,,,,,,,,,,,,2.11,1.32,1.65,4*04
cocorlow 0:6c7f7ed85f2c 15 $GPGSV,2,1,06,10,33,315,22,13,19,081,10,15,49,080,12,18,24,231,12,1*6B
cocorlow 0:6c7f7ed85f2c 16 $GPGSV,2,2,06,23,68,294,22,24,77,009,24,1*6B
cocorlow 0:6c7f7ed85f2c 17 $GPGSV,2,1,05,05,15,148,,12,32,157,,14,00,031,,25,13,184,,0*61
cocorlow 0:6c7f7ed85f2c 18 $GPGSV,2,2,05,25,13,184,,0*58
cocorlow 0:6c7f7ed85f2c 19 $GLGSV,1,1,00,0*79
cocorlow 0:6c7f7ed85f2c 20 $GAGSV,2,1,05,02,47,068,25,03,15,100,17,07,50,316,29,08,61,066,23,7*7E
cocorlow 0:6c7f7ed85f2c 21 $GAGSV,2,2,05,25,08,035,12,7*4C
cocorlow 0:6c7f7ed85f2c 22 $GAGSV,2,1,05,13,12,222,,26,19,275,,27,08,195,,30,50,155,,0*7A
cocorlow 0:6c7f7ed85f2c 23 $GAGSV,2,2,05,30,50,155,,0*46
cocorlow 0:6c7f7ed85f2c 24 $GBGSV,1,1,00,0*77
cocorlow 0:6c7f7ed85f2c 25 $GNGLL,3542.93385,N,13945.73884,E,090439.00,A,A*7E
cocorlow 0:6c7f7ed85f2c 26 */
cocorlow 0:6c7f7ed85f2c 27
cocorlow 0:6c7f7ed85f2c 28 #define RECEIVE_SIZE 1024
cocorlow 0:6c7f7ed85f2c 29 #define SENTENCE_SIZE 256
cocorlow 3:b0d594e5d9e2 30 #define ERROR_F 0.0001f
cocorlow 0:6c7f7ed85f2c 31
cocorlow 0:6c7f7ed85f2c 32 extern Serial pc;
cocorlow 0:6c7f7ed85f2c 33
cocorlow 0:6c7f7ed85f2c 34 class GPS_HAPS
cocorlow 0:6c7f7ed85f2c 35 {
cocorlow 0:6c7f7ed85f2c 36 private:
cocorlow 0:6c7f7ed85f2c 37 Serial serial;
cocorlow 0:6c7f7ed85f2c 38 char receive_buffer[RECEIVE_SIZE];
cocorlow 0:6c7f7ed85f2c 39 char sentence_buffer[SENTENCE_SIZE];
cocorlow 0:6c7f7ed85f2c 40 int receive_start;
cocorlow 0:6c7f7ed85f2c 41 int receive_index;
cocorlow 0:6c7f7ed85f2c 42 int receive_request;
cocorlow 0:6c7f7ed85f2c 43 static const float Radius = 6378136.6f;
cocorlow 0:6c7f7ed85f2c 44
cocorlow 0:6c7f7ed85f2c 45 void Receive();
cocorlow 5:f23265e8d4aa 46 void Parse(char *cmd);
cocorlow 0:6c7f7ed85f2c 47
cocorlow 0:6c7f7ed85f2c 48 public:
cocorlow 0:6c7f7ed85f2c 49 // GPGGA
cocorlow 0:6c7f7ed85f2c 50 volatile int Quality;
cocorlow 0:6c7f7ed85f2c 51 volatile int Satellites;
cocorlow 0:6c7f7ed85f2c 52 volatile float HDOP;
cocorlow 5:f23265e8d4aa 53 volatile float Altitude;
cocorlow 5:f23265e8d4aa 54 volatile char UnitAltitude;
cocorlow 5:f23265e8d4aa 55 volatile float GeoidAltitude;
cocorlow 5:f23265e8d4aa 56 volatile char UnitGeoidAltitude;
cocorlow 0:6c7f7ed85f2c 57
cocorlow 0:6c7f7ed85f2c 58 // GPRMC
cocorlow 0:6c7f7ed85f2c 59 volatile int Hours;
cocorlow 0:6c7f7ed85f2c 60 volatile int Minutes;
cocorlow 0:6c7f7ed85f2c 61 volatile int Seconds;
cocorlow 0:6c7f7ed85f2c 62 volatile int Milliseconds;
cocorlow 0:6c7f7ed85f2c 63 volatile char Status;
cocorlow 0:6c7f7ed85f2c 64 volatile float Latitude;
cocorlow 0:6c7f7ed85f2c 65 volatile char N_S;
cocorlow 0:6c7f7ed85f2c 66 volatile float Longitude;
cocorlow 0:6c7f7ed85f2c 67 volatile char E_W;
cocorlow 0:6c7f7ed85f2c 68 volatile float Speed;
cocorlow 0:6c7f7ed85f2c 69 volatile float Direction;
cocorlow 0:6c7f7ed85f2c 70 volatile int Day;
cocorlow 0:6c7f7ed85f2c 71 volatile int Month;
cocorlow 0:6c7f7ed85f2c 72 volatile int Year;
cocorlow 0:6c7f7ed85f2c 73 volatile float GeomagneticDeclination ;
cocorlow 0:6c7f7ed85f2c 74 volatile char GeomagneticE_W;
cocorlow 0:6c7f7ed85f2c 75 volatile char Mode;
cocorlow 0:6c7f7ed85f2c 76 volatile int Time;
cocorlow 0:6c7f7ed85f2c 77
cocorlow 0:6c7f7ed85f2c 78 Vector3 UniversalZeroPosition;
cocorlow 0:6c7f7ed85f2c 79 Vector3 UniversalZeroUnitN;
cocorlow 0:6c7f7ed85f2c 80 Vector3 UniversalZeroUnitE;
cocorlow 0:6c7f7ed85f2c 81 Vector3 UniversalZeroUnitD;
cocorlow 0:6c7f7ed85f2c 82 Vector3 UniversalPosition;
cocorlow 0:6c7f7ed85f2c 83 Vector3 Position;
cocorlow 0:6c7f7ed85f2c 84 Vector3 Velocity;
cocorlow 0:6c7f7ed85f2c 85
cocorlow 0:6c7f7ed85f2c 86 GPS_HAPS(PinName tx, PinName rx, int baud);
cocorlow 0:6c7f7ed85f2c 87 void Attach();
cocorlow 0:6c7f7ed85f2c 88 void Loop();
cocorlow 0:6c7f7ed85f2c 89 void Initialize();
cocorlow 0:6c7f7ed85f2c 90 Vector3 ToUniversalUnit();
cocorlow 0:6c7f7ed85f2c 91 Vector3 ToUniversal();
cocorlow 4:708e05b10257 92 void CalculateUnit();
cocorlow 4:708e05b10257 93 void Calculate();
cocorlow 4:708e05b10257 94 Vector3 Calculate(Vector3 position);
cocorlow 0:6c7f7ed85f2c 95 };
cocorlow 0:6c7f7ed85f2c 96
cocorlow 0:6c7f7ed85f2c 97 #endif