Skip to content

Releases: mpaperno/WASimCommander

v1.3.1.0 - FS24 Updates & Local Key ID Lookups

29 Nov 09:26
276788d
Compare
Choose a tag to compare

Changes since v1.3.0

WASimModule

  • Updated reference list of KEY event names for MSFS 2024 SDK v1.0.0 (e1a0f865).

WASimClient

  • Key Event ID lookup is now performed locally instead of querying the server. (e4609257)
    • Building (not using) the client now requires MSFS 2024 SDK (for key macros header include).
  • Marked 'B' type (Input Events) variables as "settable." (e66498b4)
    • MSFS 24 apparently has at least some support for using 'B' vars from within RPN calculator code in standalone modules. YMMV.

WASimUI

  • 'B' and 'R' variable types are available in the various variable type selectors for experimentation. (36e925c4)
  • Updated database of imported Event IDs and Simulator Variables from online SDK docs for MSFS 2020 and 2024 as of Nov-25-2024.
    • The data now also contains flags indicating if a variable/event is supported in FSX, FS20, & FS24 versions.

Full Change Log


The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static, dynamic, and managed (.NET) libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.3.0 - Custom Key Events and Setting String Values

15 Nov 18:15
e710865
Compare
Choose a tag to compare

Changes since v1.2.0

WASimModule

  • The server will now handle connection, ping, and custom calculator events initiated with SimConnect_TransmitClientEvent_EX1() (as well as the older TransmitClientEvent() version). (8f42b51d)
  • Updated reference list of KEY event names for MSFS SDK v0.23.1.0 (b115d8b6) and v0.24.3.0 (495274d5).

WASimClient (C++) and WASimClient_CLI (managed .NET)

  • Added ability to use "custom named simulator events" (such as "Custom.Event") directly from WASimClient, w/out needing a separate SimConnect session (61912e66):
    • Added registerCustomKeyEvent() method for mapping event names to numeric IDs (similar in purpose to SimConnect_MapClientEventToSimEvent() function). See documentation for details.
    • sendKeyEvent() can now be used to trigger registered custom events (similar to SimConnect_TransmitClientEvent[_EX1]() functions), by ID or name. See documentation for details.
    • Note: This is a client-side feature, not involving the server-side WASimModule at all, provided for convenience.
    • Added basic test/example of usage in CPP_BasicConsole and CS_BasicConsole project code.
    • Many thanks to Hans Billiet for the motivation and original code!
  • Added ability to set Sim Vars using string values using the new setVariable(var, stringValue) overload or setSimVarVariable() methods (see below). (9603c9f4)
    This is also a client-only side feature since the only way to set string values is with SimConnect (or the in-game JS API).
  • Added convenience methods for setting Sim Vars ('A' type) specifically. There are 4 overloads of setSimVarVariable() for setting numeric or string values, with or w/out an index. (62991392)
  • Fixed that the key event name lookup cache used with sendKeyEvent(eventName) string overload wasn't entirely thread-safe. Thanks to Hans Billiet for reporting! (03753d8b)
  • Added new DataRequest() constructor overloads for calculated result type w/out valueSize argument where the size is determined based on the desired calculation result type. (9f7aa9c5)

WASimClient_CLI (managed .NET)

  • Fixed possible null String references in RegisteredEvent and VariableRequest structs when created with some constructor overloads (for example when attempting to send a new VariableRequest(localVariableId)). Thanks to Hans Billiet for reporting! (1632ed18)
  • Added .NET8 builds to SDK distribution. This is also now the default .NET version for the VS solution's Release & Debug build configurations.

WASimUI

  • Can now set Sim Var string type values in the "Variables" section. The "string" unit type must be selected to show the text value entry box. (8616c608)
  • Updated database of imported Event IDs and Simulator Variables from published online SDK docs as of Mar-1-2024. (35a495c6)

Documentation

  • Split WASimClient's "high level API" methods overview into more specific groups.
  • Added/improved some details about WASimClient's event callbacks and possible concurrency issues. (e474c7fd)

Other

  • All distributed pre-built libraries and module are built against MSFS SDK v0.24.3.0.

Full Changelog: 1.2.0.0...1.3.0.0


The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static, dynamic, and managed (.NET) libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.2.0 - Large update with fixes and new features

07 Nov 20:08
4b3fe92
Compare
Choose a tag to compare

Changes since v1.1.2

WASimModule

  • Fix binary data representation in results for named variable requests with 1-4 byte integer value sizes (int8 - int32 types) -- the result data would be encoded as a float type instead. (8c7724e6)
  • Restore ability to use Unit type specifiers when setting and getting Local vars. (e16049ac)
  • Added ability to specify/set a default 'L' var value and unit type in GetCreate command to use if the variable needs to be created. (61a52674)
  • GetCreate and SetCreate commands for non-L types now silently fall back to Get and Set respectively. (61a52674)
  • Fixed that command response for GetCreate was always sent as if responding to a Get command. (61a52674)
  • Added requestId to error logging and response output for data requests and add more info for Get command errors. (17791eef)
  • Added ability to return string type results for Get commands and Named data requests by converting them to calculator expressions automatically on the server. (983e7ab6)
  • Improved automatic conversion to calc code for other variable types by including the unit type, if given, and narrowing numeric results to integer types if needed. (983e7ab6)
  • Prevent possible simulator hang on exit when quitting with active client(s) connections. (70e0ef31)
  • Event loop processing is now paused/restarted also based on whether any connected client(s) have active data requests and if they are paused or not (previously it was only based on if any clients were connected at all). (90242ed4)
  • Fixes a logged SimConnect error when trying to unsubscribe from the "Frame" event (cause unknown). (90242ed4)
  • Data requests with Once type update period are now queued if data updates are paused when the request is submitted. These requests will be sent when/if updates are resumed again by the client. Fixes that data would be sent anyway when the request is initially submitted, even if updates are paused. (fe99bbb2)
  • Update reference list of KEY events and aliases as of MSFS SDK v0.22.3.0. (f045e150)

WASimClient and WASimClient_CLI (managed .NET)

  • Fixed incoming data size check for variable requests which are less than 4 bytes in size. (c8e74dfa)
  • Fixed early timeout being reported on long-running list() requests (eg.thousands of L vars). (a05a28c3)
  • Restored ability to specify Unit type for L vars and support for GetCreate with default value/unit and added extra features: (3090d534, 0a30646d)
    • Added unit name parameter to setLocalVariable() and setOrCreateLocalVariable().
    • Added getOrCreateLocalVariable().
    • Added VariableRequest::createLVar property.
    • Add optional create flag and unit name to VariableRequest() c'tor overloads.
  • Added async option to saveDataRequest() which doesn't wait for server response (saveDataRequestAsync() for the C# version). (82ea4252, 0a30646d)
  • Added ability to return a string value with getVariable() to make use of new WASimModule feature. (8e75eb8c, 0e54794b)
  • The request updates paused state (set with setDataRequestsPaused()) is now saved locally even if not connected to server and will be sent to server upon connection and before sending any queued data requests.
    This allows connecting and sending queued requests but suspending any actual value checks until needed. (bea8bccb)
  • The setVariable() method now verifies that the specified variable type is settable before sending the command to the server. (576914a2)
  • Removed logged version mismatch warning on Ping response.
  • Documentation updates.

WASimClient_CLI (managed .NET)

  • Fixed possible exception when assembling list lookup results dictionary in the off-case of duplicate keys. (cf46967b)

WASimUI

  • Added database of Simulator Variables, Key Events, and Unit types imported from SimConnect SDK online documentation. This is used for:
    • Typing suggestions in the related form fields when entering names of 'A' vars, Key Events, or Unit types.
    • Available as a popup search window from each related form (Variables, Key Events, Data Requests) via button/menu/CTRL-F shortcut.
    • Can be opened as a standalone window for browsing and searching all imported data by type.
  • Added ability to import and export Data Requests in MSFS/SimConnect Touch Portal Plugin format with a new editor window available to adjust plugin-specific data before export (category, format, etc.)
  • Fixed that the state of current item selections in tables wasn't always properly detected and buttons didn't get enabled/disabled when needed (eg. "Remove Requests" button).
  • Added ability to toggle visibility of each main form area of the UI from the View menu (eg. Variables or Key Events groups). Choices are preserved between sessions.
  • Simplified the connection/disconnection procedure by providing one action/button for both Sim and Server connections (independent actions still available via extension menu).
  • Typing suggestions in combo boxes now use a drop-down menu style selection list by default, and the behavior can be configured independently for each one.
  • String type variables can now be used in the "Variables" section for Get commands.
  • Unit type specifier is now shown and used for 'L' variables as well (unit is optional).
  • Added "Get or Create" action/button for 'L' vars.
  • The list of 'L' variables loaded from simulator is now sorted alphabetically.
  • The Size field in Data Request form is automatically populated with a likely match when a new Unit type is selected.
  • Many improvements in table views (all options are saved to user settings and persist between sessions):
    • All column widths are now re-sizable in all tables.
    • Columns can be toggled on/off in the views (r-click for context menu).
    • Can now be sorted by multiple columns (CTRL-click).
    • Option to show filtering (searching) text fields for each column. Filters support wildcards and optional regular expressions.
    • Font size can be adjusted (using context menu or CTRL key with +, -, or 0 to reset.
    • Tooltips shown with data values when hovered over table cells (readable even if text is too long to fit in the column).
  • Numerous shortcuts and context menus added throughout, each relevant to the respective forms/tables currently being used or clicked.
  • Last selected variable types and data request type are saved between sessions.
  • Most actions/buttons which require a server connection to work are now disabled when not connected.
  • When loading data requests from a file while connected to the server, the requests are now sent asynchronously, improving UI responsiveness.
  • More minor quality-of-life improvements!

Full log: v1.1.2.0...1.2.0.0


The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static, dynamic, and managed (.NET) libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.1.2 - Patch for two minor issues in v1.1.1 release.

23 Feb 10:40
682ceff
Compare
Choose a tag to compare

Changes since v1.1.1.0

WASimModule

  • Fixed KEY event alias for "AUTORUDDER_TOGGLE" -> KEY_AUTOCOORD_TOGGLE.
    (however, due to bug as of SU11 this event doesn't actually work correctly)

WASimUI

  • Fixed layout issue in "Variables" form which made the name selector/entry field too narrow.
  • Renamed form group "Calculator Event" to "Evaluate Calculator Code".

Please also read the v1.1.1 release notes if upgrading from an earlier version.


The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static, dynamic, and managed (.NET) libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.1.1 - Patch release for MSFS SU11/SDK 0.20.5 updates

31 Jan 02:00
70f5662
Compare
Choose a tag to compare

Changes since v1.1.0

WASimModule

  • Added 73 Key Event lookup names from latest MSFS SDK v0.20.5.0.
  • Added 55 Key Event lookup name aliases for published SimConnect Event IDs for which the KEY_* macro names do not match (result of my MSFS SDK Docs import project).
  • KEY_PROP_FORCE_BETA_* Key Event IDs (from last update) were updated again to reflect SDK v0.20.5.0 values.
  • Release version is now built using clang:-O3 level optimization since MSFS memory corruption issue confirmed fixed.

WASimClient and WASimClient_CLI

  • Improved detection of configuration file parameter (config) in class constructor being a file or directory, which also validates existence.

WASimUI

  • Improved visual separation of forms by function type (Variables, Lookup, etc).
  • Added/improved some of the tool-tip documentation notes for each core function (hover on section title).
  • Fixed "About" dialog box transparency issue.

The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static, dynamic, and managed (.NET) libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.1.0 - New API for multi-parameter Events, SU10 SDK updates.

02 Nov 06:50
34a2d2f
Compare
Choose a tag to compare

Changes since v1.0.0

Updates for MSFS 2020 SU10 changes and new event trigger API for sending multiple values.

WASimModule

  • Added new feature to trigger simulator Key Events with multiple value parameters (Gauge API trigger_key_event_EX1()).
  • Removed ability to get or set Local type variables with Unit specifiers (turns out MSFS hasn't supported this from the start).
  • Added Key Event lookup names for new KEY_PROP_FORCE_BETA_* events.
  • Added Token variable name lookups for CIRCUIT_NAVCOM4_ON and BREAKER_NAVCOM4.
  • Remove usage of deprecated send_key_event() for SendKey command in favor of trigger_key_event_EX1().
  • Module is now built with /clang:-O1 optimization level (the newly-recommended O3 level revealed a nasty MSFS memory corruption bug which should be fixed in SU11; I will have an update after SU11 release).

WASimClient

  • Added sendKeyEvent() methods for sending simulator Key Events with up to 5 values, either by event ID or by name.
  • Unit type specifiers for getting/setting Local variables are ignored (no longer sent to the server even if provided in the method call).

WASimClient_CLI

  • Added sendKeyEvent() methods (see above).
  • Added .NET Framework 4.6 and .NET 6.0 targets/builds (pre-built DLLs added to SDK distribution).
  • Re-targeted project for VS2022, MSVC v143.

WASimUI

  • Added new form for sending Key Events with up to 5 value parameters.
  • Added connected WASimModule (server) version number display.
  • Fixed that the calculation result display text field could not be cleared.

Shared Components

  • Minor optimization fix in SimConnect exception reporting module during lookup of a cached request record (for logging exception details).

The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static, dynamic, and managed (.NET) libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.0.0.8-rc1

02 Aug 19:07
cd51879
Compare
Choose a tag to compare

Changes since v1.0.0.7-beta3

WASimClient (and dependents)

  • Fix possible SimConnect exception (Sim crash) when removing data request subscriptions. Seemed to only happen occasionally and when SimConnect was under load from other clients.
  • Also cleans up removing data requests which were never sent to the server (eg. before Client was connected), which previously resulted in warnings from the server that the requests didn't exist.
  • Ensure no SimConnect calls run concurrently (also improves request tracking/error reporting).
  • Client validates that the configured ID is not zero before connecting to simulator.
  • Check/warning of version match with server module is now limited to major version part only.

WASIMClient_CLI

  • Added convenience methods for setting string values in Command and DataRequest structures.
  • Added more Command struct constructors.

General

  • Added Python example.

No changes in WASimModule besides version number.


The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static and dynamic libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.0.0.7-beta3

13 Jul 01:42
1ea637a
Compare
Choose a tag to compare

Changes since v1.0.0.6-beta2

WASimClient

  • Fixed WASimClient bug introduced in v1.0.0.6 that prevented Client from completing connection to Server on first attempt (but would work on the 2nd).

The issue affected all dependent projects as well. No changes in WASimModule except version number.


The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static and dynamic libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

v1.0.0.6-beta2

11 Jul 05:14
b6b50a4
Compare
Choose a tag to compare

Changes since v1.0.0.5-beta1

WASimModule

  • The SendKey command can now accept known key event IDs by name (and do the lookup automatically).
  • Stopped pre-compiling "Formatted" type calculator strings (for format_calculator_string()) since that seems to be broken in MSFS.
    (Query posted to devsupport)
  • Pause event loop processing (tick()) when all clients disconnect.

WASimClient

  • Minor adjustment to list result processing to ensure proper cancellation in case something is interrupted.

WASimClient_CLI

  • Fix exception when setting a char_array<> value from empty strings. Eg. DataRequest.unitName or Command.sData.

WASimUI

  • Display a message when a string-type calculator result returns an empty string (instead of just blank space).

The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static and dynamic libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder (so that the folder wasimcommander-module is inside the Community folder). MSFS would need to be restarted after adding the module for the first time.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system. No installer, simply unzip and run the WASimUI.exe file from either Explorer or a command line.

Initial Release v1.0.0.5-beta1

04 Jul 22:15
4a8d254
Compare
Choose a tag to compare

The release contains several download options (the actual file names have version numbers appended):

  • WASimCommander_SDK - All header files, pre-built static and dynamic libs, packaged WASM module, pre-build GUI, reference documentation, and other tools/examples.
  • WASimModule - Just the WASM module component, ready to be dropped into a MSFS Community folder.
  • WASimUI - Just the GUI application, which is very handy in combination with the WASM module for exploring the system.

Update July 5 08:00 Z - The actual module was missing from the WASM module folders in both the standalone and SDK downloads. Sorry about that!