1*ab1327c3SLei YU #pragma once 2*ab1327c3SLei YU 3*ab1327c3SLei YU #include "i2c_interface.hpp" 4*ab1327c3SLei YU 5*ab1327c3SLei YU namespace i2c 6*ab1327c3SLei YU { 7*ab1327c3SLei YU 8*ab1327c3SLei YU class I2CDevice : public I2CInterface 9*ab1327c3SLei YU { 10*ab1327c3SLei YU private: 11*ab1327c3SLei YU I2CDevice() = delete; 12*ab1327c3SLei YU 13*ab1327c3SLei YU explicit I2CDevice(uint8_t busId, uint8_t devAddr) 14*ab1327c3SLei YU { 15*ab1327c3SLei YU // TODO 16*ab1327c3SLei YU (void)busId; 17*ab1327c3SLei YU (void)devAddr; 18*ab1327c3SLei YU } 19*ab1327c3SLei YU 20*ab1327c3SLei YU public: 21*ab1327c3SLei YU virtual ~I2CDevice() = default; 22*ab1327c3SLei YU 23*ab1327c3SLei YU /** @copydoc I2CInterface::read(uint8_t&) */ 24*ab1327c3SLei YU void read(uint8_t& data) override; 25*ab1327c3SLei YU 26*ab1327c3SLei YU /** @copydoc I2CInterface::read(uint8_t,uint8_t&) */ 27*ab1327c3SLei YU void read(uint8_t addr, uint8_t& data) override; 28*ab1327c3SLei YU 29*ab1327c3SLei YU /** @copydoc I2CInterface::read(uint8_t,uint16_t&) */ 30*ab1327c3SLei YU void read(uint8_t addr, uint16_t& data) override; 31*ab1327c3SLei YU 32*ab1327c3SLei YU /** @copydoc I2CInterface::read(uint8_t,uint8_t&,uint8_t*) */ 33*ab1327c3SLei YU void read(uint8_t addr, uint8_t& size, uint8_t* data) override; 34*ab1327c3SLei YU 35*ab1327c3SLei YU /** @copydoc I2CInterface::write(uint8_t) */ 36*ab1327c3SLei YU void write(uint8_t data) override; 37*ab1327c3SLei YU 38*ab1327c3SLei YU /** @copydoc I2CInterface::write(uint8_t,uint8_t) */ 39*ab1327c3SLei YU void write(uint8_t addr, uint8_t data) override; 40*ab1327c3SLei YU 41*ab1327c3SLei YU /** @copydoc I2CInterface::write(uint8_t,uint16_t) */ 42*ab1327c3SLei YU void write(uint8_t addr, uint16_t data) override; 43*ab1327c3SLei YU 44*ab1327c3SLei YU /** @copydoc I2CInterface::write(uint8_t,uint8_t,const uint8_t*) */ 45*ab1327c3SLei YU void write(uint8_t addr, uint8_t size, const uint8_t* data) override; 46*ab1327c3SLei YU 47*ab1327c3SLei YU /** @brief Create an I2CInterface instance 48*ab1327c3SLei YU * 49*ab1327c3SLei YU * @param[in] busId - The i2c bus ID 50*ab1327c3SLei YU * @param[in] devAddr - The device address of the i2c 51*ab1327c3SLei YU * 52*ab1327c3SLei YU * @return The unique_ptr holding the I2CInterface 53*ab1327c3SLei YU */ 54*ab1327c3SLei YU static std::unique_ptr<I2CInterface> create(uint8_t busId, uint8_t devAddr); 55*ab1327c3SLei YU }; 56*ab1327c3SLei YU 57*ab1327c3SLei YU } // namespace i2c 58