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
// 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);
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);
}