Files
Momentum-Firmware/applications/main/subghz/helpers/subghz_gps.h
Willy-JL ef2c955995 SubGHz: Rework GPS as plugin, fix VGM (#5)
- Streamlined atomic init and deinit
- Load from plugin into RAM dynamically
- Don't attempt load if VGM / Expansion is connected
- Deduplicated some code, cleaned up some other bits
2024-03-30 03:38:59 +00:00

61 lines
1.3 KiB
C

#pragma once
#include <furi_hal.h>
#include <flipper_application/flipper_application.h>
#define RX_BUF_SIZE 1024
typedef struct SubGhzGPS SubGhzGPS;
struct SubGhzGPS {
FlipperApplication* plugin_app;
FuriThread* thread;
FuriStreamBuffer* rx_stream;
uint8_t rx_buf[RX_BUF_SIZE];
FuriHalSerialHandle* serial_handle;
FuriTimer* timer;
float latitude;
float longitude;
int satellites;
uint8_t fix_second;
uint8_t fix_minute;
uint8_t fix_hour;
/**
* Deinitialize SubGhzGPS object
* To be used by plugin handler
*
* @param subghz_gps SubGhzGPS object
* @return void
*/
void (*deinit)(SubGhzGPS* subghz_gps);
/**
* Get description for signal info
*
* @param subghz_gps SubGhzGPS object
* @param descr Output string
* @param latitude Latitude
* @param longitude Longitude
* @return void
*/
void (*get_descr)(SubGhzGPS* subghz_gps, FuriString* descr, float latitude, float longitude);
};
/**
* Initialize SubGhzGPS plugin
* Fails and returns NULL if Expansion is connected
*
* @return SubGhzGPS* SubGhzGPS object
*/
SubGhzGPS* subghz_gps_plugin_init();
/**
* Deinitialize SubGhzGPS plugin
*
* @param subghz_gps SubGhzGPS object
* @return void
*/
void subghz_gps_plugin_deinit(SubGhzGPS* subghz_gps);