001package jmri.jmrix.can.cbus.simulator.moduletypes; 002 003import javax.annotation.Nonnull; 004 005import jmri.jmrix.can.cbus.node.CbusNodeEvent; 006import jmri.jmrix.can.cbus.node.CbusNode; 007import jmri.jmrix.can.cbus.simulator.CbusSimulatedModuleProvider; 008 009import org.openide.util.lookup.ServiceProvider; 010 011/** 012 * CbusMax CBUS Simulation Module Provider. 013 * A simulation which has 255 NVs, 255 Events, and 255 EVs per Event. 014 * @author Steve Young Copyright (C) 2022 015 */ 016@ServiceProvider(service = CbusSimulatedModuleProvider.class) 017public class CbusMax extends CbusSimulatedModuleProvider { 018 019 @Override 020 public int getManufacturerId() { 021 return 0; 022 } 023 024 @Override 025 public int getModuleId() { 026 return 255; 027 } 028 029 @Override 030 public void configureDummyNode(@Nonnull CbusNode node) { 031 // 255 parameters could have unintended future 032 // consequences so staying with the standard 20 033 // for now 034 int[] _params = new int[]{ 035 20, /* 0 num parameters */ 036 0, /* 1 manufacturer ID */ 037 89, /* 2 Minor code version */ 038 255, /* 3 Manufacturer module identifier */ 039 255, /* 4 Number of supported events */ 040 255, /* 5 Number of Event Variables per event */ 041 255, /* 6 Number of Node Variables */ 042 1, /* 7 Major version */ 043 13, /* 8 Node flags */ 044 13, /* 9 Processor type */ 045 1, /* 10 Bus type */ 046 0, /* 11 load address, 1/4 bytes */ 047 8, /* 12 load address, 2/4 bytes */ 048 0, /* 13 load address, 3/4 bytes */ 049 0, /* 14 load address, 4/4 bytes */ 050 0, /* 15 CPU manufacturer's id 1/4 */ 051 0, /* 16 CPU manufacturer's id 2/4 */ 052 0, /* 17 CPU manufacturer's id 3/4 */ 053 0, /* 18 CPU manufacturer's id 4/4 */ 054 1, /* 19 CPU manufacturer code */ 055 1, /* 20 Beta revision */ 056 }; 057 node.getNodeParamManager().setParameters(_params); 058 int[] _nvArray = new int[256]; 059 _nvArray[0]=255; 060 for (int i = 1; i < _nvArray.length; i++) { 061 _nvArray[i] = i; 062 } 063 // create array of event variables 064 int[] evVarArray = new int[255]; 065 for (int i = 0; i < evVarArray.length; i++) { 066 evVarArray[i] = i+1; 067 } 068 for (int i = 1; i < 256; i++) { 069 070 CbusNodeEvent singleEv = new CbusNodeEvent(node.getMemo(),i,i,-1,i,255); 071 singleEv.setEvArr(evVarArray); 072 node.getNodeEventManager().addNewEvent(singleEv); 073 074 } 075 node.getNodeNvManager().setNVs( _nvArray ); 076 node.setNodeNameFromName("MAXND"); 077 } 078 079 @Override 080 public String getModuleType() { 081 return "CBUS TestMax"; 082 } 083 084 @Override 085 public String getToolTipText() { 086 return "Simulated Module which has 255 NVs, 255 Events, and 255 EVs per Event."; 087 } 088 089}