1d4f2939cSRui Paulo /* 2d4f2939cSRui Paulo * WPA Supplicant / dbus-based control interface 3d4f2939cSRui Paulo * Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc. 4d4f2939cSRui Paulo * Copyright (c) 2009-2010, Witold Sowa <witold.sowa@gmail.com> 5d4f2939cSRui Paulo * 6d4f2939cSRui Paulo * This software may be distributed under the terms of the BSD license. 7d4f2939cSRui Paulo * See README for more details. 8d4f2939cSRui Paulo */ 9d4f2939cSRui Paulo 10d4f2939cSRui Paulo #ifndef CTRL_IFACE_DBUS_NEW_HANDLERS_H 11d4f2939cSRui Paulo #define CTRL_IFACE_DBUS_NEW_HANDLERS_H 12d4f2939cSRui Paulo 13780fb4a2SCy Schubert #include "dbus_new_helpers.h" 14780fb4a2SCy Schubert 15d4f2939cSRui Paulo struct network_handler_args { 16d4f2939cSRui Paulo struct wpa_supplicant *wpa_s; 17d4f2939cSRui Paulo struct wpa_ssid *ssid; 18d4f2939cSRui Paulo }; 19d4f2939cSRui Paulo 20d4f2939cSRui Paulo struct bss_handler_args { 21d4f2939cSRui Paulo struct wpa_supplicant *wpa_s; 22d4f2939cSRui Paulo unsigned int id; 23d4f2939cSRui Paulo }; 24d4f2939cSRui Paulo 254bc52338SCy Schubert struct sta_handler_args { 264bc52338SCy Schubert struct wpa_supplicant *wpa_s; 274bc52338SCy Schubert const u8 *sta; 284bc52338SCy Schubert }; 294bc52338SCy Schubert 30d4f2939cSRui Paulo dbus_bool_t wpas_dbus_simple_property_getter(DBusMessageIter *iter, 31d4f2939cSRui Paulo const int type, 32d4f2939cSRui Paulo const void *val, 33d4f2939cSRui Paulo DBusError *error); 34d4f2939cSRui Paulo 35d4f2939cSRui Paulo dbus_bool_t wpas_dbus_simple_property_setter(DBusMessageIter *iter, 36d4f2939cSRui Paulo DBusError *error, 37d4f2939cSRui Paulo const int type, void *val); 38d4f2939cSRui Paulo 39d4f2939cSRui Paulo dbus_bool_t wpas_dbus_simple_array_property_getter(DBusMessageIter *iter, 40d4f2939cSRui Paulo const int type, 41d4f2939cSRui Paulo const void *array, 42d4f2939cSRui Paulo size_t array_len, 43d4f2939cSRui Paulo DBusError *error); 44d4f2939cSRui Paulo 45d4f2939cSRui Paulo dbus_bool_t wpas_dbus_simple_array_array_property_getter(DBusMessageIter *iter, 46d4f2939cSRui Paulo const int type, 47d4f2939cSRui Paulo struct wpabuf **array, 48d4f2939cSRui Paulo size_t array_len, 49d4f2939cSRui Paulo DBusError *error); 50d4f2939cSRui Paulo 5185732ac8SCy Schubert dbus_bool_t wpas_dbus_string_property_getter(DBusMessageIter *iter, 5285732ac8SCy Schubert const void *val, 5385732ac8SCy Schubert DBusError *error); 5485732ac8SCy Schubert 55d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_create_interface(DBusMessage *message, 56d4f2939cSRui Paulo struct wpa_global *global); 57d4f2939cSRui Paulo 58d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_remove_interface(DBusMessage *message, 59d4f2939cSRui Paulo struct wpa_global *global); 60d4f2939cSRui Paulo 61d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_get_interface(DBusMessage *message, 62d4f2939cSRui Paulo struct wpa_global *global); 63d4f2939cSRui Paulo 64780fb4a2SCy Schubert DBusMessage * wpas_dbus_handler_expect_disconnect(DBusMessage *message, 65780fb4a2SCy Schubert struct wpa_global *global); 66d4f2939cSRui Paulo 67780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_debug_level); 68780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_debug_timestamp); 69780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_debug_show_keys); 70780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_debug_level); 71780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_debug_timestamp); 72780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_debug_show_keys); 73780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_interfaces); 74780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_eap_methods); 75780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_global_capabilities); 76780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_iface_global); 77780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_iface_global); 78d4f2939cSRui Paulo 79d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_scan(DBusMessage *message, 80d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 81d4f2939cSRui Paulo 8285732ac8SCy Schubert DBusMessage * wpas_dbus_handler_abort_scan(DBusMessage *message, 8385732ac8SCy Schubert struct wpa_supplicant *wpa_s); 8485732ac8SCy Schubert 855b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_signal_poll(DBusMessage *message, 865b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 875b9c547cSRui Paulo 88d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_disconnect(DBusMessage *message, 89d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 90d4f2939cSRui Paulo 91d4f2939cSRui Paulo dbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s, 92d4f2939cSRui Paulo struct wpa_ssid *ssid, 93d4f2939cSRui Paulo DBusMessageIter *iter, 94d4f2939cSRui Paulo DBusError *error); 95d4f2939cSRui Paulo 96d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_add_network(DBusMessage *message, 97d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 98d4f2939cSRui Paulo 99d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_reassociate(DBusMessage *message, 100d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 101d4f2939cSRui Paulo 1025b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_reattach(DBusMessage *message, 1035b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 1045b9c547cSRui Paulo 105325151a3SRui Paulo DBusMessage * wpas_dbus_handler_reconnect(DBusMessage *message, 106325151a3SRui Paulo struct wpa_supplicant *wpa_s); 107325151a3SRui Paulo 108d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_remove_network(DBusMessage *message, 109d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 110d4f2939cSRui Paulo 111d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_remove_all_networks( 112d4f2939cSRui Paulo DBusMessage *message, struct wpa_supplicant *wpa_s); 113d4f2939cSRui Paulo 114d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_select_network(DBusMessage *message, 115d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 116d4f2939cSRui Paulo 117d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_network_reply(DBusMessage *message, 118d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 119d4f2939cSRui Paulo 120c1d255d3SCy Schubert DBusMessage * wpas_dbus_handler_roam(DBusMessage *message, 121c1d255d3SCy Schubert struct wpa_supplicant *wpa_s); 122c1d255d3SCy Schubert 123d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_add_blob(DBusMessage *message, 124d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 125d4f2939cSRui Paulo 126d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_get_blob(DBusMessage *message, 127d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 128d4f2939cSRui Paulo 129d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_remove_blob(DBusMessage *message, 130d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 131d4f2939cSRui Paulo 1325b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_set_pkcs11_engine_and_module_path( 1335b9c547cSRui Paulo DBusMessage *message, struct wpa_supplicant *wpa_s); 1345b9c547cSRui Paulo 135d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_flush_bss(DBusMessage *message, 136d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 137d4f2939cSRui Paulo 138d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_autoscan(DBusMessage *message, 139d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 140d4f2939cSRui Paulo 1415b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_eap_logoff(DBusMessage *message, 1425b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 1435b9c547cSRui Paulo 1445b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_eap_logon(DBusMessage *message, 1455b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 1465b9c547cSRui Paulo 14732a95656SCy Schubert DBusMessage * wpas_dbus_handler_add_cred(DBusMessage *message, 14832a95656SCy Schubert struct wpa_supplicant *wpa_s); 14932a95656SCy Schubert 15032a95656SCy Schubert DBusMessage * wpas_dbus_handler_remove_cred(DBusMessage *message, 15132a95656SCy Schubert struct wpa_supplicant *wpa_s); 15232a95656SCy Schubert 15332a95656SCy Schubert DBusMessage * wpas_dbus_handler_remove_all_creds(DBusMessage *message, 15432a95656SCy Schubert struct wpa_supplicant *wpa_s); 15532a95656SCy Schubert 15632a95656SCy Schubert DBusMessage * 15732a95656SCy Schubert wpas_dbus_handler_interworking_select(DBusMessage *message, 15832a95656SCy Schubert struct wpa_supplicant *wpa_s); 15932a95656SCy Schubert 160*a90b9d01SCy Schubert DBusMessage * 161*a90b9d01SCy Schubert wpas_dbus_handler_anqp_get(DBusMessage *message, struct wpa_supplicant *wpa_s); 162*a90b9d01SCy Schubert 163780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_capabilities); 164780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_state); 165780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_scanning); 166780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_ap_scan); 167780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_ap_scan); 168780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_fast_reauth); 169780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_fast_reauth); 170780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_disconnect_reason); 171780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_disassociate_reason); 1724bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_auth_status_code); 173780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_assoc_status_code); 1744bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_roam_time); 1754bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_roam_complete); 1764bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_session_length); 1774bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_tm_status); 178780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_expire_age); 179780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_bss_expire_age); 180780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_expire_count); 181780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_bss_expire_count); 182780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_country); 183780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_country); 184780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_scan_interval); 185780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_scan_interval); 186780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_ifname); 187780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_driver); 188780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bridge_ifname); 189c1d255d3SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_bridge_ifname); 190780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_config_file); 191780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_current_bss); 192780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_current_network); 193780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_current_auth_mode); 194780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bsss); 195780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_networks); 196780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_pkcs11_engine_path); 197780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_pkcs11_module_path); 198780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_blobs); 1994bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_stas); 200c1d255d3SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_mac_address_randomization_mask); 201c1d255d3SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_mac_address_randomization_mask); 202*a90b9d01SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_mac_address); 2034bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_address); 2044bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_aid); 2054bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_caps); 2064bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_rx_packets); 2074bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_tx_packets); 2084bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_tx_bytes); 2094bc52338SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_sta_rx_bytes); 210780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_bssid); 211780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_ssid); 212780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_privacy); 213780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_mode); 214780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_signal); 215780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_frequency); 216780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_rates); 217780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_wpa); 218780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_rsn); 219780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_wps); 220780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_ies); 221780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_age); 222*a90b9d01SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_bss_anqp); 223780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_enabled); 224780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_enabled); 225780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_network_properties); 226780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_network_properties); 227d4f2939cSRui Paulo 228d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_wps_start(DBusMessage *message, 229d4f2939cSRui Paulo struct wpa_supplicant *wpa_s); 230d4f2939cSRui Paulo 231325151a3SRui Paulo DBusMessage * wpas_dbus_handler_wps_cancel(DBusMessage *message, 232325151a3SRui Paulo struct wpa_supplicant *wpa_s); 233325151a3SRui Paulo 234780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_process_credentials); 235780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_process_credentials); 236780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_config_methods); 237780fb4a2SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_config_methods); 23885732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_wps_device_name); 23985732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_wps_device_name); 24085732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_wps_manufacturer); 24185732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_wps_manufacturer); 24285732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_wps_device_model_name); 24385732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_wps_device_model_name); 24485732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_wps_device_model_number); 24585732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_wps_device_model_number); 24685732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_wps_device_serial_number); 24785732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_wps_device_serial_number); 24885732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_wps_device_device_type); 24985732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_setter_wps_device_device_type); 25085732ac8SCy Schubert 25185732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_mesh_peers); 25285732ac8SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_mesh_group); 2535b9c547cSRui Paulo 254*a90b9d01SCy Schubert DECLARE_ACCESSOR(wpas_dbus_getter_signal_change); 255*a90b9d01SCy Schubert 2565b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_tdls_discover(DBusMessage *message, 2575b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 2585b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_tdls_setup(DBusMessage *message, 2595b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 2605b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_tdls_status(DBusMessage *message, 2615b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 2625b9c547cSRui Paulo DBusMessage * wpas_dbus_handler_tdls_teardown(DBusMessage *message, 2635b9c547cSRui Paulo struct wpa_supplicant *wpa_s); 26485732ac8SCy Schubert DBusMessage * 26585732ac8SCy Schubert wpas_dbus_handler_tdls_channel_switch(DBusMessage *message, 26685732ac8SCy Schubert struct wpa_supplicant *wpa_s); 26785732ac8SCy Schubert DBusMessage * 26885732ac8SCy Schubert wpas_dbus_handler_tdls_cancel_channel_switch(DBusMessage *message, 26985732ac8SCy Schubert struct wpa_supplicant *wpa_s); 2705b9c547cSRui Paulo 271780fb4a2SCy Schubert DBusMessage * wpas_dbus_handler_vendor_elem_add(DBusMessage *message, 272780fb4a2SCy Schubert struct wpa_supplicant *wpa_s); 273780fb4a2SCy Schubert DBusMessage * wpas_dbus_handler_vendor_elem_get(DBusMessage *message, 274780fb4a2SCy Schubert struct wpa_supplicant *wpa_s); 275780fb4a2SCy Schubert DBusMessage * wpas_dbus_handler_vendor_elem_remove( 276780fb4a2SCy Schubert DBusMessage *message, struct wpa_supplicant *wpa_s); 277780fb4a2SCy Schubert 278780fb4a2SCy Schubert DBusMessage * wpas_dbus_handler_save_config(DBusMessage *message, 279780fb4a2SCy Schubert struct wpa_supplicant *wpa_s); 280780fb4a2SCy Schubert 281d4f2939cSRui Paulo DBusMessage * wpas_dbus_error_invalid_args(DBusMessage *message, 282d4f2939cSRui Paulo const char *arg); 283d4f2939cSRui Paulo DBusMessage * wpas_dbus_error_unknown_error(DBusMessage *message, 284d4f2939cSRui Paulo const char *arg); 2855b9c547cSRui Paulo DBusMessage * wpas_dbus_error_no_memory(DBusMessage *message); 286d4f2939cSRui Paulo 287d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_subscribe_preq( 288d4f2939cSRui Paulo DBusMessage *message, struct wpa_supplicant *wpa_s); 289d4f2939cSRui Paulo DBusMessage * wpas_dbus_handler_unsubscribe_preq( 290d4f2939cSRui Paulo DBusMessage *message, struct wpa_supplicant *wpa_s); 291d4f2939cSRui Paulo 292d4f2939cSRui Paulo #endif /* CTRL_IFACE_DBUS_HANDLERS_NEW_H */ 293