Loading lib/mcp2221a_i2c_win.cpp +20 −11 Original line number Diff line number Diff line Loading @@ -84,8 +84,11 @@ namespace MCP2221A { unsigned char dummy = 0; for (unsigned char addr = I2C_MIN_ADDR; addr < I2C_MAX_ADDR; addr++) { if ((ret = Mcp2221_I2cWrite(handle_, sizeof(dummy), addr, I2C_7BIT_ADDRESS, &dummy)) < 0) { throw I2CMasterException(get_error_string(ret)); // if ((ret = Mcp2221_I2cWrite(handle_, sizeof(dummy), addr, I2C_7BIT_ADDRESS, &dummy)) < 0) { // throw I2CMasterException(get_error_string(ret)); // } if ((ret = Mcp2221_I2cRead(handle_, sizeof(dummy), addr, I2C_7BIT_ADDRESS, &dummy)) < 0) { continue; } slaves_addr_.push_back(addr); } Loading @@ -93,23 +96,29 @@ namespace MCP2221A { void I2CMaster::set_slave_address(uint8_t addr) { // Windows implementation to set slave address if (addr < I2C_MIN_ADDR || addr >= I2C_MAX_ADDR) { throw I2CMasterException("Invalid slave address: " + to_string(addr)); } bool I2CMaster::check_slave_connected(uint8_t addr) { // Windows implementation to check if slave is connected return false; current_slave_addr_ = addr; } void I2CMaster::send(uint8_t slave_addr, uint8_t *data, size_t length) { // Windows implementation to send data int ret = 0; if ((ret = Mcp2221_I2cWrite(handle_, static_cast<unsigned int>(length), slave_addr, I2C_7BIT_ADDRESS, data)) < 0) { throw I2CMasterException("I2C write failed: " + get_error_string(ret)); } } void I2CMaster::receive(uint8_t slave_addr, uint8_t *data, size_t length) { // Windows implementation to receive data int ret = 0; if ((ret = Mcp2221_I2cRead(handle_, static_cast<unsigned int>(length), slave_addr, I2C_7BIT_ADDRESS, data)) < 0) { throw I2CMasterException("I2C read failed: " + get_error_string(ret)); } } void I2CMaster::read_register(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, size_t length) Loading Loading
lib/mcp2221a_i2c_win.cpp +20 −11 Original line number Diff line number Diff line Loading @@ -84,8 +84,11 @@ namespace MCP2221A { unsigned char dummy = 0; for (unsigned char addr = I2C_MIN_ADDR; addr < I2C_MAX_ADDR; addr++) { if ((ret = Mcp2221_I2cWrite(handle_, sizeof(dummy), addr, I2C_7BIT_ADDRESS, &dummy)) < 0) { throw I2CMasterException(get_error_string(ret)); // if ((ret = Mcp2221_I2cWrite(handle_, sizeof(dummy), addr, I2C_7BIT_ADDRESS, &dummy)) < 0) { // throw I2CMasterException(get_error_string(ret)); // } if ((ret = Mcp2221_I2cRead(handle_, sizeof(dummy), addr, I2C_7BIT_ADDRESS, &dummy)) < 0) { continue; } slaves_addr_.push_back(addr); } Loading @@ -93,23 +96,29 @@ namespace MCP2221A { void I2CMaster::set_slave_address(uint8_t addr) { // Windows implementation to set slave address if (addr < I2C_MIN_ADDR || addr >= I2C_MAX_ADDR) { throw I2CMasterException("Invalid slave address: " + to_string(addr)); } bool I2CMaster::check_slave_connected(uint8_t addr) { // Windows implementation to check if slave is connected return false; current_slave_addr_ = addr; } void I2CMaster::send(uint8_t slave_addr, uint8_t *data, size_t length) { // Windows implementation to send data int ret = 0; if ((ret = Mcp2221_I2cWrite(handle_, static_cast<unsigned int>(length), slave_addr, I2C_7BIT_ADDRESS, data)) < 0) { throw I2CMasterException("I2C write failed: " + get_error_string(ret)); } } void I2CMaster::receive(uint8_t slave_addr, uint8_t *data, size_t length) { // Windows implementation to receive data int ret = 0; if ((ret = Mcp2221_I2cRead(handle_, static_cast<unsigned int>(length), slave_addr, I2C_7BIT_ADDRESS, data)) < 0) { throw I2CMasterException("I2C read failed: " + get_error_string(ret)); } } void I2CMaster::read_register(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, size_t length) Loading