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: ")
}
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)
{
// " \"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\","