package at.acdp.urweb.fhpp; import at.acdp.urweb.Params; import com.digitalpetri.modbus.codec.Modbus; import com.digitalpetri.modbus.master.ModbusTcpMaster; import com.digitalpetri.modbus.master.ModbusTcpMasterConfig; import com.digitalpetri.modbus.requests.ModbusRequest; import com.digitalpetri.modbus.requests.ReadHoldingRegistersRequest; import com.digitalpetri.modbus.requests.WriteMultipleRegistersRequest; import com.digitalpetri.modbus.responses.ReadHoldingRegistersResponse; import io.netty.util.ReferenceCountUtil; import io.netty.util.concurrent.CompleteFuture; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; public class FHMasterSim implements IFHMaster { private final static Logger logger = LoggerFactory.getLogger(FHMasterSim.class); private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); private volatile boolean started = false; private int curPos=-1; public FHMasterSim() { } @Override public void start(Params app) throws InterruptedException { started = true; while(true) { Thread.sleep(1000); readStatus(); } } @Override public void direktAuftrag(int pos, int speed, int start, boolean relative) { logger.info("direktAuftrag {},{},{},{}", pos, speed, start, relative); curPos=pos; } @Override public CompletableFuture readStatus() { Status s=new Status(); s.istPosition = curPos; s.enabled = true; return CompletableFuture.completedFuture(s); } @Override public void bereitschaft() { logger.info("bereitschaft"); } @Override public void stop() { started = false; } }