api-hal-i2c.h 874 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #include <api-hal-resources.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. void api_hal_i2c_init();
  9. bool api_hal_i2c_tx(
  10. I2C_TypeDef* instance,
  11. const uint8_t address,
  12. const uint8_t* data,
  13. const uint8_t size,
  14. uint32_t timeout);
  15. bool api_hal_i2c_rx(
  16. I2C_TypeDef* instance,
  17. const uint8_t address,
  18. uint8_t* data,
  19. const uint8_t size,
  20. uint32_t timeout);
  21. bool api_hal_i2c_trx(
  22. I2C_TypeDef* instance,
  23. const uint8_t address,
  24. const uint8_t* tx_data,
  25. const uint8_t tx_size,
  26. uint8_t* rx_data,
  27. const uint8_t rx_size,
  28. uint32_t timeout);
  29. #define with_api_hal_i2c(type, pointer, function_body) \
  30. { \
  31. *pointer = ({ type __fn__ function_body __fn__; })(); \
  32. }
  33. #ifdef __cplusplus
  34. }
  35. #endif