001package jmri.jmrix.can.cbus.simulator.moduletypes; 002 003import javax.annotation.Nonnull; 004 005import jmri.jmrix.can.cbus.simulator.CbusSimulatedModuleProvider; 006import jmri.jmrix.can.cbus.node.CbusNode; 007 008import static jmri.jmrix.can.cbus.CbusConstants.MANU_MERG; 009 010import org.openide.util.lookup.ServiceProvider; 011 012/** 013 * MERG CANMIO-SVO CBUS Simulation Module Provider. 014 * @author Steve Young Copyright (C) 2022 015 */ 016@ServiceProvider(service = CbusSimulatedModuleProvider.class) 017public class MergCanmiosvo extends CbusSimulatedModuleProvider { 018 019 @Override 020 public int getManufacturerId() { 021 return MANU_MERG; 022 } 023 024 @Override 025 public int getModuleId() { 026 return 50; 027 } 028 029 @Override 030 public void configureDummyNode(@Nonnull CbusNode node) { 031 032 node.setnvWriteInLearnOnly(true); 033 034 int[] _params = new int[]{ 035 20, /* 0 num parameters */ 036 MANU_MERG, /* 1 manufacturer ID */ 037 01, /* 2 Minor code version */ 038 50, /* 3 Manufacturer module identifier */ 039 128, /* 4 Number of supported events */ 040 4, /* 5 Number of Event Variables per event 041 ;EV1 = servo number. Can have several servos per event. 042 ;EV2 = polarity for that event 043 ;EV3 = Used to teach the feedback responses. 044 ;EV4 = Available but not used yet. */ 045 37, /* 6 Number of Node Variables */ 046 1, /* 7 Major version */ 047 13, /* 8 Node flags */ 048 13, /* 9 Processor type */ 049 1, /* 10 Bus type */ 050 0, /* 11 load address, 1/4 bytes */ 051 8, /* 12 load address, 2/4 bytes */ 052 0, /* 13 load address, 3/4 bytes */ 053 0, /* 14 load address, 4/4 bytes */ 054 0, /* 15 CPU manufacturer's id 1/4 */ 055 0, /* 16 CPU manufacturer's id 2/4 */ 056 0, /* 17 CPU manufacturer's id 3/4 */ 057 0, /* 18 CPU manufacturer's id 4/4 */ 058 1, /* 19 CPU manufacturer code */ 059 1, /* 20 Beta revision */ 060 }; 061 062 node.getNodeParamManager().setParameters(_params); 063 064 int[] _nvArray = new int[38]; // 37 NV's, +1 for the total in position 0 065 066 java.util.Arrays.fill(_nvArray, 0); 067 _nvArray[0]=37; // 37 NV's 068 _nvArray[1]=0xFF; 069 _nvArray[2]=0; 070 _nvArray[3]=0xFF; 071 _nvArray[4]=0xFF; 072 073 // 5 - 36 are 8 repeats of 127, 127, 0, 0 for the 8 servo channels 074 _nvArray[5]=0xFF; 075 _nvArray[6]=0xFF; 076 _nvArray[7]=0; 077 _nvArray[8]=0; 078 079 _nvArray[9]=0xFF; 080 _nvArray[10]=0xFF; 081 _nvArray[11]=0; 082 _nvArray[12]=0; 083 084 _nvArray[13]=0xFF; 085 _nvArray[14]=0xFF; 086 _nvArray[15]=0; 087 _nvArray[16]=0; 088 089 _nvArray[17]=0xFF; 090 _nvArray[18]=0xFF; 091 _nvArray[19]=0; 092 _nvArray[20]=0; 093 094 _nvArray[21]=0xFF; 095 _nvArray[22]=0xFF; 096 _nvArray[23]=0; 097 _nvArray[24]=0; 098 099 _nvArray[25]=0xFF; 100 _nvArray[26]=0xFF; 101 _nvArray[27]=0; 102 _nvArray[28]=0; 103 104 _nvArray[29]=0xFF; 105 _nvArray[30]=0xFF; 106 _nvArray[31]=0; 107 _nvArray[32]=0; 108 109 _nvArray[33]=0xFF; 110 _nvArray[34]=0xFF; 111 _nvArray[35]=0; 112 _nvArray[36]=0; 113 114 _nvArray[37]=0; 115 116 node.getNodeNvManager().setNVs( _nvArray ); 117 node.setNodeNameFromName("MIO-SVO"); 118 } 119 120}