api-hal-i2c.h 558 B

1234567891011121314151617181920212223242526
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #include <i2c.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. void api_hal_i2c_init();
  9. void api_hal_i2c_lock();
  10. void api_hal_i2c_unlock();
  11. #define with_api_hal_i2c(type, pointer, function_body) \
  12. { \
  13. api_hal_i2c_lock(); \
  14. *pointer = ({ type __fn__ function_body __fn__; })(); \
  15. api_hal_i2c_unlock(); \
  16. }
  17. #ifdef __cplusplus
  18. }
  19. #endif