sensor_hal.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. uint32_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. int sensor_hal_poll_data(int id, sensor_dat_t *dat, uint8_t *buf);
  63. int sensor_hal_get_value(int id, sensor_dat_t *dat, uint16_t idx, float *val);
  64. #endif /* _SENSOR_HAL_H */