GPS module (GYSFDMAXB) 57600 bps

Dependents:   HAPS_GPS_Test_0002

Revision:
4:8d315f7977b3
Parent:
3:f8045f83d7c1
Child:
5:0983cd1d7183
--- a/GYSFDMAXB.hpp	Thu Apr 22 11:51:16 2021 +0000
+++ b/GYSFDMAXB.hpp	Thu Apr 22 12:20:43 2021 +0000
@@ -1,96 +1,92 @@
-//#ifndef __GYSFDMAXB_HPP__
-//#define __GYSFDMAXB_HPP__
-//
-//#include "mbed.h"
-//#include "Vector3.hpp"
-//
-///*
-//$GPZDA,030049.971,06,04,2021,,*54
-//$GPGGA,030050.971,,,,,0,0,,,M,,M,,*41
-//$GPGLL,,,,,030050.971,V,N*73
-//$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-//$GPGSV,1,1,00*79
-//$GPRMC,030050.971,V,,,,,0.00,0.00,060421,,,N*45
-//$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
-//$GPZDA,030050.971,06,04,2021,,*5C
-//$GPGGA,030051.971,,,,,0,0,,,M,,M,,*40
-//$GPGLL,,,,,030051.971,V,N*72
-//$GPGSA,A,1,,,,,,,,,,,,,,,*1E
-//$GPGSV,1,1,00*79
-//$GPRMC,030051.971,V,,,,,0.00,0.00,060421,,,N*44
-//$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
-//$GPZDA,030051.971,06,04,2021,,*5D
-//*/
-//
-//
-//class GYSFDMAXB
-//{
-//private:
-//    float height;
-//    Serial serial;
-//    bool receive_flag;
-//    const int start_size = 16;
-//    char* uart_start[start_size];
-//    const int phrase_length = 128;
-//    const char phrase_buffer[start_size][phrase_length];
-//    const int uart_size = 2048;
-//    char uart_buffer[uart_size];
-//    char gpgga[phrase_length];
-//    char gprmc[phrase_length];
-//    
-//    static const float Radius = 6378136.6f;
-//    
-//    void Receive();
-//    
-//public:
-//    // GPGGA
-//    int start_index;
-//    int uart_index;
-//    
-//    int Quality;
-//    int Satellites;
-//    float HDOP;
-//    float Elevation;
-//    char UnitElevation;
-//    float GeoidElevation;
-//    char UnitGeoidElevation;
-//    
-//    // GPRMC
-//    int Hours;
-//    int Minutes;
-//    int Seconds;
-//    int Milliseconds;
-//    char Status;
-//    float Latitude;
-//    char N_S;
-//    float Longitude;
-//    char E_W;
-//    float Speed;
-//    float Direction;
-//    int Day;
-//    int Month;
-//    int Year;
-//    float GeomagneticDeclination ;
-//    char GeomagneticE_W; 
-//    char Mode;
-//    
-//    Vector3 UniversalZeroPosition;
-//    Vector3 UniversalZeroUnitN;
-//    Vector3 UniversalZeroUnitE;
-//    Vector3 UniversalZeroUnitD;
-//    Vector3 UniversalPosition;
-//    Vector3 Position;
-//
-//    GYSFDMAXB(PinName tx, PinName rx);
-//    void Update();
-//    void Initialize();
-//    Vector3 ToUniversalUnit();
-//    Vector3 ToUniversal();
-//    void CalcurateUnit();
-//    void Calcurate();
-//    Vector3 Calcurate(Vector3 position);
-//};
-//
-//extern Serial pc;
-//
-//#endif
\ No newline at end of file
+#ifndef __GYSFDMAXB_HPP__
+#define __GYSFDMAXB_HPP__
+
+#include "mbed.h"
+#include "Vector3.hpp"
+
+/*
+$GPZDA,030049.971,06,04,2021,,*54
+$GPGGA,030050.971,,,,,0,0,,,M,,M,,*41
+$GPGLL,,,,,030050.971,V,N*73
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E
+$GPGSV,1,1,00*79
+$GPRMC,030050.971,V,,,,,0.00,0.00,060421,,,N*45
+$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
+$GPZDA,030050.971,06,04,2021,,*5C
+$GPGGA,030051.971,,,,,0,0,,,M,,M,,*40
+$GPGLL,,,,,030051.971,V,N*72
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E
+$GPGSV,1,1,00*79
+$GPRMC,030051.971,V,,,,,0.00,0.00,060421,,,N*44
+$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
+$GPZDA,030051.971,06,04,2021,,*5D
+*/
+
+#define start_size 32
+#define uart_size 2048
+#define Radius 6378136.6f
+
+class GYSFDMAXB
+{
+private:
+    Serial serial;
+    volatile bool receive_flag;
+    char* uart_start[start_size];
+    volatile int start_index;
+    char uart_buffer[uart_size];
+    volatile int uart_index;
+    Ticker timer;
+    
+    void Receive();
+    void Punctuate();
+    
+public:
+    // GPGGA
+    
+    int Quality;
+    int Satellites;
+    float HDOP;
+    float Elevation;
+    char UnitElevation;
+    float GeoidElevation;
+    char UnitGeoidElevation;
+    
+    // GPRMC
+    int Hours;
+    int Minutes;
+    int Seconds;
+    int Milliseconds;
+    char Status;
+    float Latitude;
+    char N_S;
+    float Longitude;
+    char E_W;
+    float Speed;
+    float Direction;
+    int Day;
+    int Month;
+    int Year;
+    float GeomagneticDeclination ;
+    char GeomagneticE_W; 
+    char Mode;
+    
+    Vector3 UniversalZeroPosition;
+    Vector3 UniversalZeroUnitN;
+    Vector3 UniversalZeroUnitE;
+    Vector3 UniversalZeroUnitD;
+    Vector3 UniversalPosition;
+    Vector3 Position;
+
+    GYSFDMAXB(PinName tx, PinName rx);
+    void Update();
+    void Initialize();
+    Vector3 ToUniversalUnit();
+    Vector3 ToUniversal();
+    void CalcurateUnit();
+    void Calcurate();
+    Vector3 Calcurate(Vector3 position);
+};
+
+extern Serial pc;
+
+#endif
\ No newline at end of file