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