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