From 680864df19811c5d1a043457e58b75334abde1fc Mon Sep 17 00:00:00 2001 From: yyashvardhan Date: Fri, 13 Sep 2019 17:53:04 +0530 Subject: [PATCH] bbf: support for bbk_cli operate command --- dmoperate.c | 25 +++++++++++++++++++++++++ dmubus.c | 10 ++++++++++ dmubus.h | 2 ++ 3 files changed, 37 insertions(+) diff --git a/dmoperate.c b/dmoperate.c index c09c1907..45108492 100644 --- a/dmoperate.c +++ b/dmoperate.c @@ -366,6 +366,30 @@ static opr_ret_t fetch_neighboring_wifi_diagnostic(struct dmctx *dmctx, char *pa return SUCCESS; } +static opr_ret_t bbk_speedtest(struct dmctx *dmctx, char *path, char *input) +{ + json_object *ubus_res = NULL; + +#ifdef DM_USE_LIBUBUS + int timeout = dmubus_get_timeout(); + dmubus_set_timeout(90000); +#endif + dmubus_call("bbk", "start", UBUS_ARGS{}, 0, &ubus_res); + + char *param_latency = (char *) dmjson_get_value(ubus_res, 1, "latency"); + char *param_download = (char *) dmjson_get_value(ubus_res, 1, "download"); + char *param_upload = (char *) dmjson_get_value(ubus_res, 1, "upload"); + + add_list_paramameter(dmctx, dmstrdup("Latency"), param_latency, "string", NULL, 0); + add_list_paramameter(dmctx, dmstrdup("Download"), param_download, "string", NULL, 0); + add_list_paramameter(dmctx, dmstrdup("Upload"), param_upload, "string", NULL, 0); + +#ifdef DM_USE_LIBUBUS + dmubus_set_timeout(timeout); +#endif + return SUCCESS; +} + static opr_ret_t ip_diagnostics_ipping(struct dmctx *dmctx, char *path, char *input) { json_object *json_res = NULL; @@ -829,6 +853,7 @@ static struct op_cmd operate_helper[] = { {"Device.IP.Diagnostics.UploadDiagnostics", ip_diagnostics_upload}, {"Device.IP.Diagnostics.UDPEchoDiagnostics", ip_diagnostics_udpecho}, {"Device.IP.Diagnostics.ServerSelectionDiagnostics", ip_diagnostics_serverselection}, + {"Device.BBKSpeedTest", bbk_speedtest}, {"Device.DNS.Diagnostics.NSLookupDiagnostics", ip_diagnostics_nslookup} }; diff --git a/dmubus.c b/dmubus.c index e555e65c..bb3554b7 100644 --- a/dmubus.c +++ b/dmubus.c @@ -34,6 +34,16 @@ static int timeout = 1000; const char *ubus_socket = NULL; json_object *json_res = NULL; +int dmubus_get_timeout() +{ + return (timeout); +} + +void dmubus_set_timeout(int val) +{ + timeout = val; +} + static inline bool dmblobmsg_add_object(struct blob_buf *b, json_object *obj) { json_object_object_foreach(obj, key, val) { diff --git a/dmubus.h b/dmubus.h index 6cd646ec..17edba6f 100644 --- a/dmubus.h +++ b/dmubus.h @@ -61,6 +61,8 @@ enum ubus_args_enum { extern struct dmubus_ctx dmubus_ctx; extern struct ubus_context *ubus_ctx; +int dmubus_get_timeout(); +void dmubus_set_timeout(int time); #define dm_ubus_get_value(jobj,ARGC,args...) \ dmjson_get_value(jobj, ARGC, ##args) int dmubus_call(char *obj, char *method, struct ubus_arg u_args[], int u_args_size, json_object **req_res);