package senscript;
import java.util.Random;
import device.SensorNode;
import senscript_functions.ScriptFunctions;
import wisen_simulation.SimLog;
public class Command_FUNCTION extends Command {
protected String arg1 = "";
protected String arg2 = "";
protected String arg3 = "";
private Random random = new Random();
public Command_FUNCTION(SensorNode sensor, String arg1, String arg2, String arg3) {
this.sensor = sensor ;
this.arg1 = arg1 ;
this.arg2 = arg2 ;
this.arg3 = arg3 ;
}
@Override
public double execute() {
SimLog.add("S" + sensor.getId() + " CALL FUNCTION "+arg1+"("+arg2+", "+arg3+")");
String arg0 = arg1;
String function = arg2;
String [] args = arg3.split(",");
sensor.getScript().variablesToValues(args);
String [] ret = ScriptFunctions.function(function, args);
String value = ret[0];
sensor.getScript().addVariable(arg0, value);
if(ret[1].equals("")) return 0.0;
double t = (random.nextGaussian() * Double.parseDouble(ret[2])) + Double.parseDouble(ret[1]);
return t ;
}
@Override
public String toString() {
return "FUNCTION";
}
}