EHID for developers
Do you just want to use EHID? Then please visit the page EHID for end-users.
The EHID provides an abstraction layer for communication between applications and simulation hardware.
Situation before EHID
In the simulation area there is no defined interface between proprietary hardware and proprietary software. Each manufacturer of simulation hardware needs to provide and maintain different drivers with varying features for the various simulators such as MS FS9, MS FSX or X-Plane. On the other hand there are many authors of extensions which gives various functions a more realistic design. This in turn must be addressed separately by different methods for each simulator.
At least the Microsoft flight simulators can be influenced using the well-known FSUIPC by Peter Dawson. Giving access to a set of variables of the flight simulator it fails to make a dedicated access to individual switches, buttons and other controls in an airplane.
This precisely is the EHID difference.
Situation with EHID
The EHID creates a well-documented interface which allows to address individual hardware components without contributing additional functional logic.
This means a switch with three switching positions will have the values 0,1 or 2 independently from other objects, the history or any kind of operating mode. The EHID detects the position of the switch and always sends a message to the application when the switch changes its position. It also works the other way around. The application instructs the EHID e.g. to switch an LED on and the EHID takes care that the LED is turned on.
Each control element of an B737 and an A320 cockpit, whether switch, indicator, brake, throttle or instrument needle is assigned an unique number which is documented graphically. This allows an application to easily address specific functions and a matching device can easily connect to the real world.
Following this approach hardware developers will just need to implement a single implementation for EHID and software developers do not have to deal with the characteristics of a hardware device or its interface driver.
Virtual devices with EHID
Each simulator provides a specific configuration. There is not all equipment available and not every possible extension is installed. As an additional feature EHID defines virtual devices. These devices receive output events and a switch status can be scanned without a physical device is present. As soon as a suitable device is connected the EHID takes care on all required adjustments without any special functions to be provided by the individual developers.
Simultaneously other programs may address the virtual device. This enables the realisation of GUI-based devices which behaves the same to the application like the real device.
Modules in EHID
In addition applications, drivers and others EHID based programs can be plugged in as modules. Thus the EHID is extended with additional functions as if they were integrated directly.
A key to this are virtual objects that are also the basis for the virtual devices. They serve as placeholders as long as the actual object is not connected to the EHID. But they can also represent abstract functions and as such define objects, that do not provide any actual operating device. Thus for example the pressure of a hydraulic circuit may be represented.
By using virtual objects it is possible to implement a defined interface between different modules on a more complex level. For example, a module could implement the functions of the radio system and as such take care on the frequency changing of the different NAV radios. An application can then be limited to the actual functionality. How the user has entered the frequency at which radio is no longer of interest.
In addition there is the possibility to address objects by several applications at the same time. Thus, the module of a different manufacturer may be used as a basis to implement additional functions or to modify the behaviour of existing ones with an own separate module.
How the EHID works
The EHID is an application for the Windows system. All communication with the EHID works over TCP/IP, providing the option to start and address several EHID on different machines. The application connecting to the EHID can be written in every programming language and run on any platform as long as TCP/IP communication is possible.
Unique identification of individual objects is done by a 32-bit object ID which can be extended to 64-bit or more if necessary. A few messages allow changes of values by specifying the object ID. Wildcards are also supported, to set more than one event simultaneously. As soon as an input element changes, the EHID sends a message to the corresponding object ID to the application.
To help manufacturers of applications and modules to use EHID we offer a complete development kit with sample applications and source code for modules and a complete set of documentation.
In addition EHID provides the facility for rights management using certificates and keys. Every software manufacturer can determine individually to whom and to which extent he makes the functions available and for how long. Using the license tools available from us licenses for full versions and free demo versions with limited functionality or limited duration can be generated. For this we use cryptographically secure methods with sufficient long keys.