From 757d23d4fcd1d3db6f20f3d399e118cb65be9a10 Mon Sep 17 00:00:00 2001 From: Jakub Adam Date: Tue, 22 May 2012 00:02:55 +0200 Subject: [PATCH] media: allow to make a call to Audio Test Service when it is available --- src/api/sipe-core.h | 7 +++++++ src/core/sipe-media.c | 14 ++++++++++++++ src/purple/purple-plugin.c | 13 +++++++++++++ 3 files changed, 34 insertions(+) diff --git a/src/api/sipe-core.h b/src/api/sipe-core.h index 53e140f4..1e9d82e5 100644 --- a/src/api/sipe-core.h +++ b/src/api/sipe-core.h @@ -379,6 +379,13 @@ void sipe_core_media_connect_conference(struct sipe_core_public *sipe_public, */ gboolean sipe_core_media_in_call(struct sipe_core_public *sipe_public); +/** + * Checks voice quality by making a call to the test service + * + * @param sipe_public (in) SIPE core data. + */ +void sipe_core_media_test_call(struct sipe_core_public *sipe_public); + /* file transfer */ struct sipe_file_transfer *sipe_core_ft_allocate(struct sipe_core_public *sipe_public); void sipe_core_ft_deallocate(struct sipe_file_transfer *ft); diff --git a/src/core/sipe-media.c b/src/core/sipe-media.c index d1a847ae..22f1bded 100644 --- a/src/core/sipe-media.c +++ b/src/core/sipe-media.c @@ -817,6 +817,20 @@ gboolean sipe_core_media_in_call(struct sipe_core_public *sipe_public) return FALSE; } +void sipe_core_media_test_call(struct sipe_core_public *sipe_public) +{ + struct sipe_core_private *sipe_private = SIPE_CORE_PRIVATE; + if (!sipe_private->test_call_bot_uri) { + sipe_backend_notify_error(sipe_public, + _("Unable to establish a call"), + _("Audio Test Service is not available.")); + return; + } + + sipe_core_media_initiate_call(sipe_public, + sipe_private->test_call_bot_uri, FALSE); +} + void process_incoming_invite_call(struct sipe_core_private *sipe_private, struct sipmsg *msg) diff --git a/src/purple/purple-plugin.c b/src/purple/purple-plugin.c index 6896391f..7723aa84 100644 --- a/src/purple/purple-plugin.c +++ b/src/purple/purple-plugin.c @@ -750,6 +750,14 @@ static void sipe_purple_join_conference_cb(PurpleConnection *gc, } } +#ifdef HAVE_VV +static void sipe_purple_test_call(PurplePluginAction *action) +{ + PurpleConnection *gc = (PurpleConnection *) action->context; + sipe_core_media_test_call(PURPLE_GC_TO_SIPE_CORE_PUBLIC); +} +#endif + static void sipe_purple_show_join_conference(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *) action->context; @@ -801,6 +809,11 @@ static GList *sipe_purple_actions(SIPE_UNUSED_PARAMETER PurplePlugin *plugin, act = purple_plugin_action_new(_("Contact search..."), sipe_purple_show_find_contact); menu = g_list_prepend(menu, act); +#ifdef HAVE_VV + act = purple_plugin_action_new(_("Test call"), sipe_purple_test_call); + menu = g_list_prepend(menu, act); +#endif + act = purple_plugin_action_new(_("Join scheduled conference..."), sipe_purple_show_join_conference); menu = g_list_prepend(menu, act); -- 2.11.4.GIT