public synchronized List<AndroidDeviceClient> getDeviceList(
			GetDeviceListMessageType messageType) {
		List<AndroidDevice> devices = ServerConnectionManager.getInstance()
				.getDevices();
		List<AndroidDeviceClient> currentDeviceList = new ArrayList<AndroidDeviceClient>();
		List<AndroidDeviceClient> returnList = new ArrayList<AndroidDeviceClient>();

		for (AndroidDevice device : devices) {
			currentDeviceList.add(new AndroidDeviceClient(device
					.getSerialNumber(), device.getDeviceModel()));
		}
		switch (messageType) {
		case ALL:
			previousDeviceListForAdded.clear();
			previousDeviceListForAdded.addAll(currentDeviceList);
			previousDeviceListForRemoved.clear();
			previousDeviceListForRemoved.addAll(currentDeviceList);
			returnList.addAll(previousDeviceListForAdded);
			break;
		case ADDED:
			returnList.addAll(currentDeviceList);
			returnList.removeAll(previousDeviceListForAdded);
			previousDeviceListForAdded.clear();
			previousDeviceListForAdded.addAll(currentDeviceList);
			break;
		case REMOVED:
			returnList.addAll(previousDeviceListForRemoved);
			returnList.removeAll(currentDeviceList);
			previousDeviceListForRemoved.clear();
			previousDeviceListForRemoved.addAll(currentDeviceList);
			break;

		default:
			break;
		}

		return returnList;
	}