BLINK(vpin, onMs,offMs) which will start a vpin blinking until such time as it is SET, RESET or set by a signal operation such as RED, AMBER, GREEN. BLINK returns immediately, the blinking is autonomous. This means a signal that always blinks amber could be done like this: SIGNAL(30,31,32) ONAMBER(30) BLINK(31,500,500) DONE The RED or GREEN calls will turn off the amber blink automatically. Alternatively a signal that has normal AMBER and flashing AMBER could be like this: #define FLASHAMBER(signal) \ AMBER(signal) \ BLINK(signal+1,500,500) (Caution: this assumes that the amber pin is redpin+1) == FTOGGLE(function) Toggles the current loco function (see FON and FOFF) XFTOGGLE(loco,function) Toggles the function on given loco. (See XFON, XFOFF) TOGGLE_TURNOUT(id) Toggles the turnout (see CLOSE, THROW) STEALTH_GLOBAL(code) ADVANCED C++ users only. Inserts code such as static variables and functions that may be utilised by multiple STEALTH operations. // 5.2.34 - Command fopr DCC Extended Accessories. This command sends an extended accessory packet to the track, Normally used to set a signal aspect. Aspect numbers are undefined as sdtandards except for 0 which is always considered a stop. // - Exrail ASPECT(address,aspect) for above. The ASPECT command sents an aspect to a DCC accessory using the same logic as . // - EXRAIL DCCX_SIGNAL(Address,redAspect,amberAspect,greenAspect) This defines a signal (with id same as dcc address) that can be operated by the RED/AMBER/GREEN commands. In each case the command uses the signal address to refer to the signal and the aspect chosen depends on the use of the RED AMBER or GREEN command sent. Other aspects may be sent but will require the direct use of the ASPECT command. The IFRED/IFAMBER/IFGREEN and ONRED/ONAMBER/ONGREEN commands contunue to operate as for any other signal type. It is important to be aware that use of the ASPECT or commands will correctly set the IF flags and call the ON handlers if ASPECT is used to set one of the three aspects defined in the DCCX_SIGNAL command. Direct use of other aspects does not affect the signal flags. ASPECT and can be used withput defining any signal if tyhe flag management or ON event handlers are not required. // 5.2.33 - Exrail CONFIGURE_SERVO(vpin,pos1,pos2,profile) This macro offsers a more convenient way of performing the HAL call in halSetup.h In halSetup.h --- IODevice::configureServo(101,300,400,PCA9685::slow); In myAutomation.h --- CONFIGURE_SERVO(101,300,400,slow) // 5.2.32 - Railcom Cutout (Initial trial Mega2560 only) This cutout will only work on a Mega2560 with a single EX8874 motor shield configured in the normal way with the main track brake pin on pin 9. Turns on the cutout mechanism. Tirns off the cutout. (This is the default) ONLY to be used by developers used for waveform diagnostics. (In DEBUG mode the main track idle packets are replaced with reset packets, This makes it far easier to see the preambles and cutouts on a logic analyser or scope.) // 5.2.31 - Exrail JMRI_SENSOR(vpin [,count]) creates types. This Macro causes the creation of JMRI type sensors in a way that is simpler than repeating lines of commands. JMRI_SENSOR(100) is equenvelant to JMRI_SENSOR(100,16) will create type sensors for vpins 100-115. // 5.2.26 - Silently ignore overridden HAL defaults // - include HAL_IGNORE_DEFAULTS macro in EXRAIL The HAL_IGNORE_DEFAULTS command, anywhere in myAutomation.h will prevent the startup code from trying the default I2C sensors/servos. // 5.2.24 - Exrail macro asserts to catch // : duplicate/missing automation/route/sequence/call ids // : latches and reserves out of range // : speeds out of range Causes compiler time messages for EXRAIL issues that would normally only be discovered by things going wrong at run time. // 5.2.13 - EXRAIL STEALTH Permits a certain level of C++ code to be embedded as a single step in an exrail sequence. Serious engineers only. // 5.2.9 - EXRAIL STASH feature // - Added ROUTE_DISABLED macro in EXRAIL