mirror of https://github.com/ARMmbed/mbed-os.git
SPI should notify internal complete
parent
50e79a45f8
commit
e96f6bf036
|
@ -321,7 +321,10 @@ static void spi_rx_irq(IRQn_Type irq_num, uint32_t index)
|
||||||
spi_async_read(obj);
|
spi_async_read(obj);
|
||||||
} else {
|
} else {
|
||||||
if (obj->rx_buff.buffer && obj->tx_buff.buffer && obj->tx_buff.pos < obj->tx_buff.length) {
|
if (obj->rx_buff.buffer && obj->tx_buff.buffer && obj->tx_buff.pos < obj->tx_buff.length) {
|
||||||
spi_data[obj->spi.index].event = SPI_EVENT_COMPLETE;
|
spi_data[obj->spi.index].event = SPI_EVENT_INTERNAL_TRANSFER_COMPLETE;
|
||||||
|
if (spi_data[obj->spi.index].wanted_events & SPI_EVENT_COMPLETE) {
|
||||||
|
spi_data[obj->spi.index].event |= SPI_EVENT_COMPLETE;
|
||||||
|
}
|
||||||
spi_irqs_set(obj, 0);
|
spi_irqs_set(obj, 0);
|
||||||
spi_data[obj->spi.index].async_obj = NULL;
|
spi_data[obj->spi.index].async_obj = NULL;
|
||||||
((void (*)())spi_data[obj->spi.index].async_callback)();
|
((void (*)())spi_data[obj->spi.index].async_callback)();
|
||||||
|
@ -331,7 +334,10 @@ static void spi_rx_irq(IRQn_Type irq_num, uint32_t index)
|
||||||
}
|
}
|
||||||
if (obj->tx_buff.buffer) {
|
if (obj->tx_buff.buffer) {
|
||||||
if (obj->tx_buff.pos == obj->tx_buff.length) {
|
if (obj->tx_buff.pos == obj->tx_buff.length) {
|
||||||
spi_data[obj->spi.index].event = SPI_EVENT_COMPLETE;
|
spi_data[obj->spi.index].event = SPI_EVENT_INTERNAL_TRANSFER_COMPLETE;
|
||||||
|
if (spi_data[obj->spi.index].wanted_events & SPI_EVENT_COMPLETE) {
|
||||||
|
spi_data[obj->spi.index].event |= SPI_EVENT_COMPLETE;
|
||||||
|
}
|
||||||
spi_irqs_set(obj, 0);
|
spi_irqs_set(obj, 0);
|
||||||
spi_data[obj->spi.index].async_obj = NULL;
|
spi_data[obj->spi.index].async_obj = NULL;
|
||||||
((void (*)())spi_data[obj->spi.index].async_callback)();
|
((void (*)())spi_data[obj->spi.index].async_callback)();
|
||||||
|
@ -340,7 +346,10 @@ static void spi_rx_irq(IRQn_Type irq_num, uint32_t index)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (obj->rx_buff.pos == obj->rx_buff.length) {
|
if (obj->rx_buff.pos == obj->rx_buff.length) {
|
||||||
spi_data[obj->spi.index].event = SPI_EVENT_COMPLETE;
|
spi_data[obj->spi.index].event = SPI_EVENT_INTERNAL_TRANSFER_COMPLETE;
|
||||||
|
if (spi_data[obj->spi.index].wanted_events & SPI_EVENT_COMPLETE) {
|
||||||
|
spi_data[obj->spi.index].event |= SPI_EVENT_COMPLETE;
|
||||||
|
}
|
||||||
spi_irqs_set(obj, 0);
|
spi_irqs_set(obj, 0);
|
||||||
spi_data[obj->spi.index].async_obj = NULL;
|
spi_data[obj->spi.index].async_obj = NULL;
|
||||||
((void (*)())spi_data[obj->spi.index].async_callback)();
|
((void (*)())spi_data[obj->spi.index].async_callback)();
|
||||||
|
|
Loading…
Reference in New Issue