77 {
80 const char* loop_back_mode =
PIN_TX ==
PIN_RX ?
"INTERNAL" :
"JUMPER WIRE";
81
82 FL_WARN(
"\n=== FastLED RX Channel Test ===");
87 FL_WARN(
"LOOP BACK MODE: " << loop_back_mode);
88
89
92 halt.error(
"Missing jumper wire between TX and RX pins");
93 return;
94 }
95 } else {
96 FL_WARN(
"TX and RX use same pin (" <<
PIN_TX <<
") - no jumper wire needed");
97 }
98
100
101
102
103 FL_WARN(
"Creating RX channel for testing...");
105 auto rx_test =
FastLED.addRx(test_channel_config);
106 if (!rx_test) {
107 halt.error(
"Failed to create RX channel for testing");
108 return;
109 }
110
111
113 test_config.edge_capacity = 10;
114 test_config.hz = 1000000;
115 test_config.signal_range_min_ns = 100;
116 test_config.signal_range_max_ns = 10000000;
117 test_config.start_low = true;
118
119 if (!rx_test->begin(test_config)) {
120 halt.error(
"Failed to initialize test RX channel");
121 return;
122 }
123
124
126 halt.error(
"RX channel sanity check failed - RX not working");
127 return;
128 }
130
131
132
133 FL_WARN(
"Creating main RX channel...");
137 halt.error(
"Failed to create main RX channel");
138 return;
139 }
140 FL_WARN(
"✓ Main RX channel created\n");
141
143}
const fl::RxBackend RX_BACKEND
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
fl::shared_ptr< fl::RxChannel > & rxChannelSingleton()
fl::u32 millis()
Universal millisecond timer - returns milliseconds since system startup.
void delay(u32 ms, bool run_async=true) FL_NOEXCEPT
Public delay wrapper that keeps bare Arduino delay() preferred after using fl::delay; while still all...
@ RMT
ESP32-only RMT capture backend.
bool testRxChannelSanity(fl::shared_ptr< fl::RxChannel > rx, int pin_tx)
Test RX channel functionality with low-frequency pattern.
bool verifyJumperWire(int pin_tx, int pin_rx)
Verify jumper wire connection between TX and RX pins.