lua: support reporting VHT rates
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
78f0fafa59
commit
e4aca3910d
1 changed files with 40 additions and 29 deletions
69
iwinfo_lua.c
69
iwinfo_lua.c
|
@ -248,6 +248,44 @@ static int iwinfo_L_mode(lua_State *L, int (*func)(const char *, int *))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_rateinfo(lua_State *L, struct iwinfo_rate_entry *r, bool rx)
|
||||||
|
{
|
||||||
|
lua_pushnumber(L, r->rate);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_rate" : "tx_rate");
|
||||||
|
|
||||||
|
lua_pushboolean(L, r->is_ht);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_ht" : "tx_ht");
|
||||||
|
|
||||||
|
lua_pushboolean(L, r->is_vht);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_vht" : "tx_vht");
|
||||||
|
|
||||||
|
lua_pushnumber(L, r->mhz);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_mhz" : "tx_mhz");
|
||||||
|
|
||||||
|
if (r->is_ht)
|
||||||
|
{
|
||||||
|
lua_pushboolean(L, r->is_40mhz);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_40mhz" : "tx_40mhz");
|
||||||
|
|
||||||
|
lua_pushnumber(L, r->mcs);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_mcs" : "tx_mcs");
|
||||||
|
|
||||||
|
lua_pushboolean(L, r->is_short_gi);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_short_gi" : "tx_short_gi");
|
||||||
|
}
|
||||||
|
else if (r->is_vht)
|
||||||
|
{
|
||||||
|
lua_pushnumber(L, r->mcs);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_mcs" : "tx_mcs");
|
||||||
|
|
||||||
|
lua_pushnumber(L, r->nss);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_nss" : "tx_nss");
|
||||||
|
|
||||||
|
lua_pushboolean(L, r->is_short_gi);
|
||||||
|
lua_setfield(L, -2, rx ? "rx_short_gi" : "tx_short_gi");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Wrapper for assoclist */
|
/* Wrapper for assoclist */
|
||||||
static int iwinfo_L_assoclist(lua_State *L, int (*func)(const char *, char *, int *))
|
static int iwinfo_L_assoclist(lua_State *L, int (*func)(const char *, char *, int *))
|
||||||
{
|
{
|
||||||
|
@ -287,35 +325,8 @@ static int iwinfo_L_assoclist(lua_State *L, int (*func)(const char *, char *, in
|
||||||
lua_pushnumber(L, e->tx_packets);
|
lua_pushnumber(L, e->tx_packets);
|
||||||
lua_setfield(L, -2, "tx_packets");
|
lua_setfield(L, -2, "tx_packets");
|
||||||
|
|
||||||
lua_pushnumber(L, e->rx_rate.rate);
|
set_rateinfo(L, &e->rx_rate, true);
|
||||||
lua_setfield(L, -2, "rx_rate");
|
set_rateinfo(L, &e->tx_rate, false);
|
||||||
|
|
||||||
lua_pushnumber(L, e->tx_rate.rate);
|
|
||||||
lua_setfield(L, -2, "tx_rate");
|
|
||||||
|
|
||||||
if (e->rx_rate.mcs >= 0)
|
|
||||||
{
|
|
||||||
lua_pushnumber(L, e->rx_rate.mcs);
|
|
||||||
lua_setfield(L, -2, "rx_mcs");
|
|
||||||
|
|
||||||
lua_pushboolean(L, e->rx_rate.is_40mhz);
|
|
||||||
lua_setfield(L, -2, "rx_40mhz");
|
|
||||||
|
|
||||||
lua_pushboolean(L, e->rx_rate.is_short_gi);
|
|
||||||
lua_setfield(L, -2, "rx_short_gi");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e->tx_rate.mcs >= 0)
|
|
||||||
{
|
|
||||||
lua_pushnumber(L, e->tx_rate.mcs);
|
|
||||||
lua_setfield(L, -2, "tx_mcs");
|
|
||||||
|
|
||||||
lua_pushboolean(L, e->tx_rate.is_40mhz);
|
|
||||||
lua_setfield(L, -2, "tx_40mhz");
|
|
||||||
|
|
||||||
lua_pushboolean(L, e->tx_rate.is_short_gi);
|
|
||||||
lua_setfield(L, -2, "tx_short_gi");
|
|
||||||
}
|
|
||||||
|
|
||||||
lua_setfield(L, -2, macstr);
|
lua_setfield(L, -2, macstr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue