You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
1.7 KiB

3 years ago
  1. #ifndef _GPSANALYSE_H_
  2. #define _GPSANALYSE_H_
  3. #include <Arduino.h>
  4. #include "utility/Task.h"
  5. #include <freertos/FreeRTOS.h>
  6. #include <freertos/task.h>
  7. //#define DEBUG_GPS
  8. typedef struct GNRMC
  9. {
  10. String pamstr[13];
  11. String Utc; //1
  12. char State; //2
  13. double Latitude; //3
  14. char LatitudeMark; //4
  15. double Longitude; //5
  16. char LongitudeMark; //6
  17. float TrackSpeed; //7
  18. float TrackAngle; //8
  19. String Date; //9
  20. float Magnetic; //10
  21. char Declination; //11
  22. int mode; //12
  23. String Sum;
  24. }GNRMC_t;
  25. typedef struct GNGSA
  26. {
  27. String pamstr[50];
  28. char mode2;
  29. int mode1;
  30. int PINMap[12];
  31. float PDOP;
  32. float HDOP;
  33. float VDOP;
  34. String Sum;
  35. }GNGSA_t;
  36. typedef struct GPSSatellite
  37. {
  38. bool flag;
  39. int id;
  40. int elevation;
  41. int Azimuth;
  42. int SNR;
  43. }GPSSatellite_t;
  44. typedef struct GPGSV
  45. {
  46. String pamstr[128];
  47. int size;
  48. int Number;
  49. int SatelliteSize;
  50. GPSSatellite_t Satellite[32];
  51. String sum;
  52. }GPGSV_t;
  53. /*
  54. typedef struct GPGGA
  55. {
  56. }GPGGA_t;
  57. typedef struct GPGGA
  58. {
  59. }GPGGA_t;
  60. typedef struct GPGLL
  61. {
  62. }GPGLL_t;
  63. */
  64. class GPSAnalyse : public Task
  65. {
  66. private:
  67. /* data */
  68. String _GPS_Str;
  69. HardwareSerial *_serial;
  70. SemaphoreHandle_t _xSemaphore = NULL;
  71. char *GPSReadBuff;
  72. void Analyse();
  73. void AnaGPRMC(String str);
  74. void AnaGNGAS(String str);
  75. void AnaGPGSV(String str);
  76. void run(void *data);
  77. GNRMC_t _s_GNRMC;
  78. GNGSA_t _s_GNGAS;
  79. GPGSV_t _s_GPGSV;
  80. public:
  81. GPSAnalyse();
  82. ~GPSAnalyse();
  83. void setSerialPtr(HardwareSerial &serial);
  84. void upDate();
  85. GNRMC_t s_GNRMC;
  86. GNGSA_t s_GNGAS;
  87. GPGSV_t s_GPGSV;
  88. };
  89. #endif