37#ifdef I2C_COMMANDS_DISABLED_IF_NOT_USED
94 replies.emplace_back(std::string(
presets.
presets[i].name) +
":" + std::to_string(i));
122#ifdef I2C_COMMANDS_DISABLED_IF_NOT_USED
142 HAL_I2C_DeInit(&
hi2c);
143#ifdef I2C_COMMANDS_DISABLED_IF_NOT_USED
162 bool flag = HAL_I2C_Master_Transmit(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size, timeout) == HAL_OK;
170 return HAL_I2C_Master_Transmit_DMA(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
176 return HAL_I2C_Master_Transmit_IT(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
182 bool flag = HAL_I2C_Master_Receive(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size, timeout) == HAL_OK;
190 return HAL_I2C_Master_Receive_DMA(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
196 return HAL_I2C_Master_Receive_IT(&this->
hi2c, shiftAddr ? addr << 1 : addr, pData, size) == HAL_OK;
200bool 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){
203 bool flag = HAL_I2C_Mem_Write(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size, timeout) == HAL_OK;
208bool 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){
211 bool flag = HAL_I2C_Mem_Read(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size, timeout) == HAL_OK;
216bool 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){
219 bool flag = HAL_I2C_Mem_Read_IT(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size) == HAL_OK;
224bool 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){
227 bool flag = HAL_I2C_Mem_Write_IT(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, memAddr, memAddSize, pData, size) == HAL_OK;
235 bool flag = HAL_I2C_IsDeviceReady(&this->
hi2c, shiftAddr ? devAddr << 1 : devAddr, trials,timeout) == HAL_OK;
245 if (
hi2c->Instance != this->hi2c.Instance) {
259 if (
hi2c->Instance != this->hi2c.Instance) {
277 return hi2c.State != HAL_I2C_STATE_READY;
281 bool isIsr =
inIsr();
284 BaseType_t taskWoken = 0;
286 portYIELD_FROM_ISR(taskWoken);
294 bool isIsr =
inIsr();
297 BaseType_t taskWoken = 0;
299 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()
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)
const std::span< const I2CPortHardwareConfig_preset > presets
I2CPortHardwareConfig_preset getPreset(uint8_t idx) const
const bool canChangeSpeed
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()
bool GiveFromISR(BaseType_t *pxHigherPriorityTaskWoken)
bool TakeFromISR(BaseType_t *pxHigherPriorityTaskWoken)
bool Take(TickType_t Timeout=portMAX_DELAY)
bool Flash_Write(uint16_t adr, uint16_t dat)
bool Flash_Read(uint16_t adr, uint16_t *buf, bool checkempty=true)