From 3e3760a996068370109aa657ed85ab4f830ae5a6 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Mon, 26 Feb 2007 21:38:10 +0000 Subject: [PATCH] add flags to the application interface for marking if apps support no media mode. FSCORE-7 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4400 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_module_interfaces.h | 4 ++- src/include/switch_types.h | 5 ++++ .../mod_bridgecall/mod_bridgecall.c | 1 + .../mod_conference/mod_conference.c | 1 + .../applications/mod_dptools/mod_dptools.c | 19 +++++++++++++ src/mod/applications/mod_echo/mod_echo.c | 5 +++- src/mod/applications/mod_enum/mod_enum.c | 2 ++ .../applications/mod_ivrtest/mod_ivrtest.c | 8 ++++++ src/mod/applications/mod_park/mod_park.c | 4 ++- .../applications/mod_playback/mod_playback.c | 28 +++++++++++++++---- src/mod/applications/mod_rss/mod_rss.c | 1 + .../mod_event_socket/mod_event_socket.c | 1 + src/mod/languages/mod_perl/mod_perl.c | 5 +++- src/mod/languages/mod_php/mod_php.c | 7 +++-- src/mod/languages/mod_python/mod_python.c | 5 +++- src/mod/languages/mod_ruby/mod_ruby.c | 5 +++- .../mod_spidermonkey/mod_spidermonkey.c | 7 +++-- src/mod/timers/mod_softtimer/mod_softtimer.c | 5 +--- 18 files changed, 93 insertions(+), 20 deletions(-) diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index 704ec248ba..ccd0ba3892 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -595,6 +595,8 @@ struct switch_application_interface { const char *short_desc; /*! an example of the application syntax */ const char *syntax; + /*! flags to control behaviour */ + uint32_t flags; const struct switch_application_interface *next; }; @@ -606,7 +608,7 @@ struct switch_api_interface { const char *desc; /*! function the api call uses */ switch_api_function_t function; - /*! an example of the application syntax */ + /*! an example of the api syntax */ const char *syntax; const struct switch_api_interface *next; }; diff --git a/src/include/switch_types.h b/src/include/switch_types.h index e3965951d3..7443e7fb4c 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -531,6 +531,11 @@ typedef enum { } switch_frame_flag_t; +typedef enum { + SAF_NONE = 0, + SAF_SUPPORT_NOMEDIA = (1 << 0) +} switch_application_flag_t; + /*! \enum switch_signal_t \brief Signals to send to channels diff --git a/src/mod/applications/mod_bridgecall/mod_bridgecall.c b/src/mod/applications/mod_bridgecall/mod_bridgecall.c index be0482f930..fc9c0305e5 100644 --- a/src/mod/applications/mod_bridgecall/mod_bridgecall.c +++ b/src/mod/applications/mod_bridgecall/mod_bridgecall.c @@ -118,6 +118,7 @@ static const switch_application_interface_t bridge_application_interface = { /* long_desc */ "Bridge the audio between two sessions", /* short_desc */ "Bridge Audio", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA }; static const switch_loadable_module_interface_t mod_bridgecall_module_interface = { diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 01f1a5f4df..eaa080c4e0 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -4088,6 +4088,7 @@ static const switch_application_interface_t conference_application_interface = { /*.interface_name */ global_app_name, /*.application_function */ conference_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ NULL }; diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 033e8f1d5d..f1ebedfea2 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -547,6 +547,7 @@ static const switch_application_interface_t queuedtmf_application_interface = { /* long_desc */ "Queue dtmf to be sent from a session", /* short_desc */ "Queue dtmf to be sent", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ NULL }; @@ -556,6 +557,7 @@ static const switch_application_interface_t redirect_application_interface = { /* long_desc */ "Send a redirect message to a session.", /* short_desc */ "Send session redirect", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &queuedtmf_application_interface }; @@ -565,6 +567,7 @@ static const switch_application_interface_t ivr_application_interface = { /* long_desc */ "Run an ivr menu.", /* short_desc */ "Run an ivr menu", /* syntax */ "", + /* flags */ SAF_NONE, /*.next */ &redirect_application_interface }; @@ -574,6 +577,7 @@ static const switch_application_interface_t detect_speech_application_interface /* long_desc */ "Detect speech on a channel.", /* short_desc */ "Detect speech", /* syntax */ " [] OR grammar [] OR pause OR resume", + /* flags */ SAF_NONE, /*.next */ &ivr_application_interface }; @@ -583,6 +587,7 @@ static const switch_application_interface_t ring_ready_application_interface = { /* long_desc */ "Indicate Ring_Ready on a channel.", /* short_desc */ "Indicate Ring_Ready", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &detect_speech_application_interface }; @@ -592,6 +597,7 @@ static const switch_application_interface_t unset_application_interface = { /* long_desc */ "Unset a channel varaible for the channel calling the application.", /* short_desc */ "Unset a channel varaible", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &ring_ready_application_interface }; @@ -601,6 +607,7 @@ static const switch_application_interface_t set_application_interface = { /* long_desc */ "Set a channel varaible for the channel calling the application.", /* short_desc */ "Set a channel varaible", /* syntax */ "=", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &unset_application_interface }; @@ -610,6 +617,7 @@ static const switch_application_interface_t export_application_interface = { /* long_desc */ "Set and export a channel varaible for the channel calling the application.", /* short_desc */ "Export a channel varaible across a bridge", /* syntax */ "=", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &set_application_interface }; @@ -619,6 +627,7 @@ static const switch_application_interface_t info_application_interface = { /* long_desc */ "Display Call Info", /* short_desc */ "Display Call Info", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &export_application_interface }; @@ -628,6 +637,7 @@ static const switch_application_interface_t log_application_interface = { /* long_desc */ "Logs a channel varaible for the channel calling the application.", /* short_desc */ "Logs a channel varaible", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &info_application_interface }; @@ -638,6 +648,7 @@ static const switch_application_interface_t hangup_application_interface = { /* long_desc */ "Hangup the call for a channel.", /* short_desc */ "Hangup the call", /* syntax */ "[]", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &log_application_interface }; @@ -648,6 +659,7 @@ static const switch_application_interface_t answer_application_interface = { /* long_desc */ "Answer the call for a channel.", /* short_desc */ "Answer the call", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &hangup_application_interface }; @@ -658,6 +670,7 @@ static const switch_application_interface_t pre_answer_application_interface = { /* long_desc */ "Pre-Answer the call for a channel.", /* short_desc */ "Pre-Answer the call", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &answer_application_interface }; @@ -668,6 +681,7 @@ static const switch_application_interface_t eval_application_interface = { /* long_desc */ "Do Nothing", /* short_desc */ "Do Nothing", /* syntax */ "", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &pre_answer_application_interface }; @@ -678,6 +692,7 @@ static const switch_application_interface_t phrase_application_interface = { /* long_desc */ "Say a Phrase", /* short_desc */ "Say a Phrase", /* syntax */ ",", + /* flags */ SAF_NONE, /*.next */ &eval_application_interface }; @@ -688,6 +703,7 @@ static const switch_application_interface_t strftime_application_interface = { /* long_desc */ NULL, /* short_desc */ NULL, /* syntax */ NULL, + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &phrase_application_interface }; @@ -698,6 +714,7 @@ static const switch_application_interface_t sleep_application_interface = { /* long_desc */ "Pause the channel for a given number of milliseconds, consuming the audio for that period of time.", /* short_desc */ "Pause a channel", /* syntax */ "", + /* flags */ SAF_NONE, /* next */ &strftime_application_interface }; @@ -707,6 +724,7 @@ static const switch_application_interface_t transfer_application_interface = { /* long_desc */ "Immediatly transfer the calling channel to a new extension", /* short_desc */ "Transfer a channel", /* syntax */ " [ ]", + /* flags */ SAF_SUPPORT_NOMEDIA, /* next */ &sleep_application_interface }; @@ -716,6 +734,7 @@ static const switch_application_interface_t privacy_application_interface = { /* long_desc */ "Set caller privacy on calls.", /* short_desc */ "Set privacy on calls", /* syntax */ "off|on|name|full|number", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ &transfer_application_interface }; diff --git a/src/mod/applications/mod_echo/mod_echo.c b/src/mod/applications/mod_echo/mod_echo.c index 27158f8595..47f06db920 100644 --- a/src/mod/applications/mod_echo/mod_echo.c +++ b/src/mod/applications/mod_echo/mod_echo.c @@ -48,7 +48,10 @@ static void echo_function(switch_core_session_t *session, char *data) static const switch_application_interface_t echo_application_interface = { /*.interface_name */ "echo", /*.application_function */ echo_function, - NULL,NULL,NULL,NULL + /* long_desc */ "Perform an echo test against the calling channel", + /* short_desc */ "Echo", + /* syntax */ "", + /* flags */ SAF_NONE, }; static switch_loadable_module_interface_t echo_module_interface = { diff --git a/src/mod/applications/mod_enum/mod_enum.c b/src/mod/applications/mod_enum/mod_enum.c index 4bc9813c0d..4c8004e42c 100644 --- a/src/mod/applications/mod_enum/mod_enum.c +++ b/src/mod/applications/mod_enum/mod_enum.c @@ -689,6 +689,7 @@ static const switch_application_interface_t enum_application_interface = { /* long_desc */ "Perform an ENUM lookup", /* short_desc */ "Perform an ENUM lookup", /* syntax */ " []", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ NULL }; @@ -729,3 +730,4 @@ SWITCH_MOD_DECLARE(switch_status_t) switch_module_load(const switch_loadable_mod return SWITCH_STATUS_SUCCESS; } + diff --git a/src/mod/applications/mod_ivrtest/mod_ivrtest.c b/src/mod/applications/mod_ivrtest/mod_ivrtest.c index 6f3c22df17..267de1543a 100644 --- a/src/mod/applications/mod_ivrtest/mod_ivrtest.c +++ b/src/mod/applications/mod_ivrtest/mod_ivrtest.c @@ -462,6 +462,7 @@ static const switch_application_interface_t bug_application_interface = { /*.interface_name */ "bugtest", /*.application_function */ bugtest_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ NULL }; @@ -469,6 +470,7 @@ static const switch_application_interface_t ivr_application_interface = { /*.interface_name */ "ivrmenu", /*.application_function */ ivr_application_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ &bug_application_interface }; @@ -476,6 +478,7 @@ static const switch_application_interface_t xml_application_interface = { /*.interface_name */ "xml", /*.application_function */ xml_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ &ivr_application_interface }; @@ -483,6 +486,7 @@ static const switch_application_interface_t disast_application_interface = { /*.interface_name */ "disast", /*.application_function */ disast_function, NULL, NULL, NULL, + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next*/ &xml_application_interface }; @@ -490,6 +494,7 @@ static const switch_application_interface_t tts_application_interface = { /*.interface_name */ "tts", /*.application_function */ tts_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ &disast_application_interface }; @@ -497,6 +502,7 @@ static const switch_application_interface_t dirtest_application_interface = { /*.interface_name */ "dirtest", /*.application_function */ dirtest_function, NULL, NULL, NULL, + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next*/ &tts_application_interface }; @@ -504,6 +510,7 @@ static const switch_application_interface_t ivrtest_application_interface = { /*.interface_name */ "ivrtest", /*.application_function */ ivrtest_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ &dirtest_application_interface }; @@ -511,6 +518,7 @@ static const switch_application_interface_t asrtest_application_interface = { /*.interface_name */ "asrtest", /*.application_function */ asrtest_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ &ivrtest_application_interface }; diff --git a/src/mod/applications/mod_park/mod_park.c b/src/mod/applications/mod_park/mod_park.c index 4aadd7ed4d..af358ced34 100644 --- a/src/mod/applications/mod_park/mod_park.c +++ b/src/mod/applications/mod_park/mod_park.c @@ -41,7 +41,9 @@ static void park_function(switch_core_session_t *session, char *data) static const switch_application_interface_t park_application_interface = { /*.interface_name */ "park", /*.application_function */ park_function, - NULL,NULL,NULL,NULL + NULL,NULL,NULL, + /* flags */ SAF_NONE, + NULL }; static switch_loadable_module_interface_t park_module_interface = { diff --git a/src/mod/applications/mod_playback/mod_playback.c b/src/mod/applications/mod_playback/mod_playback.c index 129d69bb6f..c235ae3252 100644 --- a/src/mod/applications/mod_playback/mod_playback.c +++ b/src/mod/applications/mod_playback/mod_playback.c @@ -177,13 +177,20 @@ static void stop_record_session_function(switch_core_session_t *session, char *d static const switch_application_interface_t speak_application_interface = { /*.interface_name */ "speak", - /*.application_function */ speak_function + /*.application_function */ speak_function, + /* long_desc */ "Speak text to a channel via the tts interface", + /* short_desc */ "Speak text", + /* syntax */ "||", + /* flags */ SAF_NONE, }; static const switch_application_interface_t record_application_interface = { /*.interface_name */ "record", /*.application_function */ record_function, - NULL,NULL,NULL, + /* long_desc */ "Record a file from the channels input", + /* short_desc */ "Record File", + /* syntax */ " [+time_limit_ms]", + /* flags */ SAF_NONE, &speak_application_interface }; @@ -191,7 +198,10 @@ static const switch_application_interface_t record_application_interface = { static const switch_application_interface_t record_session_application_interface = { /*.interface_name */ "record_session", /*.application_function */ record_session_function, - NULL,NULL,NULL, + /* long_desc */ "Starts a background recording of the entire session", + /* short_desc */ "Record Session", + /* syntax */ "", + /* flags */ SAF_NONE, &record_application_interface }; @@ -199,15 +209,21 @@ static const switch_application_interface_t record_session_application_interface static const switch_application_interface_t stop_record_session_application_interface = { /*.interface_name */ "stop_record_session", /*.application_function */ stop_record_session_function, - NULL,NULL,NULL, + /* long_desc */ "Stops a background recording of the entire session", + /* short_desc */ "Stop Record Session", + /* syntax */ "", + /* flags */ SAF_NONE, &record_session_application_interface }; static const switch_application_interface_t playback_application_interface = { /*.interface_name */ "playback", /*.application_function */ playback_function, - NULL,NULL,NULL, - /*.next*/ &stop_record_session_application_interface + /* long_desc */ "Playback a file to the channel", + /* short_desc */ "Playback File", + /* syntax */ "", + /* flags */ SAF_NONE, + /*.next*/ &stop_record_session_application_interface }; static const switch_loadable_module_interface_t mod_playback_module_interface = { diff --git a/src/mod/applications/mod_rss/mod_rss.c b/src/mod/applications/mod_rss/mod_rss.c index b337e74558..8dd096431c 100644 --- a/src/mod/applications/mod_rss/mod_rss.c +++ b/src/mod/applications/mod_rss/mod_rss.c @@ -658,6 +658,7 @@ static const switch_application_interface_t rss_application_interface = { /*.interface_name */ "rss", /*.application_function */ rss_function, NULL, NULL, NULL, + /* flags */ SAF_NONE, /*.next*/ NULL }; diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index 7fb12c079d..1c332d1d09 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -252,6 +252,7 @@ static const switch_application_interface_t socket_application_interface = { /* long_desc */ "Connect to a socket", /* short_desc */ "Connect to a socket", /* syntax */ "[:]", + /* flags */ SAF_SUPPORT_NOMEDIA, /*.next */ NULL }; diff --git a/src/mod/languages/mod_perl/mod_perl.c b/src/mod/languages/mod_perl/mod_perl.c index f41744b524..db39f61516 100644 --- a/src/mod/languages/mod_perl/mod_perl.c +++ b/src/mod/languages/mod_perl/mod_perl.c @@ -82,7 +82,10 @@ static void perl_function(switch_core_session_t *session, char *data) static const switch_application_interface_t perl_application_interface = { /*.interface_name */ "perl", - /*.application_function */ perl_function + /*.application_function */ perl_function, + NULL, NULL, NULL, + /* flags */ SAF_NONE, /* should we support no media mode here? If so, we need to detect the mode, and either disable the media functions or indicate media if/when we need */ + /*.next*/ NULL }; static switch_loadable_module_interface_t perl_module_interface = { diff --git a/src/mod/languages/mod_php/mod_php.c b/src/mod/languages/mod_php/mod_php.c index 6fa98f080f..200e715bf2 100644 --- a/src/mod/languages/mod_php/mod_php.c +++ b/src/mod/languages/mod_php/mod_php.c @@ -256,8 +256,11 @@ static void php_function(switch_core_session_t *session, char *data) } static const switch_application_interface_t php_application_interface = { - /*.interface_name */ "php", - /*.application_function */ php_function + /*.interface_name */ "php", + /*.application_function */ php_function, + NULL, NULL, NULL, + /* flags */ SAF_NONE, /* should we support no media mode here? If so, we need to detect the mode, and either disable the media functions or indicate media if/when we need */ + /*.next*/ NULL }; static switch_loadable_module_interface_t php_module_interface = { diff --git a/src/mod/languages/mod_python/mod_python.c b/src/mod/languages/mod_python/mod_python.c index e4472575a5..c288850364 100644 --- a/src/mod/languages/mod_python/mod_python.c +++ b/src/mod/languages/mod_python/mod_python.c @@ -86,7 +86,10 @@ static switch_status_t launch_python(char *text, switch_core_session_t *session, static const switch_application_interface_t python_application_interface = { /*.interface_name */ "python", - /*.application_function */ python_function + /*.application_function */ python_function, + NULL, NULL, NULL, + /* flags */ SAF_NONE, /* should we support no media mode here? If so, we need to detect the mode, and either disable the media functions or indicate media if/when we need */ + /*.next*/ NULL }; static switch_api_interface_t python_run_interface = { diff --git a/src/mod/languages/mod_ruby/mod_ruby.c b/src/mod/languages/mod_ruby/mod_ruby.c index a1192339d2..16548d4ea6 100644 --- a/src/mod/languages/mod_ruby/mod_ruby.c +++ b/src/mod/languages/mod_ruby/mod_ruby.c @@ -78,7 +78,10 @@ static void ruby_function(switch_core_session_t *session, char *data) static const switch_application_interface_t ruby_application_interface = { /*.interface_name */ "ruby", - /*.application_function */ ruby_function + /*.application_function */ ruby_function, + NULL, NULL, NULL, + /* flags */ SAF_NONE, /* should we support no media mode here? If so, we need to detect the mode, and either disable the media functions or indicate media if/when we need */ + /*.next*/ NULL }; static switch_loadable_module_interface_t ruby_module_interface = { diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index 11e6051e51..2f74eb59de 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -2570,7 +2570,10 @@ static switch_status_t launch_async(char *text, switch_core_session_t *session, static const switch_application_interface_t ivrtest_application_interface = { /*.interface_name */ "javascript", /*.application_function */ js_parse_and_execute, - NULL, NULL, NULL, + /* long_desc */ "Run a javascript ivr on a channel", + /* short_desc */ "Launch JS ivr.", + /* syntax */ "