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}