Iwinfo exports ht and vht operation info useful to get channel info of nearby stations. Add these new info to ubus output.
Signed-off-by: Ansuel Smith <[email protected]> --- iwinfo.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/iwinfo.c b/iwinfo.c index 7780e69..182db2d 100644 --- a/iwinfo.c +++ b/iwinfo.c @@ -403,11 +403,30 @@ rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj, struct blob_attr *msg) { int i, rv, len; - void *c, *d; + void *c, *d, *t; char mac[18]; char res[IWINFO_BUFSIZE]; struct iwinfo_scanlist_entry *e; + const char *ht_secondary_offset[4] = { + "no secondary", + "above", + "[reserved!]", + "below", + }; + + const char *ht_chan_width[2] = { + "20 MHz", + "any", + }; + + const char *vht_chan_width[] = { + [0] = "20 or 40 MHz", + [1] = "80 MHz", + [3] = "80+80 MHz", + [2] = "160 MHz", + }; + rv = rpc_iwinfo_open(msg); if (rv) @@ -441,6 +460,20 @@ rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj, blobmsg_add_u32(&buf, "quality", e->quality); blobmsg_add_u32(&buf, "quality_max", e->quality_max); + t = blobmsg_open_table(&buf, "ht_operation"); + blobmsg_add_u32(&buf, "primary_channel", e->ht_chan_info.primary_chan); + blobmsg_add_string(&buf, "secondary_channel_offset", ht_secondary_offset[e->ht_chan_info.secondary_chan_off]); + blobmsg_add_string(&buf, "channel_width", ht_chan_width[e->ht_chan_info.chan_width]); + blobmsg_close_table(&buf, t); + + if (e->vht_chan_info.center_chan_1) { + t = blobmsg_open_table(&buf, "vht_operation"); + blobmsg_add_string(&buf, "channel_width", vht_chan_width[e->vht_chan_info.chan_width]); + blobmsg_add_u32(&buf, "center_freq_1", e->vht_chan_info.center_chan_1); + blobmsg_add_u32(&buf, "center_freq_2", e->vht_chan_info.center_chan_2); + blobmsg_close_table(&buf, t); + } + rpc_iwinfo_add_encryption("encryption", &e->crypto); blobmsg_close_table(&buf, d); -- 2.28.0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
