|
@@ -35,12 +35,14 @@ import org.iotivity.oc.OcUtils;
|
|
import org.iotivity.OCUuidUtil;
|
|
import org.iotivity.OCUuidUtil;
|
|
import org.iotivity.OCUuid;
|
|
import org.iotivity.OCUuid;
|
|
import org.iotivity.OCVirtualDevice;
|
|
import org.iotivity.OCVirtualDevice;
|
|
|
|
+import org.iotivity.oc.OcVirtualDevice;
|
|
import org.json.JSONObject;
|
|
import org.json.JSONObject;
|
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Arrays;
|
|
import java.util.Properties;
|
|
import java.util.Properties;
|
|
|
|
|
|
public class BridgeServer {
|
|
public class BridgeServer {
|
|
@@ -83,8 +85,8 @@ public class BridgeServer {
|
|
|
|
|
|
public void initBridgeServer() {
|
|
public void initBridgeServer() {
|
|
|
|
|
|
- this.addLightVirtualOCFServer(LIGHT_UUID, "Light Switch", "rs-485");
|
|
|
|
- //this.addVirtualOCFClient(CLIENT_UUID, "Virtual OCF Client", "ocf");
|
|
|
|
|
|
+ this.addLightVirtualOCFServer(BridgeServer.LIGHT_UUID, "Light Switch", "ocf");
|
|
|
|
+ //this.addVirtualOCFClient(BridgeServer.CLIENT_UUID, "Virtual OCF Client", "ocf");
|
|
|
|
|
|
this.loadPairwisedDeviceUUIDs();
|
|
this.loadPairwisedDeviceUUIDs();
|
|
}
|
|
}
|
|
@@ -105,35 +107,122 @@ public class BridgeServer {
|
|
//ocPlatform.systemInit(initHandler);
|
|
//ocPlatform.systemInit(initHandler);
|
|
}
|
|
}
|
|
|
|
|
|
- public void resetVirtualOCFDevices() {
|
|
|
|
|
|
+ public void deleteVirtualOCFDevices() {
|
|
int vod_count = OCBridge.getVirtualDeviceCount();
|
|
int vod_count = OCBridge.getVirtualDeviceCount();
|
|
Log.d(TAG, "Virtual OCF Device Count = [" + vod_count + "], Core Device Nums = ["+OCCoreRes.getNumDevices()+"] ");
|
|
Log.d(TAG, "Virtual OCF Device Count = [" + vod_count + "], Core Device Nums = ["+OCCoreRes.getNumDevices()+"] ");
|
|
|
|
|
|
for (int index = 1; index <= vod_count; index++) {
|
|
for (int index = 1; index <= vod_count; index++) {
|
|
OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(index);
|
|
OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(index);
|
|
if (vod != null) {
|
|
if (vod != null) {
|
|
- OCBridge.removeVirtualDevice(vod.getIndex());
|
|
|
|
- OCBridge.deleteVirtualDevice(vod.getIndex()); // Note :This includes OCMain.resetDevice(index);
|
|
|
|
|
|
+ OCBridge.removeVirtualDevice(vod.getIndex()); // Note : This removes vod in vods_list and shutdown connectivity
|
|
|
|
+ OCBridge.deleteVirtualDevice(vod.getIndex()); // Note : This removes piid, core device, vod map at index and OCMain.resetDevice(index);
|
|
Log.d(TAG, "Virtual OCF Device [" + vod.getIndex() + "] was reset!");
|
|
Log.d(TAG, "Virtual OCF Device [" + vod.getIndex() + "] was reset!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //TODO : need to check Memory data
|
|
bridge.clearVirtualOCFDeviceList();
|
|
bridge.clearVirtualOCFDeviceList();
|
|
|
|
+ }
|
|
|
|
|
|
- /* // For test
|
|
|
|
- if(OCCoreRes.getNumDevices() > 1) {
|
|
|
|
- for (int index = 1; index <= OCCoreRes.getNumDevices(); index++) {
|
|
|
|
- OCMain.resetDevice(index);
|
|
|
|
- Log.d(TAG, "OCF Device [" + index + "] was reset!");
|
|
|
|
|
|
+ public void deleteVirtualOCFDevice(String device_sn) {
|
|
|
|
+ int vod_count = OCBridge.getVirtualDeviceCount();
|
|
|
|
+ Log.d(TAG, "Virtual OCF Device Count = [" + vod_count + "], Core Device Nums = ["+OCCoreRes.getNumDevices()+"] ");
|
|
|
|
+ for (int index = 1; index <= vod_count; index++) {
|
|
|
|
+ OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(index);
|
|
|
|
+ if (vod != null && OCUuidUtil.bytesToString(vod.getId()).equalsIgnoreCase(device_sn)) {
|
|
|
|
+ this.deleteVirtualOCFDevice((int)vod.getIndex());
|
|
|
|
+ Log.d(TAG, "Virtual OCF Device [" + vod.getIndex() + "] was deleted!");
|
|
}
|
|
}
|
|
- }*/
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- public void resetVirtualOCFDevice(int vod_index) {
|
|
|
|
- OCBridge.removeVirtualDevice(vod_index);
|
|
|
|
- OCBridge.deleteVirtualDevice(vod_index); // Note : This includes OCMain.resetDevice(index);
|
|
|
|
|
|
+ public void deleteVirtualOCFDevice(int vod_index) {
|
|
|
|
+ OCBridge.removeVirtualDevice(vod_index); // Note : This removes vod in vods_list and shutdown connectivity
|
|
|
|
+ OCBridge.deleteVirtualDevice(vod_index); // Note : This removes piid, core device, vod map at index and OCMain.resetDevice(index);
|
|
|
|
+
|
|
|
|
+ //TODO : need to check Memory data
|
|
bridge.removeVirtualOCFDevice(vod_index);
|
|
bridge.removeVirtualOCFDevice(vod_index);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void removeVirtualOCFDevices() {
|
|
|
|
+
|
|
|
|
+ ArrayList<VirtualOCFDevice> vods = (ArrayList<VirtualOCFDevice>)bridge.getVirtualOCFDeviceList().clone();
|
|
|
|
+ for(VirtualOCFDevice vod : vods) {
|
|
|
|
+ this.removeVirtualOCFDevice(vod.getVODIndex());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void removeVirtualOCFDevice(int vod_index) {
|
|
|
|
+
|
|
|
|
+ OCVirtualDevice vod_light = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
|
|
+ if(vod_light != null) {
|
|
|
|
+ Log.d(TAG, "Virtual Server[" + vod_light.getIndex() + "] "
|
|
|
|
+ + ", DeviceId = " + OCUuidUtil.bytesToString(vod_light.getId())
|
|
|
|
+ + ", Econame = " + vod_light.getEconame() + ", Name = " + vod_light.getEconame()
|
|
|
|
+ + " will be removed");
|
|
|
|
+
|
|
|
|
+ int ret = OCBridge.removeVirtualDevice(vod_index);
|
|
|
|
+ if (ret >=0) {
|
|
|
|
+ bridge.removeVirtualOCFDevice(vod_index);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void resetVirtualOCFDevices() {
|
|
|
|
+
|
|
|
|
+ int dev_count = (int)OCCoreRes.getNumDevices();
|
|
|
|
+ Log.d(TAG, "VOD Nums = ["+OCBridge.getVirtualDeviceCount()+"], Core Res Nums = ["+OCCoreRes.getNumDevices()+"]");
|
|
|
|
+ for (int index = 1 ; index <= dev_count; index++) {
|
|
|
|
+ /*OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(index);
|
|
|
|
+ if(vod!=null) continue;
|
|
|
|
+ Log.d(TAG, "VODs Device [" + index + ", "+vod.getIndex()+", vod_id="+OCUuidUtil.bytesToString(vod.getId())+ "]");
|
|
|
|
+*/
|
|
|
|
+ OCDeviceInfo dev = OCCoreRes.getDeviceInfo(index);
|
|
|
|
+ if(dev != null) {
|
|
|
|
+ Log.d(TAG, "Core OCF Device [" + index +" piid="+OCUuidUtil.uuidToString(dev.getPiid())+ "]");
|
|
|
|
+ if(dev.getName() != null) {
|
|
|
|
+ Log.d(TAG, "Core OCF Device [" + index + "] "+dev.getName()+" was reset!");
|
|
|
|
+ this.resetDevice(index);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void resetVirtualOCFDevice(OCUuid device_uuid) {
|
|
|
|
+ int dev_count = (int)OCCoreRes.getNumDevices();
|
|
|
|
+ Log.d(TAG, "Core Device Nums = ["+dev_count+"] ");
|
|
|
|
+ for (int index = 1; index <= dev_count; index++) {
|
|
|
|
+ OCDeviceInfo dev = OCCoreRes.getDeviceInfo(index);
|
|
|
|
+ if (dev != null && OCUuidUtil.isEqual(dev.getDi(),device_uuid)) {
|
|
|
|
+ this.resetDevice(index);
|
|
|
|
+ Log.d(TAG, "Core OCF Device [" + index + "] "+dev.getName()+" was reset!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void resetVirtualOCFDevice(String device_uuid) {
|
|
|
|
+ int dev_count = (int)OCCoreRes.getNumDevices();
|
|
|
|
+ Log.d(TAG, "Core Device Nums = ["+dev_count+"] ");
|
|
|
|
+ for (int index = 1; index <= dev_count; index++) {
|
|
|
|
+ OCDeviceInfo dev = OCCoreRes.getDeviceInfo(index);
|
|
|
|
+ if (dev != null && OCUuidUtil.uuidToString(dev.getDi()).equalsIgnoreCase(device_uuid)) {
|
|
|
|
+ this.resetDevice(index);
|
|
|
|
+ Log.d(TAG, "Core OCF Device [" + index + "] "+dev.getName()+" was reset!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void resetVirtualOCFDeviceByDevicePiid(String device_sn) {
|
|
|
|
+ int dev_count = (int)OCCoreRes.getNumDevices();
|
|
|
|
+ Log.d(TAG, "Core Device Nums = ["+dev_count+"] ");
|
|
|
|
+ for (int index = 1; index <= dev_count; index++) {
|
|
|
|
+ OCDeviceInfo dev = OCCoreRes.getDeviceInfo(index);
|
|
|
|
+ if (dev != null && OCUuidUtil.uuidToString(dev.getPiid()).equalsIgnoreCase(device_sn)) {
|
|
|
|
+ this.resetDevice(index);
|
|
|
|
+ Log.d(TAG, "Core OCF Device [" + index + "] "+dev.getName()+" was reset!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public void resetDevice(int device_index) {
|
|
public void resetDevice(int device_index) {
|
|
|
|
|
|
if(device_index < 0) return ;
|
|
if(device_index < 0) return ;
|
|
@@ -141,31 +230,18 @@ public class BridgeServer {
|
|
OCDeviceInfo info = OCCoreRes.getDeviceInfo(device_index);
|
|
OCDeviceInfo info = OCCoreRes.getDeviceInfo(device_index);
|
|
if(info == null) return ;
|
|
if(info == null) return ;
|
|
if(device_index == Bridge.BRIDGE_INDEX) {
|
|
if(device_index == Bridge.BRIDGE_INDEX) {
|
|
- if (info != null) {
|
|
|
|
- Log.d(TAG, "Bridge Server[" + Bridge.BRIDGE_INDEX + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
|
|
- + " will reset");
|
|
|
|
- }
|
|
|
|
|
|
+ Log.d(TAG, "Bridge Server[" + Bridge.BRIDGE_INDEX + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
|
|
+ + " will reset");
|
|
this.resetBridgeServer();
|
|
this.resetBridgeServer();
|
|
|
|
|
|
} else if(device_index > 0) {
|
|
} else if(device_index > 0) {
|
|
OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(device_index);
|
|
OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(device_index);
|
|
- if (info != null) {
|
|
|
|
|
|
+ if (vod != null) {
|
|
Log.d(TAG, "Virtual OCF Server/Client[" + vod.getIndex() + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
Log.d(TAG, "Virtual OCF Server/Client[" + vod.getIndex() + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
- + ", echoname = " + vod.getEconame() + " will reset");
|
|
|
|
- }
|
|
|
|
- this.resetVirtualOCFDevice(device_index);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void resetVirtualOCFDevice(String device_sn) {
|
|
|
|
- int vod_count = OCBridge.getVirtualDeviceCount();
|
|
|
|
- Log.d(TAG, "Virtual OCF Device Count = [" + vod_count + "], Core Device Nums = ["+OCCoreRes.getNumDevices()+"] ");
|
|
|
|
- for (int index = 1; index <= vod_count; index++) {
|
|
|
|
- OCVirtualDevice vod = OCBridge.getVirtualDeviceInfo(index);
|
|
|
|
- if (vod != null && OCUuidUtil.bytesToString(vod.getId()).equalsIgnoreCase(device_sn)) {
|
|
|
|
- this.resetVirtualOCFDevice((int)vod.getIndex());
|
|
|
|
- Log.d(TAG, "Virtual OCF Device [" + vod.getIndex() + "] was reset!");
|
|
|
|
|
|
+ + ", echoname = " + vod.getEconame() + ", name = "+info.getName()+" will be reset");
|
|
}
|
|
}
|
|
|
|
+ //this.resetVirtualOCFDevice(device_index);
|
|
|
|
+ OCMain.resetDevice(device_index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -188,14 +264,14 @@ public class BridgeServer {
|
|
}
|
|
}
|
|
}*/
|
|
}*/
|
|
|
|
|
|
- public String existVirtualOCFDevice(String virtual_di, String econame) {
|
|
|
|
|
|
+ public boolean existVirtualOCFDevice(String virtual_di, String econame) {
|
|
|
|
|
|
for(VirtualOCFDevice vod : bridge.getVirtualOCFDeviceList()){
|
|
for(VirtualOCFDevice vod : bridge.getVirtualOCFDeviceList()){
|
|
if(vod.getVirtualDeviceId().equals(virtual_di) && vod.getEcoName().equals(econame)) {
|
|
if(vod.getVirtualDeviceId().equals(virtual_di) && vod.getEcoName().equals(econame)) {
|
|
- return vod.getVirtualDeviceId();
|
|
|
|
|
|
+ return true ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return null ;
|
|
|
|
|
|
+ return false ;
|
|
}
|
|
}
|
|
|
|
|
|
public VirtualOCFDevice addVirtualOCFDevice(String device_name, String virtual_di, String device_type, String eco_name) {
|
|
public VirtualOCFDevice addVirtualOCFDevice(String device_name, String virtual_di, String device_type, String eco_name) {
|
|
@@ -213,8 +289,8 @@ public class BridgeServer {
|
|
OCVirtualDevice vod_info = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
OCVirtualDevice vod_info = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
Log.d(TAG, "VOD Info = " + vod_info);
|
|
Log.d(TAG, "VOD Info = " + vod_info);
|
|
if (vod_info != null) {
|
|
if (vod_info != null) {
|
|
- Log.d(TAG, "Virtual Server[" + vod_info.getIndex() + "] "
|
|
|
|
- + " DeviceId = " + OCUuidUtil.bytesToString(vod_info.getId())
|
|
|
|
|
|
+ Log.d(TAG, "Virtual Server [" + vod_info.getIndex() + "] "
|
|
|
|
+ + " Virtual Device Id = " + OCUuidUtil.bytesToString(vod_info.getId())
|
|
+ ", Econame = " + vod_info.getEconame() + ", Name = " + dev_info.getName()
|
|
+ ", Econame = " + vod_info.getEconame() + ", Name = " + dev_info.getName()
|
|
+ " was added");
|
|
+ " was added");
|
|
|
|
|
|
@@ -229,7 +305,7 @@ public class BridgeServer {
|
|
// set immutable device id for Platform Independent Identifier (piid)
|
|
// set immutable device id for Platform Independent Identifier (piid)
|
|
OCMain.setImmutableDeviceIdentifier(vod_index, OCUuidUtil.stringToUuid(virtual_di));
|
|
OCMain.setImmutableDeviceIdentifier(vod_index, OCUuidUtil.stringToUuid(virtual_di));
|
|
Log.d(TAG, "Virtual Server [" + vod_info.getIndex() + "] "
|
|
Log.d(TAG, "Virtual Server [" + vod_info.getIndex() + "] "
|
|
- + ", Virtual Device Id = " + virtual_di
|
|
|
|
|
|
+ + " Virtual Device Id = " + virtual_di
|
|
+ ", Device Id = " + OCUuidUtil.uuidToString(dev_info.getDi())
|
|
+ ", Device Id = " + OCUuidUtil.uuidToString(dev_info.getDi())
|
|
+ ", Device Piid = " + OCUuidUtil.uuidToString(dev_info.getPiid()));
|
|
+ ", Device Piid = " + OCUuidUtil.uuidToString(dev_info.getPiid()));
|
|
|
|
|
|
@@ -261,6 +337,8 @@ public class BridgeServer {
|
|
OCMain.resourceSetRequestHandler(resource, OCMethod.OC_POST, new PostRequestHandler(service, device));
|
|
OCMain.resourceSetRequestHandler(resource, OCMethod.OC_POST, new PostRequestHandler(service, device));
|
|
OCMain.resourceSetRequestHandler(resource, OCMethod.OC_PUT, new PutRequestHandler(service, device));
|
|
OCMain.resourceSetRequestHandler(resource, OCMethod.OC_PUT, new PutRequestHandler(service, device));
|
|
OCMain.addResource(resource);
|
|
OCMain.addResource(resource);
|
|
|
|
+
|
|
|
|
+ device.addOCResource(resource);
|
|
}
|
|
}
|
|
|
|
|
|
public void addLightVirtualOCFServer(String virtual_di, String devicename, String econame) {
|
|
public void addLightVirtualOCFServer(String virtual_di, String devicename, String econame) {
|
|
@@ -279,8 +357,8 @@ public class BridgeServer {
|
|
OCVirtualDevice vod_info = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
OCVirtualDevice vod_info = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
Log.d(TAG, "VOD Info = "+ vod_info);
|
|
Log.d(TAG, "VOD Info = "+ vod_info);
|
|
if(vod_info != null) {
|
|
if(vod_info != null) {
|
|
- Log.d(TAG, "Virtual Server[" + vod_info.getIndex() + "] "
|
|
|
|
- + " DeviceId = " + OCUuidUtil.bytesToString(vod_info.getId())
|
|
|
|
|
|
+ Log.d(TAG, "Virtual Server [" + vod_info.getIndex() + "] "
|
|
|
|
+ + " Virtual Device Id = " + OCUuidUtil.bytesToString(vod_info.getId())
|
|
+ ", Econame = " + vod_info.getEconame() + ", Name = " + dev_info.getName()
|
|
+ ", Econame = " + vod_info.getEconame() + ", Name = " + dev_info.getName()
|
|
+ " was added");
|
|
+ " was added");
|
|
|
|
|
|
@@ -304,6 +382,7 @@ public class BridgeServer {
|
|
OCMain.resourceSetRequestHandler(res_light, OCMethod.OC_POST, new PostLightRequestHandler(service, light));
|
|
OCMain.resourceSetRequestHandler(res_light, OCMethod.OC_POST, new PostLightRequestHandler(service, light));
|
|
OCMain.resourceSetRequestHandler(res_light, OCMethod.OC_PUT, new PutLightRequestHandler(service, light));
|
|
OCMain.resourceSetRequestHandler(res_light, OCMethod.OC_PUT, new PutLightRequestHandler(service, light));
|
|
OCMain.addResource(res_light);
|
|
OCMain.addResource(res_light);
|
|
|
|
+ vod.addOCResource(res_light);
|
|
|
|
|
|
// Add Dimming Resource
|
|
// Add Dimming Resource
|
|
OCResource res_dimming = OCMain.newResource(devicename, "/dimming", (short) 1, (long) vod_index);
|
|
OCResource res_dimming = OCMain.newResource(devicename, "/dimming", (short) 1, (long) vod_index);
|
|
@@ -318,12 +397,12 @@ public class BridgeServer {
|
|
OCMain.resourceSetRequestHandler(res_dimming, OCMethod.OC_POST, new PostLightRequestHandler(service, light));
|
|
OCMain.resourceSetRequestHandler(res_dimming, OCMethod.OC_POST, new PostLightRequestHandler(service, light));
|
|
OCMain.resourceSetRequestHandler(res_dimming, OCMethod.OC_PUT, new PutLightRequestHandler(service, light));
|
|
OCMain.resourceSetRequestHandler(res_dimming, OCMethod.OC_PUT, new PutLightRequestHandler(service, light));
|
|
OCMain.addResource(res_dimming);
|
|
OCMain.addResource(res_dimming);
|
|
-
|
|
|
|
|
|
+ vod.addOCResource(res_dimming);
|
|
|
|
|
|
// set immutable device id for Platform Independent Identifier (piid)
|
|
// set immutable device id for Platform Independent Identifier (piid)
|
|
OCMain.setImmutableDeviceIdentifier(vod_index, OCUuidUtil.stringToUuid(virtual_di));
|
|
OCMain.setImmutableDeviceIdentifier(vod_index, OCUuidUtil.stringToUuid(virtual_di));
|
|
- Log.d(TAG, "Virtual Server [" + vod_info.getIndex() + "] "
|
|
|
|
- + ", Virtual Device Id = " + virtual_di
|
|
|
|
|
|
+ Log.d(TAG, "Virtual Device [" + vod_info.getIndex() + "] "
|
|
|
|
+ + " Virtual Device Id = " + virtual_di
|
|
+ ", Device Id = " + OCUuidUtil.uuidToString(dev_info.getDi())
|
|
+ ", Device Id = " + OCUuidUtil.uuidToString(dev_info.getDi())
|
|
+ ", Device Piid = " + OCUuidUtil.uuidToString(dev_info.getPiid()));
|
|
+ ", Device Piid = " + OCUuidUtil.uuidToString(dev_info.getPiid()));
|
|
|
|
|
|
@@ -334,22 +413,6 @@ public class BridgeServer {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public void removeLightVirtualOCFDevice(int vod_index) {
|
|
|
|
-
|
|
|
|
- OCVirtualDevice vod_light = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
|
|
- if(vod_light != null) {
|
|
|
|
- Log.d(TAG, "Virtual Server[" + vod_light.getIndex() + "] "
|
|
|
|
- + ", DeviceId = " + OCUuidUtil.bytesToString(vod_light.getId())
|
|
|
|
- + ", Econame = " + vod_light.getEconame() + ", Name = " + vod_light.getEconame()
|
|
|
|
- + " will be removed");
|
|
|
|
-
|
|
|
|
- int ret = OCBridge.removeVirtualDevice(vod_index);
|
|
|
|
- if (ret >=0) {
|
|
|
|
- bridge.removeVirtualOCFDevice(vod_index);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public void addVirtualOCFClient(String device_uuid, String devicename, String econame) {
|
|
public void addVirtualOCFClient(String device_uuid, String devicename, String econame) {
|
|
|
|
|
|
// Add Virtual Device for Legarcy Client like such as zibee coodinater
|
|
// Add Virtual Device for Legarcy Client like such as zibee coodinater
|
|
@@ -362,8 +425,8 @@ public class BridgeServer {
|
|
OCDeviceInfo dev_info = OCCoreRes.getDeviceInfo(vod_index);
|
|
OCDeviceInfo dev_info = OCCoreRes.getDeviceInfo(vod_index);
|
|
OCVirtualDevice vod_client = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
OCVirtualDevice vod_client = OCBridge.getVirtualDeviceInfo(vod_index);
|
|
if(vod_client != null){
|
|
if(vod_client != null){
|
|
- Log.d(TAG, "Virtual Client[" + vod_client.getIndex() + "] "
|
|
|
|
- + " DeviceId = " + OCUuidUtil.bytesToString(vod_client.getId())
|
|
|
|
|
|
+ Log.d(TAG, "Virtual Client [" + vod_client.getIndex() + "] "
|
|
|
|
+ + " Virtual Device Id = " + OCUuidUtil.bytesToString(vod_client.getId())
|
|
+ ", Econame = " + vod_client.getEconame() + ", Name = " + dev_info.getName()
|
|
+ ", Econame = " + vod_client.getEconame() + ", Name = " + dev_info.getName()
|
|
+ " was added");
|
|
+ " was added");
|
|
|
|
|
|
@@ -373,6 +436,14 @@ public class BridgeServer {
|
|
vod.setDiscovered(true);
|
|
vod.setDiscovered(true);
|
|
vod.setAddedToBridge(true);
|
|
vod.setAddedToBridge(true);
|
|
bridge.addOrReplaceVirtualOCFDevice(vod);
|
|
bridge.addOrReplaceVirtualOCFDevice(vod);
|
|
|
|
+
|
|
|
|
+ // set immutable device id for Platform Independent Identifier (piid)
|
|
|
|
+ OCMain.setImmutableDeviceIdentifier(vod_index, uuid);
|
|
|
|
+ Log.d(TAG, "Virtual Device [" + vod_client.getIndex() + "] "
|
|
|
|
+ + " Virtual Device Id = " + device_uuid
|
|
|
|
+ + ", Device Id = " + OCUuidUtil.uuidToString(dev_info.getDi())
|
|
|
|
+ + ", Device Piid = " + OCUuidUtil.uuidToString(dev_info.getPiid()));
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -411,24 +482,21 @@ public class BridgeServer {
|
|
return null ;
|
|
return null ;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public boolean compareVirtualOCFDeviceProperties(String device_sn, String uri, String props) {
|
|
|
|
+ VirtualOCFDevice device = getVirtualOCFDevice(device_sn);
|
|
|
|
+ if(device != null) {
|
|
|
|
+ return device.compareProperties(uri, props);
|
|
|
|
+ }
|
|
|
|
+ return false ;
|
|
|
|
+ }
|
|
|
|
|
|
- /*
|
|
|
|
- private boolean checkExistVOD(String device_unique_id) {
|
|
|
|
- String device_uuid = existVirtualOCFDevice(devicename, econame);
|
|
|
|
- if (device_uuid == null) { // In case of no exist device
|
|
|
|
- // generate new UUID
|
|
|
|
- OCUuid new_uuid = OCUuidUtil.generateUuid();
|
|
|
|
- device_uuid = OCUuidUtil.uuidToString(new_uuid);
|
|
|
|
- Log.d(TAG, "Virtual Device : Name = " + devicename + ", DeviceId = " + device_uuid
|
|
|
|
- + ", echoname = " + econame + " will be added since it doesn't exist.");
|
|
|
|
-
|
|
|
|
- return false ;
|
|
|
|
- } else {
|
|
|
|
- Log.d(TAG, "Virtual Device : Name = " + devicename + ", DeviceId = " + device_uuid
|
|
|
|
- + ", echoname = " + econame + " exists already.");
|
|
|
|
- return true ;
|
|
|
|
|
|
+ public boolean existVirtualOCFDevice(String device_sn) { // Virtual OCF ID (Serial Number or Piid)
|
|
|
|
+ VirtualOCFDevice device = getVirtualOCFDevice(device_sn);
|
|
|
|
+ if(device != null) {
|
|
|
|
+ return existVirtualOCFDevice(device.getVirtualDeviceId(), device.getEcoName());
|
|
}
|
|
}
|
|
- }*/
|
|
|
|
|
|
+ return false ;
|
|
|
|
+ }
|
|
|
|
|
|
public void disconnectVirtualDevice(int vod_index) {
|
|
public void disconnectVirtualDevice(int vod_index) {
|
|
|
|
|
|
@@ -440,7 +508,7 @@ public class BridgeServer {
|
|
|
|
|
|
OCDeviceInfo info = OCCoreRes.getDeviceInfo(vod_index);
|
|
OCDeviceInfo info = OCCoreRes.getDeviceInfo(vod_index);
|
|
if(OCBridge.removeVirtualDevice(vod_index) == 0) {
|
|
if(OCBridge.removeVirtualDevice(vod_index) == 0) {
|
|
- Log.d(TAG, "Virtual OCF Server/Client[" + vod.getVODIndex() + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
|
|
|
|
+ Log.d(TAG, "Virtual OCF Server/Client [" + vod.getVODIndex() + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
+ ", echoname = " + vod.getEcoName() + " was removed from the bridge");
|
|
+ ", echoname = " + vod.getEcoName() + " was removed from the bridge");
|
|
} else {
|
|
} else {
|
|
Log.d(TAG, "Failed to remove Virtual OCF Server/Client["+vod_index+"] "+info.getName()+" from the bridge");
|
|
Log.d(TAG, "Failed to remove Virtual OCF Server/Client["+vod_index+"] "+info.getName()+" from the bridge");
|
|
@@ -448,9 +516,24 @@ public class BridgeServer {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public void discoveredOCFDevice(OcRemoteDevice remoteDevice) {
|
|
|
|
- // TODO : check if discovered OCF Device has to add to the bridge as a Virtual OCF Device or not
|
|
|
|
|
|
+ public void disconnectAllVirtualDevices() {
|
|
|
|
+
|
|
|
|
+ for (VirtualOCFDevice vod : bridge.getVirtualOCFDeviceList()) {
|
|
|
|
+ Log.d(TAG, "disconnect All Virtual Devices.");
|
|
|
|
+ if (vod != null) {
|
|
|
|
+
|
|
|
|
+ vod.setDiscovered(false);
|
|
|
|
+ vod.setAddedToBridge(false);
|
|
|
|
|
|
|
|
+ OCDeviceInfo info = OCCoreRes.getDeviceInfo(vod.getVODIndex());
|
|
|
|
+ if (OCBridge.removeVirtualDevice(vod.getVODIndex()) == 0) {
|
|
|
|
+ Log.d(TAG, "Virtual OCF Server/Client [" + vod.getVODIndex() + "] DeviceId = " + OCUuidUtil.uuidToString(info.getDi())
|
|
|
|
+ + ", echoname = " + vod.getEcoName() + " was removed from the bridge");
|
|
|
|
+ } else {
|
|
|
|
+ Log.d(TAG, "Failed to remove Virtual OCF Server/Client[" + vod.getVODIndex() + "] " + info.getName() + " from the bridge");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/* These APIs are related to online pairwised devices */
|
|
/* These APIs are related to online pairwised devices */
|
|
@@ -571,7 +654,7 @@ public class BridgeServer {
|
|
baos = new ByteArrayOutputStream();
|
|
baos = new ByteArrayOutputStream();
|
|
int length = 0;
|
|
int length = 0;
|
|
while ((length = is.read(buffer)) != -1) {
|
|
while ((length = is.read(buffer)) != -1) {
|
|
- Log.d(TAG, "bytes read = " + length);
|
|
|
|
|
|
+ //Log.d(TAG, "bytes read = " + length);
|
|
baos.write(buffer, 0, length);
|
|
baos.write(buffer, 0, length);
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
@@ -597,7 +680,21 @@ public class BridgeServer {
|
|
Log.e(TAG, "Failed to read " + filepath);
|
|
Log.e(TAG, "Failed to read " + filepath);
|
|
}
|
|
}
|
|
|
|
|
|
- return ((baos != null) ? baos.toByteArray() : null);
|
|
|
|
|
|
+ if(baos!=null) {
|
|
|
|
+ Log.d(TAG, "bytes length = " + baos.toByteArray().length);
|
|
|
|
+ return baos.toByteArray() ;
|
|
|
|
+
|
|
|
|
+ /*int len = baos.toByteArray().length ;
|
|
|
|
+ if(baos.toByteArray()[len-1] != (byte)0x00 ) {
|
|
|
|
+ byte[] result = Arrays.copyOf(baos.toByteArray(), len + 1);
|
|
|
|
+ result[len] = (byte) 0x00;
|
|
|
|
+ Log.d(TAG, "bytes length = " + result.length);
|
|
|
|
+ return result;
|
|
|
|
+ } else {
|
|
|
|
+ return baos.toByteArray() ;
|
|
|
|
+ }*/
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|