package de.uniluebeck.itm.wsn.drivers.telosb; 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.operation.AbstractWriteFlashOperation; import de.uniluebeck.itm.wsn.drivers.core.operation.OperationListener; import de.uniluebeck.itm.wsn.drivers.core.serialport.SerialPortProgrammingMode; import javax.annotation.Nullable; public class TelosbWriteFlashOperation extends AbstractWriteFlashOperation { private final BSLTelosb bsl; @Inject public TelosbWriteFlashOperation(final TimeLimiter timeLimiter, final BSLTelosb bsl, @Assisted("address") int address, @Assisted byte[] data, @Assisted("length") int length, @Assisted final long timeoutMillis, @Assisted @Nullable final OperationListener<Void> operationCallback) { super(timeLimiter, address, data, length, timeoutMillis, operationCallback); this.bsl = bsl; } @Override @SerialPortProgrammingMode protected Void callInternal() throws Exception { bsl.writeFlash(getAddress(), getData(), getData().length); return null; } }