I realize that managing the different versions and all the devices is quite complex.
So again, thank you so much for putting in all the effort.
What I meant by getCommandBoolean is handling commands that return only 1 or 0 without the trailing hash.
There are many of them here:
onstep.groups.io/g/main/wiki/23755
We can't change them to something else, so they are what they are.
:FA and :fA are examples of these boolean returning functions, where a single character is returned and checked.
I tested again with Alain's change (just GX98) but reverted the timeout value in SWS to the default of 200 ms (I lowered it to 100 seconds a few days ago), and it works as advertised.
Maybe a value of 300 ms or 400 ms for timeouts would be a good catch all? I base that on USB being much faster, and the old WiFi having a default timeout of 60 ms (vs. 200 ms in SWS), so 400 or so should be plenty. Maybe some commands will be slower, and those may be given a longer timeout.
GX98 (is the rotator there), FA (is the first focuser there) and fA (is the second focuser there) all return within 50 ms or so, as they should. And if the code acts on them (i.e. does not send any more :F, :f or :r commands), then alll will be good (at least for focusers and rotator detection).
My startup is exactly 3 seconds (no rotator, no focuser).
After I typed all this, I did get a crash long after I started INDI successfully. Nothing special being done, the mount is at home and not tracking. So that crash should not stop the GX98 change going in.
I tested again slewing west then east, and all is normal.
Attached is a diff file of Alain's changes against the current master of Jasem's PPA.