Make I2C_SlaveTransferHandleIRQ() call handle->callback() upon every kI2C_SlaveReceiveEvent and pass the received byte as handle->userData. Given the variable-length protocol design of the UHK, this allows for vastly supreme robustness.
This commit is contained in:
@@ -1518,8 +1518,11 @@ void I2C_SlaveTransferHandleIRQ(I2C_Type *base, void *i2cHandle)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* Slave receive, master writing to slave. */
|
||||||
|
uint8_t data = *(uint8_t*)handle->userData = base->D;
|
||||||
|
|
||||||
/* If we're out of data, invoke callback to get more. */
|
/* If we're out of data, invoke callback to get more. */
|
||||||
if ((!xfer->data) || (!xfer->dataSize))
|
if (true || (!xfer->data) || (!xfer->dataSize))
|
||||||
{
|
{
|
||||||
xfer->event = kI2C_SlaveReceiveEvent;
|
xfer->event = kI2C_SlaveReceiveEvent;
|
||||||
|
|
||||||
@@ -1532,9 +1535,6 @@ void I2C_SlaveTransferHandleIRQ(I2C_Type *base, void *i2cHandle)
|
|||||||
xfer->transferredCount = 0;
|
xfer->transferredCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Slave receive, master writing to slave. */
|
|
||||||
uint8_t data = base->D;
|
|
||||||
|
|
||||||
if (handle->transfer.dataSize)
|
if (handle->transfer.dataSize)
|
||||||
{
|
{
|
||||||
/* Receive data. */
|
/* Receive data. */
|
||||||
|
|||||||
Reference in New Issue
Block a user