Follow-up from #379.
run_terminus_inner only swallows timeouts while initiator_active (firmware_device.rs:244), so the idle listener timeout surfaces as StoppedByError(Mctp(TimedOut)) and Completed is only returned on Ok(()) (firmware_device.rs:163). Callers must special-case is_timeout(), e.g. tests/base_host.rs:211-213.
Map the idle-timeout to Completed inside run_terminus_inner so StoppedByError means a real error and callers can drop the is_timeout() special case — which was the point of introducing RunTerminusResult.
Follow-up from #379.
run_terminus_inner only swallows timeouts while initiator_active (firmware_device.rs:244), so the idle listener timeout surfaces as StoppedByError(Mctp(TimedOut)) and Completed is only returned on Ok(()) (firmware_device.rs:163). Callers must special-case is_timeout(), e.g. tests/base_host.rs:211-213.
Map the idle-timeout to Completed inside run_terminus_inner so StoppedByError means a real error and callers can drop the is_timeout() special case — which was the point of introducing RunTerminusResult.