1 #ifndef WPACLICMD_H 2 #define WPACLICMD_H 3 4 #include <QObject> 5 #include <QThread> 6 #include "processhandler.h" 7 class ScanInfo{ 8 public: 9 QString bssid; 10 int frequency ; 11 int signalLevel; 12 QString flags; 13 QString ssid; 14 int state=0; 15 bool operator ==(const ScanInfo &info) 16 { 17 return info.ssid == ssid && state == info.state; 18 } clear()19 void clear(){ 20 ssid.clear(); 21 } isEmpty()22 bool isEmpty(){return ssid.isEmpty();} 23 } ; 24 25 26 class WpaclicmdPrivate; 27 class Wpaclicmd : public QThread 28 { 29 Q_OBJECT 30 public: 31 explicit Wpaclicmd(QObject *parent = nullptr); 32 ~ Wpaclicmd(); 33 34 // m_wpaCli->startWpa_supplicant("/lib/modules/4.9.170/8821cs.ko", 35 // "8821cs", 36 // "nl80211", 37 // "wlan0"); 38 //启动Wpa_supplicant服务. 39 void startWpa_supplicant(const QString & ko, 40 const QString &ModuleName, 41 const QString &driverName, const QString &cardName); 42 43 //启动 wap_cli 客户. 44 void setStart(bool bStart); 45 void connectWifi(const QString &ssid, const QString &psk); 46 QString disconnectWifi(); 47 48 protected: 49 void run(); 50 51 Q_SIGNALS: 52 void wpa_supplicantStartFinish(); 53 void wifiScanResult(const QList<ScanInfo> & info); 54 void wifiStatus(const QMap<QString, QString > &info); 55 56 57 private: 58 QString scan(); 59 QString scanResults(); 60 QString status(); 61 QString addNetwork(); 62 QString removeNetWork(); 63 QString setSSID(const QString &ssid); 64 QString setPSK(const QString &psk); 65 QString selectNetwork(const QString &network); 66 void udhcpc(const QString & cardName); 67 QString saveConfig(); 68 QString execCmd(const QString &cmd); 69 70 private: 71 WpaclicmdPrivate *m_d; 72 }; 73 74 #endif // WPACLICMD_H 75