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; +} +