From 40d4279b316e9d8b6636dd518cddec65b78c05aa Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Tue, 4 May 2021 15:42:45 +0000 Subject: #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. --- src/client.c | 6 ++++++ src/rest.c | 1 + src/rest.h | 1 + 3 files changed, 8 insertions(+) (limited to 'src') 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); -- cgit v1.2.3-18-g5258