38 const char* driver_name,
54 FL_ERROR(
"Failed to set " << driver_name <<
" as exclusive driver");
55 result.skipped =
true;
58 FL_WARN(driver_name <<
" driver enabled exclusively\n");
60 FL_WARN(
"[CONFIG] Driver: " << driver_name <<
" (physical jumper required)\n");
68 FL_WARN(
"[INFO] Testing " << timing_config.
name <<
" timing\n");
85 FL_WARN(
"[INFO] Running warm-up frame (results will be discarded)");
86 int warmup_total = 0, warmup_passed = 0;
87 uint32_t warmup_duration_ms = 0;
89 FL_WARN(
"[INFO] Warm-up complete (" << warmup_passed <<
"/" << warmup_total <<
" passed - discarding)");
92 FL_WARN(
"[INFO] Running actual test frame");
93 uint32_t test_duration_ms = 0;
96 FL_WARN(
"\n[INFO] All timing tests complete for " << driver_name <<
" driver");
void testDriver(const char *driver_name, const fl::NamedTimingConfig &timing_config, int pin_data, size_t num_leds, CRGB *leds, EOrder color_order, fl::shared_ptr< fl::RxChannel > rx_channel, fl::span< uint8_t > rx_buffer, int base_strip_size, fl::RxDeviceType rx_type, fl::DriverTestResult &result)
Test a specific driver with given timing configuration.
bool testRxChannel(fl::shared_ptr< fl::RxChannel > rx_channel, int pin_tx, int pin_rx, uint32_t hz, size_t buffer_size)
Test RX channel with manual GPIO toggle.
bool autoResearchSetExclusiveDriverByName(const char *name)
AutoResearch-style helper: set an exclusive driver by name.
void printSummaryTable(const fl::vector< fl::DriverTestResult > &driver_results)
Print driver autoresearch summary table.
void autoResearchExpectedEngines()
AutoResearch that expected engines are available for this platform Prints ERROR if any expected engin...
void autoResearchChipsetTiming(fl::AutoResearchConfig &config, int &driver_total, int &driver_passed, uint32_t &out_show_duration_ms, fl::vector< fl::RunResult > *out_results, int num_runs_per_pattern)
bool setExclusiveDriverByName(const char *name) FL_NOEXCEPT
Enable only one driver exclusively (disables all others) — by-name escape hatch.
static ChannelManager & instance() FL_NOEXCEPT
Get the global singleton instance.
Unified manager for channel drivers with priority-based fallback.
void printSummaryTable(const fl::vector< fl::DriverTestResult > &driver_results)
Print driver validation summary table to log.
bool testRxChannel(fl::shared_ptr< fl::RxChannel > rx_channel, int pin_tx, int pin_rx, u32 hz, size_t buffer_size)
Test RX channel with manual GPIO toggle pattern.
void printEngineValidation()
Print validation results (logs registered drivers and status)
RxDeviceType
RX device type enumeration.
Configuration for driver-agnostic autoresearch testing Contains all input parameters needed for autor...
Configuration for a single LED channel.
Clockless chipset configuration (single data pin)
Driver test result tracking (moved from ValidationTest.h)
fl::ClocklessEncoder encoder
fl::ChipsetTimingConfig timing
Chipset timing configuration with name for testing.