char *interface;
};
-const struct dbus_path g_paths[AUDIO_PROVIDER_MAX] = {
+static const struct dbus_path g_paths[AUDIO_PROVIDER_MAX] = {
[AUDIO_PROVIDER_SOUND_SERVER] = {
.bus_name = "org.tizen.SoundServer",
.object = "/org/tizen/SoundServer1",
.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"
}
};
-const mm_sound_dbus_method_info_t g_methods[AUDIO_METHOD_MAX] = {
+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",
[AUDIO_METHOD_SET_VOLUME_LEVEL] = {
.name = "SetVolumeLevel",
},
+ [AUDIO_METHOD_SET_MUTE] = {
+ .name = "SetVolumeMute",
+ },
[AUDIO_METHOD_GET_CONNECTED_DEVICE_LIST] = {
.name = "GetConnectedDeviceList",
},
},
};
-const mm_sound_dbus_signal_info_t g_events[AUDIO_EVENT_MAX] = {
+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",
},
[AUDIO_EVENT_CLIENT_HANDLED] = {
.name = "ClientSignalHandled",
+ },
+ [AUDIO_EVENT_DUCKING_STATE_CHANGED] = {
+ .name = "DuckingStateChanged",
}
};
Wrapper Functions of GDbus
******************************************************************************************/
-static int _parse_error_msg(char *full_err_msg, char **err_name, char **err_msg)
+static int _convert_error_name(const 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;
- }
+ int i;
- *err_name = _err_name;
- *err_msg = _err_msg;
-
- return 0;
-}
-
-static int _convert_error_name(const char *err_name)
-{
- int i = 0;
-
- 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;
}
debug_error("intf null");
if (!method)
debug_error("method null");
+ g_variant_unref(args);
return MM_ERROR_INVALID_ARGUMENT;
}
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);
}
- *result = dbus_reply;
+ if (result)
+ *result = dbus_reply;
return ret;
}
if (method_type >= AUDIO_METHOD_MAX) {
debug_error("Invalid method type : %d", method_type);
+ g_variant_unref(args);
return MM_ERROR_INVALID_ARGUMENT;
}
if (provider >= AUDIO_PROVIDER_MAX) {
debug_error("Invalid provider : %d", provider);
+ g_variant_unref(args);
return MM_ERROR_INVALID_ARGUMENT;
}
if (!(conn = _dbus_get_connection(G_BUS_TYPE_SYSTEM))) {
debug_error("Get Dbus Connection Error");
+ g_variant_unref(args);
return MM_ERROR_SOUND_INTERNAL;
}
(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))
+ (cb_data->user_cb)(AUDIO_EVENT_DUCKING_STATE_CHANGED, params, cb_data->user_data);
}
static void callback_data_free_func(gpointer data)
return MM_ERROR_SOUND_INTERNAL;
}
- if (!(cb_data = (struct callback_data*)g_malloc0(sizeof(struct callback_data)))) {
+ if (!(cb_data = (struct callback_data*)g_try_malloc0(sizeof(struct callback_data)))) {
debug_error("Allocate for callback data failed");
return MM_ERROR_SOUND_INTERNAL;
}
return MM_ERROR_NONE;
fail:
- free(cb_data);
+ g_free(cb_data);
return MM_ERROR_SOUND_INTERNAL;
}