MCPcopy Create free account
hub / github.com/FastLED/FastLED / runSingleTestImpl

Method runSingleTestImpl

examples/AutoResearch/AutoResearchRemote.cpp:314–808  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

312// ============================================================================
313
314fl::json AutoResearchRemoteControl::runSingleTestImpl(const fl::json& args) {
315 fl::json response = fl::json::object();
316
317 // RPC system unwraps single-element arrays, so args is the config object directly
318 if (!args.is_object()) {
319 response.set("success", false);
320 response.set("error", "InvalidArgs");
321 response.set("message", "Expected {driver, laneSizes, pattern?, iterations?, pinTx?, pinRx?, timing?}");
322 return response;
323 }
324
325 fl::json config = args;
326
327 // ========== REQUIRED PARAMETERS ==========
328
329 // 1. Extract driver (required)
330 if (!config.contains("driver") || !config["driver"].is_string()) {
331 response.set("success", false);
332 response.set("error", "MissingDriver");
333 response.set("message", "Required field 'driver' (string) missing");
334 return response;
335 }
336 fl::string driver_name = config["driver"].as_string().value();
337
338 // Validate driver exists
339 bool driver_found = false;
340 for (fl::size i = 0; i < mState->drivers_available.size(); i++) {
341 if (mState->drivers_available[i].name == driver_name) {
342 driver_found = true;
343 break;
344 }
345 }
346 if (!driver_found) {
347 response.set("success", false);
348 response.set("error", "UnknownDriver");
349 fl::sstream msg;
350 msg << "Driver '" << driver_name.c_str() << "' not available";
351 response.set("message", msg.str().c_str());
352 return response;
353 }
354
355 // 2. Extract laneSizes (required)
356 if (!config.contains("laneSizes") || !config["laneSizes"].is_array()) {
357 response.set("success", false);
358 response.set("error", "MissingLaneSizes");
359 response.set("message", "Required field 'laneSizes' (array) missing");
360 return response;
361 }
362
363 fl::json lane_sizes_json = config["laneSizes"];
364 if (lane_sizes_json.size() == 0 || lane_sizes_json.size() > 16) {
365 response.set("success", false);
366 response.set("error", "InvalidLaneCount");
367 response.set("message", "laneSizes must have 1-16 elements");
368 return response;
369 }
370
371 fl::vector<int> lane_sizes;

Callers 1

registerFunctionsMethod · 0.95

Calls 15

measureTightTimingFunction · 0.85
millisFunction · 0.50
arrayClass · 0.50
ChannelConfigClass · 0.50
is_objectMethod · 0.45
setMethod · 0.45
containsMethod · 0.45
is_stringMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected