Hi, Before creating an issue I want to be sure some points about I2C upper layer driver. I did not get the implementation exactly. My question about upper layer functions is("nuttx/drivers/i2c/i2c_slave_driver.c"):
- Read operation (i2c_slave_read/i2c_slave_driver.c:291) is expecting "priv->read_length" should be updated, which is only updates on "i2c_slave_callback" function (i2c_slave_driver.c:492) but i2c_slave_callback should not be called from an isr due to "nxmutex_lock" because assertion will be trigger in "nxsem_wait()" which called from "nxmutex_lock". Current implementation calls related callback function in isr, read function does not jumps to lower layer read function and expecting a value should change(might on an isr) but it shouldn't be on isr due to locking mechanism. How it should be implemented? Maybe I am missing I did not see any driver is creating a thread to checks data as polling method except uorb system, I thought i2c slave driver does not require a thread to check data lines. Do you have any suggestions to that? Note: It is my first mail, I hope I did not do anything wrong. Best Regards