iwinfo: add 802.11ac hw mode
[project/rpcd.git] / iwinfo.c
index 42560b6..6a12d71 100644 (file)
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -1,7 +1,7 @@
 /*
- * luci-rpcd - LuCI UBUS RPC server
+ * rpcd - UBUS RPC server
  *
- *   Copyright (C) 2013 Jo-Philipp Wich <jow@openwrt.org>
+ *   Copyright (C) 2013-2014 Jo-Philipp Wich <jow@openwrt.org>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
 
 #include <sys/types.h>
 #include <dirent.h>
+#include <libubus.h>
+#include <iwinfo.h>
+#include <iwinfo/utils.h>
+
+#include <rpcd/plugin.h>
 
-#include "iwinfo.h"
 
 static struct blob_buf buf;
 static const struct iwinfo_ops *iw;
@@ -202,6 +206,9 @@ rpc_iwinfo_call_hwmodes(const char *name)
        {
                c = blobmsg_open_array(&buf, name);
 
+               if (modes & IWINFO_80211_AC)
+                       blobmsg_add_string(&buf, NULL, "ac");
+
                if (modes & IWINFO_80211_A)
                        blobmsg_add_string(&buf, NULL, "a");
 
@@ -242,6 +249,8 @@ rpc_iwinfo_info(struct ubus_context *ctx, struct ubus_object *obj,
 
        blob_buf_init(&buf, 0);
 
+       rpc_iwinfo_call_str("phy", iw->phyname);
+
        rpc_iwinfo_call_str("ssid", iw->ssid);
        rpc_iwinfo_call_str("bssid", iw->bssid);
        rpc_iwinfo_call_str("country", iw->country);
@@ -375,14 +384,14 @@ rpc_iwinfo_assoclist(struct ubus_context *ctx, struct ubus_object *obj,
 
                        e = blobmsg_open_table(&buf, "rx");
                        blobmsg_add_u32(&buf, "rate", a->rx_rate.rate);
-                       blobmsg_add_u32(&buf, "mcs",  a->rx_rate.mcs);
+                       blobmsg_add_u32(&buf, "mcs", a->rx_rate.mcs);
                        blobmsg_add_u8(&buf, "40mhz", a->rx_rate.is_40mhz);
                        blobmsg_add_u8(&buf, "short_gi", a->rx_rate.is_short_gi);
                        blobmsg_close_table(&buf, e);
 
                        e = blobmsg_open_table(&buf, "tx");
                        blobmsg_add_u32(&buf, "rate", a->tx_rate.rate);
-                       blobmsg_add_u32(&buf, "mcs",  a->tx_rate.mcs);
+                       blobmsg_add_u32(&buf, "mcs", a->tx_rate.mcs);
                        blobmsg_add_u8(&buf, "40mhz", a->tx_rate.is_40mhz);
                        blobmsg_add_u8(&buf, "short_gi", a->tx_rate.is_short_gi);
                        blobmsg_close_table(&buf, e);
@@ -620,10 +629,11 @@ rpc_iwinfo_devices(struct ubus_context *ctx, struct ubus_object *obj,
 }
 
 
-int rpc_iwinfo_api_init(struct ubus_context *ctx)
+static int
+rpc_iwinfo_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
 {
        static const struct ubus_method iwinfo_methods[] = {
-               { .name = "devices", .handler = rpc_iwinfo_devices },
+               UBUS_METHOD_NOARG("devices", rpc_iwinfo_devices),
                UBUS_METHOD("info",        rpc_iwinfo_info,        rpc_device_policy),
                UBUS_METHOD("scan",        rpc_iwinfo_scan,        rpc_device_policy),
                UBUS_METHOD("assoclist",   rpc_iwinfo_assoclist,   rpc_device_policy),
@@ -644,3 +654,7 @@ int rpc_iwinfo_api_init(struct ubus_context *ctx)
 
        return ubus_add_object(ctx, &obj);
 }
+
+struct rpc_plugin rpc_plugin = {
+       .init = rpc_iwinfo_api_init
+};