From 937b67bfa0da5100a537b21f57425ee5b2ac9f31 Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Mon, 9 Nov 2020 17:00:12 +0800 Subject: [PATCH] wapi/wireless: add get sensitivity support Change-Id: I9906810466edaad59edf3d63b534959541609aab Signed-off-by: chao.an --- include/wireless/wapi.h | 11 +++++++++++ wireless/wapi/src/wapi.c | 9 +++++++++ wireless/wapi/src/wireless.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/include/wireless/wapi.h b/include/wireless/wapi.h index 4a851fa2d..8c3df1ae8 100644 --- a/include/wireless/wapi.h +++ b/include/wireless/wapi.h @@ -699,6 +699,17 @@ int wapi_scan_coll(int sock, FAR const char *ifname, void wapi_scan_coll_free(FAR struct wapi_list_s *aps); +/**************************************************************************** + * Name: wapi_get_sensitivity + * + * Description: + * Get the wlan Sensitivity + * + ****************************************************************************/ + +int wapi_get_sensitivity(int sock, FAR const char *ifname, + FAR int *sense); + #ifdef CONFIG_WIRELESS_WAPI_INITCONF /**************************************************************************** * Name: wapi_load_config diff --git a/wireless/wapi/src/wapi.c b/wireless/wapi/src/wapi.c index 5417a80ee..840a6f74c 100644 --- a/wireless/wapi/src/wapi.c +++ b/wireless/wapi/src/wapi.c @@ -253,6 +253,7 @@ static int wapi_show_cmd(int sock, int argc, FAR char **argv) int bitrate; int txpower; double freq; + int sense; int chan; int ret; @@ -385,6 +386,14 @@ static int wapi_show_cmd(int sock, int argc, FAR char **argv) printf(" Flag: %s\n", g_wapi_txpower_flags[txpower_flag]); } + /* Get sensitivity */ + + ret = wapi_get_sensitivity(sock, ifname, &sense); + if (ret == 0) + { + printf(" Sense: %d\n", sense); + } + return 0; } diff --git a/wireless/wapi/src/wireless.c b/wireless/wapi/src/wireless.c index b2f00b249..9ddec6dea 100644 --- a/wireless/wapi/src/wireless.c +++ b/wireless/wapi/src/wireless.c @@ -1392,3 +1392,36 @@ void wapi_scan_coll_free(FAR struct wapi_list_s *list) info = temp; } } + +/**************************************************************************** + * Name: wapi_get_sensitivity + * + * Description: + * Get the wlan Sensitivity + * + ****************************************************************************/ + +int wapi_get_sensitivity(int sock, FAR const char *ifname, FAR int *sense) +{ + struct iwreq wrq = + { + }; + + int ret; + + strncpy(wrq.ifr_name, ifname, IFNAMSIZ); + ret = ioctl(sock, SIOCGIWSENS, (unsigned long)((uintptr_t)&wrq)); + if (ret < 0) + { + int errcode = errno; + WAPI_IOCTL_STRERROR(SIOCGIWSENS, errcode); + ret = -errcode; + } + else + { + *sense = -wrq.u.sens.value; + } + + return ret; +} +