6#ifndef CAFFEINE_SAL_DEV_ACCELEROMETER_H
7#define CAFFEINE_SAL_DEV_ACCELEROMETER_H
19#define CFN_SAL_DEV_TYPE_ACCELEROMETER CFN_SAL_TYPE('A', 'C', 'L')
207 uint32_t peripheral_id,
215 CFN_HAL_POPULATE_DRIVER(
231 return CFN_HAL_ERROR_BAD_PARAM;
233 driver->base.vmt = (
const struct cfn_hal_api_base_s *) driver->api;
241 return CFN_HAL_ERROR_BAD_PARAM;
251 return CFN_HAL_ERROR_BAD_PARAM;
253 driver->config = config;
260 if (!driver || !config || !driver->config)
262 return CFN_HAL_ERROR_BAD_PARAM;
264 *config = *(driver->config);
265 return CFN_HAL_ERROR_OK;
273 return CFN_HAL_ERROR_BAD_PARAM;
275 driver->cb = callback;
276 driver->cb_user_arg = user_arg;
277 return cfn_hal_base_callback_register(
282 cfn_hal_power_state_t state)
286 return CFN_HAL_ERROR_BAD_PARAM;
296 return CFN_HAL_ERROR_BAD_PARAM;
306 return CFN_HAL_ERROR_BAD_PARAM;
312 uint32_t *event_mask)
316 return CFN_HAL_ERROR_BAD_PARAM;
326 return CFN_HAL_ERROR_BAD_PARAM;
336 return CFN_HAL_ERROR_BAD_PARAM;
342 uint32_t *error_mask)
346 return CFN_HAL_ERROR_BAD_PARAM;
356 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
364 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
373 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
379 uint32_t *status_flags)
381 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
389 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
395 uint8_t *orientation_code)
397 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
398 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
406 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
415 if (driver->api->handle_interrupt)
417 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_sal_dev_accelerometer_event_t
Definition cfn_sal_dev_accelerometer.h:24
@ CFN_SAL_DEV_ACCELEROMETER_EVENT_FREEFALL
Definition cfn_sal_dev_accelerometer.h:27
@ CFN_SAL_DEV_ACCELEROMETER_EVENT_DATA_READY
Definition cfn_sal_dev_accelerometer.h:26
@ CFN_SAL_DEV_ACCELEROMETER_EVENT_DOUBLE_TAP
Definition cfn_sal_dev_accelerometer.h:30
@ CFN_SAL_DEV_ACCELEROMETER_EVENT_WAKEUP
Definition cfn_sal_dev_accelerometer.h:28
@ CFN_SAL_DEV_ACCELEROMETER_EVENT_SINGLE_TAP
Definition cfn_sal_dev_accelerometer.h:29
@ CFN_SAL_DEV_ACCELEROMETER_EVENT_NONE
Definition cfn_sal_dev_accelerometer.h:25
cfn_sal_dev_accelerometer_bw_t
Definition cfn_sal_dev_accelerometer.h:78
@ CFN_SAL_DEV_ACCELEROMETER_BW_ODR_DIV_4
Definition cfn_sal_dev_accelerometer.h:80
@ CFN_SAL_DEV_ACCELEROMETER_BW_ODR_DIV_2
Definition cfn_sal_dev_accelerometer.h:79
cfn_sal_dev_accelerometer_resolution_t
Definition cfn_sal_dev_accelerometer.h:41
@ CFN_SAL_DEV_ACCELEROMETER_RESOLUTION_16_BIT
Definition cfn_sal_dev_accelerometer.h:46
@ CFN_SAL_DEV_ACCELEROMETER_RESOLUTION_12_BIT
Definition cfn_sal_dev_accelerometer.h:44
@ CFN_SAL_DEV_ACCELEROMETER_RESOLUTION_8_BIT
Definition cfn_sal_dev_accelerometer.h:42
@ CFN_SAL_DEV_ACCELEROMETER_RESOLUTION_14_BIT
Definition cfn_sal_dev_accelerometer.h:45
@ CFN_SAL_DEV_ACCELEROMETER_RESOLUTION_10_BIT
Definition cfn_sal_dev_accelerometer.h:43
cfn_sal_dev_accelerometer_int_level_t
Definition cfn_sal_dev_accelerometer.h:107
@ CFN_SAL_DEV_ACCELEROMETER_INT_LEVEL_ACTIVE_LOW
Definition cfn_sal_dev_accelerometer.h:108
@ CFN_SAL_DEV_ACCELEROMETER_INT_LEVEL_ACTIVE_HIGH
Definition cfn_sal_dev_accelerometer.h:109
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_event_get(cfn_sal_dev_accelerometer_t *driver, uint32_t *event_mask)
Definition cfn_sal_dev_accelerometer.h:311
cfn_sal_dev_accelerometer_mode_t
Definition cfn_sal_dev_accelerometer.h:34
@ CFN_SAL_DEV_ACCELEROMETER_MODE_LOW_POWER
Definition cfn_sal_dev_accelerometer.h:36
@ CFN_SAL_DEV_ACCELEROMETER_MODE_NORMAL
Definition cfn_sal_dev_accelerometer.h:35
@ CFN_SAL_DEV_ACCELEROMETER_MODE_STANDBY
Definition cfn_sal_dev_accelerometer.h:37
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_event_enable(cfn_sal_dev_accelerometer_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_accelerometer.h:291
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_read_fifo(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_data_t *data, size_t *count)
Definition cfn_sal_dev_accelerometer.h:369
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_callback_register(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_callback_t callback, void *user_arg)
Definition cfn_sal_dev_accelerometer.h:268
cfn_hal_error_code_t cfn_sal_dev_accelerometer_destruct(cfn_sal_dev_accelerometer_t *driver)
cfn_sal_dev_accelerometer_filter_t
Definition cfn_sal_dev_accelerometer.h:50
@ CFN_SAL_DEV_ACCELEROMETER_FILTER_NONE
Definition cfn_sal_dev_accelerometer.h:51
@ CFN_SAL_DEV_ACCELEROMETER_FILTER_HIGH_PASS
Definition cfn_sal_dev_accelerometer.h:52
@ CFN_SAL_DEV_ACCELEROMETER_FILTER_LOW_PASS
Definition cfn_sal_dev_accelerometer.h:53
@ CFN_SAL_DEV_ACCELEROMETER_FILTER_BAND_PASS
Definition cfn_sal_dev_accelerometer.h:54
void(* cfn_sal_dev_accelerometer_callback_t)(cfn_sal_dev_accelerometer_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_dev_accelerometer.h:166
#define CFN_SAL_DEV_TYPE_ACCELEROMETER
Definition cfn_sal_dev_accelerometer.h:19
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_error_disable(cfn_sal_dev_accelerometer_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_accelerometer.h:331
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_config_get(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_config_t *config)
Definition cfn_sal_dev_accelerometer.h:257
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_error_enable(cfn_sal_dev_accelerometer_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_accelerometer.h:321
cfn_hal_error_code_t cfn_sal_dev_accelerometer_construct(cfn_sal_dev_accelerometer_t *driver, const cfn_sal_dev_accelerometer_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_dev_accelerometer_callback_t callback, void *user_arg)
cfn_sal_dev_accelerometer_int_pin_t
Definition cfn_sal_dev_accelerometer.h:93
@ CFN_SAL_DEV_ACCELEROMETER_INT_PIN_1
Definition cfn_sal_dev_accelerometer.h:94
@ CFN_SAL_DEV_ACCELEROMETER_INT_PIN_2
Definition cfn_sal_dev_accelerometer.h:95
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_event_disable(cfn_sal_dev_accelerometer_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_accelerometer.h:301
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_init(cfn_sal_dev_accelerometer_t *driver)
Definition cfn_sal_dev_accelerometer.h:227
CFN_HAL_VMT_CHECK(struct cfn_sal_dev_accelerometer_api_s)
cfn_sal_dev_accelerometer_fifo_mode_t
Definition cfn_sal_dev_accelerometer.h:84
@ CFN_SAL_DEV_ACCELEROMETER_FIFO_MODE_STREAM
Definition cfn_sal_dev_accelerometer.h:87
@ CFN_SAL_DEV_ACCELEROMETER_FIFO_MODE_TRIGGER
Definition cfn_sal_dev_accelerometer.h:88
@ CFN_SAL_DEV_ACCELEROMETER_FIFO_MODE_BYPASS
Definition cfn_sal_dev_accelerometer.h:85
@ CFN_SAL_DEV_ACCELEROMETER_FIFO_MODE_FIFO
Definition cfn_sal_dev_accelerometer.h:86
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_power_state_set(cfn_sal_dev_accelerometer_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_dev_accelerometer.h:281
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_read_raw(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_data_t *data_out)
Definition cfn_sal_dev_accelerometer.h:361
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_get_id(cfn_sal_dev_accelerometer_t *driver, uint32_t *id_out)
Definition cfn_sal_dev_accelerometer.h:403
struct cfn_sal_dev_accelerometer_s cfn_sal_dev_accelerometer_t
Definition cfn_sal_dev_accelerometer.h:163
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_read_6d_orientation(cfn_sal_dev_accelerometer_t *driver, uint8_t *orientation_code)
Definition cfn_sal_dev_accelerometer.h:394
cfn_sal_dev_accelerometer_range_t
Definition cfn_sal_dev_accelerometer.h:58
@ CFN_SAL_DEV_ACCELEROMETER_RANGE_4G
Definition cfn_sal_dev_accelerometer.h:60
@ CFN_SAL_DEV_ACCELEROMETER_RANGE_2G
Definition cfn_sal_dev_accelerometer.h:59
@ CFN_SAL_DEV_ACCELEROMETER_RANGE_16G
Definition cfn_sal_dev_accelerometer.h:62
@ CFN_SAL_DEV_ACCELEROMETER_RANGE_8G
Definition cfn_sal_dev_accelerometer.h:61
CFN_HAL_INLINE void cfn_sal_dev_accelerometer_handle_interrupt(cfn_sal_dev_accelerometer_t *driver)
Definition cfn_sal_dev_accelerometer.h:411
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_read_mg(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_data_t *data_out)
Definition cfn_sal_dev_accelerometer.h:353
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_get_status(cfn_sal_dev_accelerometer_t *driver, uint32_t *status_flags)
Definition cfn_sal_dev_accelerometer.h:378
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_read_step_counter(cfn_sal_dev_accelerometer_t *driver, uint32_t *steps)
Definition cfn_sal_dev_accelerometer.h:386
cfn_sal_dev_accelerometer_int_mode_t
Definition cfn_sal_dev_accelerometer.h:100
@ CFN_SAL_DEV_ACCELEROMETER_INT_MODE_OPEN_DRAIN
Definition cfn_sal_dev_accelerometer.h:102
@ CFN_SAL_DEV_ACCELEROMETER_INT_MODE_PUSH_PULL
Definition cfn_sal_dev_accelerometer.h:101
CFN_HAL_INLINE void cfn_sal_dev_accelerometer_populate(cfn_sal_dev_accelerometer_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_dev_accelerometer_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_dev_accelerometer_config_t *config, cfn_sal_dev_accelerometer_callback_t callback, void *user_arg)
Definition cfn_sal_dev_accelerometer.h:206
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_error_get(cfn_sal_dev_accelerometer_t *driver, uint32_t *error_mask)
Definition cfn_sal_dev_accelerometer.h:341
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_config_set(cfn_sal_dev_accelerometer_t *driver, const cfn_sal_dev_accelerometer_config_t *config)
Definition cfn_sal_dev_accelerometer.h:246
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_accelerometer_deinit(cfn_sal_dev_accelerometer_t *driver)
Definition cfn_sal_dev_accelerometer.h:237
cfn_sal_dev_accelerometer_odr_t
Definition cfn_sal_dev_accelerometer.h:66
@ CFN_SAL_DEV_ACCELEROMETER_ODR_10_HZ
Definition cfn_sal_dev_accelerometer.h:68
@ CFN_SAL_DEV_ACCELEROMETER_ODR_100_HZ
Definition cfn_sal_dev_accelerometer.h:71
@ CFN_SAL_DEV_ACCELEROMETER_ODR_50_HZ
Definition cfn_sal_dev_accelerometer.h:70
@ CFN_SAL_DEV_ACCELEROMETER_ODR_1_HZ
Definition cfn_sal_dev_accelerometer.h:67
@ CFN_SAL_DEV_ACCELEROMETER_ODR_25_HZ
Definition cfn_sal_dev_accelerometer.h:69
@ CFN_SAL_DEV_ACCELEROMETER_ODR_400_HZ
Definition cfn_sal_dev_accelerometer.h:73
@ CFN_SAL_DEV_ACCELEROMETER_ODR_1000_HZ
Definition cfn_sal_dev_accelerometer.h:74
@ CFN_SAL_DEV_ACCELEROMETER_ODR_200_HZ
Definition cfn_sal_dev_accelerometer.h:72
Accelerometer Virtual Method Table (VMT).
Definition cfn_sal_dev_accelerometer.h:175
cfn_hal_api_base_t base
Definition cfn_sal_dev_accelerometer.h:176
cfn_hal_error_code_t(* get_status)(cfn_sal_dev_accelerometer_t *driver, uint32_t *status_flags)
Definition cfn_sal_dev_accelerometer.h:190
cfn_hal_error_code_t(* read_xyz_raw)(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_data_t *data_out)
Definition cfn_sal_dev_accelerometer.h:181
void(* handle_interrupt)(cfn_sal_dev_accelerometer_t *driver)
Definition cfn_sal_dev_accelerometer.h:193
cfn_hal_error_code_t(* read_6d_orientation)(cfn_sal_dev_accelerometer_t *driver, uint8_t *orientation_code)
Definition cfn_sal_dev_accelerometer.h:189
cfn_hal_error_code_t(* read_xyz_mg)(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_data_t *data_out)
Definition cfn_sal_dev_accelerometer.h:179
cfn_hal_error_code_t(* read_fifo)(cfn_sal_dev_accelerometer_t *driver, cfn_sal_dev_accelerometer_data_t *data, size_t *count)
Definition cfn_sal_dev_accelerometer.h:185
cfn_hal_error_code_t(* read_step_counter)(cfn_sal_dev_accelerometer_t *driver, uint32_t *steps)
Definition cfn_sal_dev_accelerometer.h:188
cfn_hal_error_code_t(* get_id)(cfn_sal_dev_accelerometer_t *driver, uint32_t *id_out)
Definition cfn_sal_dev_accelerometer.h:191
Definition cfn_sal_dev_accelerometer.h:144
cfn_sal_dev_accelerometer_resolution_t resolution
Definition cfn_sal_dev_accelerometer.h:146
cfn_sal_dev_accelerometer_mode_t mode
Definition cfn_sal_dev_accelerometer.h:145
bool significant_motion_enable
Definition cfn_sal_dev_accelerometer.h:158
void * custom
Definition cfn_sal_dev_accelerometer.h:160
cfn_sal_dev_accelerometer_bw_t bandwidth
Definition cfn_sal_dev_accelerometer.h:148
cfn_sal_dev_accelerometer_int_config_t int1_config
Definition cfn_sal_dev_accelerometer.h:153
cfn_sal_dev_accelerometer_int_config_t int2_config
Definition cfn_sal_dev_accelerometer.h:154
bool pedometer_enable
Definition cfn_sal_dev_accelerometer.h:157
cfn_sal_dev_accelerometer_range_t range
Definition cfn_sal_dev_accelerometer.h:149
uint8_t fifo_watermark
Definition cfn_sal_dev_accelerometer.h:152
cfn_sal_dev_accelerometer_odr_t odr
Definition cfn_sal_dev_accelerometer.h:147
cfn_sal_dev_accelerometer_tap_config_t tap_config
Definition cfn_sal_dev_accelerometer.h:155
bool orientation_6d_enable
Definition cfn_sal_dev_accelerometer.h:159
cfn_sal_dev_accelerometer_filter_t filter
Definition cfn_sal_dev_accelerometer.h:150
cfn_sal_dev_accelerometer_fifo_mode_t fifo_mode
Definition cfn_sal_dev_accelerometer.h:151
cfn_sal_dev_accelerometer_freefall_config_t freefall_config
Definition cfn_sal_dev_accelerometer.h:156
Definition cfn_sal_dev_accelerometer.h:123
int32_t z
Definition cfn_sal_dev_accelerometer.h:126
int32_t y
Definition cfn_sal_dev_accelerometer.h:125
int32_t x
Definition cfn_sal_dev_accelerometer.h:124
Definition cfn_sal_dev_accelerometer.h:137
uint16_t time_ms
Definition cfn_sal_dev_accelerometer.h:140
uint16_t threshold_mg
Definition cfn_sal_dev_accelerometer.h:139
bool enable
Definition cfn_sal_dev_accelerometer.h:138
Definition cfn_sal_dev_accelerometer.h:115
cfn_sal_dev_accelerometer_int_level_t level
Definition cfn_sal_dev_accelerometer.h:117
uint32_t event_mask
Definition cfn_sal_dev_accelerometer.h:119
cfn_sal_dev_accelerometer_int_mode_t mode
Definition cfn_sal_dev_accelerometer.h:116
Definition cfn_sal_dev_accelerometer.h:130
uint8_t threshold
Definition cfn_sal_dev_accelerometer.h:133
bool double_tap
Definition cfn_sal_dev_accelerometer.h:132
bool enable
Definition cfn_sal_dev_accelerometer.h:131
Generic physical mapping for services.
Definition cfn_sal_types.h:26