19 UART_init(&gps->base, interface, port, pins, baud, OVER8);
20 gps->message = GPS_message;
21 gps->decode = GPS_decode;
23 gps->base.
print(&gps->base, GPS_PUBX_SILENCE);
29void GPS_message(
SAM_M10Q_t *gps,
char *message) {
31 uart.
print(&uart, GPS_PUBX_POLL);
43 for (
int x = 0; x < 6; x++) {
44 uint8_t
byte = uart.
receive(&uart);
45 if (message[x] !=
byte) {
55 for (
int x = 6;
byte !=
'\n'; x++) {
69 char *temp[] = {data->time, data->latitude, data->N_S, data->longitude, data->E_W, data->altref, data->navstat, data->hacc, data->vacc, data->sog, data->cog, data->vvel, data->diffage, data->hdop, data->vdop, data->tdop, data->satellites};
70 while (tempPointer <= 16) {
71 if (message[GPSpointer] ==
',') {
72 if ((pointer == 0) && ((tempPointer == 1) || (tempPointer == 3)))
74 else if ((pointer >= 8) && ((tempPointer == 1) || (tempPointer == 3)))
82 temp[tempPointer][pointer] = message[GPSpointer];
83 temp[tempPointer][pointer + 1] =
'\0';
90 data->hour = (data->time[0] -
'0') * 10 + (data->time[1] -
'0');
91 data->minute = (data->time[2] -
'0') * 10 + (data->time[3] -
'0');
92 data->second = (data->time[4] -
'0') * 10 + (data->time[5] -
'0');
93 data->latitude_degrees = (data->latitude[0] -
'0') * 10 + (data->latitude[1] -
'0');
95 data->latitude_minutes = 0;
96 for (
int i = 0; i < 9; i++) {
97 if (data->latitude[i + 2] ==
'.')
99 data->latitude_minutes = data->latitude_minutes + (data->latitude[i + 2] -
'0') * (
float)pow(10, j);
102 data->longitude_degrees = (data->longitude[0] -
'0') * 100 + (data->longitude[1] -
'0') * 10 + (data->longitude[2] -
'0');
104 data->longitude_minutes = 0;
105 for (
int i = 0; i < 9; i++) {
106 if (data->longitude[i + 3] ==
'.')
108 data->longitude_minutes = data->longitude_minutes + (data->longitude[i + 3] -
'0') * (
float)pow(10, j);
Universal Synchronous Asynchronous Receiver Transmitter.
void(* print)(struct UART *, char *)
UART print string method.
uint8_t(* receive)(struct UART *)
UART receive method.
UART_t UART_init(UART_t *, USART_TypeDef *, GPIO_TypeDef *, UART_Pins, uint32_t, OversampleMode)
Initialiser for a UART device interface.
Struct definition for UART interface.