caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
cfn_sal_dev_gnss.h
Go to the documentation of this file.
1
6#ifndef CAFFEINE_SAL_DEV_GNSS_H
7#define CAFFEINE_SAL_DEV_GNSS_H
8
9#ifdef __cplusplus
10extern "C"
11{
12#endif
13
14/* Includes ---------------------------------------------------------*/
15#include <time.h>
16#include "cfn_sal.h"
17
18/* Defines ----------------------------------------------------------*/
19
20#define CFN_SAL_DEV_TYPE_GNSS CFN_SAL_TYPE('G', 'N', 'S')
21
22/* Types Enums ------------------------------------------------------*/
23
31
41
42/* Types Structs ----------------------------------------------------*/
43
55
56typedef struct
57{
58 uint32_t fix_rate_ms;
59 uint32_t baudrate; /* If UART based */
60 void *custom;
62
63typedef struct cfn_sal_dev_gnss_s cfn_sal_dev_gnss_t;
65
66typedef void (*cfn_sal_dev_gnss_callback_t)(cfn_sal_dev_gnss_t *driver, uint32_t event, uint32_t error, void *user_arg);
67
72{
73 cfn_hal_api_base_t base;
74
75 /* Power & Control */
76 cfn_hal_error_code_t (*power_on)(cfn_sal_dev_gnss_t *driver);
77 cfn_hal_error_code_t (*power_off)(cfn_sal_dev_gnss_t *driver);
78
79 /* Data Retrieval */
80 cfn_hal_error_code_t (*get_location)(cfn_sal_dev_gnss_t *driver, cfn_sal_dev_gnss_location_t *loc_out);
81 cfn_hal_error_code_t (*get_time)(cfn_sal_dev_gnss_t *driver, struct tm *time_out);
82 cfn_hal_error_code_t (*get_time_utc)(cfn_sal_dev_gnss_t *driver, uint32_t *unix_timestamp);
83 cfn_hal_error_code_t (*get_satellites_in_view)(cfn_sal_dev_gnss_t *driver, uint8_t *count_out);
84 cfn_hal_error_code_t (*get_hdop)(cfn_sal_dev_gnss_t *driver, float *hdop_out);
85 cfn_hal_error_code_t (*get_speed_knots)(cfn_sal_dev_gnss_t *driver, float *speed_out);
86 cfn_hal_error_code_t (*get_heading_degrees)(cfn_sal_dev_gnss_t *driver, float *heading_out);
87
88 /* Configuration */
89 cfn_hal_error_code_t (*set_fix_rate)(cfn_sal_dev_gnss_t *driver, uint32_t rate_ms);
90 cfn_hal_error_code_t (*set_power_mode)(cfn_sal_dev_gnss_t *driver, uint8_t mode);
91
92 /* Maintenance */
93 cfn_hal_error_code_t (*cold_start)(cfn_sal_dev_gnss_t *driver);
94 cfn_hal_error_code_t (*warm_start)(cfn_sal_dev_gnss_t *driver);
95 cfn_hal_error_code_t (*hot_start)(cfn_sal_dev_gnss_t *driver);
96};
97
99
102
103/* Functions inline ------------------------------------------------- */
104
106 uint32_t peripheral_id,
107 void *dependency,
108 const cfn_sal_dev_gnss_api_t *api,
109 const cfn_sal_phy_t *phy,
110 const cfn_sal_dev_gnss_config_t *config,
112 void *user_arg)
113{
114 CFN_HAL_POPULATE_DRIVER(
115 driver, CFN_SAL_DEV_TYPE_GNSS, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
116}
117
119 const cfn_sal_dev_gnss_config_t *config,
120 const cfn_sal_phy_t *phy,
121 void *dependency,
123 void *user_arg);
124cfn_hal_error_code_t cfn_sal_dev_gnss_destruct(cfn_sal_dev_gnss_t *driver);
125
126CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_init(cfn_sal_dev_gnss_t *driver)
127{
128 if (!driver)
129 {
130 return CFN_HAL_ERROR_BAD_PARAM;
131 }
132 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
133 return cfn_hal_base_init(&driver->base, CFN_SAL_DEV_TYPE_GNSS);
134}
135
136CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_deinit(cfn_sal_dev_gnss_t *driver)
137{
138 if (!driver)
139 {
140 return CFN_HAL_ERROR_BAD_PARAM;
141 }
142 return cfn_hal_base_deinit(&driver->base, CFN_SAL_DEV_TYPE_GNSS);
143}
144
145CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_config_set(cfn_sal_dev_gnss_t *driver,
146 const cfn_sal_dev_gnss_config_t *config)
147{
148 if (!driver)
149 {
150 return CFN_HAL_ERROR_BAD_PARAM;
151 }
152 driver->config = config;
153 return cfn_hal_base_config_set(&driver->base, CFN_SAL_DEV_TYPE_GNSS, (const void *) config);
154}
155
156CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_config_get(cfn_sal_dev_gnss_t *driver,
158{
159 if (!driver || !config || !driver->config)
160 {
161 return CFN_HAL_ERROR_BAD_PARAM;
162 }
163 *config = *(driver->config);
164 return CFN_HAL_ERROR_OK;
165}
166
167CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_callback_register(cfn_sal_dev_gnss_t *driver,
169 void *user_arg)
170{
171 if (!driver)
172 {
173 return CFN_HAL_ERROR_BAD_PARAM;
174 }
175 driver->cb = callback;
176 driver->cb_user_arg = user_arg;
177 return cfn_hal_base_callback_register(
178 &driver->base, CFN_SAL_DEV_TYPE_GNSS, (cfn_hal_callback_t) callback, user_arg);
179}
180
181CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_power_state_set(cfn_sal_dev_gnss_t *driver,
182 cfn_hal_power_state_t state)
183{
184 if (!driver)
185 {
186 return CFN_HAL_ERROR_BAD_PARAM;
187 }
188 return cfn_hal_power_state_set(&driver->base, CFN_SAL_DEV_TYPE_GNSS, state);
189}
190
191CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_event_enable(cfn_sal_dev_gnss_t *driver, uint32_t event_mask)
192{
193 if (!driver)
194 {
195 return CFN_HAL_ERROR_BAD_PARAM;
196 }
197 return cfn_hal_base_event_enable(&driver->base, CFN_SAL_DEV_TYPE_GNSS, event_mask);
198}
199
200CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_event_disable(cfn_sal_dev_gnss_t *driver, uint32_t event_mask)
201{
202 if (!driver)
203 {
204 return CFN_HAL_ERROR_BAD_PARAM;
205 }
206 return cfn_hal_base_event_disable(&driver->base, CFN_SAL_DEV_TYPE_GNSS, event_mask);
207}
208
209CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_event_get(cfn_sal_dev_gnss_t *driver, uint32_t *event_mask)
210{
211 if (!driver)
212 {
213 return CFN_HAL_ERROR_BAD_PARAM;
214 }
215 return cfn_hal_base_event_get(&driver->base, CFN_SAL_DEV_TYPE_GNSS, event_mask);
216}
217
218CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_error_enable(cfn_sal_dev_gnss_t *driver, uint32_t error_mask)
219{
220 if (!driver)
221 {
222 return CFN_HAL_ERROR_BAD_PARAM;
223 }
224 return cfn_hal_base_error_enable(&driver->base, CFN_SAL_DEV_TYPE_GNSS, error_mask);
225}
226
227CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_error_disable(cfn_sal_dev_gnss_t *driver, uint32_t error_mask)
228{
229 if (!driver)
230 {
231 return CFN_HAL_ERROR_BAD_PARAM;
232 }
233 return cfn_hal_base_error_disable(&driver->base, CFN_SAL_DEV_TYPE_GNSS, error_mask);
234}
235
236CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_error_get(cfn_sal_dev_gnss_t *driver, uint32_t *error_mask)
237{
238 if (!driver)
239 {
240 return CFN_HAL_ERROR_BAD_PARAM;
241 }
242 return cfn_hal_base_error_get(&driver->base, CFN_SAL_DEV_TYPE_GNSS, error_mask);
243}
244
245/* Service Specific Functions --------------------------------------- */
246
247CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_power_on(cfn_sal_dev_gnss_t *driver)
248{
249 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
250 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_DEV_TYPE_GNSS, power_on, driver, error);
251 return error;
252}
253
254CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_power_off(cfn_sal_dev_gnss_t *driver)
255{
256 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
257 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_DEV_TYPE_GNSS, power_off, driver, error);
258 return error;
259}
260
261CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_location(cfn_sal_dev_gnss_t *driver,
263{
264 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
265 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_location, driver, error, loc_out);
266 return error;
267}
268
269CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_time(cfn_sal_dev_gnss_t *driver, struct tm *time_out)
270{
271 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
272 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_time, driver, error, time_out);
273 return error;
274}
275
276CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_satellites_in_view(cfn_sal_dev_gnss_t *driver,
277 uint8_t *count_out)
278{
279 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
280 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_satellites_in_view, driver, error, count_out);
281 return error;
282}
283
284CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_set_fix_rate(cfn_sal_dev_gnss_t *driver, uint32_t rate_ms)
285{
286 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
287 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, set_fix_rate, driver, error, rate_ms);
288 return error;
289}
290
291CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_cold_start(cfn_sal_dev_gnss_t *driver)
292{
293 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
294 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_DEV_TYPE_GNSS, cold_start, driver, error);
295 return error;
296}
297
298CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_warm_start(cfn_sal_dev_gnss_t *driver)
299{
300 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
301 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_DEV_TYPE_GNSS, warm_start, driver, error);
302 return error;
303}
304
305CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_hot_start(cfn_sal_dev_gnss_t *driver)
306{
307 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
308 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_DEV_TYPE_GNSS, hot_start, driver, error);
309 return error;
310}
311
312CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_hdop(cfn_sal_dev_gnss_t *driver, float *hdop_out)
313{
314 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
315 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_hdop, driver, error, hdop_out);
316 return error;
317}
318
319CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_time_utc(cfn_sal_dev_gnss_t *driver, uint32_t *unix_timestamp)
320{
321 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
322 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_time_utc, driver, error, unix_timestamp);
323 return error;
324}
325
326CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_speed_knots(cfn_sal_dev_gnss_t *driver, float *speed_out)
327{
328 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
329 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_speed_knots, driver, error, speed_out);
330 return error;
331}
332
333CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_heading_degrees(cfn_sal_dev_gnss_t *driver, float *heading_out)
334{
335 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
336 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, get_heading_degrees, driver, error, heading_out);
337 return error;
338}
339
340CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_set_power_mode(cfn_sal_dev_gnss_t *driver, uint8_t mode)
341{
342 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
343 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_GNSS, set_power_mode, driver, error, mode);
344 return error;
345}
346
347#ifdef __cplusplus
348}
349#endif
350
351#endif /* CAFFEINE_SAL_DEV_GNSS_H */
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_deinit(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:136
cfn_sal_dev_gnss_event_t
Definition cfn_sal_dev_gnss.h:25
@ CFN_SAL_DEV_GNSS_EVENT_FIX_LOST
Definition cfn_sal_dev_gnss.h:28
@ CFN_SAL_DEV_GNSS_EVENT_NONE
Definition cfn_sal_dev_gnss.h:26
@ CFN_SAL_DEV_GNSS_EVENT_FIX_ACQUIRED
Definition cfn_sal_dev_gnss.h:27
@ CFN_SAL_DEV_GNSS_EVENT_DATA_READY
Definition cfn_sal_dev_gnss.h:29
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_event_get(cfn_sal_dev_gnss_t *driver, uint32_t *event_mask)
Definition cfn_sal_dev_gnss.h:209
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_error_get(cfn_sal_dev_gnss_t *driver, uint32_t *error_mask)
Definition cfn_sal_dev_gnss.h:236
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_error_enable(cfn_sal_dev_gnss_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_gnss.h:218
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_init(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:126
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_power_off(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:254
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_heading_degrees(cfn_sal_dev_gnss_t *driver, float *heading_out)
Definition cfn_sal_dev_gnss.h:333
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_config_set(cfn_sal_dev_gnss_t *driver, const cfn_sal_dev_gnss_config_t *config)
Definition cfn_sal_dev_gnss.h:145
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_power_on(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:247
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_time(cfn_sal_dev_gnss_t *driver, struct tm *time_out)
Definition cfn_sal_dev_gnss.h:269
CFN_HAL_VMT_CHECK(struct cfn_sal_dev_gnss_api_s)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_hot_start(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:305
#define CFN_SAL_DEV_TYPE_GNSS
Definition cfn_sal_dev_gnss.h:20
struct cfn_sal_dev_gnss_s cfn_sal_dev_gnss_t
Definition cfn_sal_dev_gnss.h:63
void(* cfn_sal_dev_gnss_callback_t)(cfn_sal_dev_gnss_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_dev_gnss.h:66
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_config_get(cfn_sal_dev_gnss_t *driver, cfn_sal_dev_gnss_config_t *config)
Definition cfn_sal_dev_gnss.h:156
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_time_utc(cfn_sal_dev_gnss_t *driver, uint32_t *unix_timestamp)
Definition cfn_sal_dev_gnss.h:319
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_set_fix_rate(cfn_sal_dev_gnss_t *driver, uint32_t rate_ms)
Definition cfn_sal_dev_gnss.h:284
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_location(cfn_sal_dev_gnss_t *driver, cfn_sal_dev_gnss_location_t *loc_out)
Definition cfn_sal_dev_gnss.h:261
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_event_enable(cfn_sal_dev_gnss_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_gnss.h:191
CFN_HAL_INLINE void cfn_sal_dev_gnss_populate(cfn_sal_dev_gnss_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_dev_gnss_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_dev_gnss_config_t *config, cfn_sal_dev_gnss_callback_t callback, void *user_arg)
Definition cfn_sal_dev_gnss.h:105
cfn_hal_error_code_t cfn_sal_dev_gnss_construct(cfn_sal_dev_gnss_t *driver, const cfn_sal_dev_gnss_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_dev_gnss_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_callback_register(cfn_sal_dev_gnss_t *driver, cfn_sal_dev_gnss_callback_t callback, void *user_arg)
Definition cfn_sal_dev_gnss.h:167
cfn_sal_dev_gnss_fix_type_t
Definition cfn_sal_dev_gnss.h:33
@ CFN_SAL_DEV_GNSS_FIX_NONE
Definition cfn_sal_dev_gnss.h:34
@ CFN_SAL_DEV_GNSS_FIX_DGPS
Definition cfn_sal_dev_gnss.h:37
@ CFN_SAL_DEV_GNSS_FIX_RTK_FIXED
Definition cfn_sal_dev_gnss.h:38
@ CFN_SAL_DEV_GNSS_FIX_RTK_FLOAT
Definition cfn_sal_dev_gnss.h:39
@ CFN_SAL_DEV_GNSS_FIX_2D
Definition cfn_sal_dev_gnss.h:35
@ CFN_SAL_DEV_GNSS_FIX_3D
Definition cfn_sal_dev_gnss.h:36
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_event_disable(cfn_sal_dev_gnss_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_gnss.h:200
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_speed_knots(cfn_sal_dev_gnss_t *driver, float *speed_out)
Definition cfn_sal_dev_gnss.h:326
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_cold_start(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:291
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_hdop(cfn_sal_dev_gnss_t *driver, float *hdop_out)
Definition cfn_sal_dev_gnss.h:312
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_set_power_mode(cfn_sal_dev_gnss_t *driver, uint8_t mode)
Definition cfn_sal_dev_gnss.h:340
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_warm_start(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:298
cfn_hal_error_code_t cfn_sal_dev_gnss_destruct(cfn_sal_dev_gnss_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_get_satellites_in_view(cfn_sal_dev_gnss_t *driver, uint8_t *count_out)
Definition cfn_sal_dev_gnss.h:276
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_error_disable(cfn_sal_dev_gnss_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_gnss.h:227
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gnss_power_state_set(cfn_sal_dev_gnss_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_dev_gnss.h:181
GNSS Virtual Method Table (VMT).
Definition cfn_sal_dev_gnss.h:72
cfn_hal_error_code_t(* get_hdop)(cfn_sal_dev_gnss_t *driver, float *hdop_out)
Definition cfn_sal_dev_gnss.h:84
cfn_hal_error_code_t(* set_power_mode)(cfn_sal_dev_gnss_t *driver, uint8_t mode)
Definition cfn_sal_dev_gnss.h:90
cfn_hal_error_code_t(* cold_start)(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:93
cfn_hal_error_code_t(* get_speed_knots)(cfn_sal_dev_gnss_t *driver, float *speed_out)
Definition cfn_sal_dev_gnss.h:85
cfn_hal_error_code_t(* get_time)(cfn_sal_dev_gnss_t *driver, struct tm *time_out)
Definition cfn_sal_dev_gnss.h:81
cfn_hal_error_code_t(* get_time_utc)(cfn_sal_dev_gnss_t *driver, uint32_t *unix_timestamp)
Definition cfn_sal_dev_gnss.h:82
cfn_hal_error_code_t(* hot_start)(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:95
cfn_hal_error_code_t(* get_location)(cfn_sal_dev_gnss_t *driver, cfn_sal_dev_gnss_location_t *loc_out)
Definition cfn_sal_dev_gnss.h:80
cfn_hal_error_code_t(* get_heading_degrees)(cfn_sal_dev_gnss_t *driver, float *heading_out)
Definition cfn_sal_dev_gnss.h:86
cfn_hal_error_code_t(* power_on)(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:76
cfn_hal_error_code_t(* power_off)(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:77
cfn_hal_error_code_t(* set_fix_rate)(cfn_sal_dev_gnss_t *driver, uint32_t rate_ms)
Definition cfn_sal_dev_gnss.h:89
cfn_hal_api_base_t base
Definition cfn_sal_dev_gnss.h:73
cfn_hal_error_code_t(* get_satellites_in_view)(cfn_sal_dev_gnss_t *driver, uint8_t *count_out)
Definition cfn_sal_dev_gnss.h:83
cfn_hal_error_code_t(* warm_start)(cfn_sal_dev_gnss_t *driver)
Definition cfn_sal_dev_gnss.h:94
Definition cfn_sal_dev_gnss.h:57
void * custom
Definition cfn_sal_dev_gnss.h:60
uint32_t baudrate
Definition cfn_sal_dev_gnss.h:59
uint32_t fix_rate_ms
Definition cfn_sal_dev_gnss.h:58
Definition cfn_sal_dev_gnss.h:45
uint8_t satellites_used
Definition cfn_sal_dev_gnss.h:53
cfn_sal_dev_gnss_fix_type_t fix_type
Definition cfn_sal_dev_gnss.h:52
float course_deg
Definition cfn_sal_dev_gnss.h:50
float speed_kmh
Definition cfn_sal_dev_gnss.h:49
float hdop
Definition cfn_sal_dev_gnss.h:51
double longitude
Definition cfn_sal_dev_gnss.h:47
float altitude_m
Definition cfn_sal_dev_gnss.h:48
double latitude
Definition cfn_sal_dev_gnss.h:46
Generic physical mapping for services.
Definition cfn_sal_types.h:26