まず第一に、私のターゲットシステムはアンドロイドです。wpa_ctrl.c ファイル (ヘッダー ファイルwpa_ctrl.h
をインクルードし、ライブラリ libwpa_client.so にリンク) として提供されるコントロール インターフェイスを介して wpa_supplicant と通信するための C++ アプリケーションを作成しました
。
すべてが正常に機能していましたが、突然、送信したすべてのコマンドがUNKNOWN COMMANDによって応答されました。正常に機能するコマンド(ping、list_networks、status、およびterminate)には共通点があると思います(おそらくwpa_supplicantを開く必要はありません.conf は他のコマンドで問題を引き起こします)
接続を開く方法は次のとおりです。
this->ctrl = wpa_ctrl_open(this->socket.c_str());
コマンドを送信する方法は次のとおりです。
s = wpa_ctrl_request(this->ctrl, cmd.c_str(), cmd.length(), this->_reply, &reply_len, msg_cb);
上記のメソッド シグネチャ:
struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path);
int wpa_ctrl_request(struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len,
char *reply, size_t *reply_len,
void (*msg_cb)(char *msg, size_t len));
出力例:
PING
PONG
UNKNOWN COMMAND: MIB
UNKNOWN COMMAND: STATUS-VERBOSE
UNKNOWN COMMAND: PMKSA
UNKNOWN COMMAND: LOGON
UNKNOWN COMMAND: LOGOFF
UNKNOWN COMMAND: REASSOCIATE
UNKNOWN COMMAND: RECONNECT
UNKNOWN COMMAND: RECONFIGURE
LIST_NETWORKS
network id / ssid / bssid / flags
UNKNOWN COMMAND: DISCONNECT
UNKNOWN COMMAND: SCAN
UNKNOWN COMMAND: SCAN_RESULTS
UNKNOWN COMMAND: BSS
UNKNOWN COMMAND: ADD_NETWORK
STATUS
p2p_device_address=12:d3:8a:c8:34:ef
p2p_state=IDLE
wifi_display=1
ifname=p2p0
address=12:d3:8a:c8:34:ef
ifname=wlan0
address=10:d3:8a:c8:34:ef
UNKNOWN COMMAND: ADD_NETWORK
closed connection with wpa_supplicant.
Can not create Network
これは、ほとんど問題なく動作している古いバージョンのプログラムのスクリーンショットです。
どんな助けでも大歓迎です。
編集:他のデバイスでプログラムをテストしたところ、うまく機能しました。しかし、私のメインデバイスはまだ壊れています。おそらく工場出荷時設定にリセットすると解決します。しかし、私はまだ問題の原因を知りたいです。