001package jmri.jmrix.can.cbus.simulator.moduletypes;
002
003import javax.annotation.Nonnull;
004
005import static jmri.jmrix.can.cbus.CbusConstants.MTYP_CANPiSPRG3;
006import static jmri.jmrix.can.cbus.CbusConstants.SPROG_DCC;
007
008import jmri.jmrix.can.cbus.node.CbusNode;
009import jmri.jmrix.can.cbus.simulator.CbusSimulatedModuleProvider;
010
011import org.openide.util.lookup.ServiceProvider;
012
013/**
014 * Sprog DCC Pi-SPROG 3 (not v2) CBUS Simulation Module Provider.
015 * @author Andrew Crosland Copyright (C) 2021
016 * @author Steve Young Copyright (C) 2022
017 */
018@ServiceProvider(service = CbusSimulatedModuleProvider.class)
019public class SprogPiSprog3 extends CbusSimulatedModuleProvider {
020
021    @Override
022    public int getManufacturerId() {
023        return SPROG_DCC;
024    }
025
026    @Override
027    public int getModuleId() {
028        return MTYP_CANPiSPRG3;
029    }
030
031    @Override
032    public void configureDummyNode(@Nonnull CbusNode node) {
033        int[] _params = new int[]{ 
034            20, /* 0 num parameters   */
035            SPROG_DCC, /* 1 manufacturer ID   */
036            'f', /* 2 Minor code version   */
037            MTYP_CANPiSPRG3, /* 3 Manufacturer module identifier   */
038            0, /* 4 Number of supported events   */
039            0, /* 5 Number of Event Variables per event   */
040            13, /* 6 Number of Node Variables   */
041            3, /* 7 Major version   */
042            0, /* 8 Node flags   */ 
043            25, /* 9 Processor type   */
044            0, /* 10 Bus type   */
045            0, /* 11 load address, 1/4 bytes   */
046            8, /* 12 load address, 2/4 bytes   */
047            4, /* 13 load address, 3/4 bytes   */
048            0, /* 14 load address, 4/4 bytes   */
049            0, /* 15 CPU manufacturer's id 1/4  */
050            0, /* 16 CPU manufacturer's id 2/4  */
051            0, /* 17 CPU manufacturer's id 3/4  */
052            0, /* 18 CPU manufacturer's id 4/4  */
053            1, /* 19 CPU manufacturer code   */
054            1, /* 20 Beta revision   */
055        };
056        node.getNodeParamManager().setParameters(_params);
057
058        int[] _nvArray = new int[]{
059            13, // 13 NV's, defined in position 0
060            0, // 1 Setup mode
061            0, // 2 ZTC mode
062            0, // 3 Blueline mode
063            0, // 4 ACK sensitivity
064            0, // 5 Command station mode
065            250, // 6 Track trip limit
066            0, // 7 Read only vinsense
067            0, // 8 Read only isense
068            0x02, // 9 DCC accessory packet repeat count
069            0x00, // 10 Multimeter enable
070            16, // 11 Number of pre-amble bits
071            0x76, // 12 User flags
072            0, // 13 Operations flags
073        }; 
074        node.getNodeNvManager().setNVs( _nvArray );
075
076        node.setNodeNameFromName("PiSPRG3");
077    }
078
079}