Driver Lifecycle¶
arch_nav separates responsibilities between two driver interfaces:
IPlatformDriver: telemetry/startup/shutdown boundary.ICommandDispatcher: command execution boundary.
Startup¶
- Plugin
.sois loaded. - Driver factory registers under a unique name.
IPlatformDriver::start(context, update_period)begins telemetry feed.dispatcher()exposes the command interface used by the kernel.
Operation execution¶
- Controller requests
execute_takeoff/land/waypoint_following/.... - Driver returns quickly with
CommandResponse(ACCEPTED,DENIED, etc.). - Operation completion is signaled asynchronously via callback.
Shutdown¶
- Kernel calls
IPlatformDriver::stop(). - Driver stops command execution and telemetry threads safely.
- Resources and subscriptions are released deterministically.
Design constraints¶
- Operations must be non-blocking from the kernel perspective.
- Completion callbacks must be safe under reentrancy.
stop()must be idempotent and thread-safe.