Здравствуйте. Помогите пожалуйста решить одну проблему.
Пишу приложение для обмена с BLE устройством и qt предлагает использование класса QLowEnergyController. 
Как таковая коммуникация и обмен данным с устройством у меня получилась, но возникла одна проблема.  QLowEnergyController предлагает методы (в частности connectToDevice) работающие в асинхронном режиме, то есть при выполнении срабатывает сигнал. Но мне необходим синхронный вызов методов (в идеале по тайм-ауту) так как уже в приложении есть другой клиент основе QTcpSocket работающий в синхронном режиме и хочется просто сделать по аналогии его методы. Решение с помощью QEventLoop не помогает так пока выполняется ожидание может повторно вызваться метод вызывающий connectToDevice. То есть нужно примерно такой код:
bool MyBluetooth::doConnect(QBluetoothAddress address)
{
    control = new QLowEnergyController(address, nullptr);
    control->connectToDevice();
    if (!control->waitForConnected(3000)) return false; // !!! данного метода у класса не существует
    return true;
}
Кроме того пытался решить проблему перенеся экземпляр класса QLowEnergyController в отдельный поток. Но это у меня не получилось, экземпляр оставался в том же потоке. Вот код как я это делал:
bool MyBluetooth::doConnect(QBluetoothAddress address)
{
    control = new QLowEnergyController(address, nullptr);
    connect(control, SIGNAL(connected()), this, SLOT(controlConnected()));
    connect(control, SIGNAL(error(QLowEnergyController::Error)), this, SLOT(controlError(QLowEnergyController::Error)));
    controlThread = new QThread;
    control->moveToThread(controlThread);
    connecting = true;
    errorCode = 0;
    controlThread->start();
    control->connectToDevice();
    while(connecting);
    return !errorCode;
}
void MyBluetooth::controlConnected()
{
    connecting = false;
}
void MyBluetooth::controlError(QLowEnergyController::Error newError)
{
    errorCode  = newError;
    connecting = false;  
}