19#ifdef I2C_COMMANDS_DISABLED_IF_NOT_USED
75 for(uint8_t i = 0; i<
presets.presets.size();i++){
76 replies.emplace_back(std::string(
presets.presets[i].name) +
":" + std::to_string(i));
104#ifdef I2C_COMMANDS_DISABLED_IF_NOT_USED
124 HAL_I2C_DeInit(&
hi2c);
125#ifdef I2C_COMMANDS_DISABLED_IF_NOT_USED
137 hi2c.Init = this->config;
144 bool flag = HAL_I2C_Master_Transmit(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size, timeout) == HAL_OK;
152 return HAL_I2C_Master_Transmit_DMA(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
158 return HAL_I2C_Master_Transmit_IT(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
164 bool flag = HAL_I2C_Master_Receive(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size, timeout) == HAL_OK;
172 return HAL_I2C_Master_Receive_DMA(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
178 return HAL_I2C_Master_Receive_IT(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
182bool I2CPort::writeMem(
I2CDevice* device,
const uint16_t devAddr,
const uint16_t memAddr,
const uint16_t memAddSize,uint8_t* pData,
const uint16_t size,
const uint32_t timeout,
bool shiftAddr){
185 bool flag = HAL_I2C_Mem_Write(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size, timeout) == HAL_OK;
190bool I2CPort::readMem(
I2CDevice* device,
const uint16_t devAddr,
const uint16_t memAddr,
const uint16_t memAddSize,uint8_t* pData,
const uint16_t size,
const uint32_t timeout,
bool shiftAddr){
193 bool flag = HAL_I2C_Mem_Read(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size, timeout) == HAL_OK;
198bool I2CPort::readMemIT(
I2CDevice* device,
const uint16_t devAddr,
const uint16_t memAddr,
const uint16_t memAddSize,uint8_t* pData,
const uint16_t size,
bool shiftAddr){
201 bool flag = HAL_I2C_Mem_Read_IT(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size) == HAL_OK;
206bool I2CPort::writeMemIT(
I2CDevice* device,
const uint16_t devAddr,
const uint16_t memAddr,
const uint16_t memAddSize,uint8_t* pData,
const uint16_t size,
bool shiftAddr){
209 bool flag = HAL_I2C_Mem_Write_IT(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size) == HAL_OK;
217 bool flag = HAL_I2C_IsDeviceReady(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, trials,timeout) == HAL_OK;
227 if (
hi2c->Instance != this->hi2c.Instance) {
241 if (
hi2c->Instance != this->hi2c.Instance) {
259 return hi2c.State != HAL_I2C_STATE_READY;
263 bool isIsr =
inIsr();
266 BaseType_t taskWoken = 0;
268 portYIELD_FROM_ISR(taskWoken);
276 bool isIsr =
inIsr();
279 BaseType_t taskWoken = 0;
281 portYIELD_FROM_ISR(taskWoken);
void registerCommand(const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
virtual void setCommandsEnabled(bool enable)
virtual CmdHandlerInfo * getCommandHandlerInfo()
CommandHandler(const char *clsname, uint16_t clsid, uint8_t instance=0)
virtual void i2cError(I2CPort *port)
virtual void i2cTxCompleted(I2CPort *port)
virtual void i2cRxCompleted(I2CPort *port)
virtual void startI2CTransfer(I2CPort *port)
virtual void endI2CTransfer(I2CPort *port)
bool writeMemIT(I2CDevice *device, const uint16_t devAddr, const uint16_t memAddr, const uint16_t memAddSize, uint8_t *pData, const uint16_t size, bool shiftAddr=true)
cpp_freertos::BinarySemaphore semaphore
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
const I2CPortHardwareConfig & presets
void I2cError(I2C_HandleTypeDef *hi2c)
bool isDeviceReady(I2CDevice *device, const uint16_t devAddr, const uint32_t trials, uint32_t timeout, bool shiftAddr=true)
bool transmitMasterDMA(I2CDevice *device, const uint16_t addr, uint8_t *pData, const uint16_t size, bool shiftAddr=true)
bool receiveMasterIT(I2CDevice *device, const uint16_t addr, uint8_t *pData, const uint16_t size, bool shiftAddr=true)
bool receiveMaster(I2CDevice *device, const uint16_t addr, uint8_t *pData, const uint16_t size, const uint32_t timeout, bool shiftAddr=true)
bool transmitMaster(I2CDevice *device, const uint16_t addr, uint8_t *pData, const uint16_t size, const uint32_t timeout, bool shiftAddr=true)
bool readMem(I2CDevice *device, const uint16_t devAddr, const uint16_t memAddr, const uint16_t memAddSize, uint8_t *pData, const uint16_t size, const uint32_t timeout, bool shiftAddr=true)
void freePort(I2CDevice *device)
bool readMemIT(I2CDevice *device, const uint16_t devAddr, const uint16_t memAddr, const uint16_t memAddSize, uint8_t *pData, const uint16_t size, bool shiftAddr=true)
I2CPort(I2C_HandleTypeDef &hi2c, const I2CPortHardwareConfig &presets, uint8_t instance=0)
void I2cTxCplt(I2C_HandleTypeDef *hi2c)
void takePort(I2CDevice *device)
void I2cRxCplt(I2C_HandleTypeDef *hi2c)
static ClassIdentifier info
bool writeMem(I2CDevice *device, const uint16_t devAddr, const uint16_t memAddr, const uint16_t memAddSize, uint8_t *pData, const uint16_t size, const uint32_t timeout, bool shiftAddr=true)
void configurePort(I2C_InitTypeDef *config)
void setSpeedPreset(uint8_t preset)
bool receiveMasterDMA(I2CDevice *device, const uint16_t addr, uint8_t *pData, const uint16_t size, bool shiftAddr=true)
I2CDevice * currentDevice
bool transmitMasterIT(I2CDevice *device, const uint16_t addr, uint8_t *pData, const uint16_t size, bool shiftAddr=true)
void restoreFlashDelayed()
static struct @024127060247016123033304002117326322243354210111 data
bool Flash_Write(uint16_t adr, uint16_t dat)
bool Flash_Read(uint16_t adr, uint16_t *buf, bool checkempty=true)