blob: 367a171189844b44143acb3117e37bcddb3fbc10 [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef MAEMO_ICD_H
#define MAEMO_ICD_H
#include <QObject>
#include <QStringList>
#include <QByteArray>
#include <QMetaType>
#include <QtDBus>
#include <QDBusArgument>
#include <glib.h>
#include <icd/dbus_api.h>
#include <icd/osso-ic.h>
#include <icd/osso-ic-dbus.h>
#include <icd/network_api_defines.h>
#define ICD_LONG_SCAN_TIMEOUT (30*1000) /* 30sec */
#define ICD_SHORT_SCAN_TIMEOUT (10*1000) /* 10sec */
#define ICD_SHORT_CONNECT_TIMEOUT (10*1000) /* 10sec */
#define ICD_LONG_CONNECT_TIMEOUT (150*1000) /* 2.5min */
namespace Maemo {
struct CommonParams {
QString service_type;
uint service_attrs;
QString service_id;
QString network_type;
uint network_attrs;
QByteArray network_id;
};
struct IcdScanResult {
uint status; // see #icd_scan_status
uint timestamp; // when last seen
QString service_name;
uint service_priority; // within a service type
QString network_name;
uint network_priority;
struct CommonParams scan;
uint signal_strength; // quality, 0 (none) - 10 (good)
QString station_id; // e.g. MAC address or similar id
uint signal_dB; // use signal strength above unless you know what you are doing
IcdScanResult() {
status = timestamp = scan.service_attrs = service_priority =
scan.network_attrs = network_priority = signal_strength =
signal_dB = 0;
}
};
struct IcdStateResult {
struct CommonParams params;
QString error;
uint state;
};
struct IcdStatisticsResult {
struct CommonParams params;
uint time_active; // in seconds
enum icd_nw_levels signal_strength; // see network_api_defines.h in icd2-dev package
uint bytes_sent;
uint bytes_received;
};
struct IcdIPInformation {
QString address;
QString netmask;
QString default_gateway;
QString dns1;
QString dns2;
QString dns3;
};
struct IcdAddressInfoResult {
struct CommonParams params;
QList<IcdIPInformation> ip_info;
};
enum IcdDbusInterfaceVer {
IcdOldDbusInterface = 0, // use the old OSSO-IC interface
IcdNewDbusInterface // use the new Icd2 interface (default)
};
class IcdPrivate;
class Icd : public QObject
{
Q_OBJECT
public:
Icd(QObject *parent = 0);
Icd(unsigned int timeout, QObject *parent = 0);
Icd(unsigned int timeout, IcdDbusInterfaceVer ver, QObject *parent = 0);
~Icd();
/* Icd2 dbus API functions */
QStringList scan(icd_scan_request_flags flags,
QStringList &network_types,
QList<IcdScanResult>& scan_results,
QString& error);
uint state(QString& service_type, uint service_attrs,
QString& service_id, QString& network_type,
uint network_attrs, QByteArray& network_id,
IcdStateResult &state_result);
uint addrinfo(QString& service_type, uint service_attrs,
QString& service_id, QString& network_type,
uint network_attrs, QByteArray& network_id,
IcdAddressInfoResult& addr_result);
uint state(QList<IcdStateResult>& state_results);
uint statistics(QList<IcdStatisticsResult>& stats_results);
uint addrinfo(QList<IcdAddressInfoResult>& addr_results);
private Q_SLOTS:
void icdSignalReceived(const QString& interface,
const QString& signal,
const QList<QVariant>& args);
void icdCallReply(const QString& method,
const QList<QVariant>& args,
const QString& error);
private:
IcdPrivate *d;
friend class IcdPrivate;
};
} // Maemo namespace
#endif