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