package mods.eln.sixnode.modbusrtu; import mods.eln.misc.Utils; import mods.eln.sixnode.wirelesssignal.aggregator.BiggerAggregator; import net.minecraft.nbt.NBTTagCompound; public class ServerWirelessRxStatus extends WirelessRxStatus implements IModbusSlot { private ModbusRtuElement rtu; BiggerAggregator aggregator = new BiggerAggregator(); short getInputRegister_1; public ServerWirelessRxStatus(String name, int id, boolean connected, int uuid, ModbusRtuElement rtu) { super(name, id, connected, uuid); this.rtu = rtu; rtu.mapping.add(this); } public ServerWirelessRxStatus(NBTTagCompound nbt, String str, ModbusRtuElement rtu) { super(); readFromNBT(nbt, str); this.rtu = rtu; rtu.mapping.add(this); } void delete() { rtu.mapping.remove(this); } boolean isConnected() { return null != rtu.txSet.get(name); } double readWireless() { if (!isConnected()) return 0; return aggregator.aggregate(rtu.txSet.get(name)); } @Override public int getOffset() { return id; } @Override public int getSize() { return 4; } @Override public boolean getCoil(int id) { return false; } @Override public short getHoldingRegister(int id) { return 0; } @Override public boolean getInput(int id) { switch (id) { case 0: return isConnected(); case 1: return readWireless() >= 0.5; } return false; } @Override public short getInputRegister(int id) { switch (id) { case 0: return (short) (isConnected() ? 1 : 0); case 1: float v = (float) readWireless(); getInputRegister_1 = Utils.modbusToShort(v, 1); return Utils.modbusToShort(v, 0); case 2: return getInputRegister_1; case 3: return (short) (65535.0 * readWireless()); } return 0; } @Override public void setCoil(int id, boolean value) { } @Override public void setHoldingRegister(int id, short value) { } @Override public void setInput(int id, boolean value) { } @Override public void setInputRegister(int id, short value) { } @Override public void writeCoil(int id, boolean value) { } @Override public void writeHoldingRegister(int id, short value) { } }