@@ -63,28 +63,33 @@ public:
63
63
serial.end ();
64
64
}
65
65
66
+ void reset_buffers () {
67
+ recv_msg = " " ;
68
+ peeked_char = -1 ;
69
+ }
70
+
66
71
void transmit_and_check_msg (const String &msg_append, bool perform_assert = true ) {
72
+ reset_buffers ();
67
73
delay (100 );
68
74
serial.print (" Hello from Serial" + String (uart_num) + " " + msg_append);
69
75
serial.flush ();
70
76
delay (100 );
71
77
if (perform_assert) {
72
78
TEST_ASSERT_EQUAL_STRING ((" Hello from Serial" + String (uart_num) + " " + msg_append).c_str (), recv_msg.c_str ());
79
+ log_d (" UART%d received message: %s\n " , uart_num, recv_msg.c_str ());
73
80
}
74
81
}
75
82
76
83
void onReceive () {
77
84
char c;
78
- recv_msg = " " ;
79
85
size_t available = serial.available ();
80
- if (available != 0 ) {
86
+ if (peeked_char == - 1 ) {
81
87
peeked_char = serial.peek ();
82
88
}
83
89
while (available--) {
84
90
c = (char )serial.read ();
85
91
recv_msg += c;
86
92
}
87
- log_d (" UART%d received message: %s\n " , uart_num, recv_msg.c_str ());
88
93
}
89
94
};
90
95
@@ -354,31 +359,24 @@ void change_pins_test(void) {
354
359
esp_rom_gpio_connect_out_signal (config.default_rx_pin , SIG_GPIO_OUT_IDX, false , false );
355
360
}
356
361
357
- log_d (" Swapping UART pins" );
362
+ log_d (" Swapping UART pins and testing transmission " );
358
363
359
364
if (TEST_UART_NUM == 1 ) {
360
- Serial1.setPins (NEW_RX1, NEW_TX1);
361
- TEST_ASSERT_EQUAL (NEW_RX1, uart_get_RxPin (1 ));
362
- TEST_ASSERT_EQUAL (NEW_TX1, uart_get_TxPin (1 ));
365
+ UARTTestConfig& config = *uart_test_configs[0 ];
366
+ config.serial .setPins (NEW_RX1, NEW_TX1);
367
+ TEST_ASSERT_EQUAL (NEW_RX1, uart_get_RxPin (config.uart_num ));
368
+ TEST_ASSERT_EQUAL (NEW_TX1, uart_get_TxPin (config.uart_num ));
369
+
370
+ uart_internal_loopback (config.uart_num , NEW_RX1);
371
+ config.transmit_and_check_msg (" using new pins" );
363
372
} else {
364
373
for (int i = 0 ; i < TEST_UART_NUM; i++) {
365
374
UARTTestConfig& config = *uart_test_configs[i];
366
375
UARTTestConfig& next_uart = *uart_test_configs[(i + 1 ) % TEST_UART_NUM];
367
376
config.serial .setPins (next_uart.default_rx_pin , next_uart.default_tx_pin );
368
377
TEST_ASSERT_EQUAL (uart_get_RxPin (config.uart_num ), next_uart.default_rx_pin );
369
378
TEST_ASSERT_EQUAL (uart_get_TxPin (config.uart_num ), next_uart.default_tx_pin );
370
- config.begin (115200 );
371
- }
372
- }
373
379
374
- log_d (" Re-enabling UART loopback" );
375
-
376
- if (TEST_UART_NUM == 1 ) {
377
- uart_internal_loopback (1 , NEW_RX1);
378
- } else {
379
- for (int i = 0 ; i < TEST_UART_NUM; i++) {
380
- UARTTestConfig& config = *uart_test_configs[i];
381
- UARTTestConfig& next_uart = *uart_test_configs[(i + 1 ) % TEST_UART_NUM];
382
380
uart_internal_loopback (config.uart_num , next_uart.default_rx_pin );
383
381
config.transmit_and_check_msg (" using new pins" );
384
382
}
0 commit comments