Merge "sdt.mocked.devices: add mocked NumberValue device & moduleClass." into dev
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/Activator.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/Activator.java
index f35c2af..37ad1a0 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/Activator.java
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/Activator.java
@@ -59,11 +59,16 @@
 //			devices.add(new MockedWarningDevice(getId(), getSerial(), domain));

 //			devices.add(new MockedFloodDetector(getId(), getSerial(), domain));

 //			devices.add(new MockedSmartElectricMeter(getId(), getSerial(), domain));

+			

+			

 			devices.add(new MockedLight(getId(), getSerial(), domain));

 			devices.add(new MockedDoor(getId(), getSerial(), domain, true));

 			devices.add(new MockedDoor(getId(), getSerial(), domain, false));

 			devices.add(new MockedCamera(getId(), getSerial(), domain));

 			devices.add(new MockedWeatherStation(getId(), getSerial(), domain));

+			

+			

+			devices.add(new MockedDeviceNumberDevice(getId(), getSerial(), domain));

 //			devices.add(new MockedThermometer(getId(), getSerial(), domain));

 //			devices.add(new MockedThermostat(getId(), getSerial(), domain));

 //			devices.add(new MockedDoor(getId(), getSerial(), domain));

diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/MockedDeviceNumberDevice.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/MockedDeviceNumberDevice.java
new file mode 100644
index 0000000..23fa4d9
--- /dev/null
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/devices/MockedDeviceNumberDevice.java
@@ -0,0 +1,49 @@
+package org.eclipse.om2m.sdt.home.mocked.devices;

+

+import java.util.List;

+

+import org.eclipse.om2m.sdt.Domain;

+import org.eclipse.om2m.sdt.home.devices.DeviceNumberDevice;

+import org.eclipse.om2m.sdt.home.mocked.modules.MockedBinarySwitch;

+import org.eclipse.om2m.sdt.home.mocked.modules.MockedFaultDetection;

+import org.eclipse.om2m.sdt.home.mocked.modules.MockedNumberValue;

+import org.osgi.framework.ServiceRegistration;

+

+public class MockedDeviceNumberDevice extends DeviceNumberDevice implements MockedDevice {

+	

+	private List<ServiceRegistration> serviceRegistrations;

+

+	public MockedDeviceNumberDevice(String id, String serial, Domain domain) {

+		super(id, serial, domain);

+		

+		// binarySwitch

+		addModule(new MockedBinarySwitch("binarySwitch_" + id, domain));

+		

+		// faultDetection

+		addModule(new MockedFaultDetection("faultDetection_" + id, domain));

+		

+		// numberValue

+		addModule(new MockedNumberValue("numberValue_" + id, domain));

+		

+	}

+

+	@Override

+	public void registerDevice() {

+		if (! ((serviceRegistrations == null) || serviceRegistrations.isEmpty())) {

+			return;

+		}

+		serviceRegistrations = Activator.register(this);

+	}

+

+	@Override

+	public void unregisterDevice() {

+		if (serviceRegistrations == null)

+			return;

+		for (ServiceRegistration reg : serviceRegistrations) {

+			reg.unregister();

+		}

+		serviceRegistrations.clear();

+

+	}

+

+}

diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/modules/MockedNumberValue.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/modules/MockedNumberValue.java
new file mode 100644
index 0000000..fc6f39e
--- /dev/null
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.mocked.devices/src/main/java/org/eclipse/om2m/sdt/home/mocked/modules/MockedNumberValue.java
@@ -0,0 +1,88 @@
+package org.eclipse.om2m.sdt.home.mocked.modules;

+

+import org.eclipse.om2m.sdt.Domain;

+import org.eclipse.om2m.sdt.datapoints.FloatDataPoint;

+import org.eclipse.om2m.sdt.exceptions.AccessException;

+import org.eclipse.om2m.sdt.exceptions.ActionException;

+import org.eclipse.om2m.sdt.exceptions.DataPointException;

+import org.eclipse.om2m.sdt.home.actions.DecrementNumberValue;

+import org.eclipse.om2m.sdt.home.actions.IncrementNumberValue;

+import org.eclipse.om2m.sdt.home.actions.ResetNumberValue;

+import org.eclipse.om2m.sdt.home.modules.NumberValue;

+import org.eclipse.om2m.sdt.home.types.DatapointType;

+

+public class MockedNumberValue extends NumberValue {

+	

+	private Thread t;

+

+	public MockedNumberValue(String name, Domain domain) {

+		super(name, domain, new FloatDataPoint(DatapointType.numberValue) {

+			

+			private float innerValue = 0;

+			

+			@Override

+			protected Float doGetValue() throws DataPointException {

+				return innerValue;

+			}

+			

+			@Override

+			protected void doSetValue(Float value) throws DataPointException {

+				innerValue = value;

+			}

+		});

+		

+		// decrement

+		setDecrementNumberValue(new DecrementNumberValue("decrement") {

+			

+			@Override

+			protected void doDecrementNumberValue() throws ActionException {

+				FloatDataPoint nv = (FloatDataPoint) getDataPointByShortName(DatapointType.numberValue.getShortName());

+				try {

+					nv.setValue(nv.getValue()-1);

+				} catch (DataPointException e) {

+					throw new ActionException(e);

+				} catch (AccessException e) {

+					throw new ActionException(e);

+				}

+			}

+		});

+		

+		

+		// increment

+		setIncrementNumberValue(new IncrementNumberValue("increment") {

+			

+			@Override

+			protected void doIncrementNumberValue() throws ActionException {

+				FloatDataPoint nv = (FloatDataPoint) getDataPointByShortName(DatapointType.numberValue.getShortName());

+				try {

+					nv.setValue(nv.getValue()+1);

+				} catch (DataPointException e) {

+					throw new ActionException(e);

+				} catch (AccessException e) {

+					throw new ActionException(e);

+				}

+				

+			}

+		});

+		

+		

+		// reset

+		resetNumberValue(new ResetNumberValue("reset") {

+			

+			@Override

+			protected void doResetNumberValue() throws ActionException {

+				FloatDataPoint nv = (FloatDataPoint) getDataPointByShortName(DatapointType.numberValue.getShortName());

+				try {

+					nv.setValue(0f);

+				} catch (DataPointException e) {

+					throw new ActionException(e);

+				} catch (AccessException e) {

+					throw new ActionException(e);

+				}

+				

+			}

+		});

+		

+	}

+

+}