]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add flags to the application interface for marking if apps support no media mode...
authorMichael Jerris <mike@jerris.com>
Mon, 26 Feb 2007 21:38:10 +0000 (21:38 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 26 Feb 2007 21:38:10 +0000 (21:38 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4400 d0543943-73ff-0310-b7d9-9358b9ac24b2

18 files changed:
src/include/switch_module_interfaces.h
src/include/switch_types.h
src/mod/applications/mod_bridgecall/mod_bridgecall.c
src/mod/applications/mod_conference/mod_conference.c
src/mod/applications/mod_dptools/mod_dptools.c
src/mod/applications/mod_echo/mod_echo.c
src/mod/applications/mod_enum/mod_enum.c
src/mod/applications/mod_ivrtest/mod_ivrtest.c
src/mod/applications/mod_park/mod_park.c
src/mod/applications/mod_playback/mod_playback.c
src/mod/applications/mod_rss/mod_rss.c
src/mod/event_handlers/mod_event_socket/mod_event_socket.c
src/mod/languages/mod_perl/mod_perl.c
src/mod/languages/mod_php/mod_php.c
src/mod/languages/mod_python/mod_python.c
src/mod/languages/mod_ruby/mod_ruby.c
src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
src/mod/timers/mod_softtimer/mod_softtimer.c

index 704ec248ba21f9900b217e785c9e52f809e5b611..ccd0ba3892e0203dfda12616520f28c308bf66ef 100644 (file)
@@ -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;
 };
index e3965951d30d0cb1d1117e34a007575d4ba12344..7443e7fb4cb6b0a753e4fc2c7f72fd366a4d2d71 100644 (file)
@@ -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
index be0482f930831fa398c9107e0e4a546672bad9ae..fc9c0305e5c73492a419c22226b548eea326ecf9 100644 (file)
@@ -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 */ "<channel_url>",
+       /* flags */ SAF_SUPPORT_NOMEDIA
 };
 
 static const switch_loadable_module_interface_t mod_bridgecall_module_interface = {
index 01f1a5f4dfdf72c15e595d9ada6bee0788123dc2..eaa080c4e0117bc031928fe9caa718be675a827b 100644 (file)
@@ -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
 };
 
index 033e8f1d5de0b8f8ca1455574e2d55b6a873406c..f1ebedfea246e41274505e600b1973040b860f93 100644 (file)
@@ -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 */ "<dtmf_data>",
+       /* 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 */ "<redirect_data>",
+       /* 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 */ "<menu_name>",
+       /* 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 */ "<mod_name> <gram_name> <gram_path> [<addr>] OR grammar <gram_name> [<path>] 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 */ "<varname>",
+       /* 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 */ "<varname>=<value>",
+       /* 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 */ "<varname>=<value>",
+       /* 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 */ "<varname>",
+       /* 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 */ "[<cause>]",
+       /* 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 */ "<macro_name>,<data>",
+       /* 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 */ "<pausemilliseconds>",
+       /* 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 */ "<exten> [<dialplan> <context>]",
+       /* 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
 };
 
index 27158f85952858f763190551fbf2886100b3f88c..47f06db920550ca7cdf68055f0a38fe311832428 100644 (file)
@@ -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 = {
index 4bc9813c0d54891274b766ad2600dbfafb9ef7bc..4c8004e42c1ec02f5f0467bdcf636cff567bc04b 100644 (file)
@@ -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 */ "<number> [<root>]",
+       /* 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;
 }
 
+
index 6f3c22df1717c95b41910b605997c5e32ea3aab6..267de1543a80330caf7bb5cbde4a153778b01508 100644 (file)
@@ -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
 };
 
index 4aadd7ed4d6e2012efa95959cd877f237f162264..af358ced346ec2414e1ad9b2729ce52dc48a4433 100644 (file)
@@ -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 = {
index 129d69bb6f0ead17569dbdd94897f13b0c62d352..c235ae325232a5af993217ed03a50a35472e351a 100644 (file)
@@ -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 */ "<engine>|<voice>|<text>",
+       /* 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 */ "<path> [+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 */ "<path>",
+       /* 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 */ "<path>",
+       /* 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 */ "<path>",
+       /* flags */ SAF_NONE,
+       /*.next*/       &stop_record_session_application_interface
 };
 
 static const switch_loadable_module_interface_t mod_playback_module_interface = {
index b337e74558cbb042159aaca03c578e9806e859ba..8dd096431c93d42f8913be0c3fdaa931f7577173 100644 (file)
@@ -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
 };
 
index 7fb12c079d59d983af2e7a0a31ebaacd7d4d8752..1c332d1d096b29082afca2ec715fd7cc18187a87 100644 (file)
@@ -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 */ "<ip>[:<port>]",
+       /* flags */ SAF_SUPPORT_NOMEDIA,
     /*.next */ NULL
 };
 
index f41744b5243440d9107701ddf4b855b0c5f667f0..db39f61516e0bdd53afa12534cdbae507bb6c876 100644 (file)
@@ -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 = {
index 6fa98f080f7d24cf0879e9742230728abede127a..200e715bf26cc320dba469b32f1358d24de383b0 100644 (file)
@@ -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 = {
index e4472575a5715830a9c55f84da788aefd7cef662..c288850364553159eea62ae42b2116e299646096 100644 (file)
@@ -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 = {
index a1192339d290c47f86cf06947e93f9cac9bb3975..16548d4ea69ca7ae82f5ba194ec00f3fd5c7b418 100644 (file)
@@ -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 = {
index 11e6051e510d166570172453bc94c0189ee72671..2f74eb59dedcb2648515ee98fee0dbfe40ac95ae 100644 (file)
@@ -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 */ "<script> [additional_vars [...]]",
+       /* 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
 };
 
@@ -2578,7 +2581,7 @@ static switch_api_interface_t js_run_interface = {
        /*.interface_name */ "jsrun",
        /*.desc */ "run a script",
        /*.function */ launch_async,
-       /*.syntax */ "jsrun <script>",
+       /*.syntax */ "jsrun <script> [additional_vars [...]]",
        /*.next */ NULL
 };
 
index eb5812b4a91f833d8856dde4a0ad1ea2731fecad..810c5fa6440399e565a7ceb1c24ee079661303b6 100644 (file)
@@ -139,10 +139,7 @@ static const switch_timer_interface_t timer_interface = {
 static const switch_loadable_module_interface_t mod_softtimer_module_interface = {
        /*.module_name */ modname,
        /*.endpoint_interface */ NULL,
-       /*.timer_interface */ &timer_interface,
-       /*.switch_dialplan_interface */ NULL,
-       /*.switch_codec_interface */ NULL,
-       /*.switch_application_interface */ NULL
+       /*.timer_interface */ &timer_interface
 };
 
 SWITCH_MOD_DECLARE(switch_status_t) switch_module_load(const switch_loadable_module_interface_t **module_interface, char *filename)