Index: sources/wifi/WifiInterface.h =================================================================== diff -u -r60db0ce19666f04ea58992a7670497d83f9bf7c4 -r13ac42cf8bdc5038dedd3302ba79dc387e5704b4 --- sources/wifi/WifiInterface.h (.../WifiInterface.h) (revision 60db0ce19666f04ea58992a7670497d83f9bf7c4) +++ sources/wifi/WifiInterface.h (.../WifiInterface.h) (revision 13ac42cf8bdc5038dedd3302ba79dc387e5704b4) @@ -12,6 +12,8 @@ // define #define _WifiInterface WifiInterface::I() +class tst_utilities; + /*! * \brief The WifiInterface class * Communicates with Access Points @@ -24,20 +26,28 @@ { Q_OBJECT + friend class ::tst_utilities; + QThread *_thread = nullptr; bool _init = false; bool _scanRunning = false; int _defaultTimeout = 5000; int _dhcpTimeout = 10000; int _scanTimeout = 30000; int _processCounter = 0; + int _dhcpAttemptsLeft = 5; QProcess _processScan; + QProcess _processDisconnectNetwork; QProcess _processReadIPSettings; QProcess _processReadGateway; QProcess _processReadDNS; QProcess _processGenerateWPASupplicant; QProcess _processStartWPASupplicant; QProcess _processRequestAutoAssignedIP; + QProcess _processSetStaticIPAddress; + QProcess _processSetStaticGateway; + QProcess _processSetStaticSubnetMask; + QProcess _processSetStaticDNS; Network _network; const QString _iface = "wlan0"; @@ -48,10 +58,8 @@ SINGLETON(WifiInterface) private: - bool generateWPASupplicant(const Network &vNetwork, const QString &vPassword); - bool startWPASupplicant(); - bool requestAutoAssignedIP(int vTries = 4); - void parseWifiScan(const QString &vOutput); + QString getTextBetweenDelimiters(const QString &vText, const QString &vLeftDelim, const QString &vRightDelim); + QList parseWifiScan(const QString &vOutput); QString parseIP(const QString &vOutput); QString parseBroadcast(const QString &vOutput); QString parseSubnetMask(const QString &vOutput); @@ -70,11 +78,19 @@ void doDisconnectNetwork(const Network &vNetwork); void doRequestIPSettings(); + // static IP address assignment + void doRequestSetIPAddress(const QString &vIPAddress); + void doRequestSetGateway(const QString &vGateway); + void doRequestSetSubnetMask(const QString &vSubnetMask); + void doRequestSetDNS(const QString &vDNS); + signals: void didAddNetwork(const Network); void didDisconnectNetwork(const Network); void didRejectRequest(const QString &vFunction, const QString &vReason); void didBusyChanged(const bool &vBusy); + void didStatusChanged(const QString &vNewStatus); + void didRequestAutoAssignedIP(); // emitted from separate threads void didScanStatusChanged(const bool); @@ -84,7 +100,8 @@ private slots: void quit(); void onQuit(); - void onError(const QString &vMessage); + void onStatusChanged(const QString &vMessage); + void onRequestAutoAssignedIP(); void onProcessFinishedScan(int vExitCode, QProcess::ExitStatus vExitStatus); void onProcessFinishedReadIP(int vExitCode, QProcess::ExitStatus vExitStatus); void onProcessFinishedReadGateway(int vExitCode, QProcess::ExitStatus vExitStatus); @@ -93,4 +110,8 @@ void onProcessFinishedStartWPASupplicant(int vExitCode, QProcess::ExitStatus vExitStatus); void onProcessFinishedRequestAutoAssignedIP(int vExitCode, QProcess::ExitStatus vExitStatus); void onProcessFinishedDisconnectNetwork(int vExitCode, QProcess::ExitStatus vExitStatus); + void onProcessFinishedSetIPAddress(int vExitCode, QProcess::ExitStatus vExitStatus); + void onProcessFinishedSetGateway(int vExitCode, QProcess::ExitStatus vExitStatus); + void onProcessFinishedSetSubnetMask(int vExitCode, QProcess::ExitStatus vExitStatus); + void onProcessFinishedSetDNS(int vExitCode, QProcess::ExitStatus vExitStatus); };