Core objects & lifecycle
Understand C++ Sdk, Exo, ExoDevice, channels, and their RAII handle relationships.
Current version · 1.0.0
Core objects & lifecycle
Object hierarchy
qnbot::Sdk
└── qnbot::Exo
└── qnbot::ExoDevice
├── ReadChannel<ExoTelemetry>
├── ReadChannel<ExoStatus>
└── HapticsStateSdk owns the native runtime, Exo owns domain lifecycle, ExoDevice selects one logical device, and channels expose reads or capability writes.
Lifecycle and ownership
For one device, use exo.start(), a runtime driver, exo.stop(), and exo.close(). Use device.start()/stop() only for independent multi-device control. Closing a parent invalidates children and later calls throw ClosedHandleError.
C++ wrappers are lightweight handles, but applications should still stop execution, clear haptics, and close explicitly instead of treating destruction as the business stop signal.