gps_uart.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /*
  2. * gps.h
  3. *
  4. * Created on: 2012-8-9
  5. * Author: Administrator
  6. */
  7. #ifndef GPS_UART_H_
  8. #define GPS_UART_H_
  9. #define GPS_LINE_LEN 256 //?óê?ò?DDêy?Yμ?3¤?è
  10. #define GPS_UART_MAX_LEN 160
  11. #if defined(ADD_ATGM366_GPS_FUN) || defined(DEV_GPS_ATGM366) || defined(DEV_GPS_ATGM332D)
  12. enum GpsCtrlCmdEnum_
  13. {
  14. GPS_SET_BUADRATE0_CMD=0,
  15. GPS_SET_BUADRATE1_CMD,
  16. GPS_SET_BUADRATE2_CMD,
  17. GPS_SET_BUADRATE3_CMD,
  18. GPS_SET_BUADRATE4_CMD,
  19. GPS_SET_BUADRATE5_CMD,
  20. GPS_SEL_UPLOAD_RMC_CMD,
  21. GPS_SEL_NAVI_SYS_CMD,
  22. GPS_SEL_UPDATE_FREQ_CMD,
  23. GPS_SEL_FACTOR_SET_CMD,
  24. GPS_SEL_BD_SYS_CMD,
  25. GPS_SEL_GPS_SYS_CMD,
  26. };
  27. typedef enum GpsCtrlCmdEnum_ GpsCtrlCmdEnumType;
  28. enum GpsModuleRunStep_
  29. {
  30. GPS_MODULE_INIT_STEP=0,
  31. GPS_MODULE_BAUD_CHECK_STEP,
  32. GPS_MODULE_BAUD_SET_STEP,
  33. GPS_MODULE_BAUD_FINISH_STEP,
  34. GPS_MODULE_NEMA_SEL_STEP,
  35. GPS_MODULE_NAVI_SYS_STEP,
  36. GPS_MODULE_UPDATE_FREQ_STEP,
  37. GPS_MODULE_SYS_STEP,
  38. GPS_MODULE_NORMAL_RUN_STEP,
  39. };
  40. typedef enum GpsModuleRunStep_ GpsModuleRunStepEnum;
  41. enum GpsRecvFrameStep_
  42. {
  43. GPS_FRAME_HEAD=0,
  44. GPS_FRAME_DATA,
  45. GPS_FRAME_CHECK,
  46. GPS_FRAME_TAIL,
  47. };
  48. #pragma pack(4)
  49. struct GpsNmeaDataType_
  50. {
  51. bool VaildFlag; //ê1ó?±ê??
  52. unsigned char nmea[10];
  53. };
  54. typedef struct GpsNmeaDataType_ GpsNmeaDataType;
  55. #pragma pack()
  56. typedef struct
  57. {
  58. int id; //?àD?±ào?
  59. int ele; //????
  60. int az; //·?????
  61. int cn0; //·?????
  62. int valid;
  63. }GPS_GSV_ST;
  64. #define GPS_NUM_MAX 128
  65. struct GpsNmeaRmcDataType_
  66. {
  67. char SingleType[6];
  68. unsigned char UtcTime[11];
  69. unsigned char DataValidFlag;
  70. char data_vaild;
  71. char slave_vaild;
  72. uint32_t data_vaild_time;
  73. uint32_t pluse_count;
  74. uint32_t gsv_time;
  75. char wait_sync;
  76. float Latitude;
  77. unsigned char LatitudeDir;
  78. float Longtitude;
  79. unsigned char LongtitudeDir;
  80. u32 Longtitude_dd;
  81. u32 Longtitude_mm;
  82. float Longtitude_ss;
  83. u32 Latitude_dd;
  84. u32 Latitude_mm;
  85. float Latitude_ss;
  86. float Spd; //??μ??ù?è
  87. float cog; //??μ???o??ò
  88. unsigned char Date[7];
  89. struct timespec ts;
  90. u64 MsOffset;
  91. int bd_sv_num;
  92. int bd_msg_num;
  93. int bd_msg_no;
  94. int gp_sv_num;
  95. int gp_msg_num;
  96. int gp_msg_no;
  97. uint32_t gps_soe_time;
  98. uint32_t bd_online_time[GPS_NUM_MAX];
  99. uint32_t gp_online_time[GPS_NUM_MAX];
  100. GPS_GSV_ST bd_gsv[GPS_NUM_MAX];//±±?·?àD?D?o?
  101. GPS_GSV_ST gp_gsv[GPS_NUM_MAX];//gps?àD?D?o?
  102. };
  103. typedef struct GpsNmeaRmcDataType_ GpsNmeaRmcDataType;
  104. typedef struct gps_comm
  105. {
  106. u8 chnl;
  107. u8 type;
  108. BYTE cTypeCounter; //?óêü??ààDí
  109. BYTE cRecvLenth; //?óê?êy?Y3¤?è
  110. unsigned char cRecvCnt; //?óê???
  111. bool bData; //óD±¨??êy?Y
  112. unsigned char *arrSendBuf; //·¢?íbuf
  113. unsigned char arrRecvBuf[GPS_LINE_LEN]; //?óê?buf
  114. bool bRecv;
  115. bool bErrComm;
  116. DWORD dTwait;
  117. DWORD dTApp;
  118. GpsModuleRunStepEnum GpsModuleRunStep;
  119. uint32_t recv_wait_time; //3?ê??ˉíê3éoóμè′yx??′|àíêy?Y
  120. uint32_t recv_handle;
  121. } GPS_COMM;
  122. typedef struct
  123. {
  124. TIMERELAY time;
  125. u8 sync_flag;
  126. }GPS_SYNC_DELAY;
  127. extern GpsNmeaRmcDataType GpsNmeaRmcData;
  128. extern GPS_SYNC_DELAY gps_sync;
  129. extern union u_RsIEC g_tRsIEC[CFG_UART_NUM_MAX];
  130. void GPSCommInit(GPS_COMM* p,u8 chnl);
  131. void ResetUartGPSLink(GPS_COMM* p);
  132. void GPS_Recv(GPS_COMM* p,BYTE byRevData);
  133. void GPS_Comm_App(GPS_COMM* p);
  134. void GPS_CommRecv(BYTE *ps);
  135. void GPS_test(void);
  136. void uart_gps_isr(void);
  137. extern int GpsRecvDataFrameHandler(GPS_COMM* data);
  138. extern void GpsSendBaudrateCmd(GPS_COMM* p);
  139. extern void GPS_Comm_Send(GPS_COMM* p,char* data,unsigned char datalen);
  140. extern void GpsModuleFunInit(GPS_COMM* data);
  141. extern int GpsAdjustTimeFun(struct rtc_time_t* psrtc);
  142. extern void GenerateSecdPluse(void);
  143. char gps_data_valid_get(void);
  144. void gps_info_printf(void);
  145. void gps_sync_delay(u32 dStep);
  146. int is_gps_alive(void);
  147. int gps_slave_sync(struct timespec* ts);
  148. void GPS_Timer(void);
  149. void gps_pluse_clear(void);
  150. void gps_init_step_set(u8 step);
  151. #endif
  152. #endif /* GPS_H_ */