#pragma once #include struct SoftTWI { SoftTWI(unsigned pin_sda, unsigned pin_scl, unsigned delay = 0); void begin(); void sleep(unsigned=1); void set_sda(bool); void set_scl(bool); bool read_sda(); bool read_scl(); void wait_scl(); void write_bit(bool); bool write(uint8_t); unsigned write(const uint8_t*, unsigned); bool read_bit(); uint8_t read(bool=true); void read(uint8_t*, unsigned, bool=false); bool start_read(uint8_t); bool start_write(uint8_t); void start(); void end(); private: unsigned _pin_scl; unsigned _pin_sda; unsigned _delay; };