Thanks for looking into this in more detail, and finally solving the crashes.
Just to be clear, does the PR include only the different timeouts for network vs. serial?
Or does it also include checking the presence of the devices we know will cause timeouts if they a not there (specifically the return of :FA (focuser1), :fA (focuser2), and :GX98 (rotator)?
If the PR does not include those, then I really think these should be included.
I am testing your latest PR and so far do not notice any issue.
I am running it on two OnStep configuration:
- Without any Focuser / Rotator
- With a Focuser
Even the strange jump when Parking / Unparking is not there anymore.
I will leave those running some time but it looks like you fixed it.
The PR included that difference in timeouts, as well as a bunch of verification so that if there's a timeout it will warn, and abort the update.
It will probe and detect focusers and rotators, as has always been done. (Which on serial should amount to the 0.1 sec timeout, or 2 sec on network.) So yes, those will cause timeouts on startup.
I did add a little gating based on version to something with rotators. Up to V3 lacks the commands. rI rM rT and has no equivilent (at least in the current version and prior versions I looked at.) That and checking for OnStepX focusers (when version is OnStepX or unknown) are the only gating like that. As for the most part the commands are pretty consistent across versions.