<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.bvestation.com/index.php?action=history&amp;feed=atom&amp;title=Win32_DLLs</id>
		<title>Win32 DLLs - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.bvestation.com/index.php?action=history&amp;feed=atom&amp;title=Win32_DLLs"/>
		<link rel="alternate" type="text/html" href="https://wiki.bvestation.com/index.php?title=Win32_DLLs&amp;action=history"/>
		<updated>2026-05-15T12:44:21Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://wiki.bvestation.com/index.php?title=Win32_DLLs&amp;diff=37&amp;oldid=prev</id>
		<title>Kevin: Created page with &quot;&lt;font size=&quot;small&quot;&gt;&lt;font face=&quot;sans-serif&quot;&gt;  &lt;font size=&quot;+2&quot; color=&quot;#0080ff&quot;&gt;Win32 train plugins&lt;/font&gt;&lt;br /&gt;  {| style=&quot;border: 0px currentColor; margin-right: 10pt; margin-l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.bvestation.com/index.php?title=Win32_DLLs&amp;diff=37&amp;oldid=prev"/>
				<updated>2015-02-07T00:08:14Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;font size=&amp;quot;small&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;sans-serif&amp;quot;&amp;gt;  &amp;lt;font size=&amp;quot;+2&amp;quot; color=&amp;quot;#0080ff&amp;quot;&amp;gt;Win32 train plugins&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;  {| style=&amp;quot;border: 0px currentColor; margin-right: 10pt; margin-l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;font size=&amp;quot;small&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;sans-serif&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;+2&amp;quot; color=&amp;quot;#0080ff&amp;quot;&amp;gt;Win32 train plugins&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px currentColor; margin-right: 10pt; margin-left: 10pt&amp;quot;&lt;br /&gt;
| &amp;lt;font size=&amp;quot;-1&amp;quot; color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;1.5em&amp;quot;&amp;gt;Win32 train plugins are not available on operating systems other than Microsoft Windows. Therefore, these plugins are officially deprecated. Please use [http://trainsimframework.org/develop/plugin_overview.html .NET assemblies] from now on.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;The header and code files for the C/C++ programming languages are available to download here:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; |&lt;br /&gt;
[[plugin_h.txt|plugin.h]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; |&lt;br /&gt;
[[plugin_cpp.txt|plugin.cpp]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; |&lt;br /&gt;
[[plugin_def.txt|plugin.def]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;'''Data types:'''&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 32-bit signed integer ranging from -2147483648 to 2147483647&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 32-bit floating point number according to the IEEE 754 binary32 standard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | double&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 64-bit floating point number according to the IEEE 754 binary64 standard&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;height: 4px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;+1&amp;quot; color=&amp;quot;#0080ff&amp;quot;&amp;gt;■ Overview&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px currentColor; margin-right: 10pt; margin-left: 10pt&amp;quot;&lt;br /&gt;
| &amp;lt;font size=&amp;quot;-1&amp;quot; color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;The following functions are called in this order when the plugin is loaded:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| Load&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| GetPluginVersion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetVehicleSpec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| Initialize&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetPower&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetBrake&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetReverser&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetSignal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;The following functions are called whenever their respective events occur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetPower&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetBrake&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetReverser&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| KeyDown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| KeyUp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| HornBlow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| DoorOpen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| DoorClose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetSignal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| SetBeaconData&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;The following function is called when the plugin is unloaded:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | ●&lt;br /&gt;
|&lt;br /&gt;
| Dispose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;height: 4px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;+1&amp;quot; color=&amp;quot;#0080ff&amp;quot;&amp;gt;■ Descriptions&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px currentColor; margin-right: 10pt; margin-left: 10pt&amp;quot;&lt;br /&gt;
| &amp;lt;font size=&amp;quot;-1&amp;quot; color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;'''ATS_API void WINAPI Load()'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is the first to be called after the plugin has been loaded. When this function triggers inside the plugin, a matching Dispose() call will be made when the plugin is unloaded.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI Dispose()'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is the last to be called before the plugin is unloaded.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API int WINAPI GetPluginVersion()'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called after Load() in order to query the version of the API to use for the plugin. Currently, there is only one version available. If the version returned does not match the expected value, Dispose() will be called and the plugin is unloaded.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''Return value:''&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_VERSION&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 0x20000 (131072)&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | Valid plugin version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI SetVehicleSpec (ATS_VEHICLESPEC vehicleSpec)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called after GetPluginVersion() is called and informs the plugin about the specifications of the train.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''struct ATS_VEHICLESPEC''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int BrakeNotches&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The amount of brake notches the train has. This does not include the emergency brake, but it does include the hold brake if the train has one. For trains with automatic air brakes, 2 is returned.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int PowerNotches&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The amount of power notches the train has.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int AtsNotch&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The brake notch index corresponding to the first real brake notch. For trains with automatic air brakes, this returns 1. For other trains, this returns 2 if the train has a hold brake, and 1 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int B67Notch&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The brake notch index corresponding to 70% of the brake notches, i.e. round(0.7 * BrakeNotches).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Cars&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The number of cars the train has.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI Initialize(int brake)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called after SetVehicleSpec() is called and informs the plugin about the mode the safety system should start in. If the safety system in your plugin can be activated or deactivated, you should initialize the state of the plugin accordingly. When the user selects a ''Jump to station'' target, this function is also called prior to moving the train to its new location.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''brake''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_INIT_ON_SRV&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The plugin should start in an '''active''' state. The ''service'' brakes are applied on startup.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_INIT_ON_EMG&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 0&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The plugin should start in an '''active''' state. The '''emergency''' brakes are applied on startup.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_INIT_OFF_EMG&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 1&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The plugin should start in an ''inactive'' state. The '''emergency''' brakes are applied on startup.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API ATS_HANDLES WINAPI Elapse(ATS_VEHICLESTATE vehicleState, int[] panel, int[] sound)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called every frame, informs the plugin about the current state of the train, and expects the handles as overwritten by the safety system in return. The state of plugin-specific panel elements can also be set, as well as instructions to play plugin-specific sounds.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''struct ATS_VEHICLESTATE''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | double Location&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current track position of the front of the train in meters.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float Speed&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current signed speed of the train in km/h. Negative values represent a backward movement, positive ones a forward movement.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Time&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current time in milliseconds since midnight of day one. Please note that the time wraps round after 24 days, thus values are between 0 and 2073599999.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float BcPressure&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current pressure in the brake cylinder in pascal.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float MrPressure&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current pressure in the main reservoir in pascal.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float ErPressure&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current pressure in the equalizing reservoir in pascal.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float BpPressure&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current pressure in the brake pipe in pascal.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float SapPressure&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The current pressure in the straight air brake in pascal.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float Current&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | This value always returns 0 and should be ignored.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;''int[] panel''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;An array with 256 elements (0 through 255) which can be set to any value. The values in the array are preserved between successive Elapse() calls. At the beginning of the simulation, all elements are initialized to 0. Panel developers can query values of this array via the ats''i'' subject, while developers of animated objects can query values via the pluginstate[''i''] variable. You should coordinate your efforts with panel/object developers and release a specification that tells which element in the array has what purpose.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''int[] sound''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;An array with 256 elements (0 through 255) which can be set to any sound instruction. The values in the array are preserved between successive Elapse() calls. At the beginning of the simulation, all elements are initialized to ATS_SOUND_PLAYLOOPING (0). Train developers can reference sounds in the sound.cfg file. You should coordinate your efforts with train developers and release a specification that tells which sound index plays what kind of sound. The sound instructions that can be used are:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_SOUND_STOP&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | -10000&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | Stops the sound.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; |&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | -9999 through -1&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | Plays the sound in a loop with a given volume. -9999 corresponds to 0.01% volume and -1 corresponds to 99.99% volume. If the sound is already playing (looping or not), only the volume is changed.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_SOUND_PLAYLOOPING&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 0&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | Plays the sound in a loop with 100% volume. If the sound is already playing (looping or not), only the volume is changed.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_SOUND_PLAY&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 1&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | Plays the sound once. If the sound is already playing, a new instance of the sound starts playing. Subsequently, stopping or changing volume only affects the new sound. The host application will set the sound instruction to ATS_SOUND_CONTINUE after having processed it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_SOUND_CONTINUE&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 2&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | Does not execute any command. You should set to this value if you don't want to change anything.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;''Return value struct ATS_HANDLES''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Brake&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The brake notch to apply. See SetBrake() below for more information.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Power&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The power notch to apply. Must be within the range from 0 to ''PowerNotches''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Reverser&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The reverser to apply. -1 is backward, 0 is neutral and 1 is forward.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int ConstantSpeed&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The operation mode of the constant speed system. ATS_CONSTANTSPEED_CONTINUE (0) uses the driver's setting, ATS_CONSTANTSPEED_ENABLE (1) forces the system on and ATS_CONSTANTSPEED_DISABLE (2) forces the system off.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;⚠&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;#e0e0e0&amp;quot; |&lt;br /&gt;
| bgcolor=&amp;quot;#e0e0e0&amp;quot; | Please note that if you want the driver's settings to take effect, you need to respond to the SetPower(), SetBrake() and SetReverse() calls, save the values that are passed in this those calls, and reapply them here.&lt;br /&gt;
| bgcolor=&amp;quot;#e0e0e0&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI SetPower(int notch)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when the driver changes the power notch. The value passed can range from 0 to ''PowerNotches''.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI SetBrake(int notch)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when the driver changes the brake notch. For trains with automatic air brake, 0 is RELEASE, 1 is LAP, 2 is SERVICE and 3 is EMERGENCY.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;For other trains that do not have a hold brake, 0 is released brakes, 1 is brake notch 1, 2 is brake notch 2, etc., ''BrakeNotches'' is the maximum brake notch, and ''BrakeNotches''+1 is the emergency brake.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;For other trains that have a hold brake, 0 is released brakes, 1 is the hold brake, 2 is brake notch 1, 3 is brake notch 2, etc., ''BrakeNotches'' is the maximum brake notch, and ''BrakeNotches''+1 is the emergency brake.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Generally, for trains without the automatic air brake, ''AtsNotch'' is the first brake notch and ''BrakeNotches'' is the maximum brake notch. For all types of trains, ''BrakeNotches''+1 is the emergency brake.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI SetReverser(int pos)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when the driver changes the reverser position. The value of -1 corresponds to backward, 0 to neutral and 1 to forward.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI KeyDown(int atsKeyCode)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when a plugin-specific key is pressed down. The passed value ''atsKeyCode'' corresponds to any value between ATS_KEY_S (0) and ATS_KEY_L (15). When you make use of plugin-specific keys, release a specification that gives the official name of the key (e.g. SECURITY_S, SECURITY_A1, SECURITY_B2, etc.) or their shorthands (S, A1, B2, etc.) along with the meaning.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI KeyUp(int atsKeyCode)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when a plugin-specific key is released. The passed value ''atsKeyCode'' corresponds to any value between ATS_KEY_S (0) and ATS_KEY_L (15). When you make use of plugin-specific keys, release a specification that gives the official name of the key (e.g. SECURITY_S, SECURITY_A1, SECURITY_B2, etc.) or their shorthands (S, A1, B2, etc.) along with the meaning.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI HornBlow(int hornType)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when any of the horn starts or stops playing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''hornType''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_HORN_PRIMARY&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 0&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The function is called only when the horn starts playing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_HORN_SECONDARY&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 1&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The function is called only when the horn starts playing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | ATS_HORN_MUSIC&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | 2&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The function is called both when the horn starts playing and when it stops playing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI DoorOpen()'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when the doors start opening.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI DoorClose()'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when the doors have finished closing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI SetSignal(int signal)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called whenever the current signalling section would change its aspect assuming the player's train is not inside. This can occur when passing section boundaries, but only if the newly entered section has a different aspect than the previous one. It can also occur when a preceding train clears any upcoming block and the current section would change its aspect as a consequence of that. Thus, the SetSignal call can occur at any time. The passed value ''signal'' represents the section value (the aspect number).&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;⚠&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;#e0e0e0&amp;quot; |&lt;br /&gt;
| bgcolor=&amp;quot;#e0e0e0&amp;quot; | Please note that the SetSignal call assumes that the player's train is not inside the section for which the SetSignal call is raised. Otherwise, the reported aspect would always be red, which would not be very meaningful to work with.&lt;br /&gt;
| bgcolor=&amp;quot;#e0e0e0&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'''ATS_API void WINAPI SetBeaconData(ATS_BEACONDATA beaconData)'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This function is called when a beacon is passed.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''struct ATS_BEACONDATA''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Type&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The type of the beacon. In CSV routes, this corresponds to ''Type'' in Track.Beacon(''Type''&amp;lt;nowiki&amp;gt;; &amp;lt;/nowiki&amp;gt;''BeaconStructureIndex''&amp;lt;nowiki&amp;gt;; &amp;lt;/nowiki&amp;gt;''Section''&amp;lt;nowiki&amp;gt;; &amp;lt;/nowiki&amp;gt;''Data'').&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Signal&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The aspect number currently shown on the associated section. In CSV routes, this corresponds to any of the values in Track.Section(''Aspect&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;'', ''Aspect&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;'', ..., ''Aspect&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;'')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | float Distance&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The distance from the front of the train to the signal in meters. This can be negative if the associated section is behind the front of the train.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | int Data&lt;br /&gt;
| style=&amp;quot;padding: 4px; border: 2px ridge currentColor&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; | The data of the beacon. In CSV routes, this corresponds to ''Data'' in Track.Beacon(''Type''&amp;lt;nowiki&amp;gt;; &amp;lt;/nowiki&amp;gt;''BeaconStructureIndex''&amp;lt;nowiki&amp;gt;; &amp;lt;/nowiki&amp;gt;''Section''&amp;lt;nowiki&amp;gt;; &amp;lt;/nowiki&amp;gt;''Data'').&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;''Type'' can be in the range from 0 to 2147483647, while ''Data'' can be in the range from -2147483648 to 2147483647. Please see the page about [http://trainsimframework.org/develop/information_standards.html standards] to learn more about assigning beacon types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>	</entry>

	</feed>