package senscript;
import device.SensorNode;
import wisen_simulation.SimLog;
public class Command_MATH extends Command {
protected String arg1 = "";
protected String arg2 = "";
protected String arg3 = "";
public Command_MATH(SensorNode sensor, String arg1, String arg2, String arg3) {
this.sensor = sensor ;
this.arg1 = arg1 ;
this.arg2 = arg2 ;
this.arg3 = arg3 ;
}
@Override
public double execute() {
String arg = arg2 ;
double a = Double.valueOf(sensor.getScript().getVariableValue(arg3));
double r = 0;
if(arg1.toLowerCase().equals("round"))
r = Math.round(a);
if(arg1.toLowerCase().equals("sqrt"))
r = Math.sqrt(a);
if(arg1.toLowerCase().equals("sin"))
r = Math.sin(a);
if(arg1.toLowerCase().equals("cos"))
r = Math.cos(a);
if(arg1.toLowerCase().equals("tan"))
r = Math.tan(a);
if(arg1.toLowerCase().equals("asin"))
r = Math.asin(a);
if(arg1.toLowerCase().equals("acos"))
r = Math.acos(a);
if(arg1.toLowerCase().equals("atan"))
r = Math.atan(a);
if(arg1.toLowerCase().equals("abs"))
r = Math.abs(a);
SimLog.add("S" + sensor.getId() + arg1.toUpperCase() + " : "+a);
sensor.getScript().addVariable(arg,""+r);
return 0 ;
}
@Override
public String toString() {
return arg1.toUpperCase();
}
}