package de.uniluebeck.itm.wsn.drivers.jennic;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
public class JennicWriteFlashOperation extends AbstractWriteFlashOperation {
private static final Logger log = LoggerFactory.getLogger(JennicWriteFlashOperation.class);
private final JennicHelper helper;
@Inject
public JennicWriteFlashOperation(final TimeLimiter timeLimiter,
final JennicHelper helper,
@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.helper = helper;
}
@Override
@SerialPortProgrammingMode
protected Void callInternal() throws Exception {
log.trace("Writing to flash...");
helper.writeFlash(getAddress(), getData());
log.trace("Flash written");
return null;
}
}