gps.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * gps.h
  3. *
  4. * Created on: Nov 15, 2019
  5. * Author: Bulanov Konstantin
  6. */
  7. #ifndef GPS_H_
  8. #define GPS_H_
  9. #include "string.h"
  10. #include "stdio.h"
  11. #include "stdbool.h"
  12. #include "stm32f1xx_hal.h"
  13. #define GPS_DEBUG 0
  14. #define GPSBUFSIZE 128 // GPS buffer size
  15. typedef struct{
  16. // calculated values
  17. float dec_longitude;
  18. float dec_latitude;
  19. float altitude_ft;
  20. // GGA - Global Positioning System Fixed Data
  21. float nmea_longitude;
  22. float nmea_latitude;
  23. float utc_time;
  24. char ns, ew;
  25. int lock;
  26. int satelites;
  27. float hdop;
  28. float msl_altitude;
  29. char msl_units;
  30. // RMC - Recommended Minimmum Specific GNS Data
  31. char rmc_status;
  32. float speed_k;
  33. float course_d;
  34. int date;
  35. // GLL
  36. char gll_status;
  37. // VTG - Course over ground, ground speed
  38. float course_t; // ground speed true
  39. char course_t_unit;
  40. float course_m; // magnetic
  41. char course_m_unit;
  42. char speed_k_unit;
  43. float speed_km; // speek km/hr
  44. char speed_km_unit;
  45. } GPS_t;
  46. __packed struct gps_data_s{
  47. // GGA - Global Positioning System Fixed Data
  48. float longitude;
  49. float latitude;
  50. float speed_km; // speek km/hr
  51. uint8_t satelites;
  52. };
  53. typedef __packed struct gps_data_s gps_data_t;
  54. #if (GPS_DEBUG == 1)
  55. void GPS_print(char *data);
  56. #endif
  57. void GPS_Init(UART_HandleTypeDef *_huart,void (*p_data_ready_func)(gps_data_t*));
  58. void gps_start(void);
  59. void GSP_USBPrint(char *data);
  60. void GPS_print_val(char *data, int value);
  61. void GPS_UART_CallBack(void);
  62. void GPS_UART_ErrorCallback(void);
  63. void GPS_AbortReceiveCpltCallback(void);
  64. int GPS_validate(char *nmeastr);
  65. void GPS_parse(char *GPSstrParse);
  66. void GPS_parse_ad0x0(char *GPSstrParse);
  67. float GPS_nmea_to_dec(float deg_coord, char nsew);
  68. GPS_t *ad0x0_get_gps_buf(void);//threads!!!!!!!!!!!!!!!!
  69. #endif