---
 client/commands.c |   84 ++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 58 insertions(+), 26 deletions(-)

diff --git a/client/commands.c b/client/commands.c
index 89989da..f4afee3 100644
--- a/client/commands.c
+++ b/client/commands.c
@@ -87,10 +87,30 @@ static int parse_args(char *arg, struct option *options)
        return '?';
 }
 
+static void enable_return(DBusMessageIter *iter, const char *error,
+               void *user_data)
+{
+       char *tech = user_data;
+       char *str;
+
+       str = strrchr(tech, '/');
+       if (str != NULL)
+               str++;
+       else
+               str = tech;
+
+       if (error == NULL) {
+               fprintf(stdout, "Enabled %s\n", str);
+       } else
+               fprintf(stderr, "Error %s: %s\n", str, error);
+
+       g_free(user_data);
+}
+
 static int cmd_enable(char *args[], int num, struct option *options)
 {
-       DBusMessage *message;
-       int err;
+       char *tech;
+       dbus_bool_t b = TRUE;
 
        if (num > 2)
                return -E2BIG;
@@ -99,26 +119,42 @@ static int cmd_enable(char *args[], int num, struct option 
*options)
                return -EINVAL;
 
        if (strcmp(args[1], "offlinemode") == 0) {
-               err = set_manager(connection, "OfflineMode", TRUE);
-               if (err == 0)
-                       printf("OfflineMode enabled\n");
-
-               return 0;
+               tech = g_strdup(args[1]);
+               return __connmanctl_dbus_set_property(connection, "/",
+                               "net.connman.Manager", enable_return, tech,
+                               "OfflineMode", DBUS_TYPE_BOOLEAN, &b);
        }
 
-       message = get_message(connection, "GetTechnologies");
-       if (message == NULL)
-               return -ENOMEM;
+       tech = g_strdup_printf("/net/connman/technology/%s", args[1]);
+       return __connmanctl_dbus_set_property(connection, tech,
+                               "net.connman.Technology", enable_return, tech,
+                               "Powered", DBUS_TYPE_BOOLEAN, &b);
+}
 
-       set_technology(connection, message, "Powered", args[1], TRUE);
+static void disable_return(DBusMessageIter *iter, const char *error,
+               void *user_data)
+{
+       char *tech = user_data;
+       char *str;
 
-       return 0;
+       str = strrchr(tech, '/');
+       if (str != NULL)
+               str++;
+       else
+               str = tech;
+
+       if (error == NULL) {
+               fprintf(stdout, "Disabled %s\n", str);
+       } else
+               fprintf(stderr, "Error %s: %s\n", str, error);
+
+       g_free(user_data);
 }
 
 static int cmd_disable(char *args[], int num, struct option *options)
 {
-       DBusMessage *message;
-       int err;
+       char *tech;
+       dbus_bool_t b = FALSE;
 
        if (num > 2)
                return -E2BIG;
@@ -127,20 +163,16 @@ static int cmd_disable(char *args[], int num, struct 
option *options)
                return -EINVAL;
 
        if (strcmp(args[1], "offlinemode") == 0) {
-               err = set_manager(connection, "OfflineMode", FALSE);
-               if (err == 0)
-                       printf("OfflineMode enabled\n");
-
-               return 0;
+               tech = g_strdup(args[1]);
+               return __connmanctl_dbus_set_property(connection, "/",
+                               "net.connman.Manager", disable_return, tech,
+                               "OfflineMode", DBUS_TYPE_BOOLEAN, &b);
        }
 
-       message = get_message(connection, "GetTechnologies");
-       if (message == NULL)
-               return -ENOMEM;
-
-       set_technology(connection, message, "Powered", args[1], FALSE);
-
-       return 0;
+       tech = g_strdup_printf("/net/connman/technology/%s", args[1]);
+       return __connmanctl_dbus_set_property(connection, tech,
+                               "net.connman.Technology", disable_return, tech,
+                               "Powered", DBUS_TYPE_BOOLEAN, &b);
 }
 
 static void state_print(DBusMessageIter *iter, const char *error,
-- 
1.7.10.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to