bool QConnectionManager::connectToNetworkService(const QString &servicePath)
{
    qDebug() << servicePath
             << netman->state();

    if (!servicesMap.contains(servicePath) || !serviceInProgress.isEmpty())
        return false;

    NetworkTechnology technology;
    QString type = servicesMap.value(servicePath)->type();
    if (type.isEmpty())
        return false;
    technology.setPath(netman->technologyPathForType(type));

    if (technology.powered()) {
        if (servicePath.contains("cellular")) {

            QOfonoManager oManager;
            if (!oManager.available()) {
                qDebug() << "ofono not available.";
                return false;
            }
            if (oManager.modems().count() < 1)
                return false;

            QOfonoNetworkRegistration ofonoReg;
            ofonoReg.setModemPath(oManager.modems().at(0));

            if (ofonoReg.status() != "registered"
                    &&  ofonoReg.status() != "roaming") { //not on any cell network so bail
                qDebug() << "ofono is not registered yet";
                return false;
            }

            QOfonoConnectionManager oConnManager;
            oConnManager.setModemPath(oManager.modems().at(0));

            //isCellRoaming
            if (servicesMap.value(servicePath)->roaming()
                    && !oConnManager.roamingAllowed()) {
                    //roaming and user doesnt want connection while roaming
                    qDebug() << "roaming not allowed";
                    return false;
                }

                requestConnect(servicePath);
        } else {
            requestConnect(servicePath);
        }
    }
    return true;
}
Example #2
0
void Tst_qofonoTest::testScan()
{
    QOfonoManager manager;
    QOfonoModem modem;
    modem.setModemPath(manager.modems()[0]);
    QOfonoNetworkRegistration netreg;
    netreg.setModemPath(manager.modems()[0]);

    QSignalSpy spy_scanFinished(&netreg, SIGNAL(scanFinished()));
    QSignalSpy spy_scanError(&netreg, SIGNAL(scanError(QString)));

    netreg.scan();
    ::waitForSignal(&netreg, SIGNAL(scanFinished()), 1000 * 500);

    QCOMPARE(spy_scanError.count(),0);
    QCOMPARE(spy_scanFinished.count(),1);

}