diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-10-15 13:49:30 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-10-15 14:31:50 +0000 |
commit | cbc70bc3a2ea7fb545c2d9cfb8914d50c1ba6475 (patch) | |
tree | c42d39f78d3e5284d9673ab007c6db49dc387e09 | |
parent | 62ecca3d957f80d9acc7116d362517b03b2301a3 (diff) | |
download | qtconnectivity-cbc70bc3a2ea7fb545c2d9cfb8914d50c1ba6475.tar.gz |
Bluetooth socket: Simplify address conversion.
In most cases, callers of convertAddress() feed the result into a
QBluetoothAddress, so they have no need for the output parameter.
Change-Id: I23b2e8d5d49ac300c35d141b75ffa8e398e22f19
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r-- | src/bluetooth/bluez/hcimanager.cpp | 8 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 32 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_p.h | 7 |
3 files changed, 17 insertions, 30 deletions
diff --git a/src/bluetooth/bluez/hcimanager.cpp b/src/bluetooth/bluez/hcimanager.cpp index bf2754f5..30511ae5 100644 --- a/src/bluetooth/bluez/hcimanager.cpp +++ b/src/bluetooth/bluez/hcimanager.cpp @@ -219,12 +219,8 @@ QBluetoothAddress HciManager::addressForConnectionHandle(quint16 handle) const } for (int i = 0; i < infoList->conn_num; i++) { - if (info[i].handle == handle) { - quint64 converted; - convertAddress(info[i].bdaddr.b, converted); - - return QBluetoothAddress(converted); - } + if (info[i].handle == handle) + return QBluetoothAddress(convertAddress(info[i].bdaddr.b)); } return QBluetoothAddress(); diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index 71f26296..43933f26 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -309,20 +309,14 @@ QBluetoothAddress QBluetoothSocketPrivate::localAddress() const sockaddr_rc addr; socklen_t addrLength = sizeof(addr); - if (::getsockname(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) { - quint64 bdaddr; - convertAddress(addr.rc_bdaddr.b, bdaddr); - return QBluetoothAddress(bdaddr); - } + if (::getsockname(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) + return QBluetoothAddress(convertAddress(addr.rc_bdaddr.b)); } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { sockaddr_l2 addr; socklen_t addrLength = sizeof(addr); - if (::getsockname(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) { - quint64 bdaddr; - convertAddress(addr.l2_bdaddr.b, bdaddr); - return QBluetoothAddress(bdaddr); - } + if (::getsockname(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) + return QBluetoothAddress(convertAddress(addr.l2_bdaddr.b)); } return QBluetoothAddress(); @@ -358,7 +352,7 @@ QString QBluetoothSocketPrivate::peerName() const if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) < 0) return QString(); - convertAddress(addr.rc_bdaddr.b, bdaddr); + convertAddress(addr.rc_bdaddr.b, &bdaddr); } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { sockaddr_l2 addr; socklen_t addrLength = sizeof(addr); @@ -366,7 +360,7 @@ QString QBluetoothSocketPrivate::peerName() const if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) < 0) return QString(); - convertAddress(addr.l2_bdaddr.b, bdaddr); + convertAddress(addr.l2_bdaddr.b, &bdaddr); } else { qCWarning(QT_BT_BLUEZ) << "peerName() called on socket of unknown type"; return QString(); @@ -441,20 +435,14 @@ QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const sockaddr_rc addr; socklen_t addrLength = sizeof(addr); - if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) { - quint64 bdaddr; - convertAddress(addr.rc_bdaddr.b, bdaddr); - return QBluetoothAddress(bdaddr); - } + if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) + return QBluetoothAddress(convertAddress(addr.rc_bdaddr.b)); } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { sockaddr_l2 addr; socklen_t addrLength = sizeof(addr); - if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) { - quint64 bdaddr; - convertAddress(addr.l2_bdaddr.b, bdaddr); - return QBluetoothAddress(bdaddr); - } + if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) == 0) + return QBluetoothAddress(convertAddress(addr.l2_bdaddr.b)); } return QBluetoothAddress(); diff --git a/src/bluetooth/qbluetoothsocket_p.h b/src/bluetooth/qbluetoothsocket_p.h index 23f3cf72..80db02a2 100644 --- a/src/bluetooth/qbluetoothsocket_p.h +++ b/src/bluetooth/qbluetoothsocket_p.h @@ -220,14 +220,17 @@ static inline void convertAddress(quint64 from, quint8 (&to)[6]) to[5] = (from >> 40) & 0xff; } -static inline void convertAddress(quint8 (&from)[6], quint64 &to) +static inline quint64 convertAddress(quint8 (&from)[6], quint64 *to = 0) { - to = (quint64(from[0]) << 0) | + const quint64 result = (quint64(from[0]) << 0) | (quint64(from[1]) << 8) | (quint64(from[2]) << 16) | (quint64(from[3]) << 24) | (quint64(from[4]) << 32) | (quint64(from[5]) << 40); + if (to) + *to = result; + return result; } QT_END_NAMESPACE |