80 Commits

Author SHA1 Message Date
Anthony Minessale
4ddc9e1681 add some commands to portaudio
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4297 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-16 16:19:39 +00:00
Michael Jerris
41d2d43e99 warning: ISO C does not allow extra ; outside of a function
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4269 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-14 19:45:56 +00:00
Anthony Minessale
a62d9fd951 lord of the rings
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4230 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-13 15:47:15 +00:00
Michael Jerris
62a44e621f some more protection from passing around and printing null values, we are now initializing null's passed to switch_caller_profile_new as blank strings in the caller profile, if your using any caller profile values in if's, please use !switch_strlen_zero() in your check.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4203 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-12 18:13:14 +00:00
Anthony Minessale
f03226debb update core
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4181 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-09 20:03:07 +00:00
Michael Jerris
f359f847f7 fix magic emacs and vi formatting comments in the bottom of our source files to use tabs instead of spaces
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4176 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-09 02:36:03 +00:00
Michael Jerris
ea3e61f3d8 tweak the defines for memory barriers. This should fix the freebsd build, and adds proper memory barrier defines for msvc build.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4175 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-02-09 02:05:46 +00:00
Anthony Minessale
8deaa6743b only 1 call can control the ring device
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4101 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-31 17:12:42 +00:00
Michael Jerris
618d1ef698 who thought tolower should return int??
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4047 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-23 22:40:01 +00:00
Anthony Minessale
23e5477ab4 add via hack for portaudio
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4038 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-23 18:00:37 +00:00
Anthony Minessale
d00baf0d09 add flags command to control mute and deaf operations
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4032 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-23 16:06:25 +00:00
Michael Jerris
788279608b "pa_dtmf" -> "pa dtmf" in api help text.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4007 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-20 00:22:43 +00:00
Michael Jerris
680ef8d169 indications are that we can use mfence, lfence, sfence on x86_64, we will need to test and confirm this, but this should fix the build on 64 bit linux gcc at least. need testers to confirm this.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3998 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-19 12:49:10 +00:00
Michael Jerris
23a744ad9d Initial windows build for new portaudio module, so far completely untested, it will NOT work on 64 bit and potentially problematic on SMP boxes still as I am building right now. This build currently uses only winmme, will follow up with better support for optionally building against direct sound, asio, and wasapi.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3993 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-19 01:45:58 +00:00
Anthony Minessale
41541428fc minor tweaks on new portaudio stuff
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3990 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-19 01:23:27 +00:00
Anthony Minessale
39a9e94305 New mod_portaudio (sponspred by eWorldCom http://www.eworldcom.hu/)
This updates mod_portaudio to use the new v19 api and also contains
major behavioural changes.  This initial check-in should be tested to find
any obscure use cases that lead to crashes etc...

All of the old api interface commands are now depricated and any attempt to
use them should cause a polite warning asking you to try the new single "pa" command.

New Features:
*) Mulitiple calls with hold/call switching.
*) Inbound calls can play a ring file on specified device. (global and per call)
*) Optional hold music for backgrounded calls. (global and per call)


Example dialplan usage:

<extension name="2000">
  <condition field="destination_number" expression="^2000$">
    <!--if the next 3 lines are omitted the defaults will be used from portaudio.conf-->
    <action application="set" data="pa_ring_file=/sounds/myring.wav"/>
    <action application="set" data="pa_hold_file=/sounds/myhold.wav"/>
    <action application="set" data="export_vars=pa_ring_file,pa_hold_file"/>
    <action application="bridge" data="portaudio"/>
  </condition>
</extension>


Example API interface usage:

call extension 1000
> pa call 1000

call extension 1001 putting the other call on hold
> pa call 1001

swap the calls between hold and active
> pa switch

view the current calls
> pa list

forground the call with id 1 
> pa switch 1

background all calls
> pa switch none

send a dtmf string (1234) to the current call
> pa dtmf 1234

answer the oldest unanswered inbound call
> pa answer

answer the call with id 1
> pa answer 1

hangup the active call
> pa hangup

hangup the call with id 1
> pa hangup 1

get device info
> pa dump

print usage summary
> pa help


USAGE:
--------------------------------------------------------------------------------
pa help
pa dump
pa call <dest> [<dialplan> <cid_name> <cid_num> <rate>]
pa answer [<call_id>]
pa hangup [<call_id>]
pa list
pa switch [<call_id>|none]
pa_dtmf <digit string>
--------------------------------------------------------------------------------

The source of the portaudio v19 library will also be checked in for the 
sake of the build system.




git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3981 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-17 19:10:03 +00:00
Michael Jerris
63d89577d6 switch all libs and mods to use the dynamic instead of the static runtime so everything in freeswitch runs in a single instance of the runtime.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3925 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-01-07 04:35:16 +00:00
Anthony Minessale
90440eaf1d add case for kill sigs
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3778 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-12-21 16:46:11 +00:00
Anthony Minessale
7ba8a350af doh
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3604 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-12-11 17:52:53 +00:00
Michael Jerris
44649c70b4 Add magic comments for emacs and vi in source and header files to properly format and display tabs vs. spaces in those editors:
/* For Emacs:
 * Local Variables:
 * mode:c
 * indent-tabs-mode:nil
 * tab-width:4
 * c-basic-offset:4
 * End:
 * For VIM:
 * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
 */


git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3462 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-11-27 22:30:48 +00:00
Anthony Minessale
da76d9327b update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3212 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-10-26 16:13:48 +00:00
Anthony Minessale
a3839376f7 update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3210 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-10-26 15:00:46 +00:00
Anthony Minessale
6a96670267 refine code
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3006 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-10-09 02:24:43 +00:00
Michael Jerris
c822f94125 add syntax to api structures, use them for usage returns, do more checking on valid usage and cleanup some output of api commands.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3001 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-10-08 07:11:42 +00:00
Michael Jerris
2b53e80e34 add syntax field to the api interface struct.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3000 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-10-08 05:04:34 +00:00
Michael Jerris
1003a4d404 Cleanups from update to new build system for windows.
More to come.


git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2325 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-08-18 07:22:18 +00:00
Michael Jerris
ae380d58ec Update to new build system for windows.
This fixes several issues when debugging code in the ide, and does better dependency tracking.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2317 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-08-17 19:58:55 +00:00
Anthony Minessale
5c5bd833d7 fix potential crash
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2235 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-08-07 20:04:12 +00:00
Anthony Minessale
c4d890e0a4 Modify XML Dialplan
BTW, forget what I said yesterday RE: the strftime app I was at McDonalds, how can I concentrate there eh? 
see below....


The Definitive Guide To XML Dialplan:

The "dialplan" section of the freeswitch.xml meta document may contain several contexts

<?xml version="1.0"?>
<document type="freeswitch/xml">
  <section name="dialplan" description="Regex/XML Dialplan">
    <!-- the default context is a safe start -->
    <context name="default">

    <!-- one or more extension tags -->

    </context>
    
    <!-- more optional contexts -->
  </section>
</document>

The important thing to remember is that the dialplan is parsed once when the call
hits the dialplan parser in the RING state.  With one pass across the XML the result
will be a complete list of instructions installed into the channel based on
 parsed <action> or <anti-action> tags.

Those accustomed to Asterisk may expect the call to follow the dialplan by executing the 
applications as it parses them allowing data obtained from one action to influence the next action.
This not the case with the exception being the %{api func} {api arg} field type where an pluggable api call from
a module may be executed as the parsing occurs but this is meant to be used to draw realtime info such as
date and time or other quickly accessible information and shold *not* be abused.


The anatomy of an <extension> tag.

Legend: 
Text wrapped in [] indicates optional and is not part of the actual code.
a '|' inside [] indicates mutiple possible values and also is not part of the code.
Text wrapped in {} indicates it's a description of the parameter in place of the param itself.

<extension name="{exten_name}" [continue="[true|false]"]> 

continue=true means even if an extension executes to continue
parsing the next extension too

The {exten_name} above may anything but if it's 
an exact match with the destination number the parser will leap to this extension
to begin the searching that does not mean it will execute the extension.

Searching will either begin at the first extension in the context or at the point
the the parser has jumped to in the case described above.

Each condition is parsed in turn first taking the 'field' param.
The parser will apply the perl regular expression to each 'field' param encountered.

If the expression matches, it will parse each existing <action> tag in turn and add 
the data from the <application> tags to the channels todo list.	

If a matched expression contains any data wrapped in () the variables
$1,$2..$N will be valid and expanded in any of 'data' params from the subsequent action tags.

If the expression does NOT match, it will parse each <anti-action> tag in turn and add 
the data from the <application> tags to the channels todo list.
*NOTE* since there was no match the () feature is not availabe in anti-actions

The 'break' param indicates how to behave in relation to matching:
*) 'on-true'  - stop searching conditions after the first successful match.
*) 'on-false' - stop searching after the first unsuccessful match.
*) 'always'   - stop at this conditon regardless of a match or non-match.
*) 'never'    - continue searching regardless of a match or non-match.

<condition field="[{field name}|${variable name}|%{api func} {api arg}]" expression="{expression}" break="[on-true|on-false|always|never]">
  <action application="{app name}" data="{app arg}"/>
  <anti-action application="{app name}" data="{app arg}"/>
</condition>

  <!-- any number of condition tags may follow where the same rules apply -->
</extension>




git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2167 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-07-26 20:12:49 +00:00
Anthony Minessale
7bcecfb149 add header to portaudio
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1705 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-06-29 13:48:52 +00:00
Anthony Minessale
ce2a9d2636 add more mutexed flag ops
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1664 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-06-23 16:59:47 +00:00
Michael Jerris
0ae3b344dc make sure to use switch namespace on apr functions in modules.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1601 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-06-12 02:39:05 +00:00
Michael Jerris
7ac4e54ef9 add early audio message hook.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1572 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-06-08 15:28:42 +00:00
Anthony Minessale
425c5f282b yep
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1571 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-06-08 15:20:46 +00:00
Anthony Minessale
ab3f42c9c4 update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1508 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-26 16:00:08 +00:00
Anthony Minessale
21c2b5812e update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1476 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-17 00:58:21 +00:00
Michael Jerris
31ee0d59fc normalize configuration parameters to use - instead of _.
Break everybody's configuration.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1475 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-16 17:08:21 +00:00
Michael Jerris
2a07e46e34 allow msvc build to work from source directory with a space in it.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1454 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-12 22:55:12 +00:00
Anthony Minessale
c1d0488201 update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1413 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-10 15:53:10 +00:00
Anthony Minessale
f09491a69b XMLification (wave 4)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1412 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-10 15:47:54 +00:00
Anthony Minessale
646f764ae4 update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1404 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-10 03:40:52 +00:00
Anthony Minessale
93666f6dd7 XMLification (wave 1)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1401 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-10 03:23:05 +00:00
Anthony Minessale
913104b50c portaudio tweaks
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1311 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-01 17:20:30 +00:00
Anthony Minessale
cc1c2a06e9 update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1308 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-05-01 01:35:01 +00:00
Michael Jerris
c904577269 C++ says we can't use "interface" as a variable name.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1305 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-04-30 18:24:24 +00:00
Michael Jerris
14fee78470 part 3 of 3 standardizing typedefed types to end in _t.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1300 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-04-29 23:43:28 +00:00
Michael Jerris
73a3adac8f part 2 of many standardizing typedefed types to end in _t
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1294 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-04-29 06:05:03 +00:00
Michael Jerris
d0347b2a95 part 1 of many standardizing typedefed types to end in _t
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1292 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-04-29 01:00:52 +00:00
Anthony Minessale
35dc32018c add transfer capability and small ways to test it
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1290 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-04-28 19:46:57 +00:00
Anthony Minessale
1eb4d491a5 causes part 2
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1226 d0543943-73ff-0310-b7d9-9358b9ac24b2
2006-04-22 03:05:25 +00:00