static DBusMessage *request_scan(DBusConnection *conn, DBusMessage *msg, void *data) { enum connman_service_type type; const char *str; int err; DBG("conn %p", conn); dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); if (g_strcmp0(str, "") == 0) type = CONNMAN_SERVICE_TYPE_UNKNOWN; else if (g_strcmp0(str, "wifi") == 0) type = CONNMAN_SERVICE_TYPE_WIFI; else if (g_strcmp0(str, "wimax") == 0) type = CONNMAN_SERVICE_TYPE_WIMAX; else return __connman_error_invalid_arguments(msg); err = __connman_device_request_scan(type); if (err < 0) { if (err == -EINPROGRESS) { connman_error("Invalid return code from scan"); err = -EINVAL; } return __connman_error_failed(msg, -err); } return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); }
static DBusMessage *scan(DBusConnection *conn, DBusMessage *msg, void *data) { struct connman_technology *technology = data; int err; DBG ("technology %p request from %s", technology, dbus_message_get_sender(msg)); dbus_message_ref(msg); technology->scan_pending = g_slist_prepend(technology->scan_pending, msg); err = __connman_device_request_scan(technology->type); if (err < 0) reply_scan_pending(technology, err); return NULL; }