/** checks PLC logic and current switch engagement, switches engagement if different */ @Override public boolean engageSwitch(String switchName, boolean engagement) { if (this.switchList.containsKey(switchName)) { Iterator<Block> switchBlockIterator = this.switchList.get(switchName).iterator(); while (switchBlockIterator.hasNext()) { Block currBlock = switchBlockIterator.next(); if (currBlock.getMasterSwitch()) { if (currBlock.isSwitchEngaged() != engagement && plcProgramA != null && plcProgramB != null && plcProgramA.engageSwitch(currBlock) && plcProgramB.engageSwitch(currBlock)) { currBlock.setSwitchEngagement(); this.ctc.switchChanged(switchName, currBlock.getBlockNumber(), engagement); return true; } } } return false; } else { System.err.println("ERROR: THIS TC DOES NOT CONTAIN SWITCH " + switchName); return false; } }