PUBLIC_HEADERS += ofonocallvolume.h
PUBLIC_HEADERS += ofonomessage.h
PUBLIC_HEADERS += ofonoconnman.h
+PUBLIC_HEADERS += ofonoconnmancontext.h
HEADERS += $$PUBLIC_HEADERS
HEADERS += ofonointerface.h
SOURCES += ofonocallvolume.cpp
SOURCES += ofonomessage.cpp
SOURCES += ofonoconnman.cpp
+SOURCES += ofonoconnmancontext.cpp
target.path = $$[QT_INSTALL_PREFIX]/lib
headers.files = $$PUBLIC_HEADERS
--- /dev/null
+/*
+ * This file is part of ofono-qt
+ *
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Contact: Alexander Kanavin <alexander.kanavin@nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include <QtDBus/QtDBus>
+#include <QtCore/QObject>
+#include <QDBusArgument>
+
+#include "ofonointerface.h"
+#include "ofonoconnman.h"
+#include "ofonoconnmancontext.h"
+
+
+OfonoConnmanContext::OfonoConnmanContext(const QString& contextId, QObject *parent)
+ : QObject(parent)
+{
+ m_if = new OfonoInterface(contextId, "org.ofono.ConnectionContext", OfonoGetAllOnStartup, this);
+
+ connect(m_if, SIGNAL(propertyChanged(const QString&, const QVariant&)),
+ this, SLOT(propertyChanged(const QString&, const QVariant&)));
+
+}
+
+OfonoConnmanContext::OfonoConnmanContext(const OfonoConnmanContext& context)
+ : QObject(context.parent())
+{
+ m_if = new OfonoInterface(context.path(), "org.ofono.ConnectionContext", OfonoGetAllOnStartup, this);
+
+ connect(m_if, SIGNAL(propertyChanged(const QString&, const QVariant&)),
+ this, SLOT(propertyChanged(const QString&, const QVariant&)));
+
+}
+
+bool OfonoConnmanContext::operator==(const OfonoConnmanContext &context)
+{
+ return path() == context.path();
+}
+
+OfonoConnmanContext::~OfonoConnmanContext()
+{
+}
+
+bool OfonoConnmanContext::active() const
+{
+ return m_if->properties()["Active"].value<bool>();
+}
+
+QString OfonoConnmanContext::accessPointName() const
+{
+ return m_if->properties()["AccessPointName"].value<QString>();
+}
+
+QString OfonoConnmanContext::name() const
+{
+ return m_if->properties()["Name"].value<QString>();
+}
+
+QString OfonoConnmanContext::type() const
+{
+ return m_if->properties()["Type"].value<QString>();
+}
+
+QString OfonoConnmanContext::username() const
+{
+ return m_if->properties()["Username"].value<QString>();
+}
+
+QString OfonoConnmanContext::password() const
+{
+ return m_if->properties()["Password"].value<QString>();
+}
+
+QString OfonoConnmanContext::protocol() const
+{
+ return m_if->properties()["Protocol"].value<QString>();
+}
+
+QString OfonoConnmanContext::messageProxy() const
+{
+ return m_if->properties()["MessageProxy"].value<QString>();
+}
+
+QString OfonoConnmanContext::messageCenter() const
+{
+ return m_if->properties()["MessageCenter"].value<QString>();
+}
+
+void OfonoConnmanContext::propertyChanged(const QString &property, const QVariant &value)
+{
+ if (property == "Active") {
+ emit activeChanged(value.value<bool>());
+ } else if (property == "Name") {
+ emit nameChanged(value.value<QString>());
+ } else if (property == "AccessPointName") {
+ emit accessPointNameChanged(value.value<QString>());
+ } else if (property == "Type") {
+ emit typeChanged(value.value<QString>());
+ } else if (property == "Username") {
+ emit userNameChanged(value.value<QString>());
+ } else if (property == "Password") {
+ emit passwordChanged(value.value<QString>());
+ } else if (property == "Protocol") {
+ emit protocolChanged(value.value<QString>());
+ } else if (property == "MessageProxy") {
+ emit messageProxyChanged(value.value<QString>());
+ } else if (property == "MessageCenter") {
+ emit messageCenterChanged(value.value<QString>());
+
+ } else if (property == "Settings") {
+
+ QVariantMap map;
+ value.value<QDBusArgument>()>>map;
+ emit settingsChanged(map);
+ }
+}
+
+QVariantMap OfonoConnmanContext::settings() const
+{
+ QVariantMap map;
+ m_if->properties()["Settings"].value<QDBusArgument>()>>map;
+ return map;
+}
+
+QString OfonoConnmanContext::path() const
+{
+ return m_if->path();
+}
+
+QString OfonoConnmanContext::errorName() const
+{
+ return m_if->errorName();
+}
+
+QString OfonoConnmanContext::errorMessage() const
+{
+ return m_if->errorMessage();
+}
+
+/* Set Property*/
+void OfonoConnmanContext::setActive(const bool value)
+{
+ m_if->setProperty("Active",QVariant(value));
+}
+
+void OfonoConnmanContext::setAccessPointName(const QString& value)
+{
+ m_if->setProperty("AccessPointName",QVariant(value));
+}
+
+void OfonoConnmanContext::setType(const QString& value)
+{
+ m_if->setProperty("Type",QVariant(value));
+}
+
+void OfonoConnmanContext::setUsername(const QString& value)
+{
+ m_if->setProperty("Username",QVariant(value));
+}
+
+void OfonoConnmanContext::setPassword(const QString& value)
+{
+ m_if->setProperty("Password",QVariant(value));
+}
+
+void OfonoConnmanContext::setProtocol(const QString& value)
+{
+ m_if->setProperty("Protocol",QVariant(value));
+}
+
+void OfonoConnmanContext::setName(const QString& value)
+{
+ m_if->setProperty("Name",QVariant(value));
+}
+
+void OfonoConnmanContext::setMessageProxy(const QString& value)
+{
+ m_if->setProperty("MessageProxy",QVariant(value));
+}
+
+void OfonoConnmanContext::setMessageCenter(const QString& value)
+{
+ m_if->setProperty("MessageCenter",QVariant(value));
+}
+
+void OfonoConnmanContext::setPropertyFailed(const QString &property)
+{
+ if (property == "Active") {
+ emit setActiveFailed();
+ } else if (property == "AccessPointName") {
+ emit setAccessPointNameFailed();
+ } else if (property == "Type") {
+ emit setTypeFailed();
+ } else if (property == "Username") {
+ emit setUsernameFailed();
+ } else if (property == "Password") {
+ emit setPasswordFailed();
+ } else if (property == "Protocol") {
+ emit setProtocolFailed();
+ } else if (property == "Name") {
+ emit setNameFailed();
+ } else if (property == "MessageProxy") {
+ emit setMessageProxyFailed();
+ } else if (property == "MessageCenter") {
+ emit setMessageCenterFailed();
+ }
+}
--- /dev/null
+/*
+ * This file is part of ofono-qt
+ *
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Contact: Alexander Kanavin <alexander.kanavin@nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+#ifndef OFONOCONNMANCONTEXT_H
+#define OFONOCONNMANCONTEXT_H
+
+#include <QtCore/QObject>
+#include <QVariant>
+#include <QStringList>
+#include <QDBusError>
+
+#include "libofono-qt_global.h"
+
+class OfonoInterface;
+
+//! This class is used to access oFono connman context API
+/*!
+ * The API is documented in
+ * http://git.kernel.org/?p=network/ofono/ofono.git;a=blob;f=doc/connman-api.txt
+ */
+class OFONO_QT_EXPORT OfonoConnmanContext : public QObject
+{
+ Q_OBJECT
+public:
+ OfonoConnmanContext(const QString &contextPath, QObject *parent=0);
+ OfonoConnmanContext(const OfonoConnmanContext &op);
+ ~OfonoConnmanContext();
+
+ OfonoConnmanContext operator=(const OfonoConnmanContext &op);
+ bool operator==(const OfonoConnmanContext &op);
+
+ //! Returns the D-Bus object path of the voice call object
+ QString path() const;
+
+ //! Get the D-Bus error name of the last operation.
+ /*!
+ * Returns the D-Bus error name of the last operation (setting a property
+ * or calling a method) if it has failed
+ */
+ QString errorName() const;
+
+ //! Get the D-Bus error message of the last operation.
+ /*!
+ * Returns the D-Bus error message of the last operation (setting a property
+ * or calling a method) if it has failed
+ */
+ QString errorMessage() const;
+ /* Properties for context*/
+
+ bool active() const;
+ QString accessPointName() const;
+ QString type() const;
+ QString username() const;
+ QString password() const;
+ QString protocol() const;
+ QString name() const;
+ QString messageProxy() const;
+ QString messageCenter() const;
+ QVariantMap settings() const;
+
+ void setActive(const bool);
+ void setAccessPointName(const QString&);
+ void setType(const QString&);
+ void setUsername(const QString&);
+ void setPassword(const QString&);
+ void setProtocol(const QString&);
+ void setName(const QString&);
+ void setMessageProxy(const QString&);
+ void setMessageCenter(const QString&);
+
+signals:
+ void activeChanged(const bool);
+ void accessPointNameChanged(const QString &apn);
+ void nameChanged(const QString &name);
+ void typeChanged(const QString &type);
+ void userNameChanged(const QString &uname);
+ void passwordChanged(const QString &pw);
+ void protocolChanged(const QString &proto);
+ void messageProxyChanged(const QString &proxy);
+ void messageCenterChanged(const QString &msc);
+
+ void setActiveFailed();
+ void setAccessPointNameFailed();
+ void setTypeFailed();
+ void setUsernameFailed();
+ void setPasswordFailed();
+ void setProtocolFailed();
+ void setNameFailed();
+ void setMessageProxyFailed();
+ void setMessageCenterFailed();
+
+ /* Settings change notification*/
+ void settingsChanged(const QVariantMap&);
+
+private slots:
+ void propertyChanged(const QString &property, const QVariant &value);
+ void setPropertyFailed(const QString& property);
+
+private:
+ OfonoInterface *m_if;
+
+};
+
+#endif //OFONOCONNMANCONTEXT_H
--- /dev/null
+/*
+ * This file is part of ofono-qt
+ *
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Contact: Alexander Kanavin <alexander.kanavin@nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include <QtTest/QtTest>
+#include <QtCore/QObject>
+
+#include <ofonoconnman.h>
+#include <ofonoconnmancontext.h>
+#include <QtDebug>
+
+
+class TestOfonoConnmanContext : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase()
+ {
+ m = new OfonoConnMan(OfonoModem::ManualSelect, "/phonesim", this);
+ QCOMPARE(m->modem()->isValid(), true);
+ if (!m->modem()->powered()) {
+ m->modem()->setPowered(true);
+ QTest::qWait(5000);
+ }
+ if (!m->modem()->online()) {
+ m->modem()->setOnline(true);
+ QTest::qWait(5000);
+ }
+ QCOMPARE(m->isValid(), true);
+ }
+
+ void testOfonoConnmanContext ()
+ {
+ QSignalSpy addcon(m,SIGNAL(addContextComplete(bool)));
+ QSignalSpy conadd(m, SIGNAL(contextAdded(const QString&)));
+ QSignalSpy conrem(m, SIGNAL(contextRemoved(const QString&)));
+
+ m->addContext("internet");
+ QTest::qWait(1000);
+
+ QCOMPARE(addcon.count(), 1);
+ QCOMPARE(addcon.takeFirst().at(0).toBool(),true);
+ QCOMPARE(conadd.count(), 1);
+ QString contextid = conadd.takeFirst().at(0).toString();
+
+ OfonoConnmanContext* context = new OfonoConnmanContext(contextid);
+
+ QSignalSpy active(context, SIGNAL(activeChanged(const bool)));
+ QSignalSpy apn(context,SIGNAL(accessPointNameChanged(const QString&)));
+ QSignalSpy name(context, SIGNAL(nameChanged(const QString&)));
+ QSignalSpy type (context, SIGNAL(typeChanged(const QString&)));
+ QSignalSpy uname (context, SIGNAL(userNameChanged(const QString&)));
+ QSignalSpy pw (context, SIGNAL(passwordChanged(const QString&)));
+ QSignalSpy proto (context, SIGNAL(protocolChanged(const QString&)));
+ QSignalSpy sett (context, SIGNAL(settingsChanged(const QVariantMap&)));
+
+ context->setAccessPointName("hyva");
+ QTest::qWait(5000);
+ context->setUsername("huomenta");
+ QTest::qWait(5000);
+ context->setPassword("HYVA");
+ QTest::qWait(5000);
+ context->setName("yota");
+ QTest::qWait(5000);
+ context->setType("mms");
+ QTest::qWait(5000);
+ context->setProtocol("ipv6");
+ QTest::qWait(5000);
+
+ context->setActive(true);
+ QTest::qWait(10000);
+
+ QCOMPARE(apn.count(),1);
+ QCOMPARE(apn.takeFirst().at(0).toString(),QString("hyva"));
+ QCOMPARE(uname.count(),1);
+ QCOMPARE(uname.takeFirst().at(0).toString(),QString("huomenta"));
+ QCOMPARE(pw.count(),1);
+ QCOMPARE(pw.takeFirst().at(0).toString(),QString("HYVA"));
+ QCOMPARE(name.count(),1);
+ QCOMPARE(name.takeFirst().at(0).toString(),QString("yota"));
+ QCOMPARE(type.count(),1);
+ QCOMPARE(type.takeFirst().at(0).toString(),QString("mms"));
+ QCOMPARE(sett.count(),1);
+ QVariantMap settings = context->settings();
+ QCOMPARE(settings["Interface"].value<QString>(),QString("dummy0"));
+ QCOMPARE(proto.count(),1);
+ QCOMPARE(proto.takeFirst().at(0).toString(),QString("ipv6"));
+ QCOMPARE(active.count(),1);
+ QCOMPARE(context->active(),true);
+ context->setActive(false);
+ QTest::qWait(5000);
+ delete context;
+ QTest::qWait(5000);
+ m->removeContext(contextid);
+ QTest::qWait(5000);
+ QCOMPARE(active.count(),2);
+ QCOMPARE(sett.count(),2);
+ QCOMPARE(conrem.count(), 1);
+
+ }
+
+ void cleanupTestCase()
+ {
+
+ }
+
+private:
+ OfonoConnMan *m;
+};
+
+QTEST_MAIN(TestOfonoConnmanContext)
+#include "test_ofonoconnmancontext.moc"
--- /dev/null
+include(testcase.pri)
+SOURCES += test_ofonoconnmancontext.cpp
SUBDIRS += test_ofonovoicecallmanager.pro
SUBDIRS += test_ofonovoicecall.pro
SUBDIRS += test_ofonocallvolume.pro
-SUBDIRS += test_ofonoconnman.pro
\ No newline at end of file
+SUBDIRS += test_ofonoconnman.pro
+SUBDIRS += test_ofonoconnmancontext.pro
\ No newline at end of file