quint64 QConnmanEngine::bytesWritten(const QString &id) {//TODO use connman counter API QMutexLocker locker(&mutex); quint64 result = 0; QString devFile = getInterfaceFromId(id); QFile tx(QLatin1String("/sys/class/net/") + devFile + QLatin1String("/statistics/tx_bytes")); if(tx.exists() && tx.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&tx); in >> result; tx.close(); }
void QNativeWifiEngine::disconnectFromId(const QString &id) { QMutexLocker locker(&mutex); if (!available()) { locker.unlock(); emit connectionError(id, InterfaceLookupError); return; } QString interface = getInterfaceFromId(id); if (interface.isEmpty()) { locker.unlock(); emit connectionError(id, InterfaceLookupError); return; } QStringList split = interface.mid(1, interface.length() - 2).split('-'); GUID guid; guid.Data1 = split.at(0).toUInt(0, 16); guid.Data2 = split.at(1).toUShort(0, 16); guid.Data3 = split.at(2).toUShort(0, 16); guid.Data4[0] = split.at(3).left(2).toUShort(0, 16); guid.Data4[1] = split.at(3).right(2).toUShort(0, 16); for (int i = 0; i < 6; ++i) guid.Data4[i + 2] = split.at(4).mid(i*2, 2).toUShort(0, 16); DWORD result = local_WlanDisconnect(handle, &guid, 0); if (result != ERROR_SUCCESS) { #ifdef BEARER_MANAGEMENT_DEBUG qDebug("%s: WlanDisconnect failed with error %ld\n", __FUNCTION__, result); #endif locker.unlock(); emit connectionError(id, DisconnectionError); return; } }