package senscript; import device.SensorNode; import wisen_simulation.SimLog; public class Command_FOR extends Command { protected String arg1 ; protected String arg2 ; protected String sStep ; protected double step ; protected String left = ""; protected String right ; protected boolean trueCondition = true; protected boolean first = true ; protected boolean exist = false ; protected int index; protected Command_FOR parent = null; public boolean isCondition() { return trueCondition; } public void setCondition(boolean isCondition) { this.trueCondition = isCondition; } public Command_FOR getParent() { return parent; } public void setParent(Command_FOR parent) { this.parent = parent; } public Command_FOR(SensorNode sensor, String arg1, String arg2, String arg3, String arg4) { // for i 0 10 1 this.sensor = sensor ; trueCondition = true; first = true ; exist = false ; this.arg1 = arg1 ; this.arg2 = arg2 ; left = "$"+arg1; right = arg3; sStep = arg4; } public String getRight() { return right; } public String getLeft() { return left; } public double getStep() { return step ; } @Override public double execute() { SimLog.add("S" + sensor.getId() + " FOR "); if (first) { step = Double.valueOf(sensor.getScript().getVariableValue(sStep)); first = false ; exist = sensor.getScript().variableExist(arg1); String arg = sensor.getScript().getVariableValue(arg2); sensor.getScript().addVariable(arg1, arg); } index = sensor.getScript().getIndex(); return 0 ; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public void removeVar() { sensor.getScript().removeVar(arg1); } public void init() { first = true ; if(!exist) { String arg = sensor.getScript().getVariableValue(arg2); sensor.getScript().addVariable(arg1, arg); sensor.getScript().removeVar(arg1); } } @Override public String getArduinoForm() { String sarg2 = arg2.startsWith("$")?arg2.substring(1)+".toInt()":arg2; String sright = right.startsWith("$")?right.substring(1)+".toInt()":right; String ssStep = sStep.startsWith("$")?sStep.substring(1)+".toInt()":sStep; String s = "for(int "+arg1+"="+sarg2+";"+arg1+"<"+sright+";"+arg1+"+="+ssStep+") {"; return s; } @Override public String toString() { return "FOR"; } }