From 954a25724ff381df97c0cc15bda110b9da4273ea Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 27 Nov 2006 12:48:08 +0000 Subject: Implement SpeakerGainChanged and MicrophoneGainChanged signals --- audio/headset.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/audio/headset.c b/audio/headset.c index 4491fc2e..742bf558 100644 --- a/audio/headset.c +++ b/audio/headset.c @@ -200,7 +200,40 @@ static DBusHandlerResult err_failed(DBusConnection *conn, DBusMessage *msg) static void send_gain_setting(const char *buf) { - /* Not yet implemented */ + const char *name; + DBusMessage *signal; + dbus_uint16_t gain; + + if (strlen(buf) < 6) { + error("Too short string for Gain setting"); + return; + } + + switch (buf[3]) { + case 'S': + name = "SpeakerGainChanged"; + break; + case 'M': + name = "MicrophoneGainChanged"; + break; + default: + error("Unknown gain setting"); + return; + } + + signal = dbus_message_new_signal(HEADSET_PATH, "org.bluez.Headset", name); + if (!signal) { + error("Unable to allocate new GainChanged signal"); + return; + } + + gain = (dbus_uint16_t) strtol(&buf[5], NULL, 10); + + dbus_message_append_args(signal, DBUS_TYPE_UINT16, &gain, + DBUS_TYPE_INVALID); + + dbus_connection_send(connection, signal, NULL); + dbus_message_unref(signal); } static void send_simple_signal(const char *name) -- cgit