<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="../XSLT/decoder.xsl"?>
<!DOCTYPE decoder-config SYSTEM "../DTD/decoder-config.dtd">

<!-- Copyright (C) JMRI 2003, 2004. 2007 All rights reserved -->
<!-- $Id: Bachmann_EZDCC_4fn.xml,v 1.7 2010/01/28 02:34:22 jacobsen Exp $ -->
<!--                                                                        -->
<!-- JMRI is free software; you can redistribute it and/or modify it under  -->
<!-- the terms of version 2 of the GNU General Public License as published  -->
<!-- by the Free Software Foundation. See the "COPYING" file for a copy     -->
<!-- of this license.                                                       -->
<!--                                                                        -->
<!-- JMRI is distributed in the hope that it will be useful, but WITHOUT    -->
<!-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or  -->
<!-- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License  -->
<!-- for more details.                                                      -->

<decoder-config>
		<version author="Peter Ulvestad" version="3" lastUpdated="20090725"/>
		<version author="Bob Jacobsen"	version="2" lastUpdated="20050621" />
		<!-- Made from the Lenz_DriveSelect.xml file version 5 -->
		<!-- Version 2 adds lowVersionID from Ian Birchenough -->
		<!-- Version 3 - added max value for CV2, changed Lenz tab name to Bachmann, updated dimensions and default values, added factory reset menu items (Peter Ulvestad) -->

<decoder>
	<family name="E-Z Command decoders" mfg="Bachmann Trains" lowVersionID="46">
		<model model="4 function decoder (36-550)" numOuts="4" numFns="8" maxMotorCurrent="1A" formFactor="HO" connector="NMRAmedium" >
			<output name="A" label="White" connection="plug"/> 
			<output name="B" label="Yellow" connection="plug"/>
			<output name="C" label="Green" connection="plug"/>
			<output name="D" label="Purple" connection="wire"/>
			<size length="31.5" width="16.0" height="3.80" units="mm"/>
		</model>
	</family>

	<programming direct="yes" paged="yes" register="yes" ops="yes"/>

	<variables>

		<variable label="Primary Address" CV="1" comment="Short address (Range 1-99)" item="Short Address"  default="03">
			<shortAddressVal/>
		</variable>

		<variable label="Start Volts" CV="2" item="Vstart" default="1" comment="Range 0-31">
			<decVal min="0" max="31"/>
		</variable>

		<variable label="Accel" CV="3" default="1" comment="Range 0-31">
			<decVal max="31"/>
		</variable>

		<variable label="Decel" CV="4" default="1" comment="Range 0-31">
			<decVal max="31"/>
		</variable>

<!-- deleted max and mid voltage-->

		<variable label="Version ID" CV="7" readOnly="yes" item="Decoder Version">
			<decVal/>
		</variable>
		
		<variable label="Manufacturer ID" CV="8" readOnly="yes" item="Manufacturer">
			<decVal/>
		</variable>

<!-- Deleted all CV 13 references-->

		<variable label="Long Address" CV="17" item="Extended Address" comment="4 digit address (Range 0001-9999)">
			<longAddressVal/>
		</variable>

		<variable label="Consist Address" CV="19" mask="XVVVVVVV" item="Consist Address">
			<decVal/>
		</variable>
		
		<variable label="Consist Direction" CV="19" mask="VXXXXXXX">
			<enumVal>
				<enumChoice choice="Normal"></enumChoice>
				<enumChoice choice="Reversed"></enumChoice>
			</enumVal>
		</variable>

		<variable label="Normal direction of motion" CV="29" mask="XXXXXXXV" item="Locomotive Direction">
			<enumVal>
				<enumChoice choice="Forward"/>
				<enumChoice choice="Reverse"/>
			</enumVal>
		</variable>

		<variable label="Speed Steps" CV="29" mask="XXXXXXVX" item="Speed Step Mode" default="1">
			<enumVal>
				<enumChoice choice="14"/>
				<enumChoice choice="28/128 (recommended)"/>
			</enumVal>
		</variable>

		<variable label="Analog conversion mode" CV="29" mask="XXXXXVXX" default="1" item="Analog (DC) Operation">
			<enumVal>
				<enumChoice choice="Off"/>
				<enumChoice choice="On"/>
			</enumVal>
		</variable>

		<variable label="Use Speed Table" CV="29" mask="XXXVXXXX" item="Speed Table Definition">
			<enumVal>
				<enumChoice choice="Don't use Speed Table"/>
				<enumChoice choice="Use Speed Table"/>
			</enumVal>
		</variable>

		<variable label="Addressing Mode" CV="29" mask="XXVXXXXX" item="Address Format">
			<enumVal>
				<enumChoice choice="2 digit addressing"/>
				<enumChoice choice="4 digit addressing"/>
			</enumVal>
		</variable>

		<variable label="Motor Drive Selection" CV="50" mask="XXXXVXXX" default="0">
  			<enumVal>
				<enumChoice choice="Precision Glide Control"/>
				<enumChoice choice="Silent Drive"/>
			</enumVal>
		</variable>

		<variable label="Brake Momentum on DC" CV="50" item="DC Brake Momentum" mask="XXXXXVXX"
	          	comment="Governs how loco acts in DC track block">
			<enumVal>
				<enumChoice choice="Loco runs under DC analog voltage control"/>
				<enumChoice choice="Loco brakes to a stop using momentum set in CV4"/>
		        </enumVal>
		</variable>

		<variable label="Directional Headlights" CV="51" mask="XXXXXXXV" comment="Output A">
		     	<enumVal>
		         	<enumChoice choice="Headlights are directional and operate automatically"/>
				<enumChoice choice="Headlights are independantly controlled (F0-Front, F1-Rear)"/>
		         </enumVal>
		</variable>

		<variable label="Output A dimming control" CV="51" mask="XXXXXXVX" comment="Controls how headlight dims (CV 52 controls amount)">
			<enumVal>
		        	<enumChoice choice="Always dim"/>
				<enumChoice choice="F1 or F4 controls dimming"/>
			</enumVal>
		</variable>

		<variable label="Output A dimming" CV="51" mask="XXXXXVXX" comment="Controls how front headlights dim">
			<enumVal>
				<enumChoice choice="Front headlight never dim"/>
				<enumChoice choice="Front headlight can dim"/>
			</enumVal>
		</variable>

		<variable label="Output A is Gyrolight" CV="51" mask="XXXVXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output A is Mars light" CV="51" mask="XXVXXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output A is single strobe" CV="51" mask="XVXXXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output A is double strobe" CV="51" mask="VXXXXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output A dim intensity" CV="52" default="64" comment="Controls how much headlights dim (0-dark to 255-max bright)">
			<decVal min="0" max="255"/>
		</variable>


		<variable label="Output B dimming control" CV="57" mask="XXXXXXVX">
			<enumVal>
				<enumChoice choice="Always dim"/>
				<enumChoice choice="F1 or F4 controls dimming"/>
			</enumVal>
		</variable>

		<variable label="Output B dimming" CV="57" mask="XXXXXVXX" comment="Controls how back headlights dims">
			<enumVal>
				<enumChoice choice="Back headlight never dim"/>
				<enumChoice choice="Back headlight can dim"/>
			</enumVal>
		</variable>

		<variable label="Output B is Gyrolight" CV="57" mask="XXXVXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output B is Mars light" CV="57" mask="XXVXXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output B is single strobe" CV="57" mask="XVXXXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output B is double strobe" CV="57" mask="VXXXXXXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output B dim intensity" CV="58" default="64" comment="Controls how much headlights dim (0-dark to 255-max bright)">
			<decVal min="0" max="255" />
		</variable>

		<variable label="Output C, D blink rate" CV="56" default="15" minOut="3" >
			<decVal min="0" max="255" />
		</variable>

		<variable label="Output C blinks" CV="53" minOut="3" mask="XXXXXXXV">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output D blinks" CV="53" minOut="4" mask="XXXXXXVX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>

		<variable label="Output C, D are ditch lights" CV="53" minOut="3" mask="XXXXXVXX">
			<enumVal>
				<enumChoice choice="no"/>
				<enumChoice choice="yes"/>
			</enumVal>
		</variable>


		<variable label="F1 controls output C" CV="54" mask="XXXXXXXV" minOut="3" minFn="1" item="F1 controls output 3" default="1">
			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F2 controls output C" CV="54" mask="XXXXXXVX" minOut="3" minFn="2" item="F2 controls output 3">
			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F3 controls output C" CV="54" mask="XXXXXVXX" minOut="3" minFn="3" item="F3 controls output 3">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F4 controls output C" CV="54" mask="XXXXVXXX" minOut="3" minFn="4" item="F4 controls output 3">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F5 controls output C" CV="54" mask="XXXVXXXX" minOut="3" minFn="5" item="F5 controls output 3"> 			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F6 controls output C" CV="54" mask="XXVXXXXX" minOut="3" minFn="6" item="F6 controls output 3">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F7 controls output C" CV="54" mask="XVXXXXXX" minOut="3" minFn="7" item="F7 controls output 3">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F8 controls output C" CV="54" mask="VXXXXXXX" minOut="3" minFn="8" item="F8 controls output 3">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>


		<variable label="F1 controls output D" CV="55" mask="XXXXXXXV" minOut="4" minFn="1" item="F1 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F2 controls output D" CV="55" mask="XXXXXXVX" minOut="4" minFn="2" item="F2 controls output 4" default="1">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F3 controls output D" CV="55" mask="XXXXXVXX" minOut="4" minFn="3" item="F3 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F4 controls output D" CV="55" mask="XXXXVXXX" minOut="4" minFn="4" item="F4 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F5 controls output D" CV="55" mask="XXXVXXXX" minOut="4" minFn="5" item="F5 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F6 controls output D" CV="55" mask="XXVXXXXX" minOut="4" minFn="6" item="F6 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F7 controls output D" CV="55" mask="XVXXXXXX" minOut="4" minFn="7" item="F7 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

		<variable label="F8 controls output D" CV="55" mask="VXXXXXXX" minOut="4" minFn="8" item="F8 controls output 4">			<enumVal> 
				<enumChoice choice="No"/>
				<enumChoice choice="Yes"/>
			</enumVal>
		</variable>

	<!-- User private ID CV's are not documented by Bachamann, but appear to work --> 
		<variable label="User Private ID #1" CV="105" item="User Id #1"> 
			<decVal/>
		</variable>

		<variable label="User Private ID #2" CV="106" item="User Id #2">
			<decVal/>
		</variable>

		<variable label="Speed Table" CV="67">
			<speedTableVal/>
		</variable>

	<!-- Define the fixed Function-Output mapping -->
		<constant label="FL(f) controls output 1" minOut="1" default="1" /> 
		<constant label="FL(r) controls output 2" minOut="2" default="1" /> 

	</variables>
	
	<resets>
		<factReset label="Reset All CVs" CV="8" default="33"/>
	</resets>

</decoder>

<pane name="Bachmann">
	<column>
	<display item="Motor Drive Selection" />
	<display item="Directional Headlights" />
	<label label=" "/>
	</column>

	<column>
	<display item="Output A dimming" />
	<display item="Output A dimming control" />
	<display item="Output A is Gyrolight" format="checkbox" />
	<display item="Output A is Mars light" format="checkbox" />
	<display item="Output A is single strobe" format="checkbox" />
	<display item="Output A is double strobe" format="checkbox" />
	<display item="Output A dim intensity" />

	<label label=" "/>

	<display item="Output B dimming" />
	<display item="Output B dimming control" />
	<display item="Output B is Gyrolight" format="checkbox" />
	<display item="Output B is Mars light" format="checkbox"  />
	<display item="Output B is single strobe" format="checkbox" />
	<display item="Output B is double strobe" format="checkbox" />
	<display item="Output B dim intensity" />
	
	<label label=" "/>

	<display item="Output C, D blink rate" />
	<display item="Output C blinks" />
	<display item="Output D blinks" />
	<display item="Output C, D are ditch lights" />
		
	</column>
</pane>

</decoder-config>

 	  	 
