Loading...
Searching...
No Matches
sam_m10q.h
1
9
10#ifndef _GPS_H
11#define _GPS_H
12
13#define GPS_PUBX_SILENCE \
14 "$PUBX,40,GLL,0,0,0,0,0,0*5C\r\n$PUBX,40,RMC,0,0,0,0,0,0*47\r\n$PUBX,40," \
15 "GSA,0,0,0,0,0,0*4E\r\n$PUBX,40,GSV,0,0,0,0,0,0*59\r\n$PUBX,40,GGA,0,0,0,0," \
16 "0,0*5A\r\n$PUBX,40,VTG,0,0,0,0,0,0*5E\r\n$PUBX,40,GSV,0,0,0,0,0,0*59\r\n"
17
18#define GPS_PUBX_POLL "$PUBX,00*33\r\n"
19
20#include "math.h"
21#include "stdint.h"
22#include "stm32f4xx.h"
23
24#include "uart.h"
25
30
31typedef struct GPS_Data {
32 // PUBX 00 message
33 char time[15];
34 uint8_t hour;
35 uint8_t minute;
36 uint8_t second;
37 char latitude[15];
38 char latitude_degrees;
39 float latitude_minutes;
40 char N_S[15];
41 char longitude[15];
42 char longitude_degrees;
43 float longitude_minutes;
44 char E_W[15];
45 char altref[15]; // Altitude above sea level
46 char navstat[3]; // Navigation status (NF = No Fix, DR = Dead Reckoning, G2 = 2D Fix, G3 = 3D Fix,D2 = 2D Differential, D3 = 3D Differential, RK = combined GPS + dead reckoning solution, TT = Time only solution)
47 char hacc[15]; // Horizontal accuracy estimate
48 char vacc[15]; // Vertical accuracy estimate
49 char sog[15]; // Speed over ground
50 char cog[15]; // Course over ground
51 char vvel[15]; // Vertical velocity
52 char diffage[15]; // Age of DGPS data
53 char hdop[15]; // Horizontal dilution of precision
54 char vdop[15]; // Vertical dilution of precision
55 char tdop[15]; // Time dilution of precision
56 char satellites[15]; // Number of satellites used
57 uint8_t lock; // 0 = no lock, 1 = lock
58} GPS_Data;
59
60typedef struct GPS {
61 UART_t base;
62 GPIO_TypeDef *port;
63 UART_Pins pins;
64 uint32_t baud;
65 void (*message)(struct GPS *, char *);
66 void (*decode)(struct GPS *, char *, struct GPS_Data *);
68
69SAM_M10Q_t GPS_init(SAM_M10Q_t *, USART_TypeDef *, GPIO_TypeDef *, UART_Pins, uint32_t);
70
71void GPS_message(SAM_M10Q_t *, char *);
72void GPS_decode(SAM_M10Q_t *, char *, struct GPS_Data *);
73
75#endif
General Purpose I/O.
Universal Synchronous Asynchronous Receiver Transmitter.
Struct definition for UART interface.
Definition uart.h:52
CMSIS STM32F4xx Device Peripheral Access Layer Header File.