X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=wpa_supplicant%2Fctrl_iface_dbus.c;h=8e69f4d4071264e92646a4cfc52d8bc41ac45f2b;hb=dde787cc314cd04caa4ea5f031cc8a02495ca513;hp=c4e329c53e45a7ef986e2d52e97fe43d0e801d7c;hpb=44e8544d6995f5119d0155109a742f57ad8abd32;p=android-x86%2Fexternal-wpa_supplicant_6.git diff --git a/wpa_supplicant/ctrl_iface_dbus.c b/wpa_supplicant/ctrl_iface_dbus.c index c4e329c..8e69f4d 100644 --- a/wpa_supplicant/ctrl_iface_dbus.c +++ b/wpa_supplicant/ctrl_iface_dbus.c @@ -540,6 +540,8 @@ static DBusHandlerResult wpas_iface_message_handler(DBusConnection *connection, wpa_s); else if (!strcmp(method, "state")) reply = wpas_dbus_iface_get_state(message, wpa_s); + else if (!strcmp(method, "scanning")) + reply = wpas_dbus_iface_get_scanning(message, wpa_s); else if (!strcmp(method, "setBlobs")) reply = wpas_dbus_iface_set_blobs(message, wpa_s); else if (!strcmp(method, "removeBlobs")) @@ -603,6 +605,9 @@ static DBusHandlerResult wpas_message_handler(DBusConnection *connection, } else if (!strcmp(method, "getInterface")) { reply = wpas_dbus_global_get_interface( message, ctrl_iface->global); + } else if (!strcmp(method, "setDebugParams")) { + reply = wpas_dbus_global_set_debugparams( + message, ctrl_iface->global); } } @@ -741,6 +746,58 @@ out: } +/** + * wpa_supplicant_dbus_notify_scanning - send scanning status + * @wpa_s: %wpa_supplicant network interface data + * Returns: 0 on success, -1 on failure + * + * Notify listeners of interface scanning state changes + */ +void wpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s) +{ + struct ctrl_iface_dbus_priv *iface = wpa_s->global->dbus_ctrl_iface; + DBusMessage *_signal; + const char *path; + dbus_bool_t scanning = wpa_s->scanning ? TRUE : FALSE; + + /* Do nothing if the control interface is not turned on */ + if (iface == NULL) + return; + + path = wpa_supplicant_get_dbus_path(wpa_s); + if (path == NULL) { + perror("wpa_supplicant_dbus_notify_scanning[dbus]: interface " + "didn't have a dbus path"); + wpa_printf(MSG_ERROR, + "%s[dbus]: interface didn't have a dbus path; " + "can't send scanning signal.", __FUNCTION__); + return; + } + _signal = dbus_message_new_signal(path, WPAS_DBUS_IFACE_INTERFACE, + "Scanning"); + if (_signal == NULL) { + perror("wpa_supplicant_dbus_notify_scanning[dbus]: couldn't " + "create dbus signal; likely out of memory"); + wpa_printf(MSG_ERROR, "%s[dbus]: dbus control interface: not " + "enough memory to send scan results signal.", + __FUNCTION__); + return; + } + + if (dbus_message_append_args(_signal, + DBUS_TYPE_BOOLEAN, &scanning, + DBUS_TYPE_INVALID)) { + dbus_connection_send(iface->con, _signal, NULL); + } else { + perror("wpa_supplicant_dbus_notify_scanning[dbus]: not enough " + "memory to construct signal."); + wpa_printf(MSG_ERROR, "%s[dbus]: not enough memory to " + "construct signal.", __FUNCTION__); + } + dbus_message_unref(_signal); +} + + #ifdef CONFIG_WPS void wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s, const struct wps_credential *cred) @@ -795,6 +852,11 @@ void wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s, out: dbus_message_unref(_signal); } +#else /* CONFIG_WPS */ +void wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s, + const struct wps_credential *cred) +{ +} #endif /* CONFIG_WPS */