iwinfo: add "band" and "mhz" to the scan output
[project/rpcd.git] / iwinfo.c
index c93982f273e51f3220b389dfb922145a1c7eca16..ad2ba0d9ca3a6661d0d7a267904875926361c995 100644 (file)
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -366,7 +366,7 @@ rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj,
                 struct ubus_request_data *req, const char *method,
                 struct blob_attr *msg)
 {
-       int i, rv, len;
+       int i, rv, len, band;
        void *c, *d, *t;
        char mac[18];
        char res[IWINFO_BUFSIZE];
@@ -399,7 +399,11 @@ rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj,
 
                        blobmsg_add_string(&buf, "mode", IWINFO_OPMODE_NAMES[e->mode]);
 
+                       band = iwinfo_band2ghz(e->band);
+                       if (band > 0)
+                               blobmsg_add_u32(&buf, "band", band);
                        blobmsg_add_u32(&buf, "channel", e->channel);
+                       blobmsg_add_u32(&buf, "mhz", e->mhz);
                        blobmsg_add_u32(&buf, "signal", (uint32_t)(e->signal - 0x100));
 
                        blobmsg_add_u32(&buf, "quality", e->quality);
@@ -607,7 +611,7 @@ rpc_iwinfo_freqlist(struct ubus_context *ctx, struct ubus_object *obj,
                     struct ubus_request_data *req, const char *method,
                     struct blob_attr *msg)
 {
-       int i, rv, len, ch;
+       int i, rv, len, ch, band;
        char res[IWINFO_BUFSIZE];
        struct iwinfo_freqlist_entry *f;
        void *c, *d;
@@ -631,10 +635,18 @@ rpc_iwinfo_freqlist(struct ubus_context *ctx, struct ubus_object *obj,
                        f = (struct iwinfo_freqlist_entry *)&res[i];
                        d = blobmsg_open_table(&buf, NULL);
 
+                       band = iwinfo_band2ghz(f->band);
+                       if (band > 0)
+                               blobmsg_add_u32(&buf, "band", band);
                        blobmsg_add_u32(&buf, "channel", f->channel);
                        blobmsg_add_u32(&buf, "mhz", f->mhz);
                        blobmsg_add_u8(&buf, "restricted", f->restricted);
 
+                       rpc_iwinfo_add_bit_array("flags", f->flags,
+                                               IWINFO_FREQ_FLAG_NAMES,
+                                               IWINFO_FREQ_FLAG_COUNT,
+                                               true, 0);
+
                        if (ch > -1)
                                blobmsg_add_u8(&buf, "active", f->channel == ch);