struct wpa_dbus_object_desc {
DBusConnection *connection;
+ char *path;
/* list of methods, properties and signals registered with object */
- struct wpa_dbus_method_desc *methods;
- struct wpa_dbus_signal_desc *signals;
- struct wpa_dbus_property_desc *properties;
+ const struct wpa_dbus_method_desc *methods;
+ const struct wpa_dbus_signal_desc *signals;
+ const struct wpa_dbus_property_desc *properties;
+
+ /* property changed flags */
+ u8 *prop_changed_flags;
/* argument for method handlers and properties
* getter and setter functions */
* struct wpa_dbus_method_desc - DBus method description
*/
struct wpa_dbus_method_desc {
- /* pointer to next description in list */
- struct wpa_dbus_method_desc *next;
-
- /* method interface */
- char *dbus_interface;
/* method name */
- char *dbus_method;
-
+ const char *dbus_method;
+ /* method interface */
+ const char *dbus_interface;
/* method handling function */
WPADBusMethodHandler method_handler;
-
- /* number of method arguments */
- int args_num;
/* array of arguments */
- struct wpa_dbus_argument args[];
+ struct wpa_dbus_argument args[3];
};
/**
* struct wpa_dbus_signal_desc - DBus signal description
*/
struct wpa_dbus_signal_desc {
- /* pointer to next description in list */
- struct wpa_dbus_signal_desc *next;
-
- /* signal interface */
- char *dbus_interface;
/* signal name */
- char *dbus_signal;
-
- /* number of signal arguments */
- int args_num;
+ const char *dbus_signal;
+ /* signal interface */
+ const char *dbus_interface;
/* array of arguments */
- struct wpa_dbus_argument args[0];
+ struct wpa_dbus_argument args[3];
};
/**
* struct wpa_dbus_property_desc - DBus property description
*/
struct wpa_dbus_property_desc {
- /* pointer to next description in list */
- struct wpa_dbus_property_desc *next;
-
- /* property interface */
- char *dbus_interface;
/* property name */
- char *dbus_property;
+ const char *dbus_property;
+ /* property interface */
+ const char *dbus_interface;
/* property type signature in DBus type notation */
- char *type;
-
- /* property access permissions */
- enum dbus_prop_access access;
-
+ const char *type;
/* property getter function */
WPADBusPropertyAccessor getter;
/* property setter function */
WPADBusPropertyAccessor setter;
+ /* property access permissions */
+ enum dbus_prop_access access;
};
struct wpas_dbus_priv *ctrl_iface,
const char *path);
-int wpa_dbus_method_register(struct wpa_dbus_object_desc *obj_dsc,
- const char *dbus_interface,
- const char *dbus_method,
- WPADBusMethodHandler method_handler,
- const struct wpa_dbus_argument args[]);
-
-int wpa_dbus_signal_register(struct wpa_dbus_object_desc *obj_dsc,
- const char *dbus_interface,
- const char *dbus_signal,
- const struct wpa_dbus_argument args[]);
-
-int wpa_dbus_property_register(
- struct wpa_dbus_object_desc *obj_dsc,
- const char *dbus_interface, const char *dbus_property,
- const char *type,
- WPADBusPropertyAccessor getter,
- WPADBusPropertyAccessor setter,
- enum dbus_prop_access _access);
-
-void wpa_dbus_signal_property_changed(struct wpas_dbus_priv *iface,
- WPADBusPropertyAccessor property_getter,
- void *getter_arg,
- const char *path,
- const char *interface_name,
- const char *property_name);
-
void wpa_dbus_get_object_properties(struct wpas_dbus_priv *iface,
const char *path, const char *interface,
DBusMessageIter *dict_iter);
+
+void wpa_dbus_flush_all_changed_properties(DBusConnection *con);
+
+void wpa_dbus_flush_object_changed_properties(DBusConnection *con,
+ const char *path);
+
+void wpa_dbus_mark_property_changed(struct wpas_dbus_priv *iface,
+ const char *path, const char *interface,
+ const char *property);
+
DBusMessage * wpa_dbus_introspect(DBusMessage *message,
struct wpa_dbus_object_desc *obj_dsc);