no-OS
Loading...
Searching...
No Matches
no_os_gnss.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef _NO_OS_GNSS_H_
35#define _NO_OS_GNSS_H_
36
37#include <stdint.h>
38#include <stdbool.h>
39
48 uint32_t frequency;
50 uint32_t pulse_length;
51};
52
59 uint32_t unix_epoch;
61 int32_t nanoseconds;
63 uint32_t time_accuracy;
71 uint16_t year;
73 uint8_t month;
75 uint8_t day;
77 uint8_t hour;
79 uint8_t minute;
81 uint8_t second;
82};
83
106
113
128
135 void *mutex;
137 uint32_t device_id;
141 void *extra;
142};
143
151 int32_t (*init)(struct no_os_gnss_desc **,
152 const struct no_os_gnss_init_param *);
156 int32_t (*is_timing_valid)(struct no_os_gnss_desc *, bool *);
159 struct no_os_gnss_precise_time *);
162 uint32_t *, uint32_t *);
165 struct no_os_gnss_position_data *);
167 int32_t (*remove)(struct no_os_gnss_desc *);
168};
169
170/* GNSS Public API Functions */
171
178int32_t no_os_gnss_init(struct no_os_gnss_desc **desc,
179 const struct no_os_gnss_init_param *param);
180
186int32_t no_os_gnss_remove(struct no_os_gnss_desc *desc);
187
194
201int32_t no_os_gnss_is_timing_valid(struct no_os_gnss_desc *desc, bool *valid);
202
210 struct no_os_gnss_precise_time *timing);
211
220 uint32_t *epoch, uint32_t *fractional_seconds);
221
229 struct no_os_gnss_position_data *position_data);
230
231/* Platform-specific implementations */
233
234#endif /* _NO_OS_GNSS_H_ */
int32_t no_os_gnss_refresh_timing_data(struct no_os_gnss_desc *desc)
Refresh timing data from GNSS device.
Definition no_os_gnss.c:68
int32_t no_os_gnss_init(struct no_os_gnss_desc **desc, const struct no_os_gnss_init_param *param)
Initialize the GNSS communication peripheral.
Definition no_os_gnss.c:45
int32_t no_os_gnss_get_unix_epoch_unified(struct no_os_gnss_desc *desc, uint32_t *epoch, uint32_t *fractional_seconds)
Get Unix epoch timestamp with unified precision.
Definition no_os_gnss.c:102
int32_t no_os_gnss_remove(struct no_os_gnss_desc *desc)
Free the resources allocated by no_os_gnss_init().
Definition no_os_gnss.c:57
const struct no_os_gnss_platform_ops nmea_ubx_gnss_ops
Platform operations structure for NMEA/UBX GNSS devices.
Definition nmea_ubx_gnss.c:294
int32_t no_os_gnss_is_timing_valid(struct no_os_gnss_desc *desc, bool *valid)
Check if timing data is valid.
Definition no_os_gnss.c:79
int32_t no_os_gnss_get_unified_timing(struct no_os_gnss_desc *desc, struct no_os_gnss_precise_time *timing)
Get unified timing information with best available precision.
Definition no_os_gnss.c:90
int32_t no_os_gnss_get_position_data(struct no_os_gnss_desc *desc, struct no_os_gnss_position_data *position_data)
Get GPS position and fix quality data.
Definition no_os_gnss.c:115
Structure holding the GNSS descriptor.
Definition no_os_gnss.h:133
uint32_t device_id
Definition no_os_gnss.h:137
void * mutex
Definition no_os_gnss.h:135
void * extra
Definition no_os_gnss.h:141
const struct no_os_gnss_platform_ops * platform_ops
Definition no_os_gnss.h:139
Structure holding the parameters for GNSS initialization.
Definition no_os_gnss.h:118
uint32_t device_id
Definition no_os_gnss.h:120
const struct no_os_gnss_platform_ops * platform_ops
Definition no_os_gnss.h:124
struct no_os_gnss_pps_config pps_config
Definition no_os_gnss.h:122
void * extra
Definition no_os_gnss.h:126
Structure holding GNSS function pointers that point to the platform specific function.
Definition no_os_gnss.h:149
int32_t(* init)(struct no_os_gnss_desc **, const struct no_os_gnss_init_param *)
Definition no_os_gnss.h:151
int32_t(* get_unified_timing)(struct no_os_gnss_desc *, struct no_os_gnss_precise_time *)
Definition no_os_gnss.h:158
int32_t(* is_timing_valid)(struct no_os_gnss_desc *, bool *)
Definition no_os_gnss.h:156
int32_t(* refresh_timing_data)(struct no_os_gnss_desc *)
Definition no_os_gnss.h:154
int32_t(* get_unix_epoch_unified)(struct no_os_gnss_desc *, uint32_t *, uint32_t *)
Definition no_os_gnss.h:161
int32_t(* remove)(struct no_os_gnss_desc *)
Definition no_os_gnss.h:167
int32_t(* get_position_data)(struct no_os_gnss_desc *, struct no_os_gnss_position_data *)
Definition no_os_gnss.h:164
API-level position and fix quality data structure.
Definition no_os_gnss.h:88
float hdop
Definition no_os_gnss.h:94
float longitude
Definition no_os_gnss.h:100
uint8_t satellites_used
Definition no_os_gnss.h:92
float altitude
Definition no_os_gnss.h:96
bool fix_valid
Definition no_os_gnss.h:104
uint8_t fix_quality
Definition no_os_gnss.h:90
float latitude
Definition no_os_gnss.h:98
bool position_valid
Definition no_os_gnss.h:102
GNSS PPS configuration structure for timing synchronization.
Definition no_os_gnss.h:44
uint32_t pulse_length
Definition no_os_gnss.h:50
uint32_t frequency
Definition no_os_gnss.h:48
bool pps_enable
Definition no_os_gnss.h:46
API-level precise time information structure.
Definition no_os_gnss.h:57
uint8_t second
Definition no_os_gnss.h:81
uint8_t day
Definition no_os_gnss.h:75
bool date_valid
Definition no_os_gnss.h:69
uint16_t year
Definition no_os_gnss.h:71
uint8_t hour
Definition no_os_gnss.h:77
uint8_t month
Definition no_os_gnss.h:73
uint8_t minute
Definition no_os_gnss.h:79
bool time_valid
Definition no_os_gnss.h:65
uint32_t time_accuracy
Definition no_os_gnss.h:63
uint32_t unix_epoch
Definition no_os_gnss.h:59
bool time_fully_resolved
Definition no_os_gnss.h:67
int32_t nanoseconds
Definition no_os_gnss.h:61