Hi,
I need to read the registers of the KTD2026 IC as specified in the datasheet.

In short I have to send a read command with the device address (0x30), the address of the register I want to read (0x00 for example) and then I expect the register value from the device.
However, I can't do this because I have to insert a write command first and then the read command (see the code below):
int TwiTx(uint8_t address, uint8_t const * p_data, uint8_t length)
{
int ret;
struct i2c_msg msg;
msg.buf = p_data;
msg.len = length;
msg.flags = I2C_MSG_WRITE;
k_mutex_lock(&i2c_mutex, K_FOREVER);
ret = i2c_transfer(i2c_dev, &msg, 1, address);
k_mutex_unlock(&i2c_mutex);
return ret;
}
int TwiRx(uint8_t address, uint8_t * p_data, uint8_t length)
{
int ret;
struct i2c_msg msg;
msg.buf = p_data;
msg.len = length;
msg.flags = I2C_MSG_READ;
k_mutex_lock(&i2c_mutex, K_FOREVER);
ret = i2c_transfer(i2c_dev, &msg, 1, address);
k_mutex_unlock(&i2c_mutex);
return ret;
}
bool readRegister(uint8_t addr, uint8_t * data)
{
if (TwiTx(0x30, &addr, 1) != 0)
{
return false;
}
if (TwiRx(0x30, data, 1) != 0)
{
return false;
}
return true;
}
int main()
{
...
// Read register 0x00: Reset/Control register.
if (readRegister(0x00, &data) == false)
{
printf("ERROR\n");
}
...
}
In fact, reading the register fails.

How do I read the registers as indicated by the datasheet?
Thanks.