I’m building a Virtual copilot for the INI A350.
The frontend is React/TypeScript, and the sim connection is handled in Rust through a dedicated simconnect worker thread.
On the Rust side, one worker owns the simconnect handle, registers the simvars to be monitored, polls them continuously, caches the latest values, and emits telemetry back to the frontend. For writes, the same worker parses expressions and either writes L-vars directly or sends K events with SimConnect_TransmitClientEvent.
Everything works but I have an issue with K events. Sometimes a K event like FLAPS_1 or GEAR_DOWN works, and sometimes the handle would move briefly and snap back. And the bigger issue is that I don’t know what’s causing this because sometimes they work sometimes they don’t
I modified the SimConnect_TransmitClientEvent call to explicitly use priority semantics by using SIMCONNECT_GROUP_PRIORITY_HIGHEST together with SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY
And I think it fixed. Could someone please help me find the root cause of this or what I did wrong? You can find the full code here
Thank you in advance
The frontend is React/TypeScript, and the sim connection is handled in Rust through a dedicated simconnect worker thread.
On the Rust side, one worker owns the simconnect handle, registers the simvars to be monitored, polls them continuously, caches the latest values, and emits telemetry back to the frontend. For writes, the same worker parses expressions and either writes L-vars directly or sends K events with SimConnect_TransmitClientEvent.
Everything works but I have an issue with K events. Sometimes a K event like FLAPS_1 or GEAR_DOWN works, and sometimes the handle would move briefly and snap back. And the bigger issue is that I don’t know what’s causing this because sometimes they work sometimes they don’t
I modified the SimConnect_TransmitClientEvent call to explicitly use priority semantics by using SIMCONNECT_GROUP_PRIORITY_HIGHEST together with SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY
And I think it fixed. Could someone please help me find the root cause of this or what I did wrong? You can find the full code here
Thank you in advance
