[uart] Fix RTL87xx compilation failure due to SUCCESS macro collision

The Realtek SDK defines `#define SUCCESS 0` in basic_types.h which
collides with the FlushResult::SUCCESS enum value, breaking compilation
on RTL87xx devices when api/wifi components pull in the SDK headers.

Add `#undef SUCCESS` before the enum definition, following the same
pattern used elsewhere in the codebase for vendor SDK macro collisions.

Also add RTL87xx UART compilation test.
This commit is contained in:
J. Nick Koston
2026-03-21 00:58:37 -10:00
parent 8dd69207ea
commit 0bcb85cc72
2 changed files with 19 additions and 0 deletions
+5
View File
@@ -30,12 +30,17 @@ enum UARTDirection {
const LogString *parity_to_str(UARTParityOptions parity);
/// Result of a flush() call.
// Some vendor SDKs (e.g., Realtek) define SUCCESS as a macro.
// Save and restore around the enum to avoid collisions with our scoped enum value.
#pragma push_macro("SUCCESS")
#undef SUCCESS
enum class FlushResult {
SUCCESS, ///< Confirmed: all bytes left the TX FIFO.
TIMEOUT, ///< Confirmed: timed out before TX completed.
FAILED, ///< Confirmed: driver or hardware error.
ASSUMED_SUCCESS, ///< Platform cannot report result; success is assumed.
};
#pragma pop_macro("SUCCESS")
class UARTComponent {
public:
@@ -0,0 +1,14 @@
uart:
- id: uart_id
tx_pin: PA23
rx_pin: PA18
baud_rate: 9600
data_bits: 8
parity: NONE
stop_bits: 1
switch:
- platform: uart
name: "UART Switch"
uart_id: uart_id
data: [0x01, 0x02, 0x03]