From 9667ad3aba3f1e9dad597d3644c9701f9e8d834a Mon Sep 17 00:00:00 2001 From: Anjan Chanda <anjan.chanda@iopsys.eu> Date: Mon, 29 Apr 2019 12:08:34 +0200 Subject: [PATCH] fix stamon rssi as it is char type --- wifimngr.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/wifimngr.c b/wifimngr.c index df84cb9..c30091f 100644 --- a/wifimngr.c +++ b/wifimngr.c @@ -80,16 +80,21 @@ static char * etostr2(uint32_t e, char *out, int elen, const char **arr, char *s static int uci_get_wifi_devices(char iflist[][16]) { - static struct uci_context *ctx; - static struct uci_package *pkg; + struct uci_context *ctx; + struct uci_package *pkg; struct uci_element *e; const char *device; int ret = 0; int n = 0; ctx = uci_alloc_context(); - if (uci_load(ctx, "wireless", &pkg)) + if (!ctx) + return -1; + + if (uci_load(ctx, "wireless", &pkg)) { + uci_free_context(ctx); return -1; + } uci_foreach_element(&pkg->sections, e) { struct uci_section *s = uci_to_section(e); @@ -1081,6 +1086,8 @@ static int sta_monitor(struct ubus_context *ctx, struct ubus_object *obj, return UBUS_STATUS_UNKNOWN_ERROR; if (stamon) { + int i, tmp = 0; + memset(&bb, 0, sizeof(bb)); blob_buf_init(&bb, 0); sprintf(sta_str, "%02x:%02x:%02x:%02x:%02x:%02x", @@ -1090,10 +1097,11 @@ static int sta_monitor(struct ubus_context *ctx, struct ubus_object *obj, t = blobmsg_open_table(&bb, sta_str); blobmsg_add_u32(&bb, "seen", stamon->last_seen); a = blobmsg_open_array(&bb, "rssi"); - blobmsg_add_u32(&bb, "", stamon->rssi[0]); - blobmsg_add_u32(&bb, "", stamon->rssi[1]); - blobmsg_add_u32(&bb, "", stamon->rssi[2]); - blobmsg_add_u32(&bb, "", stamon->rssi[3]); + for (i = 0; i < 4; i++) { + tmp = (stamon->rssi[i] > 0) ? + stamon->rssi[i] - 256 : stamon->rssi[i]; + blobmsg_add_u32(&bb, "", tmp); + } blobmsg_close_array(&bb, a); blobmsg_close_table(&bb, t); -- GitLab