content: package org.flashtool.system;
  
  import lombok.extern.slf4j.Slf4j;
  
  @Slf4j
  public class PhoneThread extends Thread {
  
  	boolean done = false;
  	boolean paused = false;
  	boolean forced = false;
  	String status = "none";
  	String pid = "";
  	
  	StatusListener listener;
  
  	public void run() {
  		this.setName("Phonne-connect-watchdog");
  		int count = 0;
  		DeviceIdent id=null;
  		int nbstatustocount=0;
  		String lstatus="";
  		while (!done) {
  			if (!paused) {
  				id = Devices.getConnectedDevice();
  				if (!pid.equals(id.getPid())) {
  					nbstatustocount=0;
  					pid=id.getPid();
  				}
  				else {
  					if (nbstatustocount<Integer.parseInt(GlobalConfig.getProperty("usbdetectthresold"))) nbstatustocount++;
  					else lstatus=id.getStatus();
  				}
  				if (!status.equals(lstatus) && (nbstatustocount==Integer.parseInt(GlobalConfig.getProperty("usbdetectthresold")))) {
  					status=lstatus;
  					if (status.equals("adb")) {
  						DeviceProperties.reload();
  					}
  					fireStatusChanged(new StatusEvent(lstatus,id.isDriverOk()));
  				}
  			}
  			try {
  				while ((count<50) && (!done)) {
  					sleep(10);
  					count++;
  				}
  				count = 0;
  			} catch (Exception e) {}
  		}
  		Devices.clean();
  	}
  
  	public void pause(boolean ppaused) {
  		paused = ppaused;
  		status="paused";
  	}
  
  	public void end() {
  		done = true;
  	}
  
  	public void addStatusListener(StatusListener listener) {
  		this.listener = listener;
      }
      
      public void removeStatusListener(StatusListener listener) {
      	this.listener = null;
      }
      
      public StatusListener getStatusListeners() {
          return listener;
      }
      
      protected void fireStatusChanged(StatusEvent e) {
      	if (listener!=null)
  		    listener.statusChanged(e);
      }
      
      public void forceDetection() {
      	if (!forced) forced = true;
      }
      
      public void doSleep(int time) {
      	try {
      		sleep(time);
      	}
      	catch (Exception e) {}
      }
  }
  