001package jmri.jmrix.can.cbus.simulator.moduletypes; 002 003import javax.annotation.Nonnull; 004 005import static jmri.jmrix.can.cbus.CbusConstants.MTYP_CANSPROG3P; 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 SPROG 3 Plus, Pi-SPROG 3v2 and Pi-SPROG 3 Plus 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 SprogPiSprog3Plus extends CbusSimulatedModuleProvider { 020 021 @Override 022 public int getManufacturerId() { 023 return SPROG_DCC; 024 } 025 026 @Override 027 public int getModuleId() { 028 return MTYP_CANSPROG3P; 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_CANSPROG3P, /* 3 Manufacturer module identifier */ 038 0, /* 4 Number of supported events */ 039 0, /* 5 Number of Event Variables per event */ 040 22, /* 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 22, // 22 NV's, defined in position 0 060 0, // 1 command station number 061 0x76, // 2 User flags 062 0, // 3 Operations flags 063 0, // 4 Debug flags 064 0, // 5 Prog track power mode 065 250, // 6 Prog track trip limit 066 0, // 7 Read only vinsense 067 0, // 8 Read only isense_main 068 0x02, // 9 DCC accessory packet repeat count 069 0x00, // 10 Multimeter enable 070 0, // 11 NN to map to DCC hi byte 071 0, // 12 NN to map to DCC lo byte 072 250, // 13 Main track trip limit 073 0, // 14 Read only isense_prog 074 0, // 15 Read only main current sense high water mark 075 0, // 16 Read only prog current sense high water mark 076 0, // 17 Setup mode 077 114, // 18 Default CAN ID 078 0xFF, // 19 Node number hi byte 079 0xFE, // 20 Node number lo byte 080 16, // 21 Number of pre-amble bits 081 0, // 22 Can Disable 082 }; 083 node.getNodeNvManager().setNVs( _nvArray ); 084 085 node.setNodeNameFromName("SPROG3P"); 086 } 087 088}