Exemplo n.º 1
0
static void set_volume(uint8_t volume, struct audio_device *dev, void *user_data)
{
	struct media_player *mp = user_data;
	GSList *l;

	if (mp->volume == volume)
		return;

	mp->volume = volume;

	for (l = mp->adapter->endpoints; l; l = l->next) {
		struct media_endpoint *endpoint = l->data;
		struct media_transport *transport;

		/* Volume is A2DP only */
		if (endpoint->sep == NULL)
			continue;

		transport = find_device_transport(endpoint, dev);
		if (transport == NULL)
			continue;

		media_transport_update_volume(transport, volume);
	}
}
Exemplo n.º 2
0
static gboolean set_configuration(struct media_endpoint *endpoint,
					uint8_t *configuration, size_t size,
					media_endpoint_cb_t cb,
					void *user_data,
					GDestroyNotify destroy)
{
	struct a2dp_config_data *data = user_data;
	struct btd_device *device = a2dp_setup_get_device(data->setup);
	DBusConnection *conn = btd_get_dbus_connection();
	DBusMessage *msg;
	const char *path;
	DBusMessageIter iter;
	struct media_transport *transport;

	transport = find_device_transport(endpoint, device);

	if (transport != NULL)
		return FALSE;

	transport = media_transport_create(device, configuration, size,
								endpoint);
	if (transport == NULL)
		return FALSE;

	msg = dbus_message_new_method_call(endpoint->sender, endpoint->path,
						MEDIA_ENDPOINT_INTERFACE,
						"SetConfiguration");
	if (msg == NULL) {
		error("Couldn't allocate D-Bus message");
		media_transport_destroy(transport);
		return FALSE;
	}

	endpoint->transports = g_slist_append(endpoint->transports, transport);

	dbus_message_iter_init_append(msg, &iter);

	path = media_transport_get_path(transport);
	dbus_message_iter_append_basic(&iter, DBUS_TYPE_OBJECT_PATH, &path);

	g_dbus_get_properties(conn, path, "org.bluez.MediaTransport1", &iter);

	return media_endpoint_async_call(msg, endpoint, cb, user_data, destroy);
}