BUSLOOM MANUAL

Automation reference

Structured steps, operators, parameters, datasets, Lua, and run results.

20 · AUTOMATION REFERENCE

Automation reference

Structured automation is a typed tree over project tags. It does not invent addresses or decoding: every read, comparison, capture, and write resolves through the same tag definition used by the desktop views. A run freezes its project inputs before execution so later editor changes cannot mutate work already in progress.

Structured step catalog

StepOperationSuccess condition / output
ReadReads one tag and optionally captures the decoded valueA compliant response decodes through the tag; the capture enters the current scenario scope
WriteEncodes and writes a literal, parameter, or compatible captured valueThe device returns the required compliant write response; dry run suppresses the device change
ExpectReads or evaluates a tag/capture and compares itThe selected comparison is true; observed and expected values enter the report
WaitSleeps for a duration, or polls a condition until timeoutTimed wait elapses, or the condition becomes true before its timeout
If / ElseEvaluates one condition and runs exactly one ordered branchThe chosen branch completes; variables continue only when scope rules permit
RetryRuns a non-empty child block for 2–10 attempts with an optional delayOne attempt completes; failed-attempt captures are discarded and writes are never rolled back
ScenarioCalls another named scenario with explicit or inherited parameter bindingsThe child completes; its local captures do not leak into the caller
CompleteEnds the current scenario successfully with a messageThe success is consumed at the current scenario-call boundary
FailEnds the current path as a failure with a messageNormal failure handling applies, including an enclosing Retry

If and Retry blocks may nest up to four levels. Scenario call graphs must be acyclic, may expand to at most eight call levels, and are bounded to 500 expanded steps. These limits are validated before a run reaches the connection.

Comparison operators

OperatorAccepted valuesMeaning
= / ≠Boolean, numeric, or text of a compatible typeExact equality or inequality after normal tag decoding
< / ≤ / > / ≥NumericOrdered comparison in engineering units
Within toleranceNumeric nominal value plus toleranceObserved value lies within expected ± absolute tolerance
Within rangeNumeric lower and upper boundObserved value lies inside the inclusive range

Expected values, tolerances, and range bounds may come from literals, parameters, or earlier compatible captures. When the comparison observes a tag, operands use that tag's engineering representation, so a temperature tolerance is expressed in the displayed temperature unit rather than raw counts.

Inputs and launch configuration

Parameter
Named Boolean, number, or text input declared by a scenario or Lua script. A default keeps manual runs repeatable.
Dataset
Up to 1,000 ordered named cases for one target. Sparse cells inherit the run-profile override and then the parameter default.
Run profile
Saved target, optional compatible dataset, sparse parameter overrides, repeat count from 1–1,000, and continue-on-failure choice.
Connection selection
Local launch state. The project run profile deliberately does not bind a physical connection, so the same procedure can run on another bench.

Lua host API

CallPurposeBoundary
bus.param(nameOrId)Read a frozen typed launch parameterReturns Boolean, number, or text
bus.read(tag)Read and decode a project tagNo raw-address escape hatch
bus.write(tag, value)Encode and write through a project tagRead-only profiles and dry run still apply
bus.sleep(milliseconds)Asynchronous bounded waitDoes not block the UI thread
bus.expect(condition, message)Create an explicit assertionA false condition fails the script step
print(...)Capture bounded diagnostic outputOutput is streamed to the run view and retained in the report

Run result and reports

The live result is hierarchical: iteration, dataset case, scenario call, control-flow branch, and individual step remain inspectable. Each result can retain status, duration, observed values, captures, logs, errors, and transaction identifiers. JSON is the lossless Busloom report; JUnit maps outcomes into CI test cases; standalone HTML is for human review. Imported JSON reports open as read-only Replay and cannot be rerun without the original project.