package de.uniluebeck.itm.wsn.drivers.mock; import com.google.common.util.concurrent.TimeLimiter; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import de.uniluebeck.itm.wsn.drivers.core.MacAddress; import de.uniluebeck.itm.wsn.drivers.core.operation.OperationListener; import de.uniluebeck.itm.wsn.drivers.core.operation.TimeLimitedOperation; import de.uniluebeck.itm.wsn.drivers.core.operation.WriteMacAddressOperation; import de.uniluebeck.itm.wsn.drivers.core.serialport.SerialPortProgrammingMode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Mock operation for writing a <code>MacAddress</code> in the given <code>MockConfiguration</code>. * * @author Malte Legenhausen * @author Daniel Bimschas */ public class MockWriteMacAddressOperation extends TimeLimitedOperation<Void> implements WriteMacAddressOperation { private static final Logger log = LoggerFactory.getLogger(MockWriteMacAddressOperation.class); /** * The <code>MockConfiguration</code> to which the <code>MacAddress</code> has to be assigned. */ private final MockConfiguration configuration; /** * The <code>MacAddress</code> that has to be written to the configuration. */ private final MacAddress macAddress; @Inject public MockWriteMacAddressOperation(final TimeLimiter timeLimiter, final MockConfiguration configuration, @Assisted final MacAddress macAddress, @Assisted final long timeoutMillis, @Assisted final OperationListener<Void> operationCallback) { super(timeLimiter, timeoutMillis, operationCallback); this.macAddress = macAddress; this.configuration = configuration; } @Override @SerialPortProgrammingMode protected Void callInternal() throws Exception { for (int i = 1; i <= 10 && !isCanceled(); ++i) { Thread.sleep(100); progress(i * 0.1f); } log.debug("Writing mac address: " + macAddress); configuration.setMacAddress(macAddress); return null; } }