summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothaddress.cpp
diff options
context:
space:
mode:
authorMichael Zanetti <michael.zanetti@nokia.com>2011-08-24 14:09:22 +1000
committerRohan McGovern <rohan.mcgovern@nokia.com>2011-08-24 14:10:36 +1000
commit29ba8297443cf76d4f647bde329d62c2a567c709 (patch)
tree88875199053cd88b3b3521c829277f209e815159 /src/bluetooth/qbluetoothaddress.cpp
Initial commit.
From qt5connectivity.tar.gz, md5 317c149d6f8c07d09632353188582834
Diffstat (limited to 'src/bluetooth/qbluetoothaddress.cpp')
-rw-r--r--src/bluetooth/qbluetoothaddress.cpp217
1 files changed, 217 insertions, 0 deletions
diff --git a/src/bluetooth/qbluetoothaddress.cpp b/src/bluetooth/qbluetoothaddress.cpp
new file mode 100644
index 00000000..d5467b9f
--- /dev/null
+++ b/src/bluetooth/qbluetoothaddress.cpp
@@ -0,0 +1,217 @@
+/****************************************************************************
+**
+** 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 Qt Mobility Components.
+**
+** $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$
+**
+****************************************************************************/
+
+#include "qbluetoothaddress.h"
+#include "qbluetoothaddress_p.h"
+
+/*!
+ \class QBluetoothAddress
+ \brief The QBluetoothAddress class provides a Bluetooth address.
+ \since 5.0
+
+ \ingroup connectivity-bluetooth
+ \inmodule QtConnectivity
+
+ This class holds a Bluetooth address in a platform- and protocol- independent manner.
+*/
+
+/*!
+ \fn inline bool QBluetoothAddress::operator!=(const QBluetoothAddress &other) const
+
+
+ Compares this Bluetooth address with \a other.
+
+ Returns true if the Bluetooth addresses are not equal, otherwise returns false.
+*/
+
+namespace
+{
+class BluetoothAddressRegisterMetaTypes
+{
+public:
+ BluetoothAddressRegisterMetaTypes()
+ {
+ qRegisterMetaType<QBluetoothAddress>("QBluetoothAddress");
+ }
+} _registerBluetoothAddressMetaTypes;
+}
+
+/*!
+ Constructs an null Bluetooth address.
+*/
+QBluetoothAddress::QBluetoothAddress()
+ : d_ptr(new QBluetoothAddressPrivate)
+{
+}
+
+/*!
+ Constructs a new Bluetooth address and assigns \a address to it.
+*/
+QBluetoothAddress::QBluetoothAddress(quint64 address)
+ : d_ptr(new QBluetoothAddressPrivate)
+{
+ Q_D(QBluetoothAddress);
+ d->m_address = address;
+}
+
+/*!
+ Constructs a new Bluetooth address and assigns \a address to it.
+
+ The format of \a address can be either XX:XX:XX:XX:XX:XX or XXXXXXXXXXXX,
+ where X is a hexadecimal digit. Case is not important.
+*/
+QBluetoothAddress::QBluetoothAddress(const QString &address)
+ : d_ptr(new QBluetoothAddressPrivate)
+{
+ Q_D(QBluetoothAddress);
+
+ QString a = address;
+
+ if (a.length() == 17)
+ a.remove(QLatin1Char(':'));
+
+ if (a.length() == 12) {
+ bool ok;
+ d->m_address = a.toULongLong(&ok, 16);
+ if (!ok)
+ clear();
+ } else {
+ d->m_address = 0;
+ }
+}
+
+/*!
+ Constructs a new Bluetooth address which is a copy of \a other.
+*/
+QBluetoothAddress::QBluetoothAddress(const QBluetoothAddress &other)
+ : d_ptr(new QBluetoothAddressPrivate)
+{
+ *this = other;
+}
+
+/*!
+ Destroys the QBluetoothAddress.
+*/
+QBluetoothAddress::~QBluetoothAddress()
+{
+ delete d_ptr;
+}
+
+/*!
+ Assigns \a other to this Bluetooth address.
+*/
+QBluetoothAddress &QBluetoothAddress::operator=(const QBluetoothAddress &other)
+{
+ Q_D(QBluetoothAddress);
+
+ d->m_address = other.d_func()->m_address;
+
+ return *this;
+}
+
+/*!
+ Sets the Bluetooth address to 00:00:00:00:00:00.
+*/
+void QBluetoothAddress::clear()
+{
+ Q_D(QBluetoothAddress);
+ d->m_address = 0;
+}
+
+/*!
+ Returns true if the Bluetooth address is valid, otherwise returns false.
+*/
+bool QBluetoothAddress::isNull() const
+{
+ Q_D(const QBluetoothAddress);
+ return d->m_address == 0;
+}
+
+/*!
+ Returns true if the Bluetooth address is less than \a other; otherwise
+ returns false.
+*/
+bool QBluetoothAddress::operator<(const QBluetoothAddress &other) const
+{
+ Q_D(const QBluetoothAddress);
+ return d->m_address < other.d_func()->m_address;
+}
+
+/*!
+ Compares this Bluetooth address to \a other.
+
+ Returns true if the Bluetooth address are equal, otherwise returns false.
+*/
+bool QBluetoothAddress::operator==(const QBluetoothAddress &other) const
+{
+ Q_D(const QBluetoothAddress);
+ return d->m_address == other.d_func()->m_address;
+}
+
+/*!
+ Returns this Bluetooth address as a quint64.
+*/
+quint64 QBluetoothAddress::toUInt64() const
+{
+ Q_D(const QBluetoothAddress);
+ return d->m_address;
+}
+
+/*!
+ Returns the Bluetooth address as a string of the form XX:XX:XX:XX:XX:XX.
+*/
+QString QBluetoothAddress::toString() const
+{
+ QString s(QLatin1String("%1:%2:%3:%4:%5:%6"));
+ Q_D(const QBluetoothAddress);
+
+ for (int i = 5; i >= 0; --i) {
+ const quint8 a = (d->m_address >> (i*8)) & 0xff;
+ s = s.arg(a, 2, 16, QLatin1Char('0'));
+ }
+
+ return s.toUpper();
+}
+
+QBluetoothAddressPrivate::QBluetoothAddressPrivate()
+{
+ m_address = 0;
+}