/******************************************************************************* * @file sensor_hal.h * @author MEMS Application Team * @version V1.0 * @date 2020-08-12 * @brief sensor testing module *******************************************************************************/ #ifndef _SENSOR_HAL_H #define _SENSOR_HAL_H /******************************************************************************/ //includes /******************************************************************************/ #include /******************************************************************************/ //constants /******************************************************************************/ typedef enum { ID_ACC = 0, ID_GYRO, ID_MAG, ID_BARO, ID_TEMP, ID_HR, ID_GNSS, ID_OFFBODY, NUM_SENSOR, } sensor_id_e; typedef enum { EVT_NULL = 0, EVT_TASK, EVT_IRQ, } sensor_evt_e; /******************************************************************************/ //typedefs /******************************************************************************/ typedef struct sensor_evt_s { uint8_t id; // sensor id uint8_t evt; // event type uint16_t pd; // data period (ms) uint16_t sz; // data size uint16_t cnt; // data count uint8_t *buf; // data buffer uint32_t ts; // time stamp (ms) } sensor_dat_t; typedef void (*sensor_cb_t) (int id, sensor_dat_t *dat, void *ctx); /******************************************************************************/ //functions /******************************************************************************/ int sensor_hal_init(void); int sensor_hal_deinit(void); int sensor_hal_dump(void); int sensor_hal_suspend(void); int sensor_hal_resume(void); const char *sensor_hal_get_type(int id); const char *sensor_hal_get_name(int id); void sensor_hal_add_callback(int id, sensor_cb_t cb, void *ctx); void sensor_hal_remove_callback(int id); int sensor_hal_enable(int id); int sensor_hal_disable(int id); int sensor_hal_read(int id, uint16_t reg, uint8_t *buf, uint16_t len); int sensor_hal_write(int id, uint16_t reg, uint8_t *buf, uint16_t len); int sensor_hal_poll_data(int id, sensor_dat_t *dat, uint8_t *buf); int sensor_hal_get_value(int id, sensor_dat_t *dat, uint16_t idx, float *val); #endif /* _SENSOR_HAL_H */