|
@@ -17,10 +17,14 @@ import org.iotivity.OCMethod;
|
|
import org.iotivity.bridge.homeserver.handler.BridgeInitHandler;
|
|
import org.iotivity.bridge.homeserver.handler.BridgeInitHandler;
|
|
import org.iotivity.bridge.homeserver.handler.FactoryPresetsHandler;
|
|
import org.iotivity.bridge.homeserver.handler.FactoryPresetsHandler;
|
|
import org.iotivity.bridge.homeserver.handler.server.GetLightRequestHandler;
|
|
import org.iotivity.bridge.homeserver.handler.server.GetLightRequestHandler;
|
|
|
|
+import org.iotivity.bridge.homeserver.handler.server.GetRequestHandler;
|
|
import org.iotivity.bridge.homeserver.handler.server.PostLightRequestHandler;
|
|
import org.iotivity.bridge.homeserver.handler.server.PostLightRequestHandler;
|
|
|
|
+import org.iotivity.bridge.homeserver.handler.server.PostRequestHandler;
|
|
import org.iotivity.bridge.homeserver.handler.server.PutLightRequestHandler;
|
|
import org.iotivity.bridge.homeserver.handler.server.PutLightRequestHandler;
|
|
|
|
+import org.iotivity.bridge.homeserver.handler.server.PutRequestHandler;
|
|
import org.iotivity.bridge.homeserver.model.Bridge;
|
|
import org.iotivity.bridge.homeserver.model.Bridge;
|
|
import org.iotivity.bridge.homeserver.model.Light;
|
|
import org.iotivity.bridge.homeserver.model.Light;
|
|
|
|
+import org.iotivity.bridge.homeserver.model.OCFDevice;
|
|
import org.iotivity.bridge.homeserver.model.VirtualOCFDevice;
|
|
import org.iotivity.bridge.homeserver.model.VirtualOCFDevice;
|
|
import org.iotivity.bridge.homeserver.utils.Utils;
|
|
import org.iotivity.bridge.homeserver.utils.Utils;
|
|
import org.iotivity.oc.OcBridge;
|
|
import org.iotivity.oc.OcBridge;
|
|
@@ -167,6 +171,75 @@ public class BridgeServer {
|
|
return null ;
|
|
return null ;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public int addVirtualOCFDevice(String virtual_di, String device_type, String devicename, String econame) {
|
|
|
|
+
|
|
|
|
+ // Add Virtual Device for Light
|
|
|
|
+ OCUuid uuid = OCUuidUtil.stringToUuid(virtual_di);
|
|
|
|
+ int vod_index = OCBridge.addVirtualDevice(uuid.getId(),
|
|
|
|
+ econame, "/oic/d", device_type, // "oic.d.virtual" automatically added by internal api implements
|
|
|
|
+ devicename, "ocf.2.0.0", "ocf.res.1.3.0,ocf.sh.1.3.0",
|
|
|
|
+ new OCAddDeviceHandler() {
|
|
|
|
+ @Override
|
|
|
|
+ public void handler() {
|
|
|
|
+ Log.d(TAG, "inside VirtualDevice.OCAddDeviceHandler.handler()");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ if (vod_index != 0) {
|
|
|
|
+ Log.d(TAG, "VOD Index = " + vod_index + ", VOD Count = " + OCBridge.getVirtualDeviceCount());
|
|
|
|
+
|
|
|
|
+ light = new Light(devicename);
|
|
|
|
+ OCDeviceInfo dev_info = OCCoreRes.getDeviceInfo(vod_index);
|
|
|
|
+ OCVirtualDevice vod_info = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
|
|
+ Log.d(TAG, "VOD Info = " + vod_info);
|
|
|
|
+ if (vod_info != null) {
|
|
|
|
+ Log.d(TAG, "Virtual Server[" + vod_info.getIndex() + "] "
|
|
|
|
+ + " DeviceId = " + OCUuidUtil.bytesToString(vod_info.getId())
|
|
|
|
+ + ", Econame = " + vod_info.getEconame() + ", Name = " + dev_info.getName()
|
|
|
|
+ + " was added");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // Add VOD Data
|
|
|
|
+ VirtualOCFDevice vod = new VirtualOCFDevice(vod_index, devicename, econame,
|
|
|
|
+ OCUuidUtil.bytesToString(vod_info.getId()));
|
|
|
|
+ vod.setDiscovered(true);
|
|
|
|
+ vod.setAddedToBridge(true);
|
|
|
|
+ bridge.addOrReplaceVODList(vod);
|
|
|
|
+
|
|
|
|
+ // set immutable device id for Platform Independent Identifier (piid)
|
|
|
|
+ OCMain.setImmutableDeviceIdentifier(vod_index, OCUuidUtil.stringToUuid(virtual_di));
|
|
|
|
+ Log.d(TAG, "Virtual Server [" + vod_info.getIndex() + "] "
|
|
|
|
+ + ", Virtual Device Id = " + virtual_di
|
|
|
|
+ + ", Device Id = " + OCUuidUtil.uuidToString(dev_info.getDi())
|
|
|
|
+ + ", Device Piid = " + OCUuidUtil.uuidToString(dev_info.getPiid()));
|
|
|
|
+
|
|
|
|
+ // Add OCF Virtual Device IDD
|
|
|
|
+ //byte[] idd_bytes = Utils.getFileBytes("idds/virtual_ocf_device_light_IDD.cbor", activity); // example : "dummy_bridge_bridge_device_IDD.cbor"
|
|
|
|
+ //OCIntrospection.setIntrospectionData(vod_index, idd_bytes);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return vod_index ;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void addVirtualDeviceResource(int vod_index, OCFDevice device, String resource_name, String resource_uri, String resource_type, String interfaces) {
|
|
|
|
+
|
|
|
|
+ int interfaceMask = Utils.interfacesStringToMask(interfaces);
|
|
|
|
+
|
|
|
|
+ // Add Device Resource and Handler
|
|
|
|
+ OCResource resource = OCMain.newResource(resource_name, resource_uri, (short)1, (long)vod_index);
|
|
|
|
+ OCMain.resourceBindResourceType(resource, resource_type);
|
|
|
|
+ OCMain.resourceBindResourceInterface(resource, interfaceMask);
|
|
|
|
+ OCMain.resourceSetDefaultInterface(resource, interfaceMask);
|
|
|
|
+ OCMain.resourceSetDiscoverable(resource, true);
|
|
|
|
+ OCMain.resourceSetObservable(resource, true);
|
|
|
|
+ //TODO : check if it is needed for notifying to client
|
|
|
|
+ //OCMain.resourceSetPeriodicObservable(resource, 60); // seconds
|
|
|
|
+ OCMain.resourceSetRequestHandler(resource, OCMethod.OC_GET, new GetRequestHandler(service, device));
|
|
|
|
+ OCMain.resourceSetRequestHandler(resource, OCMethod.OC_POST, new PostRequestHandler(service, device));
|
|
|
|
+ OCMain.resourceSetRequestHandler(resource, OCMethod.OC_PUT, new PutRequestHandler(service, device));
|
|
|
|
+ OCMain.addResource(resource);
|
|
|
|
+ }
|
|
|
|
+
|
|
public void addLightVirtualOCFServer(String virtual_di, String devicename, String econame) {
|
|
public void addLightVirtualOCFServer(String virtual_di, String devicename, String econame) {
|
|
|
|
|
|
// Add Virtual Device for Light
|
|
// Add Virtual Device for Light
|
|
@@ -245,7 +318,7 @@ public class BridgeServer {
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
public void removeLightVirtualOCFDevice(int vod_index) {
|
|
public void removeLightVirtualOCFDevice(int vod_index) {
|
|
|
|
|