void WlanCoreImpl::cacheInterfaceInfo() { m_deviceOk = false; memset(&m_deviceId, 0, sizeof(m_deviceId)); PWLAN_INTERFACE_INFO_LIST intfList; if (ERROR_SUCCESS == m_wlanapi->WlanEnumInterfaces(m_wlanHandle, NULL, &intfList)) { if (intfList->dwNumberOfItems > 0) { const WLAN_INTERFACE_INFO *intf = intfList->InterfaceInfo + 0; m_deviceOk = true; m_deviceId = intf->InterfaceGuid; m_deviceState = intf->isState; m_deviceDesc = QString::fromWCharArray(intf->strInterfaceDescription); } m_wlanapi->WlanFreeMemory(intfList); } if (m_deviceOk) { cacheRadioState(); cacheConnectionInfo(); } else { setSoftwareEnabled(false); setHardwareEnabled(false); setEnabled(false); setSsid(QString()); setMacAddress(QByteArray()); setSignalQuality(0); setProfileName(QString()); setConnected(false); } }
void WlanCoreImpl::cacheConnectionInfo() { QString profileName; QString ssid; bool connected = false; int signalQuality = 0; QByteArray macAddress; if (m_deviceOk) { PWLAN_CONNECTION_ATTRIBUTES conn; DWORD cb = sizeof(conn); WLAN_OPCODE_VALUE_TYPE vt; if (ERROR_SUCCESS == m_wlanapi->WlanQueryInterface(m_wlanHandle, &m_deviceId, wlan_intf_opcode_current_connection, NULL, &cb, reinterpret_cast<PVOID*>(&conn), &vt)) { profileName = QString::fromWCharArray(conn->strProfileName).trimmed(); connected = (conn->isState == wlan_interface_state_connected); ssid = QString::fromLatin1(reinterpret_cast<char*>(conn->wlanAssociationAttributes.dot11Ssid.ucSSID), conn->wlanAssociationAttributes.dot11Ssid.uSSIDLength); signalQuality = conn->wlanAssociationAttributes.wlanSignalQuality; macAddress = QByteArray(reinterpret_cast<char*>(conn->wlanAssociationAttributes.dot11Bssid), 6); m_wlanapi->WlanFreeMemory(conn); } } setSsid(ssid); setMacAddress(macAddress); setSignalQuality(signalQuality); setProfileName(profileName); setConnected(connected); }
/* * Prepare a connection to a open network (not secure net) with this SSID. * Params: SSID and its length. * Or SSID as null terminated string. */ void MWiFi::ConnSetOpen(char *ssid, uint8_t lssid) { setSsid(ssid,lssid); uint8_t lmess=2; uint8_t mess[lmess]; mess[0]=1; mess[1]=0; sendLongMess(65,mess,lmess); //cmd 65: to set non protected connection receiveMessWait(3000); //ACK }
int GSwifiInterface::connect(Security sec, const char* ssid, const char* phrase, WiFiMode mode) { setSsid(sec, ssid, phrase); switch (mode) { case WM_INFRASTRUCTURE: return join(); case WM_ADHOCK: return adhock(); case WM_LIMITEDAP: return limitedap(); } return -1; }
/* * Prepare a connection to a sicure network (WPA or WPA2). * Params: SSID and its length; password and its length. * Or SSID and password as null terminated strings. */ void MWiFi::ConnSetWPA(char *ssid, uint8_t lssid, char *psw, uint8_t lpsw) { setSsid(ssid,lssid); uint8_t lmess=4+lpsw; uint8_t mess[lmess]; mess[0]=1; mess[1]=8; mess[2]=0; mess[3]=lpsw; memcpy(&mess[4],psw,lpsw); sendLongMess(68,mess,lmess); //cmd 68: setting WPA or WPA2 connection receiveMessWait(3000); //ACK }
uint8_t MWiFi::ConnectWPAwithKeyEE(char *ssid,int EEadd) { uint8_t lssid=strlen(ssid); setSsid(ssid,lssid); uint8_t lmess=4+32; uint8_t mess[lmess]; mess[0]=1; mess[1]=7; //using key instead of password mess[2]=0; mess[3]=32; uint8_t i;for (i=0;i<32;i++)mess[4+i]=EEPROM.read(EEadd+1+i); sendLongMess(68,mess,lmess); //cmd 68: setting WPA or WPA2 connection receiveMessWait(3000); //ACK return Connect(); }
/* * Connects ssid using numeric key (previously calculated on password base) * Much faster than password connection. * Returns 1 if connected or 0 otherwise. */ uint8_t MWiFi::ConnectWPAwithKey(char *ssid,uint8_t key[32]) { uint8_t lssid=strlen(ssid); setSsid(ssid,lssid); uint8_t lmess=4+32; uint8_t mess[lmess]; mess[0]=1; mess[1]=7; //using key instead of password mess[2]=0; mess[3]=32; memcpy(&mess[4],key,32); sendLongMess(68,mess,lmess); //cmd 68: setting WPA or WPA2 connection receiveMessWait(3000); //ACK return Connect(); }
WirelessAccessPoint::WirelessAccessPoint(const QDBusObjectPath &objectPath, QObject *parent) : QObject(parent), m_objectPath(objectPath), m_securityFlags(0) { QDBusInterface accessPointInterface(serviceString, m_objectPath.path(), accessPointInterfaceString, QDBusConnection::systemBus()); if(!accessPointInterface.isValid()) { qCWarning(dcNetworkManager()) << "Invalid access point dbus interface"; return; } // Init properties setSsid(accessPointInterface.property("Ssid").toString()); setMacAddress(accessPointInterface.property("HwAddress").toString()); setFrequency(accessPointInterface.property("Frequency").toDouble() / 1000); setSignalStrength(accessPointInterface.property("Strength").toUInt()); setSecurityFlags(WirelessAccessPoint::ApSecurityModes(accessPointInterface.property("WpaFlags").toUInt())); setIsProtected((bool)accessPointInterface.property("Flags").toUInt()); QDBusConnection::systemBus().connect(serviceString, objectPath.path(), accessPointInterfaceString, "PropertiesChanged", this, SLOT(onPropertiesChanged(QVariantMap))); }