Developer Quick Reference#
This contains a few useful bits of information for developers, mostly standard functions/objects.
DCC Decoder Standard Methods#
Decoders are created using the new keyword, and when created they should also create a jmri.throttle object for themselves. You can use the code below to create a throttle object:
train.all[trainPosition].throttle = new jmri.throttle(address,jmri.throttleName.generate()); //the jmri.throttleName.generate() just creates a name based on the position of the element in the train.
Each decoder object should also contain the following code to handle speed:
this.speed = {};
this.speed.state = 0;
this.speed.set = function (speed) {
train.all[trainPosition].throttle.speed.set(speed);
train.all[trainPosition].dcc.speed.state = speed;
};
this.speed.setMPH = function (mph) {
var speed = train.all[trainPosition].model.speed(mph);
train.all[trainPosition].dcc.speed.set(speed);
};
Finally, all decoder objects must have an f object for various functions. It must contain the following hierarchy, which is written in pseudo-JSON:
//All the functions, mostly sounds
f : {
headlight : {
set : function( Boolean state),
state : Boolean state,
},
bell : {
set : function ( Boolean state ),
state : Boolean state,
},
horn : {
set : function ( Boolean state ),
state : Boolean state,
},
compressor : {
set : function ( Boolean state),
state : Boolean state,
},
airDump : {
set : function ( Boolean state ),
state : Boolean state,
},
dynBrakes : {
set : function ( Boolean state ),
state : Boolean state,
},
engine : {
set : function ( Boolean state ),
state : Boolean state,
},
notch : {
up : function(),
down : function(),
state : Integer[0-8],
},
},