SiLabs: serial_api: Unblock sleep correctly on TX side

Previous commit that added _intern versions of abort functions
did not change calls of TX abort, so sleep would never unblock.
pull/1501/head
Mikko Polojarvi 2015-12-15 13:40:39 +02:00 committed by Steven Cooreman
parent 96ff20491c
commit ff494c4000
1 changed files with 4 additions and 4 deletions

View File

@ -1908,7 +1908,7 @@ int serial_tx_irq_handler_asynch(serial_t *obj)
} }
}else if (obj->serial.periph.leuart->IF & LEUART_IF_TXC){ }else if (obj->serial.periph.leuart->IF & LEUART_IF_TXC){
/* Last byte has been successfully transmitted. Stop the procedure */ /* Last byte has been successfully transmitted. Stop the procedure */
serial_tx_abort_asynch(obj); serial_tx_abort_asynch_intern(obj, 1);
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events; return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
} }
} else { } else {
@ -1925,7 +1925,7 @@ int serial_tx_irq_handler_asynch(serial_t *obj)
} }
} else if (obj->serial.periph.uart->IF & USART_IF_TXC) { } else if (obj->serial.periph.uart->IF & USART_IF_TXC) {
/* Last byte has been successfully transmitted. Stop the procedure */ /* Last byte has been successfully transmitted. Stop the procedure */
serial_tx_abort_asynch(obj); serial_tx_abort_asynch_intern(obj, 1);
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events; return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
} }
} }
@ -2099,13 +2099,13 @@ int serial_irq_handler_asynch(serial_t *obj)
if(LEUART_REF_VALID(obj->serial.periph.leuart)) { if(LEUART_REF_VALID(obj->serial.periph.leuart)) {
/* Clean up */ /* Clean up */
serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false; serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false;
serial_tx_abort_asynch(obj); serial_tx_abort_asynch_intern(obj, 1);
/* Notify CPP land of completion */ /* Notify CPP land of completion */
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events; return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
}else{ }else{
/* Clean up */ /* Clean up */
serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false; serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false;
serial_tx_abort_asynch(obj); serial_tx_abort_asynch_intern(obj, 1);
/* Notify CPP land of completion */ /* Notify CPP land of completion */
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events; return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
} }