FastLED 3.9.15
Loading...
Searching...
No Matches

◆ loop()

void loop ( )

Definition at line 145 of file RX.ino.

145 {
146 // IMPORTANT: Must be first line - handles halt state and prevents watchdog resets
147 if (halt.check()) return;
148
149 FL_WARN("\n╔════════════════════════════════════════════════════════════════╗");
150 FL_WARN("║ RX DEVICE TEST");
151 FL_WARN("╚════════════════════════════════════════════════════════════════╝\n");
152
153 // Configure RX channel
155 config.edge_capacity = EDGE_BUFFER_SIZE;
156 config.hz = 1000000; // 1MHz resolution (allows up to ~32ms timeout)
157 config.signal_range_min_ns = 100; // 100ns glitch filter
158 config.signal_range_max_ns = 10000000; // 10ms idle timeout (1MHz RMT allows up to ~32ms)
159 config.start_low = true; // Pin starts LOW
160
161 // Execute toggles and capture data
162 FL_WARN("[TEST] Initializing RX channel and executing toggles...");
163 auto& rx_channel = rxChannelSingleton();
164 rx_channel->setConfig(config);
166
167 // Wait for capture completion
168 FL_WARN("[TEST] Waiting for capture (timeout: " << WAIT_TIMEOUT_MS << "ms)...");
169 auto wait_result = rx_channel->wait(WAIT_TIMEOUT_MS);
170
171 if (wait_result == fl::RxWaitResult::TIMEOUT) {
172 FL_ERROR("Timeout waiting for data");
173 } else if (wait_result == fl::RxWaitResult::BUFFER_OVERFLOW) {
174 FL_ERROR("Buffer overflow during capture");
175 } else {
176 FL_WARN("[TEST] ✓ Data captured successfully");
177
178 // Get edge timings
180 size_t edge_count = rx_channel->getRawEdgeTimes(edge_buffer);
181
182 // Validate edge timing against expected pattern
183 const uint32_t TOLERANCE_PERCENT = 15; // ±15% tolerance for timing jitter
184 validateEdgeTiming(edge_buffer, edge_count, TEST_PATTERN, TOLERANCE_PERCENT);
185 }
186
187 FL_WARN("\n╔════════════════════════════════════════════════════════════════╗");
188 FL_WARN("║ TEST COMPLETE - Waiting 5 seconds...");
189 FL_WARN("╚════════════════════════════════════════════════════════════════╝\n");
190
191 delay(5000);
192}
#define PIN_TX
const fl::RxBackend RX_BACKEND
#define PIN_RX
fl::shared_ptr< fl::RxChannel > & rxChannelSingleton()
Definition RX.ino:66
SketchHalt halt
Definition RX.ino:71
#define EDGE_BUFFER_SIZE
Definition RX.ino:40
#define WAIT_TIMEOUT_MS
Definition RX.ino:41
const fl::array< PinToggle, 6 > TEST_PATTERN
Definition RX.ino:53
A fixed-size array implementation similar to std::array.
Definition array.h:27
#define FL_WARN(X)
Definition log.h:276
#define FL_ERROR(X)
Definition log.h:219
fl::u32 uint32_t
Definition s16x16x4.h:219
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...
Definition delay.h:98
@ TIMEOUT
Operation timed out.
Definition rx.h:153
@ BUFFER_OVERFLOW
Buffer overflow.
Definition rx.h:154
void executeToggles(fl::RxChannel &rx, fl::span< const PinToggle > toggles, int pin_tx, uint32_t wait_ms)
Execute pin toggles and initialize RX channel for capture.
Definition test.cpp:36
bool validateEdgeTiming(fl::span< const fl::EdgeTime > edges, size_t edge_count, fl::span< const PinToggle > expected_pattern, uint32_t tolerance_percent)
Validate captured edge timings against expected pattern.
Definition test.cpp:60

References fl::BUFFER_OVERFLOW, EDGE_BUFFER_SIZE, fl::RxChannelConfig::edge_capacity, executeToggles(), FL_ERROR, FL_WARN, halt, fl::RxChannelConfig::hz, PIN_RX, PIN_TX, RX_BACKEND, rxChannelSingleton(), fl::RxChannelConfig::signal_range_max_ns, fl::RxChannelConfig::signal_range_min_ns, fl::RxChannelConfig::start_low, TEST_PATTERN, fl::TIMEOUT, validateEdgeTiming(), and WAIT_TIMEOUT_MS.

+ Here is the call graph for this function: