package senscript;
import java.util.List;
import device.SensorNode;
import radio_module.RadioStandard;
import radio_module.XBeeFrameGenerator;
import radio_module.XBeeToArduinoFrameGenerator;
public class Command_ATND extends Command {
// ND:
protected String arg1 = "";
protected String arg2 = "";
protected double arg3 = 0.001;//6 seconds (6=0x3C) is the value of the parameter NT: Node Discovery Timeout;
public Command_ATND(SensorNode sensor, String arg1) {
this.sensor = sensor ;
this.arg1 = arg1 ;
this.arg2 = "" ;
}
public Command_ATND(SensorNode sensor, String arg1, String arg2) {
this.sensor = sensor ;
this.arg1 = arg1 ;
this.arg2 = arg2 ;
}
@Override
public double execute() {
List<SensorNode> snList = sensor.getSensorNodeNeighbors();
int n = snList.size();
sensor.getScript().addVariable(arg1, ""+n);
if(!arg2.equals("")) {
sensor.getScript().putVector(arg2, n);
String [] vector = sensor.getScript().getVector(arg2);
for(int i=0; i<n; i++) {
vector[i] = ""+snList.get(i).getId();
}
}
String message = "ND";
String frame = message;
if(sensor.getStandard() == RadioStandard.ZIGBEE_802_15_4)
frame = XBeeFrameGenerator.at(message);
double ratio = 1.0/sensor.getUartDataRate();
return arg3 + (ratio*(frame.length()*8.)) ;
}
@Override
public String getArduinoForm() {
String s = XBeeToArduinoFrameGenerator.nd();
return s;
}
@Override
public String toString() {
return "ATND";
}
@Override
public boolean isSend() {
return true;
}
@Override
public String finishMessage() {
return ("S" + sensor.getId() + " ATND: "+sensor.getSensorNodeNeighbors().size());
}
}