Skip to content

Commit df73cb4

Browse files
authored
fix(uart): fixes uart.ino CI test code
1 parent 4c62634 commit df73cb4

File tree

1 file changed

+86
-86
lines changed

1 file changed

+86
-86
lines changed

tests/validation/uart/uart.ino

Lines changed: 86 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
/* UART test
2-
*
3-
* This test is using UART0 (Serial) only for reporting test status and helping with the auto
4-
* baudrate detection test.
5-
* UART1 (Serial1) and UART2 (Serial2), where available, are used for testing.
6-
*/
2+
3+
This test is using UART0 (Serial) only for reporting test status and helping with the auto
4+
baudrate detection test.
5+
UART1 (Serial1) and UART2 (Serial2), where available, are used for testing.
6+
*/
77

88
#include <unity.h>
99
#include "HardwareSerial.h"
@@ -16,42 +16,42 @@
1616
// UART0 TX | SOC_TX0 | 1 | 43 | 43 | 21 | 16 | 24 | 37 |
1717
// UART1 RX | RX1 | 26 | 4 | 15 | 18 | 4 | 0 | 11 |
1818
// UART1 TX | TX1 | 27 | 5 | 16 | 19 | 5 | 1 | 10 |
19-
// UART2 RX | RX2 | 4 | -- | 19 | -- | -- | -- | -- |
20-
// UART2 TX | TX2 | 25 | -- | 20 | -- | -- | -- | -- |
19+
// UART2 RX | RX2 | 4 | -- | 19 | -- | -- | -- | UU |
20+
// UART2 TX | TX2 | 25 | -- | 20 | -- | -- | -- | UU |
2121

2222
/*
23-
* For each UART:
24-
*
25-
* terminal
26-
* | ^
27-
* v UART0 |
28-
* RX ^ TX
29-
* |
30-
* report status
31-
* |
32-
* TX <---> RX
33-
* UARTx
34-
*/
23+
For each UART:
24+
25+
terminal
26+
| ^
27+
v UART0 |
28+
RX ^ TX
29+
|
30+
report status
31+
|
32+
TX <---> RX
33+
UARTx
34+
*/
3535

3636
typedef struct test_uart_t
3737
{
3838
uint8_t rx_pin;
3939
uint8_t tx_pin;
40-
HardwareSerial &serial;
40+
HardwareSerial *serial;
4141
} test_uart_t;
4242

43-
const test_uart_t test_uarts[SOC_UART_NUM] = {
43+
const test_uart_t test_uarts[SOC_UART_HP_NUM] = {
4444
{
4545
.rx_pin = SOC_RX0,
4646
.tx_pin = SOC_TX0,
47-
.serial = Serial,
47+
.serial = &Serial,
4848
},
4949
{
5050
.rx_pin = RX1,
5151
.tx_pin = TX1,
52-
.serial = Serial1,
52+
.serial = &Serial1,
5353
},
54-
#if SOC_UART_NUM >= 3
54+
#if SOC_UART_HP_NUM >= 3
5555
{
5656
#ifdef RX2
5757
.rx_pin = RX2,
@@ -60,10 +60,10 @@ const test_uart_t test_uarts[SOC_UART_NUM] = {
6060
.rx_pin = RX1,
6161
.tx_pin = TX1,
6262
#endif
63-
.serial = Serial2,
63+
.serial = &Serial2,
6464
},
65-
#endif // SOC_UART_NUM >= 3
66-
#if SOC_UART_NUM >= 4
65+
#endif // SOC_UART_HP_NUM >= 3
66+
#if SOC_UART_HP_NUM >= 4
6767
{
6868
#ifdef RX3
6969
.rx_pin = RX3,
@@ -72,10 +72,10 @@ const test_uart_t test_uarts[SOC_UART_NUM] = {
7272
.rx_pin = RX1,
7373
.tx_pin = TX1,
7474
#endif
75-
.serial = Serial3,
75+
.serial = &Serial3,
7676
},
77-
#endif // SOC_UART_NUM >= 4
78-
#if SOC_UART_NUM >= 5
77+
#endif // SOC_UART_HP_NUM >= 4
78+
#if SOC_UART_HP_NUM >= 5
7979
{
8080
#ifdef RX4
8181
.rx_pin = RX4,
@@ -84,16 +84,16 @@ const test_uart_t test_uarts[SOC_UART_NUM] = {
8484
.rx_pin = RX1,
8585
.tx_pin = TX1,
8686
#endif
87-
.serial = Serial4,
87+
.serial = &Serial4,
8888
}
89-
#endif // SOC_UART_NUM >= 5
89+
#endif // SOC_UART_HP_NUM >= 5
9090
};
9191

9292
/* Utility global variables */
9393

9494
uint8_t i;
9595
static String recv_msg = "";
96-
static int peeked_char[SOC_UART_NUM];
96+
static int peeked_char[SOC_UART_HP_NUM];
9797

9898
/* Utility functions */
9999

@@ -102,8 +102,8 @@ extern int8_t uart_get_TxPin(uint8_t uart_num);
102102

103103
// This function starts all the available test UARTs
104104
void start_serial(unsigned long baudrate = 115200) {
105-
for (i = 1; i < SOC_UART_NUM; i++) {
106-
test_uarts[i].serial.begin(baudrate, SERIAL_8N1, test_uarts[i].rx_pin, test_uarts[i].tx_pin);
105+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
106+
test_uarts[i].serial->begin(baudrate, SERIAL_8N1, test_uarts[i].rx_pin, test_uarts[i].tx_pin);
107107
while (!test_uarts[i].serial) {
108108
delay(10);
109109
}
@@ -112,17 +112,17 @@ void start_serial(unsigned long baudrate = 115200) {
112112

113113
// This function stops all the available test UARTs
114114
void stop_serial() {
115-
for (i = 1; i < SOC_UART_NUM; i++) {
116-
test_uarts[i].serial.end();
115+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
116+
test_uarts[i].serial->end();
117117
}
118118
}
119119

120120
// This function transmits a message and checks if it was received correctly
121121
void transmit_and_check_msg(const String msg_append, bool perform_assert = true) {
122122
delay(100); // Wait for some settings changes to take effect
123-
for (i = 1; i < SOC_UART_NUM; i++) {
124-
test_uarts[i].serial.print("Hello from Serial" + String(i) + " (UART" + String(i) + ") >>> via loopback >>> Serial" + String(i) + " (UART" + String(i) + ") " + msg_append);
125-
test_uarts[i].serial.flush();
123+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
124+
test_uarts[i].serial->print("Hello from Serial" + String(i) + " (UART" + String(i) + ") >>> via loopback >>> Serial" + String(i) + " (UART" + String(i) + ") " + msg_append);
125+
test_uarts[i].serial->flush();
126126
delay(100);
127127
if (perform_assert) {
128128
TEST_ASSERT_EQUAL_STRING(("Hello from Serial" + String(i) + " (UART" + String(i) + ") >>> via loopback >>> Serial" + String(i) + " (UART" + String(i) + ") " + msg_append).c_str(), recv_msg.c_str());
@@ -133,21 +133,21 @@ void transmit_and_check_msg(const String msg_append, bool perform_assert = true)
133133
/* Tasks */
134134

135135
/*
136-
// This task is used to send a message after a delay to test the auto baudrate detection
137-
void task_delayed_msg(void *pvParameters) {
136+
// This task is used to send a message after a delay to test the auto baudrate detection
137+
void task_delayed_msg(void *pvParameters) {
138138
HardwareSerial *selected_serial;
139139
140-
#if SOC_UART_NUM >= 3
140+
#if SOC_UART_HP_NUM >= 3
141141
selected_serial = &Serial1;
142-
#else
142+
#else
143143
selected_serial = &Serial;
144-
#endif
144+
#endif
145145
146146
delay(2000);
147147
selected_serial->println("Hello from Serial to detect baudrate");
148148
selected_serial->flush();
149149
vTaskDelete(NULL);
150-
}
150+
}
151151
*/
152152

153153
/* Unity functions */
@@ -156,10 +156,10 @@ void task_delayed_msg(void *pvParameters) {
156156
void setUp(void) {
157157
start_serial(115200);
158158

159-
for (i = 1; i < SOC_UART_NUM; i++) {
159+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
160160
log_d("Setup internal loop-back from and back to Serial%d (UART%d) TX >> Serial%d (UART%d) RX", i, i, i, i);
161161

162-
test_uarts[i].serial.onReceive([]() {
162+
test_uarts[i].serial->onReceive([]() {
163163
onReceive_cb(i);
164164
});
165165
uart_internal_loopback(i, true);
@@ -175,18 +175,18 @@ void tearDown(void) {
175175

176176
// This is a callback function that will be activated on UART RX events
177177
void onReceive_cb(int uart_num) {
178-
HardwareSerial &selected_serial = test_uarts[uart_num].serial;
178+
HardwareSerial *selected_serial = test_uarts[uart_num].serial;
179179
char c;
180180

181181
recv_msg = "";
182-
size_t available = selected_serial.available();
182+
size_t available = selected_serial->available();
183183

184184
if (available != 0) {
185-
peeked_char[uart_num] = selected_serial.peek();
185+
peeked_char[uart_num] = selected_serial->peek();
186186
}
187187

188188
while (available--) {
189-
c = (char)selected_serial.read();
189+
c = (char)selected_serial->read();
190190
recv_msg += c;
191191
}
192192

@@ -209,10 +209,10 @@ void change_baudrate_test(void) {
209209
//Test first using the updateBaudRate method and then using the begin method
210210
log_d("Changing baudrate to 9600");
211211

212-
for (i = 1; i < SOC_UART_NUM; i++) {
213-
test_uarts[i].serial.updateBaudRate(9600);
212+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
213+
test_uarts[i].serial->updateBaudRate(9600);
214214
//Baudrate error should be within 2% of the target baudrate
215-
TEST_ASSERT_UINT_WITHIN(192, 9600, test_uarts[i].serial.baudRate());
215+
TEST_ASSERT_UINT_WITHIN(192, 9600, test_uarts[i].serial->baudRate());
216216
}
217217

218218
log_d("Sending string using 9600 baudrate");
@@ -221,9 +221,9 @@ void change_baudrate_test(void) {
221221
log_d("Changing baudrate back to 115200");
222222
start_serial(115200);
223223

224-
for (i = 1; i < SOC_UART_NUM; i++) {
224+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
225225
//Baudrate error should be within 2% of the target baudrate
226-
TEST_ASSERT_UINT_WITHIN(2304, 115200, test_uarts[i].serial.baudRate());
226+
TEST_ASSERT_UINT_WITHIN(2304, 115200, test_uarts[i].serial->baudRate());
227227
}
228228

229229
log_d("Sending string using 115200 baudrate");
@@ -401,22 +401,22 @@ void change_pins_test(void) {
401401
log_d("Disabling UART loopback");
402402
//stop_serial();
403403

404-
for (i = 1; i < SOC_UART_NUM; i++) {
404+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
405405
uart_internal_loopback(i, false);
406406
}
407407

408408
log_d("Swapping UART pins");
409409

410-
#if SOC_UART_NUM == 2
410+
#if SOC_UART_HP_NUM == 2
411411
Serial1.setPins(TX1, RX1); // Invert TX and RX pins
412412
TEST_ASSERT_EQUAL(TX1, uart_get_RxPin(1)); // TX1 is now RX pin
413413
TEST_ASSERT_EQUAL(RX1, uart_get_TxPin(1)); // RX1 is now TX pin
414-
#elif SOC_UART_NUM >= 3
415-
for (i = 1; i < SOC_UART_NUM; i++) {
414+
#elif SOC_UART_HP_NUM >= 3
415+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
416416
// Swapping pins with the next available UART
417-
int uart_replacement = (i + 1) % SOC_UART_NUM;
417+
int uart_replacement = (i + 1) % SOC_UART_HP_NUM;
418418
uart_replacement = uart_replacement == 0 ? 1 : uart_replacement;
419-
test_uarts[i].serial.setPins(test_uarts[uart_replacement].rx_pin, test_uarts[uart_replacement].tx_pin);
419+
test_uarts[i].serial->setPins(test_uarts[uart_replacement].rx_pin, test_uarts[uart_replacement].tx_pin);
420420
TEST_ASSERT_EQUAL(test_uarts[uart_replacement].tx_pin, uart_get_TxPin(i));
421421
TEST_ASSERT_EQUAL(test_uarts[uart_replacement].rx_pin, uart_get_RxPin(i));
422422
}
@@ -426,7 +426,7 @@ void change_pins_test(void) {
426426

427427
log_d("Re-enabling UART loopback");
428428

429-
for (i = 1; i < SOC_UART_NUM; i++) {
429+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
430430
uart_internal_loopback(i, true);
431431
}
432432

@@ -437,24 +437,24 @@ void change_pins_test(void) {
437437

438438
/*
439439
440-
// The new loopback API does not allow cross connecting UARTs. This test is disabled for now.
440+
// The new loopback API does not allow cross connecting UARTs. This test is disabled for now.
441441
442-
// This test checks if the auto baudrate detection works on ESP32 and ESP32-S2
443-
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
444-
void auto_baudrate_test(void) {
442+
// This test checks if the auto baudrate detection works on ESP32 and ESP32-S2
443+
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
444+
void auto_baudrate_test(void) {
445445
log_d("Starting auto baudrate test");
446446
447447
HardwareSerial *selected_serial;
448448
unsigned long baudrate;
449449
450450
log_d("Stopping test serial. Using Serial2 for ESP32 and Serial1 for ESP32-S2.");
451451
452-
#if SOC_UART_HP_NUM == 2
452+
#if SOC_UART_HP_NUM == 2
453453
selected_serial = &Serial1;
454454
uart_internal_loopback(0, true); // it was suppose to cross connect TX0 to RX1
455-
#elif SOC_UART_NUM >= 3
455+
#elif SOC_UART_HP_NUM >= 3
456456
selected_serial = &Serial2;
457-
#endif
457+
#endif
458458
459459
//selected_serial->end(false);
460460
@@ -467,31 +467,31 @@ void auto_baudrate_test(void) {
467467
selected_serial->begin(0);
468468
baudrate = selected_serial->baudRate();
469469
470-
#if SOC_UART_HP_NUM == 2
470+
#if SOC_UART_HP_NUM == 2
471471
Serial.end();
472472
Serial.begin(115200);
473-
#endif
473+
#endif
474474
475475
TEST_ASSERT_UINT_WITHIN(2304, 115200, baudrate);
476476
477477
Serial.println("Auto baudrate test successful");
478-
}
479-
#endif
478+
}
479+
#endif
480480
*/
481481

482482
// This test checks if the peripheral manager can properly manage UART pins
483483
void periman_test(void) {
484484
log_d("Checking if peripheral manager can properly manage UART pins");
485485

486-
for (i = 1; i < SOC_UART_NUM; i++) {
486+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
487487
log_d("Setting up I2C on the same pins as UART%d", i);
488488
Wire.begin(test_uarts[i].rx_pin, test_uarts[i].tx_pin);
489489

490490
recv_msg = "";
491491

492492
log_d("Trying to send message using UART%d with I2C enabled", i);
493-
test_uarts[i].serial.print("Hello from Serial" + String(i) + " (UART" + String(i) + ") >>> via loopback >>> Serial" + String(i) + " (UART" + String(i) + ") while used by I2C");
494-
test_uarts[i].serial.flush();
493+
test_uarts[i].serial->print("Hello from Serial" + String(i) + " (UART" + String(i) + ") >>> via loopback >>> Serial" + String(i) + " (UART" + String(i) + ") while used by I2C");
494+
test_uarts[i].serial->flush();
495495
delay(100);
496496
TEST_ASSERT_EQUAL_STRING("", recv_msg.c_str());
497497

@@ -542,16 +542,16 @@ void setup() {
542542
}
543543
log_d("SOC_UART_HP_NUM = %d", SOC_UART_HP_NUM);
544544

545-
for (i = 0; i < SOC_UART_NUM; i++) {
545+
for (i = 0; i < SOC_UART_HP_NUM; i++) {
546546
peeked_char[i] = -1;
547547
}
548548

549549
// Begin needs to be called before setting up the loopback because it creates the serial object
550550
start_serial(115200);
551551

552-
for (i = 1; i < SOC_UART_NUM; i++) {
552+
for (i = 1; i < SOC_UART_HP_NUM; i++) {
553553
log_d("Setup internal loop-back from and back to Serial%d (UART%d) TX >> Serial%d (UART%d) RX", i, i, i, i);
554-
test_uarts[i].serial.onReceive([]() {
554+
test_uarts[i].serial->onReceive([]() {
555555
onReceive_cb(i);
556556
});
557557
uart_internal_loopback(i, true);
@@ -567,11 +567,11 @@ void setup() {
567567
RUN_TEST(change_cpu_frequency_test);
568568
RUN_TEST(disabled_uart_calls_test);
569569
RUN_TEST(enabled_uart_calls_test);
570-
/*
571-
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
572-
RUN_TEST(auto_baudrate_test);
573-
#endif
574-
*/
570+
/*
571+
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
572+
RUN_TEST(auto_baudrate_test);
573+
#endif
574+
*/
575575
RUN_TEST(periman_test);
576576
RUN_TEST(change_pins_test);
577577
RUN_TEST(end_when_stopped_test);

0 commit comments

Comments
 (0)