6#ifndef CAFFEINE_SAL_DEV_GNSS_H
7#define CAFFEINE_SAL_DEV_GNSS_H
20#define CFN_SAL_DEV_TYPE_GNSS CFN_SAL_TYPE('G', 'N', 'S')
106 uint32_t peripheral_id,
114 CFN_HAL_POPULATE_DRIVER(
115 driver,
CFN_SAL_DEV_TYPE_GNSS, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
130 return CFN_HAL_ERROR_BAD_PARAM;
132 driver->base.vmt = (
const struct cfn_hal_api_base_s *) driver->api;
140 return CFN_HAL_ERROR_BAD_PARAM;
150 return CFN_HAL_ERROR_BAD_PARAM;
152 driver->config = config;
159 if (!driver || !config || !driver->config)
161 return CFN_HAL_ERROR_BAD_PARAM;
163 *config = *(driver->config);
164 return CFN_HAL_ERROR_OK;
173 return CFN_HAL_ERROR_BAD_PARAM;
175 driver->cb = callback;
176 driver->cb_user_arg = user_arg;
177 return cfn_hal_base_callback_register(
182 cfn_hal_power_state_t state)
186 return CFN_HAL_ERROR_BAD_PARAM;
195 return CFN_HAL_ERROR_BAD_PARAM;
204 return CFN_HAL_ERROR_BAD_PARAM;
213 return CFN_HAL_ERROR_BAD_PARAM;
222 return CFN_HAL_ERROR_BAD_PARAM;
231 return CFN_HAL_ERROR_BAD_PARAM;
240 return CFN_HAL_ERROR_BAD_PARAM;
249 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
256 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
264 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
271 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
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);
286 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
293 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
300 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
307 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
314 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
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);
328 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
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);
342 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
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