[CONNECTION] improve device connection management when device is connected
authorgreatim <jaewon81.lim@samsung.com>
Mon, 5 Oct 2015 08:03:41 +0000 (17:03 +0900)
committergreatim <jaewon81.lim@samsung.com>
Wed, 7 Oct 2015 05:04:19 +0000 (14:04 +0900)
sometimes when device is connected, DA cannot be aware of the connection. This problem is fixed.

Change-Id: I98e13e285f4b99c5db5b1969fa1228fc631de389
Signed-off-by: greatim <jaewon81.lim@samsung.com>
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DeviceManager.java

index 9bfb9a3..f716d90 100755 (executable)
@@ -55,66 +55,38 @@ public class DeviceManager {
        private static IDeviceChangeListener deviceChanged = new IDeviceChangeListener() {
                @Override
                public void onDisconnected(IDevice device) {
+                       Logger.debug("device disconnected : " + device.getSerialNumber());
                        synchronized (devices) {
                                // called : each device disconnected time
                                if (onDisconnectedInternal(device)) {
-                                       // this should be asyncExec
-                                       // think about this happened while device combo is middle of
-                                       // selection
-                                       Display.getDefault().asyncExec(new Runnable() {
-                                               @Override
-                                               public void run() {
-                                                       if (!Toolbar.INSTANCE.updateDeviceCombo(null)) {
-                                                               Toolbar.INSTANCE.updateAppCombo(true);
-                                                       }
-                                               }
-                                       });
+                                       updateToolbarByDevice();
                                }
                        }
                }
 
                @Override
                public void onConnected(IDevice device) {
+                       Logger.debug("device connected : " + device.getSerialNumber());
                        synchronized (devices) {
-                               // It called when dynamic-analyzer start, only one time
+                               // It is called when dynamic-analyzer start, only once
                                if (onConnectedInternal(device)) {
-                                       // this should be asyncExec
-                                       // think about this happened while device combo is middle of
-                                       // selection
-                                       Display.getDefault().asyncExec(new Runnable() {
-                                               @Override
-                                               public void run() {
-                                                       if (!Toolbar.INSTANCE.updateDeviceCombo(null)) {
-                                                               Toolbar.INSTANCE.updateAppCombo(true);
-                                                       }
-                                               }
-                                       });
+                                       updateToolbarByDevice();
                                }
                        }
                }
 
                @Override
                public void onChanged(IDevice device, int changeMask) {
+                       Logger.debug("device changed : " + device.getSerialNumber() + " : " + changeMask);
                        synchronized (devices) {
-                               // called : device added - already dynamic-analyzer running (not
-                               // tracing)
-                               Logger.debug("device changed : " + device.getSerialNumber() + " : " + changeMask);
-                               if (1 == changeMask) { // state changed (offline -> online, vice
-                                                                               // versa)
+                               // called : device added - already dynamic-analyzer running (not tracing)
+                               if (changeMask == IDevice.CHANGE_STATE
+                                               || changeMask == IDevice.CHANGE_STATE_TO_ONLINE) {
+                                       // state changed (offline -> online or suspended -> online)
                                        boolean bRemoved = onDisconnectedInternal(device);
                                        boolean bAdded = onConnectedInternal(device);
                                        if (bRemoved || bAdded) {
-                                               // this should be asyncExec
-                                               // think about this happened while device combo is
-                                               // middle of selection
-                                               Display.getDefault().asyncExec(new Runnable() {
-                                                       @Override
-                                                       public void run() {
-                                                               if (!Toolbar.INSTANCE.updateDeviceCombo(null)) {
-                                                                       Toolbar.INSTANCE.updateAppCombo(true);
-                                                               }
-                                                       }
-                                               });
+                                               updateToolbarByDevice();
                                        }
                                } else {
                                        // do nothing
@@ -126,7 +98,6 @@ public class DeviceManager {
        // this method should be called inside synchronized(devices) block
        private static boolean onDisconnectedInternal(IDevice device) {
                boolean bRemoved = false;
-               Logger.debug("device disconnected : " + device.getSerialNumber());
                DeviceInfo deviceInfo = getDeviceByName(device.getSerialNumber());
                if (deviceInfo != null) {
                        bRemoved = devices.remove(deviceInfo);
@@ -156,6 +127,19 @@ public class DeviceManager {
                return bAdded;
        }
 
+       private static void updateToolbarByDevice() {
+               // this should be asyncExec
+               // think about this happened while device combo is middle of selection
+               Display.getDefault().asyncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               if (!Toolbar.INSTANCE.updateDeviceCombo(null)) {
+                                       Toolbar.INSTANCE.updateAppCombo(true);
+                               }
+                       }
+               });
+       }
+
        public static void addDeviceListener() {
                SmartDevelopmentBridge.addDeviceChangeListener(deviceChanged);
        }