From 5445a1d653cddb7b9321c87aec6b025c7627fe1d Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 10 Aug 2017 20:51:40 +0000 Subject: Complete first draft of libwpactrl, with documentation --- src/libwpactrl/wpactrl_startscan.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/libwpactrl/wpactrl_startscan.c (limited to 'src/libwpactrl/wpactrl_startscan.c') diff --git a/src/libwpactrl/wpactrl_startscan.c b/src/libwpactrl/wpactrl_startscan.c new file mode 100644 index 0000000..7ce5f52 --- /dev/null +++ b/src/libwpactrl/wpactrl_startscan.c @@ -0,0 +1,30 @@ +/* ISC license. */ + +#include +#include +#include "wpactrl-internal.h" + +static int wpactrl_scan_cb (wpactrl_t *a, char const *s, size_t len, void *aux, tain_t *stamp) +{ + wpactrl_xchg_cbres_t *res = aux ; + char buf[WPACTRL_PACKET_MAX] ; + ssize_t r = wpactrl_query(a, "SCAN_RESULTS", buf, WPACTRL_PACKET_MAX, stamp) ; + if (r <= 0) return 0 ; + (void)s ; + (void)len ; + return wpactrl_scan_parse(buf, r, &res->parsed, &res->storage) ; +} + +static wpactrl_xchgitem_t wpactrl_xchgitem_scan = +{ + .filter = "CTRL-EVENT-SCAN-RESULTS", + .cb = &wpactrl_scan_cb +} ; + +int wpactrl_startscan (wpactrl_t *a, wpactrl_xchg_t *xchg, wpactrl_xchg_cbres_t *res, tain_t const *deadline, tain_t *stamp) +{ + wparesponse_t r = wpactrl_command(a, "SCAN", stamp) ; + if (r != WPA_OK && r != WPA_FAILBUSY) return (errno = EIO, 0) ; + wpactrl_xchg_init(xchg, &wpactrl_xchgitem_scan, 1, deadline, res) ; + return wpactrl_xchg_start(a, xchg) ; +} -- cgit v1.3.1