public void syncExecute() throws SicsIOException, SicsExecutionException { // Clear interrupt flag SicsCore.getSicsController().clearInterrupt(); if (getStatusController() == null) { asyncExecute(); } else { // Wait until command is available while (getCommandStatus().equals(CommandStatus.BUSY)) { sleep("Error occured while waiting for IDLE state"); } // Execute asyncExecute(); int counter = 0; while (!statusChanged) { sleep("Error occured while waiting for BUSY state"); counter += TIME_INTERVAL; if (counter > TIME_OUT) { throw new SicsExecutionException( "Time out on syncExecute() where status did not changed whiling execution"); } } // while (getCommandStatus().equals(CommandStatus.BUSY) || // getCommandStatus().equals(CommandStatus.STARTING)) { while (!getCommandStatus().equals(CommandStatus.IDLE)) { sleep("Error occured while waiting for IDLE state"); } } // Check if this device is interrupted if (SicsCore.getSicsController().isInterrupted()) { SicsCore.getSicsController().clearInterrupt(); throw new SicsExecutionException("Interrupted"); } }
public void activate() { super.activate(); // Remove old listener (det) SicsCore.getSicsManager().monitor().removeStateMonitor(getDeviceName(), this); SicsCore.getSicsManager().monitor().removeStateMonitor(getPath(), this); // Add new one (anticollider) SicsCore.getSicsManager().monitor().addStateMonitor(ID_DEVICE, this); }
public void asyncExecute() throws SicsIOException { // Reset status change flag // [TODO] This may not be thread safe if asyncExecute() is called // multiple times when scan hasn't been finished statusChanged = false; // Send this to the blockable channel SicsCore.getDefaultProxy().send("hset " + getPath() + " start", null, ISicsProxy.CHANNEL_SCAN); // SicsCore.getDefaultProxy().send("hset " + getPath() + " start", null); }