Fix notification issues and initialize wireless state
This commit is contained in:
parent
a88e9a1131
commit
b877b72cba
@ -345,7 +345,7 @@ void BluetoothServer::serviceError(const QLowEnergyService::ServiceError &error)
|
||||
void BluetoothServer::start()
|
||||
{
|
||||
// Check if a user is connected
|
||||
if (connected()) {
|
||||
if (m_connected) {
|
||||
qCDebug(dcBluetoothServer()) << "User is connected. Doing nothing.";
|
||||
return;
|
||||
}
|
||||
@ -410,12 +410,12 @@ void BluetoothServer::stop()
|
||||
qCDebug(dcBluetoothServer()) << "-------------------------------------";
|
||||
|
||||
if (m_networkService) {
|
||||
m_networkService->deleteLater();
|
||||
delete m_networkService;
|
||||
m_networkService = nullptr;
|
||||
}
|
||||
|
||||
if (m_wirelessService) {
|
||||
m_wirelessService->deleteLater();
|
||||
delete m_wirelessService;
|
||||
m_wirelessService = nullptr;
|
||||
}
|
||||
|
||||
@ -429,7 +429,7 @@ void BluetoothServer::stop()
|
||||
if (m_localDevice) {
|
||||
qCDebug(dcBluetoothServer()) << "Set host mode to connectable.";
|
||||
m_localDevice->setHostMode(QBluetoothLocalDevice::HostConnectable);
|
||||
m_localDevice->deleteLater();
|
||||
delete m_localDevice;
|
||||
m_localDevice = nullptr;
|
||||
}
|
||||
|
||||
@ -453,7 +453,7 @@ void BluetoothServer::onNetworkingEnabledChanged(bool enabled)
|
||||
void BluetoothServer::onWirelessNetworkingEnabledChanged(bool enabled)
|
||||
{
|
||||
if (m_networkService)
|
||||
m_networkService->setNetworkingEnabled(enabled);
|
||||
m_networkService->setWirelessNetworkingEnabled(enabled);
|
||||
}
|
||||
|
||||
void BluetoothServer::onNetworkManagerStateChanged(const NetworkManager::NetworkManagerState &state)
|
||||
|
||||
@ -52,6 +52,11 @@ NetworkService::NetworkService(QLowEnergyService *service, QObject *parent) :
|
||||
setWirelessNetworkingEnabled(Core::instance()->networkManager()->wirelessEnabled());
|
||||
}
|
||||
|
||||
NetworkService::~NetworkService()
|
||||
{
|
||||
qCDebug(dcBluetoothServer()) << "Delete network service";
|
||||
}
|
||||
|
||||
QLowEnergyService *NetworkService::service()
|
||||
{
|
||||
return m_service;
|
||||
@ -165,6 +170,7 @@ QLowEnergyServiceData NetworkService::serviceData()
|
||||
networkingEnabledStatusData.setUuid(networkingEnabledCharacteristicUuid);
|
||||
networkingEnabledStatusData.setValue(QByteArray(1, 0));
|
||||
networkingEnabledStatusData.setProperties(QLowEnergyCharacteristic::Read | QLowEnergyCharacteristic::Notify);
|
||||
networkingEnabledStatusData.addDescriptor(clientConfigDescriptorData);
|
||||
networkingEnabledStatusData.setValue(QByteArray::fromHex("00"));
|
||||
serviceData.addCharacteristic(networkingEnabledStatusData);
|
||||
|
||||
@ -172,6 +178,7 @@ QLowEnergyServiceData NetworkService::serviceData()
|
||||
QLowEnergyCharacteristicData wirelessEnabledStatusData;
|
||||
wirelessEnabledStatusData.setUuid(wirelessEnabledCharacteristicUuid);
|
||||
wirelessEnabledStatusData.setValue(QByteArray(1, 0));
|
||||
wirelessEnabledStatusData.addDescriptor(clientConfigDescriptorData);
|
||||
wirelessEnabledStatusData.setProperties(QLowEnergyCharacteristic::Read | QLowEnergyCharacteristic::Notify);
|
||||
wirelessEnabledStatusData.setValue(QByteArray::fromHex("00"));
|
||||
serviceData.addCharacteristic(wirelessEnabledStatusData);
|
||||
|
||||
@ -54,6 +54,7 @@ public:
|
||||
Q_ENUM(NetworkServiceResponse)
|
||||
|
||||
explicit NetworkService(QLowEnergyService *service, QObject *parent = 0);
|
||||
~NetworkService();
|
||||
|
||||
QLowEnergyService *service();
|
||||
|
||||
|
||||
@ -45,6 +45,11 @@ WirelessService::WirelessService(QLowEnergyService *service, QObject *parent) :
|
||||
connect(m_service, SIGNAL(error(QLowEnergyService::ServiceError)), this, SLOT(serviceError(QLowEnergyService::ServiceError)));
|
||||
}
|
||||
|
||||
WirelessService::~WirelessService()
|
||||
{
|
||||
qCDebug(dcBluetoothServer()) << "Delete wireless service";
|
||||
}
|
||||
|
||||
QLowEnergyService *WirelessService::service()
|
||||
{
|
||||
return m_service;
|
||||
|
||||
@ -62,6 +62,7 @@ public:
|
||||
Q_ENUM(WirelessServiceResponse)
|
||||
|
||||
explicit WirelessService(QLowEnergyService *service, QObject *parent = 0);
|
||||
~WirelessService();
|
||||
|
||||
QLowEnergyService *service();
|
||||
|
||||
|
||||
@ -193,7 +193,6 @@ void Core::evaluateNetworkManagerState(const NetworkManager::NetworkManagerState
|
||||
stopService();
|
||||
}
|
||||
break;
|
||||
|
||||
case NetworkManager::NetworkManagerStateUnknown:
|
||||
case NetworkManager::NetworkManagerStateAsleep:
|
||||
case NetworkManager::NetworkManagerStateDisconnected:
|
||||
@ -230,7 +229,8 @@ void Core::startService()
|
||||
qCDebug(dcApplication()) << "Start bluetooth service";
|
||||
m_bluetoothServer->setAdvertiseName(m_advertiseName);
|
||||
m_bluetoothServer->setMachineId(m_platformName);
|
||||
m_bluetoothServer->start();
|
||||
|
||||
QTimer::singleShot(5000, m_bluetoothServer, &BluetoothServer::start);
|
||||
}
|
||||
|
||||
void Core::stopService()
|
||||
@ -285,6 +285,9 @@ void Core::onBluetoothServerConnectedChanged(bool connected)
|
||||
m_bluetoothServer->onNetworkManagerStateChanged(m_networkManager->state());
|
||||
m_bluetoothServer->onNetworkingEnabledChanged(m_networkManager->networkingEnabled());
|
||||
m_bluetoothServer->onWirelessNetworkingEnabledChanged(m_networkManager->wirelessEnabled());
|
||||
if (m_wirelessDevice)
|
||||
m_bluetoothServer->onWirelessDeviceStateChanged(m_wirelessDevice->deviceState());
|
||||
|
||||
} else {
|
||||
m_advertisingTimer->stop();
|
||||
m_bluetoothServer->stop();
|
||||
|
||||
Reference in New Issue
Block a user