one_wire_master.h 759 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <furi.h>
  3. #include <furi_hal.h>
  4. #include "one_wire_timings.h"
  5. class OneWireMaster {
  6. private:
  7. const GpioPin* gpio;
  8. // global search state
  9. unsigned char saved_rom[8];
  10. uint8_t last_discrepancy;
  11. uint8_t last_family_discrepancy;
  12. bool last_device_flag;
  13. public:
  14. OneWireMaster(const GpioPin* one_wire_gpio);
  15. ~OneWireMaster();
  16. bool reset(void);
  17. bool read_bit(void);
  18. uint8_t read(void);
  19. void read_bytes(uint8_t* buf, uint16_t count);
  20. void write_bit(bool value);
  21. void write(uint8_t value);
  22. void skip(void);
  23. void start(void);
  24. void stop(void);
  25. void reset_search();
  26. void target_search(uint8_t family_code);
  27. uint8_t search(uint8_t* newAddr, bool search_mode = true);
  28. };