CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
II2cBus.h
Go to the documentation of this file.
1#pragma once
2
3#include "cdc_core/IService.h"
4#include "esp_err.h"
5#include <cstdint>
6
7namespace cdc::hal {
8
9// Opaque device handle
10using I2cDeviceHandle = void*;
11
15class II2cBus : public core::IService {
16public:
17 virtual ~II2cBus() = default;
18
24 virtual esp_err_t addDevice(uint8_t addr, I2cDeviceHandle* out_dev) = 0;
25
29 virtual esp_err_t writeReg(I2cDeviceHandle dev, uint8_t reg,
30 const uint8_t* data, size_t len) = 0;
31
35 virtual esp_err_t readReg(I2cDeviceHandle dev, uint8_t reg,
36 uint8_t* data, size_t len) = 0;
37
41 virtual esp_err_t writeRaw(uint8_t addr, const uint8_t* data, size_t len) = 0;
42
46 virtual esp_err_t readRaw(uint8_t addr, uint8_t* data, size_t len) = 0;
47
51 virtual esp_err_t writeReadRaw(uint8_t addr, const uint8_t* wr, size_t wr_len,
52 uint8_t* rd, size_t rd_len) = 0;
53
57 virtual bool probe(uint8_t addr) = 0;
58
62 virtual esp_err_t eepromRead(uint8_t addr, uint16_t offset, uint8_t* buf, size_t len) = 0;
63
67 virtual esp_err_t eepromWrite(uint8_t addr, uint16_t offset, const uint8_t* buf, size_t len) = 0;
68};
69
70// Factory functions for the two buses
71II2cBus* getI2cBus0(); // BQ25895 + TCA9535
72II2cBus* getI2cBus1(); // Expansion header
73
74} // namespace cdc::hal
virtual esp_err_t writeRaw(uint8_t addr, const uint8_t *data, size_t len)=0
virtual esp_err_t writeReadRaw(uint8_t addr, const uint8_t *wr, size_t wr_len, uint8_t *rd, size_t rd_len)=0
virtual esp_err_t addDevice(uint8_t addr, I2cDeviceHandle *out_dev)=0
virtual esp_err_t readReg(I2cDeviceHandle dev, uint8_t reg, uint8_t *data, size_t len)=0
virtual esp_err_t eepromWrite(uint8_t addr, uint16_t offset, const uint8_t *buf, size_t len)=0
virtual ~II2cBus()=default
virtual esp_err_t writeReg(I2cDeviceHandle dev, uint8_t reg, const uint8_t *data, size_t len)=0
virtual esp_err_t eepromRead(uint8_t addr, uint16_t offset, uint8_t *buf, size_t len)=0
virtual bool probe(uint8_t addr)=0
virtual esp_err_t readRaw(uint8_t addr, uint8_t *data, size_t len)=0
II2cBus * getI2cBus1()
Returns singleton instance of I2C bus 1.
Definition I2cBus.cpp:280
II2cBus * getI2cBus0()
Returns singleton instance of I2C bus 0.
Definition I2cBus.cpp:275
void * I2cDeviceHandle
Definition II2cBus.h:10