mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-23 16:58:33 +03:00
mode_cardemu: fix ordering of events when switching rx/tx mode
This commit is contained in:
@@ -59,22 +59,25 @@ void card_emu_uart_enable(uint8_t uart_chan, uint8_t rxtx)
|
|||||||
Usart *usart = get_usart_by_chan(uart_chan);
|
Usart *usart = get_usart_by_chan(uart_chan);
|
||||||
switch (rxtx) {
|
switch (rxtx) {
|
||||||
case ENABLE_TX:
|
case ENABLE_TX:
|
||||||
USART_EnableIt(usart, US_IER_TXRDY);
|
|
||||||
USART_DisableIt(usart, ~US_IER_TXRDY);
|
USART_DisableIt(usart, ~US_IER_TXRDY);
|
||||||
USART_SetReceiverEnabled(usart, 0);
|
USART_SetReceiverEnabled(usart, 0);
|
||||||
|
usart->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;
|
||||||
|
USART_EnableIt(usart, US_IER_TXRDY);
|
||||||
USART_SetTransmitterEnabled(usart, 1);
|
USART_SetTransmitterEnabled(usart, 1);
|
||||||
break;
|
break;
|
||||||
case ENABLE_RX:
|
case ENABLE_RX:
|
||||||
USART_SetTransmitterEnabled(usart, 0);
|
|
||||||
USART_SetReceiverEnabled(usart, 1);
|
|
||||||
USART_EnableIt(usart, US_IER_RXRDY);
|
|
||||||
USART_DisableIt(usart, ~US_IER_RXRDY);
|
USART_DisableIt(usart, ~US_IER_RXRDY);
|
||||||
|
USART_SetTransmitterEnabled(usart, 0);
|
||||||
|
usart->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;
|
||||||
|
USART_EnableIt(usart, US_IER_RXRDY);
|
||||||
|
USART_SetReceiverEnabled(usart, 1);
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
default:
|
||||||
USART_SetTransmitterEnabled(usart, 0);
|
USART_SetTransmitterEnabled(usart, 0);
|
||||||
USART_SetReceiverEnabled(usart, 0);
|
USART_SetReceiverEnabled(usart, 0);
|
||||||
USART_DisableIt(usart, 0xFFFFFFFF);
|
USART_DisableIt(usart, 0xFFFFFFFF);
|
||||||
|
usart->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user