BV UART: add ability to exit in transceive command

This commit is contained in:
King Kévin 2018-03-22 14:30:50 +01:00
parent 2b67bd9608
commit d8f04beb3f
1 changed files with 10 additions and 3 deletions

View File

@ -322,7 +322,7 @@ static void busvoodoo_uart_command_transceive(void* argument)
printf("press 5 times escape to exit\n");
char last_c = 0; // last user character received
uint8_t esc_count = 0; // number of times escape has press received
while (esc_count<5) { // check for escape sequence
while (true) { // check for escape sequence
if (user_input_available) { // check if user wants to transmit something
char c = user_input_get(); // get user input
if (0x1b==c) { // user pressed escape
@ -332,8 +332,15 @@ static void busvoodoo_uart_command_transceive(void* argument)
esc_count++; // increment escape count
}
last_c = c; // remember key press
usart_send_blocking(USART(BUSVOODOO_USART_ID), c); // send user character
busvoodoo_led_red_pulse(BUSVOODOO_LED_PULSE); // enable red LED to show transmission
if (esc_count<5) { // check for escape sequence
while ((0==(USART_SR(USART(BUSVOODOO_USART_ID)) & USART_SR_TXE) && !user_input_available)); // wait for transmit buffer to be empty
if (USART_SR(USART(BUSVOODOO_USART_ID)) & USART_SR_TXE) { // we can send a character
usart_send_blocking(USART(BUSVOODOO_USART_ID), c); // send user character
busvoodoo_led_red_pulse(BUSVOODOO_LED_PULSE); // enable red LED to show transmission
}
} else { // user wants to exit
break; // exit infinite loop
}
}
if ((USART_SR(USART(BUSVOODOO_USART_ID)) & USART_SR_RXNE)) { // verify if data has been received
char c = usart_recv(USART(BUSVOODOO_USART_ID)); // receive character