Communication avec MSFS - SimConnect et WASM

Présentation de l'utilisation de SimConnect et WASM pour la communication avec le cockpit

Variables dans MSFS 2020

Les informations de l'avion sont contenues dans les variables MSFS. Il existe plusieurs type de variables :

SimVar Les varaibles "native" à flight simulateur
LVar Les varaibles définit spécifiquement par l'avion
Autres à définir
La combinaison des ces varaibles permet en théorie de lire tous les données de l'avion. L'A32NX de FBW propose d'ailleurs une documentation permettant de connaitre le détails des variables dont l'avion dispose: https://docs.flybywiresim.com/fbw-a32nx/a32nx-api/a32nx-flightdeck-api/

Les Simvars sont récupérables par la librairie officiel de Microsoft Flight simulator.

Pour les LVar il faut passer par une autre solution :

  • Utilisation de FSUIPC http://www.fsuipc.com
    Essayé et tout à fait fonctionnel, une dll est disponible pour C#, possibilité par Websocket...
  • Utilisation de SpadNX
    Non essayé
  • Passer par module WASM dévolppé en C++

Choix de la solution pour les LVar

J'ai choisi de passer par le développement d'un module WASM.
A l'heure actuelle ne connaissant pas toutes les types de variables à récupérer, ne pas être dépandant d'une librairie tiers me laissera peut-être plus de liberté par la suite.

Le développement d'un module WASM est proposé par MSFS pour par exemple développer des addons. Ici il servira uniquement de passerelle pour récupérer les LVar.
Le repo git du module est ici : https://github.com/rguilbeau/A320_Cockpit_WASM

Lecture d'une SimVar

La lecture des SimVar passe directement par la libririe SimConnect:

  • 1 -> 2 : demande de lecture d'une SimVar
  • 3 -> 4 : récupération de la valeur de la Simvar par SimConnect
  • 5 -> 6 : retour de la valeur de la SimVar à l'application de transfert
  • Envoi de la frame consrtuite par l'application de transfert aux modules du Cockpit via le CAN Bus

Lecture d'une LVar

La lecture des LVar passe par le module WASM mais pour communiquer avec ce dernier il est nécessaire d'utiliser SimConnect:

  • 1 -> 2 : demande de lecture d'une LVar
  • 3 -> 4 : récupération de la valeur de la LVar par le module WASM
  • 5 -> 6 : retour de la valeur de la LVar à l'application de transfert
  • Envoi de la frame consrtuite par l'application de transfert aux modules du Cockpit via le CAN Bus