measurement: generalize measurement handling
authorDavid Bauer <mail@david-bauer.net>
Thu, 31 Mar 2022 22:19:59 +0000 (00:19 +0200)
committerDavid Bauer <mail@david-bauer.net>
Mon, 4 Apr 2022 12:50:34 +0000 (14:50 +0200)
Generalize measurement handling in a way that RCPi and RSNI are stored
regardless of the specific measurement type. This allows us to handle
link-measurement reports the same way as we already handle
beacon-reports.

Signed-off-by: David Bauer <mail@david-bauer.net>
local_node.c
measurement.c
ubus.c
usteer.h

index e5620e59113b8e45298334514d5cbf7ce786e550..baaa60830725f60225ca0198e88a10ae67671255 100644 (file)
@@ -205,8 +205,6 @@ usteer_local_node_handle_beacon_report(struct usteer_local_node *ln, struct blob
                [BR_RSNI] = { .name = "rsni", .type = BLOBMSG_TYPE_INT16 },
        };
        struct blob_attr *tb[__BR_MAX];
-
-       struct usteer_beacon_report br;
        struct usteer_node *node;
        uint8_t *addr;
        struct sta *sta;
@@ -231,10 +229,10 @@ usteer_local_node_handle_beacon_report(struct usteer_local_node *ln, struct blob
        if (!node)
                return 0;
 
-       br.rcpi = (uint8_t)blobmsg_get_u16(tb[BR_RCPI]);
-       br.rsni = (uint8_t)blobmsg_get_u16(tb[BR_RSNI]);
-
-       usteer_measurement_report_add_beacon_report(sta, node, &br, current_time);
+       usteer_measurement_report_add(sta, node,
+                                     (uint8_t)blobmsg_get_u16(tb[BR_RCPI]),
+                                     (uint8_t)blobmsg_get_u16(tb[BR_RSNI]),
+                                     current_time);
        return 0;
 }
 
index c1b5ab4e6a6fa948dd256b132a41840569078952..c78aae858784b0357d53e7abdb183d241f73b4cd 100644 (file)
@@ -73,8 +73,8 @@ usteer_measurement_report_get(struct sta *sta, struct usteer_node *node, bool cr
 }
 
 struct usteer_measurement_report *
-usteer_measurement_report_add_beacon_report(struct sta *sta, struct usteer_node *node,
-                                           struct usteer_beacon_report *br, uint64_t timestamp)
+usteer_measurement_report_add(struct sta *sta, struct usteer_node *node,
+                             uint8_t rcpi, uint8_t rsni, uint64_t timestamp)
 {
        struct usteer_measurement_report *mr = usteer_measurement_report_get(sta, node, true);
 
@@ -82,7 +82,8 @@ usteer_measurement_report_add_beacon_report(struct sta *sta, struct usteer_node
                return NULL;
 
        mr->timestamp = timestamp;
-       memcpy(&mr->beacon_report, br, sizeof(*br));
+       mr->rsni = rsni;
+       mr->rcpi = rcpi;
 
        return mr;
 }
diff --git a/ubus.c b/ubus.c
index 95614b94ef1f24003b0bcf39b0afa7f268834784..0fa7e36455ca6a92f9dc4b80e773765b4ef898fa 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -446,8 +446,8 @@ usteer_ubus_get_connected_clients(struct ubus_context *ctx, struct ubus_object *
                        list_for_each_entry(mr, &si->sta->measurements, sta_list) {
                                t = blobmsg_open_table(&b, "");
                                blobmsg_add_string(&b, "node", usteer_node_name(mr->node));
-                               blobmsg_add_u32(&b, "rcpi", mr->beacon_report.rcpi);
-                               blobmsg_add_u32(&b, "rsni", mr->beacon_report.rsni);
+                               blobmsg_add_u32(&b, "rcpi", mr->rcpi);
+                               blobmsg_add_u32(&b, "rsni", mr->rsni);
                                blobmsg_add_u64(&b, "timestamp", mr->timestamp);
                                blobmsg_close_table(&b, t);
                        }
index 70663552888699a7eecba566847857234e62d86e..34c958bd28869ccdcbbaf1882eb0c3895b8bdaaa 100644 (file)
--- a/usteer.h
+++ b/usteer.h
@@ -281,11 +281,6 @@ struct sta {
        uint8_t addr[6];
 };
 
-struct usteer_beacon_report {
-       uint8_t rcpi;
-       uint8_t rsni;
-};
-
 struct usteer_measurement_report {
        struct usteer_timeout timeout;
 
@@ -299,7 +294,8 @@ struct usteer_measurement_report {
 
        uint64_t timestamp;
 
-       struct usteer_beacon_report beacon_report;
+       uint8_t rcpi;
+       uint8_t rsni;
 };
 
 extern struct ubus_context *ubus_ctx;
@@ -390,6 +386,6 @@ void usteer_measurement_report_sta_cleanup(struct sta *sta);
 void usteer_measurement_report_del(struct usteer_measurement_report *mr);
 
 struct usteer_measurement_report *
-usteer_measurement_report_add_beacon_report(struct sta *sta, struct usteer_node *node, struct usteer_beacon_report *br, uint64_t timestamp);
+usteer_measurement_report_add(struct sta *sta, struct usteer_node *node, uint8_t rcpi, uint8_t rsni, uint64_t timestamp);
 
 #endif