Add initial support for common property key constants
[connman] / src / element.c
index 0a6a037..614c875 100644 (file)
@@ -510,7 +510,7 @@ void connman_element_unref(struct connman_element *element)
        }
 }
 
-int connman_element_set_static_property(struct connman_element *element,
+static int set_static_property(struct connman_element *element,
                                const char *name, int type, const void *value)
 {
        struct connman_property *property;
@@ -549,7 +549,7 @@ int connman_element_set_static_property(struct connman_element *element,
        return 0;
 }
 
-int connman_element_set_static_array_property(struct connman_element *element,
+static int set_static_array_property(struct connman_element *element,
                        const char *name, int type, const void *value, int len)
 {
        struct connman_property *property;
@@ -589,7 +589,8 @@ int connman_element_set_static_array_property(struct connman_element *element,
        return 0;
 }
 
-int connman_element_set_property(struct connman_element *element,
+#if 0
+static int set_property(struct connman_element *element,
                                enum connman_property_id id, const void *value)
 {
        switch (id) {
@@ -629,6 +630,7 @@ int connman_element_set_property(struct connman_element *element,
 
        return 0;
 }
+#endif
 
 int connman_element_get_value(struct connman_element *element,
                                enum connman_property_id id, void *value)
@@ -692,7 +694,7 @@ int connman_element_get_value(struct connman_element *element,
        return 0;
 }
 
-gboolean connman_element_get_static_property(struct connman_element *element,
+static gboolean get_static_property(struct connman_element *element,
                                                const char *name, void *value)
 {
        struct connman_property *property;
@@ -719,14 +721,13 @@ gboolean connman_element_get_static_property(struct connman_element *element,
        __connman_element_unlock(element);
 
        if (found == FALSE && element->parent != NULL)
-               return connman_element_get_static_property(element->parent,
-                                                               name, value);
+               return get_static_property(element->parent, name, value);
 
        return found;
 }
 
-gboolean connman_element_get_static_array_property(struct connman_element *element,
-                                       const char *name, void *value, int *len)
+static gboolean get_static_array_property(struct connman_element *element,
+                       const char *name, void *value, unsigned int *len)
 {
        struct connman_property *property;
        gboolean found = FALSE;
@@ -747,7 +748,8 @@ gboolean connman_element_get_static_array_property(struct connman_element *eleme
        return found;
 }
 
-gboolean connman_element_match_static_property(struct connman_element *element,
+#if 0
+static gboolean match_static_property(struct connman_element *element,
                                        const char *name, const void *value)
 {
        struct connman_property *property;
@@ -768,6 +770,106 @@ gboolean connman_element_match_static_property(struct connman_element *element,
 
        return result;
 }
+#endif
+
+/**
+ * connman_element_set_string:
+ * @element: element structure
+ * @key: unique identifier
+ * @value: string value
+ *
+ * Set string value for specific key
+ */
+int connman_element_set_string(struct connman_element *element,
+                                       const char *key, const char *value)
+{
+       return set_static_property(element, key, DBUS_TYPE_STRING, &value);
+}
+
+/**
+ * connman_element_get_string:
+ * @element: element structure
+ * @key: unique identifier
+ *
+ * Get string value for specific key
+ */
+const char *connman_element_get_string(struct connman_element *element,
+                                                       const char *key)
+{
+       const char *value;
+
+       if (get_static_property(element, key, &value) == FALSE)
+               return NULL;
+
+       return value;
+}
+
+/**
+ * connman_element_set_uint8:
+ * @element: element structure
+ * @key: unique identifier
+ * @value: integer value
+ *
+ * Set integer value for specific key
+ */
+int connman_element_set_uint8(struct connman_element *element,
+                                       const char *key, connman_uint8_t value)
+{
+        return set_static_property(element, key, DBUS_TYPE_BYTE, &value);
+}
+
+/**
+ * connman_element_get_uint8:
+ * @element: element structure
+ * @key: unique identifier
+ *
+ * Get integer value for specific key
+ */
+connman_uint8_t connman_element_get_uint8(struct connman_element *element,
+                                                       const char *key)
+{
+       connman_uint8_t value;
+
+       if (get_static_property(element, key, &value) == FALSE)
+                return 0;
+
+       return value;
+}
+
+/**
+ * connman_element_set_blob:
+ * @element: element structure
+ * @key: unique identifier
+ * @data: blob data
+ * @size: blob size
+ *
+ * Set binary blob value for specific key
+ */
+int connman_element_set_blob(struct connman_element *element,
+                       const char *key, const void *data, unsigned int size)
+{
+       return set_static_array_property(element, key,
+                                               DBUS_TYPE_BYTE, data, size);
+}
+
+/**
+ * connman_element_get_blob:
+ * @element: element structure
+ * @key: unique identifier
+ * @size: pointer to blob size
+ *
+ * Get binary blob value for specific key
+ */
+const void *connman_element_get_blob(struct connman_element *element,
+                                       const char *key, unsigned int *size)
+{
+       void *value;
+
+       if (get_static_array_property(element, key, &value, size) == FALSE)
+               return NULL;
+
+       return value;
+}
 
 int __connman_element_append_ipv4(struct connman_element *element,
                                                DBusMessageIter *dict)
@@ -870,44 +972,6 @@ int __connman_element_set_ipv4(struct connman_element *element,
        return 0;
 }
 
-static void append_connections(DBusMessageIter *entry)
-{
-       DBusMessageIter value, iter;
-       const char *key = "Connections";
-
-       dbus_message_iter_append_basic(entry, DBUS_TYPE_STRING, &key);
-
-       dbus_message_iter_open_container(entry, DBUS_TYPE_VARIANT,
-               DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_OBJECT_PATH_AS_STRING,
-                                                               &value);
-
-       dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
-                               DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter);
-       __connman_element_list(NULL, CONNMAN_ELEMENT_TYPE_CONNECTION, &iter);
-       dbus_message_iter_close_container(&value, &iter);
-
-       dbus_message_iter_close_container(entry, &value);
-}
-
-static void emit_connections_signal(DBusConnection *conn)
-{
-       DBusMessage *signal;
-       DBusMessageIter entry;
-
-       DBG("conn %p", conn);
-
-       signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
-                               CONNMAN_MANAGER_INTERFACE, "PropertyChanged");
-       if (signal == NULL)
-               return;
-
-       dbus_message_iter_init_append(signal, &entry);
-
-       append_connections(&entry);
-
-       g_dbus_send_message(conn, signal);
-}
-
 static void append_state(DBusMessageIter *entry, const char *state)
 {
        DBusMessageIter value;
@@ -1006,8 +1070,6 @@ static void register_element(gpointer data, gpointer user_data)
                        parent = parent->parent;
                }
 
-               emit_connections_signal(connection);
-
                if (__connman_element_count(NULL,
                                        CONNMAN_ELEMENT_TYPE_CONNECTION) == 1)
                        emit_state_change(connection, "online");
@@ -1102,8 +1164,6 @@ static gboolean remove_element(GNode *node, gpointer user_data)
                if (__connman_element_count(NULL,
                                        CONNMAN_ELEMENT_TYPE_CONNECTION) == 0)
                        emit_state_change(connection, "offline");
-
-               emit_connections_signal(connection);
        }
 
        emit_element_signal(connection, "ElementRemoved", element);
@@ -1174,10 +1234,13 @@ int connman_element_set_enabled(struct connman_element *element,
 
        element->enabled = enabled;
 
+       connman_element_update(element);
+
        return 0;
 }
 
-int __connman_element_init(DBusConnection *conn, const char *device)
+int __connman_element_init(DBusConnection *conn, const char *device,
+                                                       const char *nodevice)
 {
        struct connman_element *element;
 
@@ -1196,6 +1259,7 @@ int __connman_element_init(DBusConnection *conn, const char *device)
 
        element_root = g_node_new(element);
 
+       __connman_notifier_init();
        __connman_network_init();
        __connman_device_init();
 
@@ -1280,6 +1344,7 @@ void __connman_element_cleanup(void)
 
        __connman_device_cleanup();
        __connman_network_cleanup();
+       __connman_notifier_cleanup();
 
        g_node_traverse(element_root, G_POST_ORDER, G_TRAVERSE_ALL, -1,
                                                        free_driver, NULL);