void QBluetoothDeviceDiscoveryAgentPrivate::allocate()
{
    Q_Q(QBluetoothDeviceDiscoveryAgent);
    /* connect to socker server */
    int result = m_socketServer.Connect();
    if (result != KErrNone) {
        _q_setError(QBluetoothDeviceDiscoveryAgent::UnknownError, 
                QString("RSocketServ.Connect() failed with error"));
        return;
    }
    // create link manager device discoverer
    if (m_socketServer.Handle() != NULL) {
        // create new active object for querying devices
        m_deviceDiscovery = new BluetoothLinkManagerDeviceDiscoverer(m_socketServer);
        if (m_deviceDiscovery) {
            QObject::connect(m_deviceDiscovery, SIGNAL(deviceDiscoveryComplete()), q, SIGNAL(finished()));
            QObject::connect(m_deviceDiscovery, SIGNAL(deviceDiscovered(const QBluetoothDeviceInfo&)),
                q, SLOT(_q_newDeviceFound(const QBluetoothDeviceInfo&)));
            QObject::connect(m_deviceDiscovery, SIGNAL(linkManagerError(QBluetoothDeviceDiscoveryAgent::Error,QString)),
                q, SLOT(_q_setError(QBluetoothDeviceDiscoveryAgent::Error,QString)));
            QObject::connect(m_deviceDiscovery, SIGNAL(canceled()), q, SIGNAL(canceled()));
        } else {
            _q_setError(QBluetoothDeviceDiscoveryAgent::UnknownError, 
                    QString("Cannot allocate BluetoothLinkManagerDeviceDiscoverer: failed with error"));
        }
    } 
}
Example #2
0
void BluetoothLinkManagerDeviceDiscoverer::setError(int errorCode)
{
    qDebug() << __PRETTY_FUNCTION__ << "errorCode=" << errorCode;
    QString errorString;
    switch (errorCode) {
        case KLinkManagerErrBase:
            errorString.append("Link manager base error value or Insufficient baseband resources error value");
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::UnknownError, errorString);
            break;
        case KErrProxyWriteNotAvailable:
            errorString.append("Proxy write not available error value");
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::UnknownError, errorString);
            break;
        case KErrReflexiveBluetoothLink:
            errorString.append("Reflexive BT link error value");
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::UnknownError, errorString);
            break;
        case KErrPendingPhysicalLink:
            errorString.append("Physical link connection already pending when trying to connect the physical link");
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::UnknownError, errorString);
            break;
        case KErrNotReady:
            errorString.append("KErrNotReady");
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::UnknownError, errorString);
        case KErrHardwareNotAvailable:
            // this is returned by Symbian backend when bluetooth is off
            errorString.append("KErrHardwareNotAvailable");
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::PoweredOff, errorString);
            break;
        case KErrCancel:
            errorString.append("KErrCancel");
            qDebug() << "emitting canceled";
            emit canceled();
            break;
        case KErrNone:
            // do nothing
            break;
        default:
            errorString = QString("Symbian errorCode = %1").arg(errorCode);
            emit linkManagerError(QBluetoothDeviceDiscoveryAgent::UnknownError, errorString);
            break;
    }
}