#ifndef _I2C_HPP_ #define _I2C_HPP_ #include template struct I2C { uint8_t readByte(const uint8_t& address, const uint8_t& reg) { return static_cast(this)->readByteImpl(address, reg); } uint16_t readWord(const uint8_t& address, const uint8_t& reg) { return static_cast(this)->readWordImpl(address,reg); } uint8_t writeByte(const uint8_t& address, const uint8_t& data) { return static_cast(this)->writeByteImpl(address,data); } uint8_t writeWord(const uint8_t& address, const uint8_t& reg, const uint8_t& data) { return static_cast(this)->writeWordImpl(address, reg, data); } void writeBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len) { static_cast(this)->writeBufferImpl(address, buffer, len); } void readBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len) { static_cast(this)->readBufferImpl(address, buffer, len); } }; #endif // _I2C_HPP_