Quellcode durchsuchen

BridgeServer Code was arranged and resetVirtualOCFDevice(device_sn) was added.

Trishia vor 4 Jahren
Ursprung
Commit
b0b82b3975

+ 12 - 11
app/src/main/java/org/iotivity/bridge/homeserver/BridgeServer.java

@@ -89,12 +89,10 @@ public class BridgeServer {
         return OCCoreRes.getDeviceId(Bridge.BRIDGE_INDEX);
         return OCCoreRes.getDeviceId(Bridge.BRIDGE_INDEX);
     }
     }
     public void shutdown() {
     public void shutdown() {
-
         ocPlatform.systemShutdown();
         ocPlatform.systemShutdown();
     }
     }
 
 
     public void resetBridgeServer() {
     public void resetBridgeServer() {
-
         OCMain.resetDevice(Bridge.BRIDGE_INDEX);
         OCMain.resetDevice(Bridge.BRIDGE_INDEX);
 
 
         // this below logic has some issue for now so don't use
         // this below logic has some issue for now so don't use
@@ -155,6 +153,18 @@ public class BridgeServer {
         }
         }
     }
     }
 
 
+    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!");
+            }
+        }
+    }
+
     /*public void loadVirtualOCFDevices() {
     /*public void loadVirtualOCFDevices() {
         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()+"] ");
@@ -318,7 +328,6 @@ public class BridgeServer {
                 //OCIntrospection.setIntrospectionData(vod_index, idd_bytes);
                 //OCIntrospection.setIntrospectionData(vod_index, idd_bytes);
             }
             }
         }
         }
-
     }
     }
 
 
     public void removeLightVirtualOCFDevice(int vod_index) {
     public void removeLightVirtualOCFDevice(int vod_index) {
@@ -420,7 +429,6 @@ public class BridgeServer {
     public void disconnectVirtualDevice(int vod_index) {
     public void disconnectVirtualDevice(int vod_index) {
 
 
         Log.d(TAG, "disconnectVirtualDevice vod_index = "+vod_index+") called.");
         Log.d(TAG, "disconnectVirtualDevice vod_index = "+vod_index+") called.");
-
         VirtualOCFDevice vod = bridge.getVirtualOCFDevice(vod_index);
         VirtualOCFDevice vod = bridge.getVirtualOCFDevice(vod_index);
         if (vod != null) {
         if (vod != null) {
             vod.setDiscovered(false);
             vod.setDiscovered(false);
@@ -441,9 +449,6 @@ public class BridgeServer {
 
 
     }
     }
 
 
-    //public Light getLightData() { return light; }
-    //public Bridge getBridgeData() { return bridge; }
-
     /* These APIs are related to online pairwised devices */
     /* These APIs are related to online pairwised devices */
     public ArrayList<OcRemoteDevice> getPairwisedDevices() {
     public ArrayList<OcRemoteDevice> getPairwisedDevices() {
         return pairwised_devices;
         return pairwised_devices;
@@ -463,12 +468,10 @@ public class BridgeServer {
     }
     }
 
 
     public boolean removePairwisedDevices(OcRemoteDevice dev) {
     public boolean removePairwisedDevices(OcRemoteDevice dev) {
-
         return this.pairwised_devices.remove(dev);
         return this.pairwised_devices.remove(dev);
     }
     }
 
 
     public boolean removePairwisedDevices(int index) {
     public boolean removePairwisedDevices(int index) {
-
         return pairwised_devices.remove(pairwised_devices.get(index));
         return pairwised_devices.remove(pairwised_devices.get(index));
     }
     }
 
 
@@ -515,12 +518,10 @@ public class BridgeServer {
     }
     }
 
 
     public boolean removePairwisedCredentialUUIDs(OCUuid uuid) {
     public boolean removePairwisedCredentialUUIDs(OCUuid uuid) {
-
         return this.pairwised_credential_uuids.remove(uuid);
         return this.pairwised_credential_uuids.remove(uuid);
     }
     }
 
 
     public boolean removePairwisedCredentialUUIDs(int index) {
     public boolean removePairwisedCredentialUUIDs(int index) {
-
         return pairwised_credential_uuids.remove(pairwised_credential_uuids.get(index));
         return pairwised_credential_uuids.remove(pairwised_credential_uuids.get(index));
     }
     }
 
 

+ 27 - 10
app/src/main/java/org/iotivity/bridge/homeserver/BridgeService.java

@@ -29,7 +29,10 @@ import com.icontrols.service.control.ILightControlService;
 import com.icontrols.service.control.ILightControlServiceCallback;
 import com.icontrols.service.control.ILightControlServiceCallback;
 
 
 import org.iotivity.OCCoreRes;
 import org.iotivity.OCCoreRes;
+import org.iotivity.OCDeviceInfo;
+import org.iotivity.OCMain;
 import org.iotivity.OCQos;
 import org.iotivity.OCQos;
+import org.iotivity.OCResource;
 import org.iotivity.OCUuid;
 import org.iotivity.OCUuid;
 import org.iotivity.OCUuidUtil;
 import org.iotivity.OCUuidUtil;
 import org.iotivity.bridge.homeserver.handler.client.DeviceDiscoveryHandler;
 import org.iotivity.bridge.homeserver.handler.client.DeviceDiscoveryHandler;
@@ -42,6 +45,8 @@ 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.OcCborEncoder;
 import org.iotivity.oc.OcCborEncoder;
+import org.iotivity.oc.OcDevice;
+import org.iotivity.oc.OcPlatform;
 import org.iotivity.oc.OcRemoteDevice;
 import org.iotivity.oc.OcRemoteDevice;
 import org.iotivity.oc.OcRemoteResource;
 import org.iotivity.oc.OcRemoteResource;
 import org.iotivity.oc.OcUtils;
 import org.iotivity.oc.OcUtils;
@@ -448,6 +453,11 @@ public class BridgeService extends IntentService {
 
 
                     // Update Properties of the resource from result
                     // Update Properties of the resource from result
                     bridgeServer.addOrUpdateVirtualOCFDeviceProperties(sn, uri, res_data);
                     bridgeServer.addOrUpdateVirtualOCFDeviceProperties(sn, uri, res_data);
+
+                    // TODO : need to check // notify to Observers for changed properties's value
+                    /*VirtualOCFDevice vod = bridgeServer.getVirtualOCFDevice(sn);
+                    OCResource ocResource = OCCoreRes.getResourceByUri(uri, vod.getVODIndex());
+                    OCMain.notifyObservers(ocResource);*/
                 }
                 }
             } catch (JSONException e) {
             } catch (JSONException e) {
                 Log.e(TAG, "Light Control Service Remote Error : ", e);
                 Log.e(TAG, "Light Control Service Remote Error : ", e);
@@ -602,6 +612,17 @@ public class BridgeService extends IntentService {
                             // doGetProperties with Light Control Service
                             // doGetProperties with Light Control Service
                             String properies = lightBinder.doGetResourceProperties(device_sn, resource.getResourceUri());
                             String properies = lightBinder.doGetResourceProperties(device_sn, resource.getResourceUri());
                             bridgeServer.addOrUpdateVirtualOCFDeviceProperties(device_sn, resource.getResourceUri(), properies);
                             bridgeServer.addOrUpdateVirtualOCFDeviceProperties(device_sn, resource.getResourceUri(), properies);
+
+                            // TODO : need to check // notify to Observers for changed properties's value
+                            /*Log.d(TAG, "OCCoreRes.getResourceByUri() before : " + vod.getDeviceName() +
+                                    ", " +resource.getResourceUri()+", "+ vod.getVODIndex());
+                            //OCDeviceInfo info = OCCoreRes.getDeviceInfo(vod.getVODIndex());
+                            OCResource ocResource = OCCoreRes.getResourceByUri(resource.getResourceUri(), vod.getVODIndex());
+                            if(ocResource != null && ocResource.getNumObservers() > 0) {
+                                Log.d(TAG, "OCCoreRes.getResourceByUri() after : " + ocResource.getName() +
+                                        ", " +ocResource.getUri() +", "+ ocResource.getNumObservers());
+                                OCMain.notifyObservers(ocResource);
+                            }*/
                         } catch (RemoteException e) {
                         } catch (RemoteException e) {
                             Log.e(TAG, "Light Control Service Remote Error : ", e);
                             Log.e(TAG, "Light Control Service Remote Error : ", e);
                         }
                         }
@@ -761,9 +782,10 @@ public class BridgeService extends IntentService {
 
 
     public void scheduledTaskInit () {
     public void scheduledTaskInit () {
 
 
-        // How to use ExecuterService like followings
-        // executorService.schedule(Classname::someTask, delayInSeconds, TimeUnit.SECONDS);                 // once after a delay
-        // executorService.scheduleAtFixedRate(Classname::someTask, 0, delayInSeconds, TimeUnit.SECONDS);   // at fixed time interval
+        /* How to use ExecuterService like followings
+         * executorService.schedule(Classname::someTask, delayInSeconds, TimeUnit.SECONDS);                 // once after a delay
+         * executorService.scheduleAtFixedRate(Classname::someTask, 0, delayInSeconds, TimeUnit.SECONDS);   // at fixed time interval
+         */
         executorService.scheduleAtFixedRate(new Runnable() {
         executorService.scheduleAtFixedRate(new Runnable() {
             @Override
             @Override
             public void run() {
             public void run() {
@@ -777,7 +799,7 @@ public class BridgeService extends IntentService {
                     final String msg = "Failed to discover devices";
                     final String msg = "Failed to discover devices";
                     Log.d(TAG, msg);
                     Log.d(TAG, msg);
                 }
                 }
-                Log.d(TAG, "DeviceDiscovery ScheduledTask per 60sec was called.");
+                Log.d(TAG, "DeviceDiscovery ScheduledTask per 90sec was called.");
             }
             }
         }, 10, 90, TimeUnit.SECONDS); //90 sec interval after 10sec delay
         }, 10, 90, TimeUnit.SECONDS); //90 sec interval after 10sec delay
 
 
@@ -785,16 +807,11 @@ public class BridgeService extends IntentService {
             @Override
             @Override
             public void run() {
             public void run() {
                 // Getting Properites of Light Control Service for resource monitoring
                 // Getting Properites of Light Control Service for resource monitoring
+                Log.d(TAG, "LightControl Resources Retrieve ScheduledTask per 180sec was called.");
                 doGetLightControlResources();
                 doGetLightControlResources();
             }
             }
         }, 30, 180, TimeUnit.SECONDS); // 30sec interval after 30sec delay
         }, 30, 180, TimeUnit.SECONDS); // 30sec interval after 30sec delay
 
 
-        /*executorService.schedule(new Runnable() {
-            @Override
-            public void run() {
-
-            }
-        }, 10, TimeUnit.SECONDS);*/
     }
     }
 
 
     public void loadPairwisedDeviceUUIDs() {
     public void loadPairwisedDeviceUUIDs() {