From 8127255de32ef11e4782396130bcef6fae00feb0 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 21 Dec 2012 17:28:13 +1000 Subject: [PATCH] add Counter API --- libconnman-qt/counter.cpp | 64 ++++++++++++++++++++++++++++++++ libconnman-qt/counter.h | 60 ++++++++++++++++++++++++++++++ libconnman-qt/libconnman-qt.pro | 6 ++- libconnman-qt/networkmanager.cpp | 12 ++++++ libconnman-qt/networkmanager.h | 2 + 5 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 libconnman-qt/counter.cpp create mode 100644 libconnman-qt/counter.h diff --git a/libconnman-qt/counter.cpp b/libconnman-qt/counter.cpp new file mode 100644 index 0000000..0dce613 --- /dev/null +++ b/libconnman-qt/counter.cpp @@ -0,0 +1,64 @@ +/* + * Copyright © 2012, Jolla. + * + * This program is licensed under the terms and conditions of the + * Apache License, version 2.0. The full text of the Apache License is at + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + +#include + +#include "counter.h" + +static const char COUNTER_PATH[] = "/ConnectivityCounter"; + +Counter::Counter(QObject *parent) : + QObject(parent), + m_manager(NetworkManagerFactory::createInstance()) +{ + new CounterAdaptor(this); + QDBusConnection::systemBus().registerObject(COUNTER_PATH, this); + + if (m_manager->isAvailable()) { + m_manager->registerCounter(QString(COUNTER_PATH),1024,5); + } +} + +Counter::~Counter() +{ +} + +void Counter::serviceUsage(const QString &servicePath, const QVariantMap &counters, bool roaming) +{ + Q_EMIT counterChanged(servicePath, counters, roaming); +} + + +CounterAdaptor::CounterAdaptor(Counter* parent) + : QDBusAbstractAdaptor(parent), + m_counter(parent) +{ +} + +CounterAdaptor::~CounterAdaptor() +{ +} + +void CounterAdaptor::Release() +{ +} + +void CounterAdaptor::Usage(const QDBusObjectPath &service_path, + const QVariantMap &home, + const QVariantMap &roaming) +{ + if (roaming.isEmpty()) { + // home + m_counter->serviceUsage(service_path.path(), home, false); + } else { + //roaming + m_counter->serviceUsage(service_path.path(), roaming, true); + } +} + diff --git a/libconnman-qt/counter.h b/libconnman-qt/counter.h new file mode 100644 index 0000000..313b6b8 --- /dev/null +++ b/libconnman-qt/counter.h @@ -0,0 +1,60 @@ +/* + * Copyright © 2012, Jolla. + * + * This program is licensed under the terms and conditions of the + * Apache License, version 2.0. The full text of the Apache License is at + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + +#ifndef COUNTER_H +#define COUNTER_H + +#include +#include +#include +#include + +#include + +class Counter : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY(Counter) +public: + explicit Counter(/*const QString &serviceName, */QObject *parent = 0); + virtual ~Counter(); + + void serviceUsage(const QString &servicePath, const QVariantMap &counters, bool roaming); + +signals: + // void usage + void counterChanged(const QString servicePath, const QVariantMap &counters, bool roaming); + +public slots: + +private: + NetworkManager* m_manager; +}; + + +class CounterAdaptor : public QDBusAbstractAdaptor +{ + Q_OBJECT; + Q_CLASSINFO("D-Bus Interface", "net.connman.Counter"); + +public: + explicit CounterAdaptor(Counter* parent); + virtual ~CounterAdaptor(); + +public slots: + void Release(); + void Usage(const QDBusObjectPath &service_path, + const QVariantMap &home, + const QVariantMap &roaming); + +private: + Counter* m_counter; + friend class CounterAdaptor; +}; +#endif // COUNTER_H diff --git a/libconnman-qt/libconnman-qt.pro b/libconnman-qt/libconnman-qt.pro index a59ba33..4f02135 100644 --- a/libconnman-qt/libconnman-qt.pro +++ b/libconnman-qt/libconnman-qt.pro @@ -27,7 +27,8 @@ HEADERS += manager.h \ clockproxy.h \ clockmodel.h \ debug.h \ - useragent.h + useragent.h \ + counter.h SOURCES += \ networkmanager.cpp \ @@ -40,7 +41,8 @@ SOURCES += \ clockmodel.cpp \ commondbustypes.cpp \ debug.cpp \ - useragent.cpp + useragent.cpp \ + counter.cpp target.path = $$INSTALL_ROOT$$PREFIX/lib diff --git a/libconnman-qt/networkmanager.cpp b/libconnman-qt/networkmanager.cpp index cc66658..e6f8630 100644 --- a/libconnman-qt/networkmanager.cpp +++ b/libconnman-qt/networkmanager.cpp @@ -441,3 +441,15 @@ void NetworkManager::unregisterAgent(const QString &path) if(m_manager) m_manager->UnregisterAgent(QDBusObjectPath(path)); } + +void NetworkManager::registerCounter(const QString &path, quint32 accuracy,quint32 period) +{ + if(m_manager) + m_manager->RegisterCounter(QDBusObjectPath(path),accuracy, period); +} + +void NetworkManager::unregisterCounter(const QString &path) +{ + if(m_manager) + m_manager->UnregisterCounter(QDBusObjectPath(path)); +} diff --git a/libconnman-qt/networkmanager.h b/libconnman-qt/networkmanager.h index 3730fe3..81b2a42 100644 --- a/libconnman-qt/networkmanager.h +++ b/libconnman-qt/networkmanager.h @@ -55,6 +55,8 @@ public slots: void setOfflineMode(const bool &offlineMode); void registerAgent(const QString &path); void unregisterAgent(const QString &path); + void registerCounter(const QString &path, quint32 accuracy,quint32 period); + void unregisterCounter(const QString &path); signals: void availabilityChanged(bool available);