diff --git a/include/audio-settings.h b/include/audio-settings.h index 635e26f1..444950bf 100644 --- a/include/audio-settings.h +++ b/include/audio-settings.h @@ -39,6 +39,8 @@ struct ofono_audio_settings_driver { void ofono_audio_settings_active_notify(struct ofono_audio_settings *as, ofono_bool_t active); +void ofono_audio_settings_mode_notify(struct ofono_audio_settings *as, + const char *mode); int ofono_audio_settings_driver_register(const struct ofono_audio_settings_driver *d); void ofono_audio_settings_driver_unregister(const struct ofono_audio_settings_driver *d); 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); }