core: gps: added new API for GPS device management

codec2-noise-fix
Silvano Seva 2025-08-12 19:23:01 +02:00
rodzic b8e220c276
commit 219bb4e986
3 zmienionych plików z 56 dodań i 1 usunięć

Wyświetl plik

@ -21,8 +21,8 @@
#define GPS_H #define GPS_H
#include <datetime.h> #include <datetime.h>
#include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <minmea.h>
/** /**
* Data structure representing a single satellite as part of a GPS fix. * Data structure representing a single satellite as part of a GPS fix.
@ -57,6 +57,51 @@ typedef struct
} }
gps_t; gps_t;
/**
* Data structure for GPS device managment.
*/
struct gpsDevice {
void *priv;
void (*enable)(void *priv);
void (*disable)(void *priv);
int (*getSentence)(void *priv, char *buf, const size_t bufSize);
};
/**
* Enable the GPS.
*
* @param dev: pointer to GPS device handle.
*/
static inline void gps_enable(const struct gpsDevice *dev)
{
dev->enable(dev->priv);
}
/**
* Disable the GPS.
*
* @param dev: pointer to GPS device handle.
*/
static inline void gps_disable(const struct gpsDevice *dev)
{
dev->disable(dev->priv);
}
/**
* Get a full NMEA sentence from the GPS.
* This function is nonblocking.
*
* @param dev: pointer to GPS device handle.
* @param buf: pointer to a buffer where to write the sentence.
* @param bufSize: size of the destination buffer.
* @return the length of the extracted sentence, -1 if the sentence is
* longer than the maximum allowed size or zero if no sentence is available.
*/
static inline int gps_getSentence(const struct gpsDevice *dev, char *buf, const size_t bufSize)
{
return dev->getSentence(dev->priv, buf, bufSize);
}
/** /**
* This function perfoms the task of reading data from the GPS module, * This function perfoms the task of reading data from the GPS module,
* if available, enabled and ready, decode NMEA sentences and update * if available, enabled and ready, decode NMEA sentences and update

Wyświetl plik

@ -75,6 +75,7 @@ typedef struct
} hwInfo_t; } hwInfo_t;
struct gpsDevice;
/** /**
* This function handles device hardware initialization. * This function handles device hardware initialization.
@ -168,6 +169,14 @@ void platform_setTime(datetime_t t);
*/ */
const hwInfo_t *platform_getHwInfo(); const hwInfo_t *platform_getHwInfo();
#ifdef CONFIG_GPS
/**
* Detect and initialize the on-board GPS.
* @return a GPS device handle or NULL if no device has been detected.
*/
const struct gpsDevice *platform_initGps();
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

Wyświetl plik

@ -1,3 +1,4 @@
#include <minmea.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <gps.h> #include <gps.h>