libs/iwinfo: add signal and quality values to scan results
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 24 Aug 2009 14:23:49 +0000 (14:23 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 24 Aug 2009 14:23:49 +0000 (14:23 +0000)
libs/iwinfo/src/iwinfo.h
libs/iwinfo/src/iwinfo_lualib.c
libs/iwinfo/src/iwinfo_wext_scan.c

index c1b5b7a..b19795c 100644 (file)
@@ -47,6 +47,9 @@ struct iwinfo_scanlist_entry {
        uint8_t ssid[IW_ESSID_MAX_SIZE+1];
        uint8_t mode[8];
        uint8_t channel;
+       uint8_t signal;
+       uint8_t quality;
+       uint8_t quality_max;
        struct iwinfo_crypto_entry crypto;
 };
 
index 0bd2fa5..a798d77 100644 (file)
@@ -150,6 +150,16 @@ static int iwinfo_L_scanlist(lua_State *L, int (*func)(const char *, char *, int
                        lua_pushstring(L, (char *) e->mode);
                        lua_setfield(L, -2, "mode");
 
+                       /* Quality, Signal */
+                       lua_pushinteger(L, e->quality);
+                       lua_setfield(L, -2, "quality");
+
+                       lua_pushinteger(L, e->quality_max);
+                       lua_setfield(L, -2, "quality_max");
+
+                       lua_pushnumber(L, (e->signal - 0x100));
+                       lua_setfield(L, -2, "signal");
+
                        /* Crypto */
                        lua_pushinteger(L, e->crypto.wpa_version);
                        lua_setfield(L, -2, "wpa");
index 1c15a1d..fcfecbb 100644 (file)
@@ -411,6 +411,11 @@ static inline int wext_fill_entry(struct stream_descr *stream, struct iw_event *
                        e->crypto.enabled = !(event->u.data.flags & IW_ENCODE_DISABLED);
                        break;
 
+               case IWEVQUAL:
+                       e->signal = event->u.qual.level;
+                       e->quality = event->u.qual.qual;
+                       e->quality_max = iw_range->max_qual.qual;
+                       break;
 #if 0
                case SIOCGIWRATE:
                        if(state->val_index == 0)