unleashed-firmware/applications/external/gps_nmea_uart/gps_uart.h

47 lines
967 B
C
Raw Normal View History

2022-10-20 18:02:27 +00:00
#pragma once
#include <furi_hal.h>
#include <notification/notification_messages.h>
2022-10-20 18:02:27 +00:00
#define RX_BUF_SIZE 1024
2023-04-10 23:37:57 +00:00
static const int gps_baudrates[5] = {9600, 19200, 38400, 57600, 115200};
static int current_gps_baudrate = 3;
2022-10-20 18:02:27 +00:00
typedef struct {
bool valid;
float latitude;
float longitude;
float speed;
float course;
float altitude;
char altitude_units;
int fix_quality;
int satellites_tracked;
int time_hours;
int time_minutes;
int time_seconds;
2022-10-20 18:02:27 +00:00
} GpsStatus;
typedef struct {
FuriMutex* mutex;
2022-10-20 18:02:27 +00:00
FuriThread* thread;
FuriStreamBuffer* rx_stream;
uint8_t rx_buf[RX_BUF_SIZE];
NotificationApp* notifications;
uint32_t baudrate;
bool changing_baudrate;
bool backlight_on;
bool speed_in_kms;
2022-10-20 18:02:27 +00:00
GpsStatus status;
} GpsUart;
void gps_uart_init_thread(GpsUart* gps_uart);
void gps_uart_deinit_thread(GpsUart* gps_uart);
2022-10-20 18:02:27 +00:00
GpsUart* gps_uart_enable();
void gps_uart_disable(GpsUart* gps_uart);