@SuppressLint("MissingPermission")
	public final boolean open() {
		if (server != null)
			return true;

		serverServices = new LinkedList<>(initializeServer());
		final BluetoothManager bm = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
		if (bm != null) {
			server = bm.openGattServer(context, gattServerCallback);
		}
		if (server != null) {
			log(Log.INFO, "[Server] Server started successfully");
			try {
				final BluetoothGattService service = serverServices.remove();
				server.addService(service);
			} catch (final NoSuchElementException e) {
				if (serverObserver != null)
					serverObserver.onServerReady();
			} catch (final Exception e) {
				close();
				return false;
			}
			return true;
		}
		log(Log.WARN, "GATT server initialization failed");
		serverServices = null;
		return false;
	}
Opens the GATT server and starts initializing services. This method only starts initializing
services. The {@link ServerObserver#onServerReady()} will be called when all
services are done.

@return true, if the server has been started successfully. If GATT server could not
be started, for example the Bluetooth is disabled, false is returned.
@see #close()
ble/src/main/java/no/nordicsemi/android/ble/BleServerManager.java