i2csender.c 784 B

1234567891011121314151617181920212223242526272829
  1. #include "i2csender.h"
  2. void i2c_send(i2cSender* i2c_sender) {
  3. furi_hal_i2c_acquire(I2C_BUS);
  4. uint8_t adress = i2c_sender->scanner->addresses[i2c_sender->address_idx] << 1;
  5. i2c_sender->error = furi_hal_i2c_trx(
  6. I2C_BUS,
  7. adress,
  8. &i2c_sender->value,
  9. sizeof(i2c_sender->value),
  10. i2c_sender->recv,
  11. sizeof(i2c_sender->recv),
  12. I2C_TIMEOUT);
  13. furi_hal_i2c_release(I2C_BUS);
  14. i2c_sender->must_send = false;
  15. i2c_sender->sended = true;
  16. }
  17. i2cSender* i2c_sender_alloc() {
  18. i2cSender* i2c_sender = malloc(sizeof(i2cSender));
  19. i2c_sender->must_send = false;
  20. i2c_sender->sended = false;
  21. return i2c_sender;
  22. }
  23. void i2c_sender_free(i2cSender* i2c_sender) {
  24. furi_assert(i2c_sender);
  25. free(i2c_sender);
  26. }