Adds checking dbus error messages
[platform/core/multimedia/libmm-sound.git] / common / mm_sound_dbus.c
index a8f964b..010b9e8 100644 (file)
@@ -45,6 +45,11 @@ static const struct dbus_path g_paths[AUDIO_PROVIDER_MAX] = {
                .bus_name = "org.tizen.AudioClient",
                .object = "/org/tizen/AudioClient1",
                .interface = "org.tizen.AudioClient1"
+       },
+       [AUDIO_PROVIDER_SOUND_PLAYER] = {
+               .bus_name = "org.pulseaudio.Server",
+               .object = "/org/pulseaudio/SoundPlayer",
+               .interface = "org.pulseaudio.SoundPlayer"
        }
 };
 
@@ -52,11 +57,11 @@ static const mm_sound_dbus_method_info_t g_methods[AUDIO_METHOD_MAX] = {
        [AUDIO_METHOD_TEST] = {
                .name = "MethodTest1",
        },
-       [AUDIO_METHOD_PLAY_FILE_START_WITH_STREAM_INFO] = {
-               .name = "PlayFileStartWithStreamInfo",
+       [AUDIO_METHOD_SOUND_PLAY] = {
+               .name = "SoundPlay",
        },
-       [AUDIO_METHOD_PLAY_FILE_STOP] = {
-               .name = "PlayFileStop",
+       [AUDIO_METHOD_SOUND_STOP] = {
+               .name = "SoundStop",
        },
        [AUDIO_METHOD_PLAY_DTMF_WITH_STREAM_INFO] = {
                .name = "PlayDTMFWithStreamInfo",
@@ -100,8 +105,8 @@ static const mm_sound_dbus_signal_info_t g_events[AUDIO_EVENT_MAX] = {
        [AUDIO_EVENT_TEST] = {
                .name = "SignalTest1",
        },
-       [AUDIO_EVENT_PLAY_FILE_END] = {
-               .name = "PlayFileEnd",
+       [AUDIO_EVENT_SOUND_PLAY_EOS] = {
+               .name = "EOS",
        },
        [AUDIO_EVENT_VOLUME_CHANGED] = {
                .name = "VolumeChanged",
@@ -164,37 +169,15 @@ static const GDBusErrorEntry mm_sound_error_entries[] = {
                Wrapper Functions of GDbus
 ******************************************************************************************/
 
-static int _parse_error_msg(char *full_err_msg, char **err_name, char **err_msg)
-{
-       char *save_p = NULL, *domain, *_err_name, *_err_msg;
-
-       if (!(domain = strtok_r(full_err_msg, ":", &save_p))) {
-               debug_error("get domain failed");
-               return -1;
-       }
-       if (!(_err_name = strtok_r(NULL, ":", &save_p))) {
-               debug_error("get err name failed");
-               return -1;
-       }
-       if (!(_err_msg = strtok_r(NULL, ":", &save_p))) {
-               debug_error("get err msg failed");
-               return -1;
-       }
-
-       *err_name = _err_name;
-       *err_msg = _err_msg;
-
-       return 0;
-}
-
-static int _convert_error_name(const char *err_name)
+static int _convert_error_name(const char *err_msg)
 {
-       int i = 0;
+       int i;
 
-       debug_error("error name is [%s]", err_name);
+       if (!err_msg)
+               return MM_ERROR_SOUND_INTERNAL;
 
        for (i = 0; i < G_N_ELEMENTS(mm_sound_error_entries); i++) {
-               if (!strcmp(mm_sound_error_entries[i].dbus_error_name, err_name))
+               if (strstr(err_msg, mm_sound_error_entries[i].dbus_error_name))
                        return mm_sound_error_entries[i].error_code;
        }
 
@@ -229,17 +212,11 @@ static int _dbus_method_call(GDBusConnection *conn, const char *bus_name, const
                                                                                        NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
 
        if (!dbus_reply || err) {
-               char *err_name = NULL, *err_msg = NULL;
                debug_error("Method Call '%s.%s' Failed, %s", intf, method, err ? err->message : NULL);
                ret = MM_ERROR_SOUND_INTERNAL;
-               if (err) {
-                       if (_parse_error_msg(err->message, &err_name, &err_msg) < 0) {
-                               debug_error("failed to parse error message");
-                               g_error_free(err);
-                               return MM_ERROR_SOUND_INTERNAL;
-                       }
-                       ret = _convert_error_name(err_name);
-               }
+               if (err)
+                       ret = _convert_error_name(err->message);
+
                g_error_free(err);
        } else {
                debug_log("Method Call '%s.%s' Success", intf, method);
@@ -403,8 +380,8 @@ static void _dbus_signal_callback(GDBusConnection *connection,
                (cb_data->user_cb)(AUDIO_EVENT_FOCUS_CHANGED, params, cb_data->user_data);
        else if (!strcmp(signal_name, g_events[AUDIO_EVENT_FOCUS_WATCH].name))
                (cb_data->user_cb)(AUDIO_EVENT_FOCUS_WATCH, params, cb_data->user_data);
-       else if (!strcmp(signal_name, g_events[AUDIO_EVENT_PLAY_FILE_END].name))
-               (cb_data->user_cb)(AUDIO_EVENT_PLAY_FILE_END, params, cb_data->user_data);
+       else if (!strcmp(signal_name, g_events[AUDIO_EVENT_SOUND_PLAY_EOS].name))
+               (cb_data->user_cb)(AUDIO_EVENT_SOUND_PLAY_EOS, params, cb_data->user_data);
        else if (!strcmp(signal_name, g_events[AUDIO_EVENT_DEVICE_RUNNING_CHANGED].name))
                (cb_data->user_cb)(AUDIO_EVENT_DEVICE_RUNNING_CHANGED, params, cb_data->user_data);
        else if (!strcmp(signal_name, g_events[AUDIO_EVENT_DUCKING_STATE_CHANGED].name))