Насколько я понимаю, можно просто связать wpa_ctrl.c с внешней программой, и тогда вы сможете использовать ее функции для контроля и получения информации от wpa_supplicant.
Может ли кто-нибудь представить пример, желательно на C ++, как бы вы:
Я новичок в программировании на встроенной платформе Linux, и нигде нет примеров этого. Спасибо заранее!
Программа wpa_cli
это пример именно того, что вы хотите. wpa_supplicant поддержка проекта V=1
возможность посмотреть, что нужно для создания этого исполняемого файла. Вот результат для моей сборки ARM,
gcc -c -o wpa_cli.o -MMD -O2 -Wall -g -I src -I src/utils \
-Iusr_ARM/include/libnl3 \
-DCONFIG_BACKEND_FILE -DCONFIG_IEEE80211W -DCONFIG_DRIVER_WEXT \
-DCONFIG_WIRELESS_EXTENSION -DCONFIG_DRIVER_NL80211 -DCONFIG_LIBNL20 \
-DEAP_PSK -DIEEE8021X_EAPOL -DCONFIG_SHA256 -DCONFIG_CTRL_IFACE \
-DCONFIG_CTRL_IFACE_UNIX -DCONFIG_SME \
wpa_cli.c
gcc -o wpa_cli wpa_cli.o ../src/common/wpa_ctrl.o ../src/utils/wpa_debug.o \
../src/utils/common.o ../src/utils/os_unix.o ../src/utils/eloop.o \
../src/utils/edit_simple.o -lrt
Подставьте свои пути, чтобы получить заголовки для версии wpa_supplicant используется на целевом устройстве ARM (в первой команде). Связь со всеми объект файлы, перечисленные во второй команде и связать с реальное время библиотека (с -lrt
). Вы также можете посмотреть на wpa_cli.c для вашей версии wpa_supplicant чтобы получить примеры того, как отправить команды процессу соискателя.
Список объектов включает в себя wpa_ctrl.o (как вы уже догадались) и многие другие. Некоторые из них могут не понадобиться, в зависимости от используемых вами функций, но я бы начал с полного списка, а затем обрезал их после того, как у вас есть пример работы.
Лицензия является щедрым BSD на этом источнике.
Вот wpa_cli_cmd_scan () который отправляет сканирование запрос,
static int wpa_cli_cmd_scan(struct wpa_ctrl *ctrl, int argc, char *argv[])
{
return wpa_cli_cmd(ctrl, "SCAN", 0, argc, argv);
}
Вы, вероятно, также хотите scan_results
; он находится в том же файле, что и wpa_cli_cmd_scan_results()
,
API также хорошо документировано под интерфейс управления wpa_supplicant, где вы можете расширить свой рабочий пример. Убедитесь, что вы получаете источник, который соответствует версии wpa_supplicant используется в вашей системе. Команды выше предназначены для eglibc Система Linux; Похоже, Bionic (библиотека Android) обеспечивает -lrt
по умолчанию. Если вы можете запустить команды, rm wpa_cli.o; rm wpa_cli; make V=1
в wpa_supplicant В директории сборки для вашего устройства вы увидите точные необходимые команды.
Вам, вероятно, не нужно edit_simple.o файл. Тем не менее ELOOP вероятно, необходимо получить нежелательные события от драйверов, когда запрос на сканирование завершен; по крайней мере, если вы хотите работать со многими различными чипами Wi-Fi. Шаги,
SCAN
,SCAN_RESULTS
,