@@ -321,7 +321,10 @@ static void spi_rx_irq(IRQn_Type irq_num, uint32_t index)
321
321
spi_async_read (obj );
322
322
} else {
323
323
if (obj -> rx_buff .buffer && obj -> tx_buff .buffer && obj -> tx_buff .pos < obj -> tx_buff .length ) {
324
- spi_data [obj -> spi .index ].event = SPI_EVENT_COMPLETE ;
324
+ spi_data [obj -> spi .index ].event = SPI_EVENT_INTERNAL_TRANSFER_COMPLETE ;
325
+ if (spi_data [obj -> spi .index ].wanted_events & SPI_EVENT_COMPLETE ) {
326
+ spi_data [obj -> spi .index ].event |= SPI_EVENT_COMPLETE ;
327
+ }
325
328
spi_irqs_set (obj , 0 );
326
329
spi_data [obj -> spi .index ].async_obj = NULL ;
327
330
((void (* )())spi_data [obj -> spi .index ].async_callback )();
@@ -331,7 +334,10 @@ static void spi_rx_irq(IRQn_Type irq_num, uint32_t index)
331
334
}
332
335
if (obj -> tx_buff .buffer ) {
333
336
if (obj -> tx_buff .pos == obj -> tx_buff .length ) {
334
- spi_data [obj -> spi .index ].event = SPI_EVENT_COMPLETE ;
337
+ spi_data [obj -> spi .index ].event = SPI_EVENT_INTERNAL_TRANSFER_COMPLETE ;
338
+ if (spi_data [obj -> spi .index ].wanted_events & SPI_EVENT_COMPLETE ) {
339
+ spi_data [obj -> spi .index ].event |= SPI_EVENT_COMPLETE ;
340
+ }
335
341
spi_irqs_set (obj , 0 );
336
342
spi_data [obj -> spi .index ].async_obj = NULL ;
337
343
((void (* )())spi_data [obj -> spi .index ].async_callback )();
@@ -340,7 +346,10 @@ static void spi_rx_irq(IRQn_Type irq_num, uint32_t index)
340
346
}
341
347
} else {
342
348
if (obj -> rx_buff .pos == obj -> rx_buff .length ) {
343
- spi_data [obj -> spi .index ].event = SPI_EVENT_COMPLETE ;
349
+ spi_data [obj -> spi .index ].event = SPI_EVENT_INTERNAL_TRANSFER_COMPLETE ;
350
+ if (spi_data [obj -> spi .index ].wanted_events & SPI_EVENT_COMPLETE ) {
351
+ spi_data [obj -> spi .index ].event |= SPI_EVENT_COMPLETE ;
352
+ }
344
353
spi_irqs_set (obj , 0 );
345
354
spi_data [obj -> spi .index ].async_obj = NULL ;
346
355
((void (* )())spi_data [obj -> spi .index ].async_callback )();
0 commit comments