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

Reply via email to