DeviceManager.getInstance().startDiscovery(15 * 1000);
}
+ @Override
+ public void dispose() {
+ mDevice.disconnect();
+ }
+
private DeviceType getDeviceModel(ThingTypeUID typeUID) {
if (typeUID.equals(THING_TYPE_CEILING)) {
return DeviceType.ceiling;
mConnection.connect();
}
+ public void disconnect() {
+ setConnectionState(ConnectState.DISCONNECTED);
+ mConnection.disconnect();
+ }
+
public void setConnectionState(ConnectState connectState) {
logger.debug("{}: set connection state to: {}", TAG, connectState.name());
if (connectState == ConnectState.DISCONNECTED) {
@Override
public boolean disconnect() {
mDevice.setAutoConnect(false);
- return false;
+ mCmdRun = false;
+ try {
+ if (mConnectThread != null) {
+ mConnectThread.interrupt();
+ }
+ if (mSocket != null) {
+ mSocket.close();
+ }
+ } catch (Exception e) {
+ logger.debug("Exception while terminating connection", e);
+ } finally {
+ mSocket = null;
+ mDevice.setConnectionState(ConnectState.DISCONNECTED);
+ }
+ return true;
}
}