6#ifndef CAFFEINE_SAL_DEV_GYROSCOPE_H
7#define CAFFEINE_SAL_DEV_GYROSCOPE_H
19#define CFN_SAL_DEV_TYPE_GYROSCOPE CFN_SAL_TYPE('G', 'Y', 'R')
160 uint32_t peripheral_id,
168 CFN_HAL_POPULATE_DRIVER(
184 return CFN_HAL_ERROR_BAD_PARAM;
186 driver->base.vmt = (
const struct cfn_hal_api_base_s *) driver->api;
194 return CFN_HAL_ERROR_BAD_PARAM;
204 return CFN_HAL_ERROR_BAD_PARAM;
206 driver->config = config;
213 if (!driver || !config || !driver->config)
215 return CFN_HAL_ERROR_BAD_PARAM;
217 *config = *(driver->config);
218 return CFN_HAL_ERROR_OK;
227 return CFN_HAL_ERROR_BAD_PARAM;
229 driver->cb = callback;
230 driver->cb_user_arg = user_arg;
231 return cfn_hal_base_callback_register(
236 cfn_hal_power_state_t state)
240 return CFN_HAL_ERROR_BAD_PARAM;
250 return CFN_HAL_ERROR_BAD_PARAM;
260 return CFN_HAL_ERROR_BAD_PARAM;
266 uint32_t *event_mask)
270 return CFN_HAL_ERROR_BAD_PARAM;
280 return CFN_HAL_ERROR_BAD_PARAM;
290 return CFN_HAL_ERROR_BAD_PARAM;
296 uint32_t *error_mask)
300 return CFN_HAL_ERROR_BAD_PARAM;
310 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
318 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
327 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
333 uint32_t *status_flags)
335 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
342 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
351 if (driver->api->handle_interrupt)
353 driver->api->handle_interrupt(driver);
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_gyroscope_deinit(cfn_sal_dev_gyroscope_t *driver)
Definition cfn_sal_dev_gyroscope.h:190
#define CFN_SAL_DEV_TYPE_GYROSCOPE
Definition cfn_sal_dev_gyroscope.h:19
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_config_set(cfn_sal_dev_gyroscope_t *driver, const cfn_sal_dev_gyroscope_config_t *config)
Definition cfn_sal_dev_gyroscope.h:199
cfn_hal_error_code_t cfn_sal_dev_gyroscope_construct(cfn_sal_dev_gyroscope_t *driver, const cfn_sal_dev_gyroscope_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_dev_gyroscope_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_read_fifo(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_data_t *data, size_t *count)
Definition cfn_sal_dev_gyroscope.h:323
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_error_enable(cfn_sal_dev_gyroscope_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_gyroscope.h:275
cfn_sal_dev_gyroscope_int_level_t
Definition cfn_sal_dev_gyroscope.h:86
@ CFN_SAL_DEV_GYROSCOPE_INT_LEVEL_ACTIVE_HIGH
Definition cfn_sal_dev_gyroscope.h:88
@ CFN_SAL_DEV_GYROSCOPE_INT_LEVEL_ACTIVE_LOW
Definition cfn_sal_dev_gyroscope.h:87
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_init(cfn_sal_dev_gyroscope_t *driver)
Definition cfn_sal_dev_gyroscope.h:180
cfn_sal_dev_gyroscope_event_t
Definition cfn_sal_dev_gyroscope.h:24
@ CFN_SAL_DEV_GYROSCOPE_EVENT_NONE
Definition cfn_sal_dev_gyroscope.h:25
@ CFN_SAL_DEV_GYROSCOPE_EVENT_WAKEUP
Definition cfn_sal_dev_gyroscope.h:27
@ CFN_SAL_DEV_GYROSCOPE_EVENT_DATA_READY
Definition cfn_sal_dev_gyroscope.h:26
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_get_id(cfn_sal_dev_gyroscope_t *driver, uint32_t *id_out)
Definition cfn_sal_dev_gyroscope.h:340
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_config_get(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_config_t *config)
Definition cfn_sal_dev_gyroscope.h:210
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_read_xyz_raw(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_data_t *data_out)
Definition cfn_sal_dev_gyroscope.h:315
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_callback_register(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_callback_t callback, void *user_arg)
Definition cfn_sal_dev_gyroscope.h:221
cfn_sal_dev_gyroscope_bw_t
Definition cfn_sal_dev_gyroscope.h:60
@ CFN_SAL_DEV_GYROSCOPE_BW_ODR_DIV_2
Definition cfn_sal_dev_gyroscope.h:61
@ CFN_SAL_DEV_GYROSCOPE_BW_ODR_DIV_4
Definition cfn_sal_dev_gyroscope.h:62
cfn_hal_error_code_t cfn_sal_dev_gyroscope_destruct(cfn_sal_dev_gyroscope_t *driver)
cfn_sal_dev_gyroscope_mode_t
Definition cfn_sal_dev_gyroscope.h:31
@ CFN_SAL_DEV_GYROSCOPE_MODE_LOW_POWER
Definition cfn_sal_dev_gyroscope.h:33
@ CFN_SAL_DEV_GYROSCOPE_MODE_POWER_DOWN
Definition cfn_sal_dev_gyroscope.h:35
@ CFN_SAL_DEV_GYROSCOPE_MODE_NORMAL
Definition cfn_sal_dev_gyroscope.h:32
@ CFN_SAL_DEV_GYROSCOPE_MODE_STANDBY
Definition cfn_sal_dev_gyroscope.h:34
cfn_sal_dev_gyroscope_int_mode_t
Definition cfn_sal_dev_gyroscope.h:80
@ CFN_SAL_DEV_GYROSCOPE_INT_MODE_OPEN_DRAIN
Definition cfn_sal_dev_gyroscope.h:82
@ CFN_SAL_DEV_GYROSCOPE_INT_MODE_PUSH_PULL
Definition cfn_sal_dev_gyroscope.h:81
cfn_sal_dev_gyroscope_range_t
Definition cfn_sal_dev_gyroscope.h:39
@ CFN_SAL_DEV_GYROSCOPE_RANGE_250DPS
Definition cfn_sal_dev_gyroscope.h:41
@ CFN_SAL_DEV_GYROSCOPE_RANGE_500DPS
Definition cfn_sal_dev_gyroscope.h:42
@ CFN_SAL_DEV_GYROSCOPE_RANGE_1000DPS
Definition cfn_sal_dev_gyroscope.h:43
@ CFN_SAL_DEV_GYROSCOPE_RANGE_125DPS
Definition cfn_sal_dev_gyroscope.h:40
@ CFN_SAL_DEV_GYROSCOPE_RANGE_2000DPS
Definition cfn_sal_dev_gyroscope.h:44
void(* cfn_sal_dev_gyroscope_callback_t)(cfn_sal_dev_gyroscope_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_dev_gyroscope.h:123
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_event_get(cfn_sal_dev_gyroscope_t *driver, uint32_t *event_mask)
Definition cfn_sal_dev_gyroscope.h:265
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_get_status(cfn_sal_dev_gyroscope_t *driver, uint32_t *status_flags)
Definition cfn_sal_dev_gyroscope.h:332
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_power_state_set(cfn_sal_dev_gyroscope_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_dev_gyroscope.h:235
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_read_xyz_mdps(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_data_t *data_out)
Definition cfn_sal_dev_gyroscope.h:307
cfn_sal_dev_gyroscope_odr_t
Definition cfn_sal_dev_gyroscope.h:48
@ CFN_SAL_DEV_GYROSCOPE_ODR_50_HZ
Definition cfn_sal_dev_gyroscope.h:52
@ CFN_SAL_DEV_GYROSCOPE_ODR_1000_HZ
Definition cfn_sal_dev_gyroscope.h:56
@ CFN_SAL_DEV_GYROSCOPE_ODR_1_HZ
Definition cfn_sal_dev_gyroscope.h:49
@ CFN_SAL_DEV_GYROSCOPE_ODR_10_HZ
Definition cfn_sal_dev_gyroscope.h:50
@ CFN_SAL_DEV_GYROSCOPE_ODR_200_HZ
Definition cfn_sal_dev_gyroscope.h:54
@ CFN_SAL_DEV_GYROSCOPE_ODR_400_HZ
Definition cfn_sal_dev_gyroscope.h:55
@ CFN_SAL_DEV_GYROSCOPE_ODR_100_HZ
Definition cfn_sal_dev_gyroscope.h:53
@ CFN_SAL_DEV_GYROSCOPE_ODR_25_HZ
Definition cfn_sal_dev_gyroscope.h:51
CFN_HAL_VMT_CHECK(struct cfn_sal_dev_gyroscope_api_s)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_error_get(cfn_sal_dev_gyroscope_t *driver, uint32_t *error_mask)
Definition cfn_sal_dev_gyroscope.h:295
CFN_HAL_INLINE void cfn_sal_dev_gyroscope_handle_interrupt(cfn_sal_dev_gyroscope_t *driver)
Definition cfn_sal_dev_gyroscope.h:347
struct cfn_sal_dev_gyroscope_s cfn_sal_dev_gyroscope_t
Definition cfn_sal_dev_gyroscope.h:120
cfn_sal_dev_gyroscope_int_pin_t
Definition cfn_sal_dev_gyroscope.h:74
@ CFN_SAL_DEV_GYROSCOPE_INT_PIN_1
Definition cfn_sal_dev_gyroscope.h:75
@ CFN_SAL_DEV_GYROSCOPE_INT_PIN_2
Definition cfn_sal_dev_gyroscope.h:76
cfn_sal_dev_gyroscope_fifo_mode_t
Definition cfn_sal_dev_gyroscope.h:66
@ CFN_SAL_DEV_GYROSCOPE_FIFO_MODE_STREAM
Definition cfn_sal_dev_gyroscope.h:69
@ CFN_SAL_DEV_GYROSCOPE_FIFO_MODE_BYPASS
Definition cfn_sal_dev_gyroscope.h:67
@ CFN_SAL_DEV_GYROSCOPE_FIFO_MODE_FIFO
Definition cfn_sal_dev_gyroscope.h:68
@ CFN_SAL_DEV_GYROSCOPE_FIFO_MODE_TRIGGER
Definition cfn_sal_dev_gyroscope.h:70
CFN_HAL_INLINE void cfn_sal_dev_gyroscope_populate(cfn_sal_dev_gyroscope_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_dev_gyroscope_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_dev_gyroscope_config_t *config, cfn_sal_dev_gyroscope_callback_t callback, void *user_arg)
Definition cfn_sal_dev_gyroscope.h:159
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_event_disable(cfn_sal_dev_gyroscope_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_gyroscope.h:255
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_event_enable(cfn_sal_dev_gyroscope_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_gyroscope.h:245
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gyroscope_error_disable(cfn_sal_dev_gyroscope_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_gyroscope.h:285
Gyroscope Sensor Virtual Method Table (VMT).
Definition cfn_sal_dev_gyroscope.h:132
cfn_hal_error_code_t(* read_fifo)(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_data_t *data, size_t *count)
Definition cfn_sal_dev_gyroscope.h:140
void(* handle_interrupt)(cfn_sal_dev_gyroscope_t *driver)
Definition cfn_sal_dev_gyroscope.h:146
cfn_hal_error_code_t(* get_id)(cfn_sal_dev_gyroscope_t *driver, uint32_t *id_out)
Definition cfn_sal_dev_gyroscope.h:144
cfn_hal_error_code_t(* read_xyz_mdps)(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_data_t *data_out)
Definition cfn_sal_dev_gyroscope.h:136
cfn_hal_api_base_t base
Definition cfn_sal_dev_gyroscope.h:133
cfn_hal_error_code_t(* read_xyz_raw)(cfn_sal_dev_gyroscope_t *driver, cfn_sal_dev_gyroscope_data_t *data_out)
Definition cfn_sal_dev_gyroscope.h:137
cfn_hal_error_code_t(* get_status)(cfn_sal_dev_gyroscope_t *driver, uint32_t *status_flags)
Definition cfn_sal_dev_gyroscope.h:143
Definition cfn_sal_dev_gyroscope.h:108
uint8_t fifo_watermark
Definition cfn_sal_dev_gyroscope.h:114
cfn_sal_dev_gyroscope_range_t range
Definition cfn_sal_dev_gyroscope.h:112
cfn_sal_dev_gyroscope_int_config_t int2_config
Definition cfn_sal_dev_gyroscope.h:116
cfn_sal_dev_gyroscope_bw_t bandwidth
Definition cfn_sal_dev_gyroscope.h:111
cfn_sal_dev_gyroscope_mode_t mode
Definition cfn_sal_dev_gyroscope.h:109
cfn_sal_dev_gyroscope_fifo_mode_t fifo_mode
Definition cfn_sal_dev_gyroscope.h:113
cfn_sal_dev_gyroscope_odr_t odr
Definition cfn_sal_dev_gyroscope.h:110
void * custom
Definition cfn_sal_dev_gyroscope.h:117
cfn_sal_dev_gyroscope_int_config_t int1_config
Definition cfn_sal_dev_gyroscope.h:115
Definition cfn_sal_dev_gyroscope.h:101
int32_t y
Definition cfn_sal_dev_gyroscope.h:103
int32_t z
Definition cfn_sal_dev_gyroscope.h:104
int32_t x
Definition cfn_sal_dev_gyroscope.h:102
Definition cfn_sal_dev_gyroscope.h:94
cfn_sal_dev_gyroscope_int_mode_t mode
Definition cfn_sal_dev_gyroscope.h:95
cfn_sal_dev_gyroscope_int_level_t level
Definition cfn_sal_dev_gyroscope.h:96
uint32_t event_mask
Definition cfn_sal_dev_gyroscope.h:97
Generic physical mapping for services.
Definition cfn_sal_types.h:26