api-hal-i2c.h 808 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. void api_hal_i2c_tx(
  10. I2C_TypeDef* instance,
  11. const uint8_t address,
  12. const uint8_t* data,
  13. const uint8_t size);
  14. void api_hal_i2c_rx(
  15. I2C_TypeDef* instance,
  16. const uint8_t address,
  17. uint8_t* data,
  18. const uint8_t size);
  19. void api_hal_i2c_trx(
  20. I2C_TypeDef* instance,
  21. const uint8_t address,
  22. const uint8_t* tx_data,
  23. const uint8_t tx_size,
  24. uint8_t* rx_data,
  25. const uint8_t rx_size);
  26. #define with_api_hal_i2c(type, pointer, function_body) \
  27. { \
  28. *pointer = ({ type __fn__ function_body __fn__; })(); \
  29. }
  30. #ifdef __cplusplus
  31. }
  32. #endif