TwoNodeOptions
Ready-to-run robot software for hobby robotics.
In the namespace banter_bench. Declared in src/tools/banter-bench/TwoNode.hpp.
Detailed description
`banter-bench two-node <mode>`: the banter-completion-1 §MB-B4/B5 rig — TWO real audio endpoints (two USB cards), so both directions of a real OTA link can be measured against the ≥90% mutual bar (§BC-BAR.2). Node A owns one card (A-in/A-out), node B the other; A's speaker → B's mic is one acoustic path, B's speaker → A's mic the other. The locked v1 codec is FSK (§SP-3.0).
This was `test/testTwoNodeLink`, a QtTest suite holding 76 environment reads (no-environment-variables rows T46, T47, T48). Every one of its modes was selected by the presence of a variable, so with an unset environment the suite did nothing and asserted nothing while CI built and ran it. It measures and it needs a rig on the bench, which makes it a tool (§NEV-A4).
Modes, each the former `OCTOMY_TN_*` selector:
gui Four device selectors and a Run button. The default, because it is what the suite did with nothing set. auto Both directions, A↔B, and the mutual-bar verdict. contend §MB-B5: two self-hosted nodes beaconing concurrently; the real A-MAC (§AM-14.4 rotation) arbitrates. solo ONE self-hosted node in this process, like a real hub. Two processes on two cards is the faithful two-node config and avoids the one-process-four-streams question. txprobe Self-hosted TX + bus-mode record/decode. Isolates TX. rxprobe Bus-mode TX + self-hosted RX listener. Isolates RX. capdiff 3-arm RX capture-corruption diff (§RC). ainout Does a concurrent AudioOutputNode corrupt the AIN capture? playback Capture one path both ways, write WAVs, play each back so the difference can be judged by EAR (banter-completion-1 audit #3). decode-f32 Offline-decode a raw float32 capture with the proven decoder. play-f32 Play a raw float32 capture out a device you can hear.
Device listing is `banter-bench list-devices`, not a mode here.
Every default below is the default the unset environment variable had, so `banter-bench two-node <mode>` with no flags measures exactly what the suite measured. Where a default differed per mode (`_TRIALS`, `_DUR_MS`, `_BEACON_MS`, `_BIN`) the field carries a sentinel and the mode applies its own former default; those sentinels are documented on the field.