summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose M. Guisado <jguisado@soleta.eu>2021-05-04 15:42:45 +0000
committerOpenGnSys Support Team <soporte-og@soleta.eu>2021-05-04 18:13:35 +0200
commit40d4279b316e9d8b6636dd518cddec65b78c05aa (patch)
treed10d4bdd529870835bc85f64d3309eef79cd98c6
parenta7cce8d442a2c83562483ff3e649c95e6e732ea9 (diff)
#995 Add link speed parsing to client probe response
If a probe response contains speedinformation, parse and store it inside the client struct. Speed is interpreted as an unsigned integer representing Mbit/s.
-rw-r--r--src/client.c6
-rw-r--r--src/rest.c1
-rw-r--r--src/rest.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/src/client.c b/src/client.c
index fcf3cbf..c21c373 100644
--- a/src/client.c
+++ b/src/client.c
@@ -28,6 +28,7 @@ static int og_resp_probe(struct og_client *cli, json_t *data)
{
const char *status = NULL;
const char *key;
+ uint32_t speed;
json_t *value;
int err = 0;
@@ -39,6 +40,11 @@ static int og_resp_probe(struct og_client *cli, json_t *data)
err = og_json_parse_string(value, &status);
if (err < 0)
return err;
+ } else if (!strcmp(key, "speed")) {
+ err = og_json_parse_uint(value, &speed);
+ if (err < 0)
+ return err;
+ cli->speed = speed;
} else {
return -1;
}
diff --git a/src/rest.c b/src/rest.c
index 2743f13..9483795 100644
--- a/src/rest.c
+++ b/src/rest.c
@@ -389,6 +389,7 @@ static int og_json_client_append(json_t *array, struct og_client *client)
return -1;
}
json_object_set_new(object, "state", state);
+ json_object_set_new(object, "speed", json_integer(client->speed));
json_array_append_new(array, object);
return 0;
diff --git a/src/rest.h b/src/rest.h
index 289009d..43ddd66 100644
--- a/src/rest.h
+++ b/src/rest.h
@@ -55,6 +55,7 @@ struct og_client {
enum og_cmd_type last_cmd;
unsigned int last_cmd_id;
bool autorun;
+ uint32_t speed;
};
void og_client_add(struct og_client *cli);