Added autoconnect property settings for services 62/13562/4
authorOto Ciulis <oto.ciulis@ixonos.com>
Mon, 9 Dec 2013 16:26:50 +0000 (08:26 -0800)
committerOssama Othman <ossama.othman@intel.com>
Thu, 23 Jan 2014 21:42:23 +0000 (13:42 -0800)
Change-Id: I746684bb679a490618d8c5bb887cb537f6f76e79
Signed-off-by: Oto Ciulis <oto.ciulis@ixonos.com>
plugins/connman/service.cpp
plugins/connman/service.hpp
tests/settings_test.cpp

index e444cd2..4ce41fb 100644 (file)
@@ -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<GVariant> ret(
+      connman_.set_property(name,
+                            g_variant_new_boolean(enabled),
+                            error));
+
+    unique_ptr<GError> 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)
 {
index 481124d..8fe3615 100644 (file)
@@ -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.
        *
index 7ea1ffa..7af9804 100644 (file)
@@ -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\","