From f89aab623a9d6d586ba01862ead69c1414d0cab7 Mon Sep 17 00:00:00 2001 From: Oto Ciulis Date: Mon, 9 Dec 2013 08:26:50 -0800 Subject: [PATCH] Added autoconnect property settings for services Change-Id: I746684bb679a490618d8c5bb887cb537f6f76e79 Signed-off-by: Oto Ciulis --- plugins/connman/service.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ plugins/connman/service.hpp | 3 +++ tests/settings_test.cpp | 14 ++++++++++---- 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/plugins/connman/service.cpp b/plugins/connman/service.cpp index e444cd2..4ce41fb 100644 --- a/plugins/connman/service.cpp +++ b/plugins/connman/service.cpp @@ -63,6 +63,8 @@ ivi::settings::service::handle_request(char const * name, call_nullary_method("Disconnect", reader, response); else if (strcmp(name, "remove") == 0) call_nullary_method("Remove", reader, response); + else if (strcmp(name, "autoconnect") == 0) + set_autoconnect(reader, response); else { response.send_error( std::string("Unrecognized connman service request name: ") @@ -138,6 +140,44 @@ ivi::settings::service::call_nullary_method(char const * name, } void +ivi::settings::service::set_autoconnect(JsonReader * reader, + response_callback response) +{ + bool has_value, enabled = false; + + has_value = json_reader_read_member(reader, "enable"); + json_reader_end_element(reader); + + if (has_value) { + constexpr char const name[] = "AutoConnect"; + GError * error = nullptr; + + unique_ptr ret( + connman_.set_property(name, + g_variant_new_boolean(enabled), + error)); + + unique_ptr safe_error(error); + + if (ret != nullptr) { + // Nothing to add to successful response. + response.send_response( + [](JsonBuilder * /* builder */) {}); + } else if (error != nullptr) { + response.send_error( + std::string("Unable to set connman::service autoconnect state: ") + + error->message); + } else { + response.send_error( + "Malformed connman::service autoconnect request value."); + } + } else { + response.send_error("Malformed connman::service " + "autoconnect request value."); + } +} + +void ivi::settings::service::call_method(char const * name, response_callback response) { diff --git a/plugins/connman/service.hpp b/plugins/connman/service.hpp index 481124d..8fe3615 100644 --- a/plugins/connman/service.hpp +++ b/plugins/connman/service.hpp @@ -98,6 +98,9 @@ namespace ivi JsonReader * reader, response_callback response); + /// Sets new value for autoconnect + void set_autoconnect(JsonReader * reader, + response_callback response); /** * Call the method @a name on the connman Service object. * diff --git a/tests/settings_test.cpp b/tests/settings_test.cpp index 7ea1ffa..7af9804 100644 --- a/tests/settings_test.cpp +++ b/tests/settings_test.cpp @@ -51,13 +51,19 @@ namespace // " \"value\": \"some_arbitrary_value\"" // "}"; + //"{" + //" \"type\": \"ethernet\"," + //" \"transactionid\": \"fnord\"," + //" \"name\": \"is_enabled\"," + //" \"value\": null" + //"}"; + "{" - " \"type\": \"ethernet\"," + " \"type\": \"connman::service\"," " \"transactionid\": \"fnord\"," - " \"name\": \"is_enabled\"," - " \"value\": null" + " \"name\": \"autoconnect\"," + " \"value\": { \"path\": \"/net/connman/service/ethernet_eca86bf61ad2_cable\", \"enable\": true }" "}"; - // "{" // " \"type\":\"wifi\"," // " \"transactionid\":\"3b5c9ebe-23fa-6b58-3f50-1203d7641441\"," -- 2.7.4