summaryrefslogtreecommitdiffstats
path: root/src/audio-settings.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-10-01 07:22:45 +0200
committerMarcel Holtmann <marcel@holtmann.org>2010-10-01 07:22:45 +0200
commit2b3840e95cfc65b18959ec571243536b265644b6 (patch)
tree3c668eaa513e3b2e49dea7978e268ddfccf089e8 /src/audio-settings.c
parent3fd4af4fc242337dca0bc8f736022f4444d9358b (diff)
downloadofono-2b3840e95cfc65b18959ec571243536b265644b6.tar.bz2
audio: Add support for notifying about audio mode
Diffstat (limited to 'src/audio-settings.c')
-rw-r--r--src/audio-settings.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/audio-settings.c b/src/audio-settings.c
index 5c306e97..40f10f79 100644
--- a/src/audio-settings.c
+++ b/src/audio-settings.c
@@ -37,6 +37,7 @@ static GSList *g_drivers = NULL;
struct ofono_audio_settings {
ofono_bool_t active;
+ char *mode;
const struct ofono_audio_settings_driver *driver;
void *driver_data;
struct ofono_atom *atom;
@@ -61,6 +62,25 @@ void ofono_audio_settings_active_notify(struct ofono_audio_settings *as,
}
+void ofono_audio_settings_mode_notify(struct ofono_audio_settings *as,
+ const char *mode)
+{
+ const char *path = __ofono_atom_get_path(as->atom);
+ DBusConnection *conn = ofono_dbus_get_connection();
+
+ DBG("mode %s", mode);
+
+ g_free(as->mode);
+ as->mode = g_strdup(mode);
+
+ if (!as->mode)
+ return;
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_AUDIO_SETTINGS_INTERFACE,
+ "Mode", DBUS_TYPE_STRING, &as->mode);
+}
+
static DBusMessage *audio_get_properties_reply(DBusMessage *msg,
struct ofono_audio_settings *as)
{
@@ -80,6 +100,10 @@ static DBusMessage *audio_get_properties_reply(DBusMessage *msg,
ofono_dbus_dict_append(&dict, "Active", DBUS_TYPE_BOOLEAN, &as->active);
+ if (as->mode)
+ ofono_dbus_dict_append(&dict, "Mode",
+ DBUS_TYPE_STRING, &as->mode);
+
dbus_message_iter_close_container(&iter, &dict);
return reply;
@@ -149,6 +173,7 @@ static void audio_settings_remove(struct ofono_atom *atom)
if (as->driver && as->driver->remove)
as->driver->remove(as);
+ g_free(as->mode);
g_free(as);
}