Clear previous bluetooth device/service discovery errors on restart
An example of the problem is when discovery is first tried while
bluetooth is OFF, and one gets the corresponding error. Then the
bluetooth is switched ON, and the discovery is restarted successfully.
However in this case the error() still remains as "power OFF" error
instead of "no error", which is misleading.
With device discovery agent the clearing is done at each individual
backend, rather than at the common public class start(). This is due
to the pending cancel/start logic, which we probably shouldn't interfere
with by clearing errors amidst pending operation. The Darwin backend
already cleared the error in its start(), and with this commit the
intent is to add similar clearing to the Android/Bluez/Win.
Fixes: QTBUG-104473
Change-Id: I713590a26eb2b8d4ee7873f3fe84e63e504523df
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
(cherry picked from commit 14db1fabef)
This commit is contained in:
parent
fb45d5c9ef
commit
f7bd238fcf
|
|
@ -379,6 +379,8 @@ bool QBluetoothDeviceDiscoveryAgent::isActive() const
|
|||
|
||||
/*!
|
||||
Returns the last error.
|
||||
|
||||
Any possible previous errors are cleared upon restarting the discovery.
|
||||
*/
|
||||
QBluetoothDeviceDiscoveryAgent::Error QBluetoothDeviceDiscoveryAgent::error() const
|
||||
{
|
||||
|
|
@ -389,6 +391,8 @@ QBluetoothDeviceDiscoveryAgent::Error QBluetoothDeviceDiscoveryAgent::error() co
|
|||
|
||||
/*!
|
||||
Returns a human-readable description of the last error.
|
||||
|
||||
\sa error(), errorOccurred()
|
||||
*/
|
||||
QString QBluetoothDeviceDiscoveryAgent::errorString() const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -238,6 +238,8 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
|
|||
QObject::connect(receiver, SIGNAL(finished()), this, SLOT(processSdpDiscoveryFinished()));
|
||||
}
|
||||
|
||||
lastError = QBluetoothDeviceDiscoveryAgent::NoError;
|
||||
errorString.clear();
|
||||
discoveredDevices.clear();
|
||||
|
||||
// by arbitrary definition we run classic search first
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
|
|||
return;
|
||||
}
|
||||
|
||||
lastError = QBluetoothDeviceDiscoveryAgent::NoError;
|
||||
errorString.clear();
|
||||
discoveredDevices.clear();
|
||||
devicesProperties.clear();
|
||||
|
||||
|
|
|
|||
|
|
@ -740,6 +740,8 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
|
|||
|
||||
worker = std::make_shared<QWinRTBluetoothDeviceDiscoveryWorker>(methods,
|
||||
lowEnergySearchTimeout);
|
||||
lastError = QBluetoothDeviceDiscoveryAgent::NoError;
|
||||
errorString.clear();
|
||||
discoveredDevices.clear();
|
||||
connect(worker.get(), &QWinRTBluetoothDeviceDiscoveryWorker::deviceFound,
|
||||
this, &QBluetoothDeviceDiscoveryAgentPrivate::registerDevice);
|
||||
|
|
|
|||
|
|
@ -341,6 +341,9 @@ void QBluetoothServiceDiscoveryAgent::start(DiscoveryMode mode)
|
|||
d->foundHostAdapterPath.clear();
|
||||
#endif
|
||||
d->setDiscoveryMode(mode);
|
||||
// Clear any possible previous errors
|
||||
d->error = QBluetoothServiceDiscoveryAgent::NoError;
|
||||
d->errorString.clear();
|
||||
if (d->deviceAddress.isNull()) {
|
||||
d->startDeviceDiscovery();
|
||||
} else {
|
||||
|
|
@ -411,9 +414,10 @@ bool QBluetoothServiceDiscoveryAgent::isActive() const
|
|||
discovered by a scan, errors during service discovery on individual
|
||||
devices are not saved and no signals are emitted. In this case, errors are
|
||||
fairly normal as some devices may not respond to discovery or
|
||||
may no longer be in range. Such errors are surpressed. If no services
|
||||
may no longer be in range. Such errors are suppressed. If no services
|
||||
are returned, it can be assumed no services could be discovered.
|
||||
|
||||
Any possible previous errors are cleared upon restarting the discovery.
|
||||
*/
|
||||
QBluetoothServiceDiscoveryAgent::Error QBluetoothServiceDiscoveryAgent::error() const
|
||||
{
|
||||
|
|
@ -425,6 +429,8 @@ QBluetoothServiceDiscoveryAgent::Error QBluetoothServiceDiscoveryAgent::error()
|
|||
/*!
|
||||
Returns a human-readable description of the last error that occurred during the
|
||||
service discovery.
|
||||
|
||||
\sa error(), errorOccurred()
|
||||
*/
|
||||
QString QBluetoothServiceDiscoveryAgent::errorString() const
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue