From b59332d02775c823c034cd348340b4d6ce573a63 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakobols@kth.se>
Date: Tue, 14 Aug 2018 12:36:55 +0200
Subject: [PATCH] dongle_infrastructure: publish network provider method to
object on ubus
---
dongle_infrastructure.c | 53 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/dongle_infrastructure.c b/dongle_infrastructure.c
index d89e1a6..4616fbe 100644
--- a/dongle_infrastructure.c
+++ b/dongle_infrastructure.c
@@ -1171,6 +1171,58 @@ fail:
return UBUS_STATUS_OK;
}
+int network_provider(struct ubus_context *ctx, struct ubus_object *obj,
+ struct ubus_request_data *req, const char *method,
+ struct blob_attr *msg)
+{
+ struct dongle *usb;
+ int rv;
+ struct json_object *response;
+
+ usb = get_dongle_by_obj_name(obj->name);
+ if (!usb) {
+ ubus_print_key_val(ctx, req, "failure", "no device configured with this object");
+ debug_print("no device configured with this object\n");
+ goto fail;
+ }
+
+ rv = sim_state(usb);
+ if (rv == 1) {
+ ubus_print_key_val(ctx, req, "failure", "please activate sim");
+ debug_print("sim card not activated!\n");
+ goto fail;
+ } else if (rv == 2) {
+ ubus_print_key_val(ctx, req, "failure", "no sim card detected");
+ debug_print("no sim card detected\n");
+ goto fail;
+ } else if (rv == 3) {
+ ubus_print_key_val(ctx, req, "failure", "sim locked");
+ debug_print("sim locked\n");
+ goto fail;
+ } else if (rv == -1) {
+ ubus_print_key_val(ctx, req, "failure", "unknown error");
+ debug_print("unknown error, probably curl error");
+ goto fail;
+ }
+
+ response = mobile_get_network_type(usb);
+ if (!response)
+ goto fail;
+ print_to_ubus(response, ctx, req);
+ /*if (rv < 0) {
+ ubus_print_key_val(ctx, req, "failure", "unknown connection status");
+ goto fail;
+ } else if (rv == 1) {
+ ubus_print_key_val(ctx, req, NETWORK_STATUS, "connected");
+ } else if (rv == 0) {
+ ubus_print_key_val(ctx, req, NETWORK_STATUS, "not found");
+ debug_print("network_type not found");
+ }*/
+
+fail:
+ return UBUS_STATUS_OK;
+}
+
int connection_status(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method,
struct blob_attr *msg)
@@ -1670,6 +1722,7 @@ struct ubus_method obj_methods[] = {
UBUS_METHOD("create_apn_profile", create_apn_profile, create_apn_policy),
UBUS_METHOD("delete_apn_profile", delete_apn_profile, apn_policy),
UBUS_METHOD("set_apn_profile", set_apn_profile, apn_policy),
+ UBUS_METHOD_NOARG("network_provider", network_provider), //network
UBUS_METHOD_NOARG("connection_status", connection_status), //network
UBUS_METHOD_NOARG("network_status", network_status),
UBUS_METHOD_NOARG("connect_network", connect_network),
--
GitLab