sensor_hal.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*******************************************************************************
  2. * @file sensor_hal.h
  3. * @author MEMS Application Team
  4. * @version V1.0
  5. * @date 2020-08-12
  6. * @brief sensor testing module
  7. *******************************************************************************/
  8. #ifndef _SENSOR_HAL_H
  9. #define _SENSOR_HAL_H
  10. /******************************************************************************/
  11. //includes
  12. /******************************************************************************/
  13. #include <stdint.h>
  14. /******************************************************************************/
  15. //constants
  16. /******************************************************************************/
  17. typedef enum {
  18. ID_ACC = 0,
  19. ID_GYRO,
  20. ID_MAG,
  21. ID_BARO,
  22. ID_TEMP,
  23. ID_HR,
  24. ID_GNSS,
  25. ID_OFFBODY,
  26. NUM_SENSOR,
  27. } sensor_id_e;
  28. typedef enum {
  29. EVT_NULL = 0,
  30. EVT_TASK,
  31. EVT_IRQ,
  32. } sensor_evt_e;
  33. /******************************************************************************/
  34. //typedefs
  35. /******************************************************************************/
  36. typedef struct sensor_evt_s {
  37. uint8_t id; // sensor id
  38. uint8_t evt; // event type
  39. uint16_t pd; // data period (ms)
  40. uint16_t sz; // data size
  41. uint16_t cnt; // data count
  42. uint8_t *buf; // data buffer
  43. uint64_t ts; // time stamp (ms)
  44. } sensor_dat_t;
  45. typedef void (*sensor_cb_t) (int id, sensor_dat_t *dat, void *ctx);
  46. /******************************************************************************/
  47. //functions
  48. /******************************************************************************/
  49. int sensor_hal_init(void);
  50. int sensor_hal_deinit(void);
  51. int sensor_hal_dump(void);
  52. int sensor_hal_suspend(void);
  53. int sensor_hal_resume(void);
  54. const char *sensor_hal_get_type(int id);
  55. const char *sensor_hal_get_name(int id);
  56. void sensor_hal_add_callback(int id, sensor_cb_t cb, void *ctx);
  57. void sensor_hal_remove_callback(int id);
  58. int sensor_hal_enable(int id);
  59. int sensor_hal_disable(int id);
  60. int sensor_hal_read(int id, uint16_t reg, uint8_t *buf, uint16_t len);
  61. int sensor_hal_write(int id, uint16_t reg, uint8_t *buf, uint16_t len);
  62. void sensor_hal_init_data(int id, sensor_dat_t *dat, uint8_t *buf, int len);
  63. int sensor_hal_poll_data(int id, sensor_dat_t *dat, uint8_t *buf);
  64. int sensor_hal_get_value(int id, sensor_dat_t *dat, uint16_t idx, float *val);
  65. int sensor_hal_cvt_data(int id, uint8_t *buf, uint16_t len, float *val, int16_t *raw);
  66. int sensor_hal_get_data_period(int id);
  67. void sensor_hal_config_tm(int id, int ms);
  68. uint32_t sensor_hal_get_tm(int id);
  69. uint32_t sensor_hal_get_30K_counter(int id);
  70. void sensor_hal_clear_tm_pending(int id);
  71. #endif /* _SENSOR_HAL_H */