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