From cbee4e094686941db113d9ccb271efddf5d89bf6 Mon Sep 17 00:00:00 2001 From: agb Date: Mon, 29 Sep 2008 03:37:49 +0000 Subject: [PATCH] Update asterisk-addons-1.4.x to 1.4.7 Requires a patch to pthread call. Signed-off-by: Michael Geddes git-svn-id: svn://svn.openwrt.org/openwrt/packages@12795 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- net/asterisk-addons-1.4.x/Makefile | 12 +- .../patches/011-chan_mobile.patch | 741 +++++++++--------- .../patches/021-cross_configure.patch | 20 +- .../patches/031-pthread_param.patch | 19 + 4 files changed, 386 insertions(+), 406 deletions(-) create mode 100644 net/asterisk-addons-1.4.x/patches/031-pthread_param.patch diff --git a/net/asterisk-addons-1.4.x/Makefile b/net/asterisk-addons-1.4.x/Makefile index 205a1978f..d630c9dd7 100644 --- a/net/asterisk-addons-1.4.x/Makefile +++ b/net/asterisk-addons-1.4.x/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=asterisk-addons -PKG_VERSION:=1.4.2 +PKG_VERSION:=1.4.7 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=http://ftp.digium.com/pub/asterisk/old-releases/ -PKG_MD5SUM:=c080b02e6ddc81dab6a64691af890805 +PKG_SOURCE_URL:=http://downloads.digium.com/pub/asterisk/releases/ +PKG_MD5SUM:=3b14c147101c13ca6146c41870bad97a PKG_FIXUP = libtool @@ -91,6 +91,7 @@ ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-mysql),) endif CONFIGURE_ARGS += \ + --with-asterisk="$(STAGING_DIR)/usr" \ --with-bluetooth="$(STAGING_DIR)/usr" \ --with-ncurses="$(STAGING_DIR)/usr" \ --with-mysqlclient="$(STAGING_DIR)/usr" \ @@ -110,12 +111,13 @@ endef MAKE_ARGS:= \ AM_CFLAGS="$(TARGET_CFLAGS)" \ - OPTIMIZE="$(TARGET_CFLAGS)" \ + OPTIMIZE="$(TARGET_CFLAGS) -DLOW_MEMORY" \ OPTIONS="" \ + NOISY_BUILD="yes" \ BLUETOOTH_LIB="$(TARGET_LDFLAGS) -lbluetooth" \ MAKE_VARS:= \ - CFLAGS="$(EXTRA_CFLAGS) -DLOW_MEMORY" \ + CFLAGS="$(EXTRA_CFLAGS)" \ LDFLAGS="$(EXTRA_LDFLAGS)" \ define Build/Compile diff --git a/net/asterisk-addons-1.4.x/patches/011-chan_mobile.patch b/net/asterisk-addons-1.4.x/patches/011-chan_mobile.patch index ed342e56c..2c22aa8e6 100644 --- a/net/asterisk-addons-1.4.x/patches/011-chan_mobile.patch +++ b/net/asterisk-addons-1.4.x/patches/011-chan_mobile.patch @@ -1,398 +1,13 @@ -diff -Nru asterisk-addons-1.4.2/build_tools/menuselect-deps.in asterisk-addons-svn/build_tools/menuselect-deps.in ---- asterisk-addons-1.4.2/build_tools/menuselect-deps.in 2007-05-14 18:22:44.000000000 +0200 -+++ asterisk-addons-svn/build_tools/menuselect-deps.in 2007-06-04 19:10:59.000000000 +0200 +diff -Nru asterisk-addons-1.4.6.org/build_tools/menuselect-deps.in asterisk-addons-1.4.6/build_tools/menuselect-deps.in +--- asterisk-addons-1.4.6.org/build_tools/menuselect-deps.in 2007-05-14 18:22:44.000000000 +0200 ++++ asterisk-addons-1.4.6/build_tools/menuselect-deps.in 2008-03-06 08:38:14.000000000 +0100 @@ -1,2 +1,3 @@ +BLUETOOTH=@PBX_BLUETOOTH@ MYSQLCLIENT=@PBX_MYSQLCLIENT@ ASTERISK=@PBX_ASTERISK@ -diff -Nru asterisk-addons-1.4.2/configs/mobile.conf.sample asterisk-addons-svn/configs/mobile.conf.sample ---- asterisk-addons-1.4.2/configs/mobile.conf.sample 1970-01-01 01:00:00.000000000 +0100 -+++ asterisk-addons-svn/configs/mobile.conf.sample 2007-06-04 19:11:00.000000000 +0200 -@@ -0,0 +1,30 @@ -+; -+; mobile.conf -+; -+ -+[general] -+interval=60 ; Number of seconds between trying to connect to devices. -+ -+; The following is a list of the devices we deal with. -+; Every device listed below will be available for calls in and out of Asterisk. -+; Discovered devices not in this list are not available. -+; Use the CLI command 'mobile search' to discover devices. -+; Use the CLI command 'mobile show devices' to see device status. -+; -+; To place out through a cell phone use Dial(Mobile/[device]/NNN.....) in your dialplan. -+; To call a headset use Dial(Mobile/[device]). -+ -+;[dave] -+;address=00:12:56:90:6E:00 -+;port=4 -+;context=incoming-mobile -+ -+;[blackberry] -+;address=00:0F:86:0E:AE:42 -+;port=2 -+;context=incoming-mobile -+ -+;[headset] -+;address=00:0B:9E:11:74:A5 -+;port=1 -+;type=headset -diff -Nru asterisk-addons-1.4.2/configure.ac asterisk-addons-svn/configure.ac ---- asterisk-addons-1.4.2/configure.ac 2007-05-14 18:22:44.000000000 +0200 -+++ asterisk-addons-svn/configure.ac 2007-06-04 19:11:00.000000000 +0200 -@@ -17,7 +17,7 @@ - AC_CONFIG_SRCDIR([res_config_mysql.c]) - - AC_COPYRIGHT("Asterisk-addons") --AC_REVISION($Revision: 382 $) -+AC_REVISION($Revision: 384 $) - - case "${host}" in - *freebsd*) -@@ -159,13 +159,14 @@ - # from here on down, library checking should be done in alphabetical order - # by the --with option name, to make things easier for the users :-) - -+AST_EXT_LIB_SETUP([BLUETOOTH], [Bluetooth Support], [bluetooth]) - AST_EXT_LIB_SETUP([CURSES], [curses], [curses]) - AST_EXT_LIB_SETUP([NCURSES], [ncurses], [ncurses]) - AST_EXT_LIB_SETUP([MYSQLCLIENT], [mysqlclient], [mysqlclient]) - AST_EXT_LIB_SETUP([ASTERISK], [asterisk], [asterisk]) - -+AST_EXT_LIB_CHECK([BLUETOOTH], [bluetooth], [ba2str], [bluetooth/bluetooth.h]) - AST_EXT_LIB_CHECK([CURSES], [curses], [initscr], [curses.h]) -- - AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [curses.h]) - - MYSQL_CONFIG=No -diff -Nru asterisk-addons-1.4.2/doc/chan_mobile.txt asterisk-addons-svn/doc/chan_mobile.txt ---- asterisk-addons-1.4.2/doc/chan_mobile.txt 1970-01-01 01:00:00.000000000 +0100 -+++ asterisk-addons-svn/doc/chan_mobile.txt 2007-06-04 19:11:00.000000000 +0200 -@@ -0,0 +1,262 @@ -+chan_mobile -+ -+Asterisk Channel Driver to allow Bluetooth Cell/Mobile Phones to be used as FXO devices, and Headsets as FXS devices. -+ -+Features :- -+ -+Multiple cell phones can be connected. -+Multiple headsets can be connected. -+Asterisk automatically connects to each configured cell phone / headset when it comes in range. -+CLI command to discover bluetooth devices. -+Inbound calls on the cell network to the cell phones are handled by Asterisk, just like inbound calls on a Zap channel. -+CLI passed through on inbound calls. -+Dial outbound on a cell phone using Dial(Mobile/device/nnnnnnn) in the dialplan. -+Dial a headset using Dial(Mobile/device) in the dialplan. -+Application MobileStatus can be used in the dialplan to see if a cell phone / headset is connected. -+Supports devicestate for dialplan hinting. -+Supports Inbound and Outbound SMS. -+ -+Using chan_mobile :- -+ -+In order to use chan_mobile, you must have a working bluetooth subsystem on your Asterisk box. -+This means a working bluetooth adapter, and the BlueZ packages. -+ -+Any bluetooth adapter supported by the Linux kernel will do, including usb bluetooth dongles. -+ -+The BlueZ package you need is bluez-utils. If you are using a GUI then you might want to install bluez-pin also. -+You also need libbluetooth, and libbluetooth-dev if you are compiling Asterisk from source. -+ -+You need to get bluetooth working with your phone before attempting to use chan_mobile. -+This means 'pairing' your phone with your Asterisk box. I dont describe how to do this here as the process -+differs from distro to distro. You only need to pair once. -+ -+However, the easist way to pair, is to use you cell phone to search for bluetooth devices, select your Asterisk box -+and enter the requested PIN. -+ -+See www.bluez.org for other details about setting up Bluetooth under Linux. -+ -+Assuming you have bluetooth working ok:- -+ -+Load chan_mobile.so -+ -+Search for your bluetooth devices using the CLI command 'mobile search'. Be patient with this command as -+it will take 8 - 10 seconds to do the discovery. -+ -+Headsets will generally have to be put into 'pairing' mode before they will show up here. -+ -+This will return something like the following :- -+ -+*CLI> mobile search -+Address Name Usable Type Port -+00:12:56:90:6E:00 LG TU500 Yes Phone 4 -+00:80:C8:35:52:78 Toaster No Headset 0 -+00:0B:9E:11:74:A5 Hello II Plus Yes Headset 1 -+00:0F:86:0E:AE:42 Daves Blackberry Yes Phone 7 -+ -+This is a list of all bluetooth devices seen and whether or not they are usable with chan_cellphone. -+The Address field contains the 'bd address' of the device. This is like an ethernet mac address. -+The Name field is whatever is configured into the device as its name. -+The Usable field tells you whether or not the device supports the Bluetooth Handsfree Profile or Headset profile. -+The Type field tells you whether the device is usable as a Phone line (FXO) or a headset (FXS) -+The Port field is the number to put in the configuration file. -+ -+Choose which device(s) you want to use and edit /etc/asterisk/mobile.conf. There is a sample included -+with the Asterisk source under configs/mobile.conf.sample. -+ -+Assuming we want to use the devices above, mobile.conf needs to look like this :- -+ -+=================================================================================== -+; -+; mobile.conf -+; -+ -+[general] -+interval=60 ; Number of seconds between trying to connect to devices. -+ -+; The following is a list of the devices we deal with. -+; Every device listed below will be available for calls in and out of Asterisk. -+; Discovered devices not in this list are not available. -+; Use the CLI command 'mobile search' to discover devices. -+; Use the CLI command 'mobile show devices' to see device status. -+; -+; To place a call use Dial(Mobile/[device]/NNN.....) in your dialplan. -+ -+[dave] -+address=00:12:56:90:6E:00 -+port=4 -+context=incoming-mobile -+ -+[headset] -+address=00:0B:9E:11:74:A5 -+port=1 -+type=headset -+=================================================================================== -+ -+Be sure to configure the right bd address and port number from the search. If you want inbound -+calls on a device to go to a specific context, add a context= line, otherwise the default will -+be used. The 'id' of the device [bitinbrackets] can be anything you like, just make the unique. -+ -+If your are configuring a Headset be sure to include the type=headset line, if left out it defaults -+to phone. -+ -+Having done this, unload chan_mobile and load it again. -+ -+The CLI command 'mobile show devices' can be used at any time to show the status of configured devices, -+and whether or not the device is capable of sending / receiving SMS via bluetooth. -+ -+*CLI> mobile show devices -+ID Address Connected State SMS -+blackberry 00:0F:86:0E:AE:42 Yes Free Yes -+dave 00:12:56:90:6E:00 Yes Free No -+headset 00:0B:9E:11:74:A5 Yes Free No -+*CLI> -+ -+ -+All being well Asterisk will now try and establish a connection to each configured device. If it cant -+it will retry after 'interval' seconds, infinately. -+ -+This means that as your cell phone comes into range and goes out of range, Asterisk will automatically -+connect and disconnect from it. You dont need to worry about it. -+ -+As each phone is connected you will see a message on the Asterisk console :- -+ -+ Loaded chan_mobile.so => (Bluetooth Mobile Device Channel Driver) -+ -- Bluetooth Device blackberry has connected. -+ -- Bluetooth Device dave has connected. -+ -+If someone calls your cell phone now, Asterisk will handle the call and it will be sent into the -+context you specified, or the default context. Mostly likely this means some SIP phone somewhere will -+ring, pick it up and take the call. -+ -+To make outbound calls, add something to you Dialplan like the following :- (modify to suit) -+ -+; Calls via TU500 -+exten => _9X.,1,Dial(Mobile/dave/${EXTEN:1},45) -+exten => _9X.,n,Hangup -+; Calls via Blackberry -+exten => _8X.,1,Dial(Mobile/blackberry/${EXTEN:1},45) -+exten => _8X.,n,Hangup -+ -+Pick up a SIP phone and dial 9 and the call vill go via the device 'dave' in -+mobile.conf. -+ -+To incoming calls to a headset do something like this :- -+ -+[incoming-context] -+exten => s,1,Dial(Mobile/headset,30) -+exten => s,n,Hangup() -+ -+To dial out on a headset, you need to use some other mechanism, because the headset is not likely -+to have all the needed buttons on it. res_clioriginate is good for this :- -+ -+*CLI> originate Mobile/headset extension NNNNN@context -+ -+This will call your headset, once you answer Asterisk will call NNNNN at context context -+ -+Dialplan hints :- -+ -+chan_mobile supports 'device status' so you can do somthing like -+ -+exten => 1234,hint,SIP/30&Mobile/dave&Mobile/blackberry -+ -+ -+MobileStatus Application :- -+ -+chan_mobile also registers an application named MobileStatus. You can use this in your Dialplan -+to determine the 'state' of a device. -+ -+For example, suppose you wanted to call dave's extension, but only if he was in the office. You could -+test to see if his cell phone was attached to Asterisk, if it is dial his extension, otherwise dial his -+cell phone. -+ -+exten => 40,1,MobileStatus(dave,DAVECELL) -+exten => 40,2,GotoIf($["${DAVECELL}" = "1"]?3:5) -+exten => 40,3,Dial(ZAP/g1/0427466412,45,tT) -+exten => 40,4,Hangup -+exten => 40,5,Dial(SIP/40,45,tT) -+exten => 40,6,Hangup -+ -+MobileStatus sets the value of the given variable to :- -+ -+1 = Disconnected. i.e. Device not in range of Asterisk, or turned off etc etc -+2 = Connected and Not on a call. i.e. Free -+3 = Connected and on a call. i.e. Busy -+ -+ -+SMS Sending / Receiving -+ -+If Asterisk has detected your cell phone is capable of SMS via bluetooth, you will be able to send and -+receive SMS. -+ -+Incoming SMS's cause Asterisk to create an inbound call to the context you defined in mobile.conf or the default -+context if you did not define one. The call will start at extension 'sms'. Two channel variables will be available, -+SMSSRC = the number of the originator of the SMS and SMSTXT which is the text of the SMS. -+This is not a voice call, so grab the values of the variables and hang the call up. -+ -+So, to handle incoming SMS's, do something like the following in your dialplan -+ -+[incoming-mobile] -+exten => sms,1,Verbose(Incoming SMS from ${SMSSRC} ${SMSTXT}) -+exten => sms,n,Hangup() -+ -+The above will just print the message on the console. -+ -+If you use res_jabber, you could do something like this :- -+ -+[incoming-mobile] -+exten => sms,1,JabberSend(transport,user@jabber.somewhere.com,SMS from ${SMSRC} ${SMSTXT}) -+exten => sms,2,Hangup() -+ -+To send an SMS, use the application MobileSendSMS like the following :- -+ -+exten => 99,1,MobileSendSMS(dave,0427123456,Hello World) -+ -+This will send 'Hello World' via device 'dave' to '0427123456' -+ -+ -+DTMF Debouncing :- -+ -+DTMF detection varies from phone to phone. There is a configuration variable that allows you to tune -+this to your needs. e.g. in mobile.conf -+ -+[dave] -+address=00:12:56:90:6E:00 -+port=4 -+context=incoming-mobile -+dtmfskip=50 -+ -+change dtmfskip to suit your phone. The default is 200. The larger the number, the more chance of missed DTMF. -+The smaller the number the more chance of multiple digits being detected. -+ -+ -+Debugging :- -+ -+Different phone manufacturers have different interpretations of the Bluetooth Handsfree Profile Spec. -+This means that not all phones work the same way, particularly in the connection setup / initialisation -+sequence. I've tried to make chan_cellphone as general as possible, but it may need modification to -+support some phone i've never tested. -+ -+The RIM Blackberry 7250 works extremely well. So does the LG TU500. -+ -+Some phones, most notably Sony Ericsson 'T' series, dont quite conform to the Bluetooth HFP spec. -+chan_mobile will detect these and adapt accordingly. The T-610 and T-630 have been tested and -+work fine. -+ -+If your phone doesnt behave has expected, turn on Asterisk debugging with 'core set debug 1'. -+ -+This will log a bunch of debug messages indicating what the phone is doing, importantly the rfcomm -+conversation between Asterisk and the phone. This can be used to sort out what your phone is doing -+and make chan_mobile support it. -+ -+Be aware also, that just about all cell phones behave differently. For example my LG TU500 wont dial unless -+the phone is a the 'idle' screen. i.e. if the phone is showing a 'menu' on the display, when you dial via -+Asterisk, the call will not work. chan_mobile handles this, but there may be other phones that do -+other things too... -+ -+Important: Watch what your cell phone is doing the first few times. Asterisk wont make random calls but -+if chan_mobile fails to hangup for some reason and you get a huge bill from your telco, dont blame me. -+ -+ -+Feedback, Support, Please can you make Cell Phone X work... etc :- -+ -+email me at david.bowerman at gmail.com or dseeb_ on #asterisk & #asterisk-dev irc. -diff -Nru asterisk-addons-1.4.2/Makefile asterisk-addons-svn/Makefile ---- asterisk-addons-1.4.2/Makefile 2007-06-06 00:05:09.000000000 +0200 -+++ asterisk-addons-svn/Makefile 2007-07-28 15:12:17.000000000 +0200 -@@ -49,7 +49,7 @@ - endif - MODULES_DIR=$(ASTLIBDIR)/modules - --MODS:=app_addon_sql_mysql app_saycountpl cdr_addon_mysql chan_ooh323 format_mp3 res_config_mysql -+MODS:=app_addon_sql_mysql app_saycountpl cdr_addon_mysql chan_ooh323 format_mp3 res_config_mysql chan_mobile - - SELECTED_MODS:=$(patsubst %,%.so,$(filter-out $(MENUSELECT_ADDONS),$(MODS))) - -@@ -143,6 +143,9 @@ - app_addon_sql_mysql.so: app_addon_sql_mysql.o - $(CC) $(SOLINK) -o $@ $< $(MYSQLCLIENT_LIB) - -+chan_mobile.so: chan_mobile.o -+ $(CC) $(SOLINK) -o $@ $< $(BLUETOOTH_LIB) -+ - chan_ooh323.so: - @if [ ! -f asterisk-ooh323c/Makefile ] ; then \ - cd asterisk-ooh323c && ./configure ; \ -@@ -186,6 +189,8 @@ - menuselect.makeopts menuselect.makedeps: menuselect/menuselect menuselect-tree - @menuselect/menuselect --check-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts - -+menuconfig: menuselect -+ - menuselect: menuselect/menuselect menuselect-tree - -@menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!" - -diff -Nru asterisk-addons-1.4.2/makeopts.in asterisk-addons-svn/makeopts.in ---- asterisk-addons-1.4.2/makeopts.in 2007-05-14 18:22:44.000000000 +0200 -+++ asterisk-addons-svn/makeopts.in 2007-06-04 19:11:00.000000000 +0200 -@@ -33,6 +33,9 @@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ - -+BLUETOOTH_LIB=@BLUETOOTH_LIB@ -+BLUETOOTH_INCLUDE=@BLUETOOTH_INCLUDE@ -+ - CURSES_LIB=@CURSES_LIB@ - CURSES_INCLUDE=@CURSES_INCLUDE@ - -diff -Nru asterisk-addons-1.4.2/menuselect-tree asterisk-addons-svn/menuselect-tree ---- asterisk-addons-1.4.2/menuselect-tree 2007-05-14 18:22:44.000000000 +0200 -+++ asterisk-addons-svn/menuselect-tree 2007-06-04 19:11:00.000000000 +0200 -@@ -13,6 +13,10 @@ - mysqlclient - asterisk - -+ -+ bluetooth -+ asterisk -+ - - asterisk - ---- asterisk-addons-1.4.2/chan_mobile.c 1970-01-01 01:00:00.000000000 +0100 -+++ asterisk-addons-svn/chan_mobile.c 2007-07-29 13:30:43.000000000 +0200 +diff -Nru asterisk-addons-1.4.6.org/channels/chan_mobile.c asterisk-addons-1.4.6/channels/chan_mobile.c +--- asterisk-addons-1.4.6.org/channels/chan_mobile.c 1970-01-01 01:00:00.000000000 +0100 ++++ asterisk-addons-1.4.6/channels/chan_mobile.c 2008-03-06 08:38:57.000000000 +0100 @@ -0,0 +1,1867 @@ +/* + * Asterisk -- An open source telephony toolkit. @@ -2261,3 +1876,347 @@ diff -Nru asterisk-addons-1.4.2/menuselect-tree asterisk-addons-svn/menuselect-t + .unload = unload_module, + .reload = reload_module, +); +diff -Nru asterisk-addons-1.4.6.org/configs/mobile.conf.sample asterisk-addons-1.4.6/configs/mobile.conf.sample +--- asterisk-addons-1.4.6.org/configs/mobile.conf.sample 1970-01-01 01:00:00.000000000 +0100 ++++ asterisk-addons-1.4.6/configs/mobile.conf.sample 2008-03-06 08:38:14.000000000 +0100 +@@ -0,0 +1,30 @@ ++; ++; mobile.conf ++; ++ ++[general] ++interval=60 ; Number of seconds between trying to connect to devices. ++ ++; The following is a list of the devices we deal with. ++; Every device listed below will be available for calls in and out of Asterisk. ++; Discovered devices not in this list are not available. ++; Use the CLI command 'mobile search' to discover devices. ++; Use the CLI command 'mobile show devices' to see device status. ++; ++; To place out through a cell phone use Dial(Mobile/[device]/NNN.....) in your dialplan. ++; To call a headset use Dial(Mobile/[device]). ++ ++;[dave] ++;address=00:12:56:90:6E:00 ++;port=4 ++;context=incoming-mobile ++ ++;[blackberry] ++;address=00:0F:86:0E:AE:42 ++;port=2 ++;context=incoming-mobile ++ ++;[headset] ++;address=00:0B:9E:11:74:A5 ++;port=1 ++;type=headset +diff -Nru asterisk-addons-1.4.6.org/configure.ac asterisk-addons-1.4.6/configure.ac +--- asterisk-addons-1.4.6.org/configure.ac 2008-02-13 23:58:11.000000000 +0100 ++++ asterisk-addons-1.4.6/configure.ac 2008-03-06 08:38:14.000000000 +0100 +@@ -161,13 +161,14 @@ + # from here on down, library checking should be done in alphabetical order + # by the --with option name, to make things easier for the users :-) + ++AST_EXT_LIB_SETUP([BLUETOOTH], [Bluetooth Support], [bluetooth]) + AST_EXT_LIB_SETUP([CURSES], [curses], [curses]) + AST_EXT_LIB_SETUP([NCURSES], [ncurses], [ncurses]) + AST_EXT_LIB_SETUP([MYSQLCLIENT], [mysqlclient], [mysqlclient]) + AST_EXT_LIB_SETUP([ASTERISK], [asterisk], [asterisk]) + ++AST_EXT_LIB_CHECK([BLUETOOTH], [bluetooth], [ba2str], [bluetooth/bluetooth.h]) + AST_EXT_LIB_CHECK([CURSES], [curses], [initscr], [curses.h]) +- + AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [curses.h]) + + MYSQL_CONFIG=No +diff -Nru asterisk-addons-1.4.6.org/doc/chan_mobile.txt asterisk-addons-1.4.6/doc/chan_mobile.txt +--- asterisk-addons-1.4.6.org/doc/chan_mobile.txt 1970-01-01 01:00:00.000000000 +0100 ++++ asterisk-addons-1.4.6/doc/chan_mobile.txt 2008-03-06 08:38:14.000000000 +0100 +@@ -0,0 +1,262 @@ ++chan_mobile ++ ++Asterisk Channel Driver to allow Bluetooth Cell/Mobile Phones to be used as FXO devices, and Headsets as FXS devices. ++ ++Features :- ++ ++Multiple cell phones can be connected. ++Multiple headsets can be connected. ++Asterisk automatically connects to each configured cell phone / headset when it comes in range. ++CLI command to discover bluetooth devices. ++Inbound calls on the cell network to the cell phones are handled by Asterisk, just like inbound calls on a Zap channel. ++CLI passed through on inbound calls. ++Dial outbound on a cell phone using Dial(Mobile/device/nnnnnnn) in the dialplan. ++Dial a headset using Dial(Mobile/device) in the dialplan. ++Application MobileStatus can be used in the dialplan to see if a cell phone / headset is connected. ++Supports devicestate for dialplan hinting. ++Supports Inbound and Outbound SMS. ++ ++Using chan_mobile :- ++ ++In order to use chan_mobile, you must have a working bluetooth subsystem on your Asterisk box. ++This means a working bluetooth adapter, and the BlueZ packages. ++ ++Any bluetooth adapter supported by the Linux kernel will do, including usb bluetooth dongles. ++ ++The BlueZ package you need is bluez-utils. If you are using a GUI then you might want to install bluez-pin also. ++You also need libbluetooth, and libbluetooth-dev if you are compiling Asterisk from source. ++ ++You need to get bluetooth working with your phone before attempting to use chan_mobile. ++This means 'pairing' your phone with your Asterisk box. I dont describe how to do this here as the process ++differs from distro to distro. You only need to pair once. ++ ++However, the easist way to pair, is to use you cell phone to search for bluetooth devices, select your Asterisk box ++and enter the requested PIN. ++ ++See www.bluez.org for other details about setting up Bluetooth under Linux. ++ ++Assuming you have bluetooth working ok:- ++ ++Load chan_mobile.so ++ ++Search for your bluetooth devices using the CLI command 'mobile search'. Be patient with this command as ++it will take 8 - 10 seconds to do the discovery. ++ ++Headsets will generally have to be put into 'pairing' mode before they will show up here. ++ ++This will return something like the following :- ++ ++*CLI> mobile search ++Address Name Usable Type Port ++00:12:56:90:6E:00 LG TU500 Yes Phone 4 ++00:80:C8:35:52:78 Toaster No Headset 0 ++00:0B:9E:11:74:A5 Hello II Plus Yes Headset 1 ++00:0F:86:0E:AE:42 Daves Blackberry Yes Phone 7 ++ ++This is a list of all bluetooth devices seen and whether or not they are usable with chan_cellphone. ++The Address field contains the 'bd address' of the device. This is like an ethernet mac address. ++The Name field is whatever is configured into the device as its name. ++The Usable field tells you whether or not the device supports the Bluetooth Handsfree Profile or Headset profile. ++The Type field tells you whether the device is usable as a Phone line (FXO) or a headset (FXS) ++The Port field is the number to put in the configuration file. ++ ++Choose which device(s) you want to use and edit /etc/asterisk/mobile.conf. There is a sample included ++with the Asterisk source under configs/mobile.conf.sample. ++ ++Assuming we want to use the devices above, mobile.conf needs to look like this :- ++ ++=================================================================================== ++; ++; mobile.conf ++; ++ ++[general] ++interval=60 ; Number of seconds between trying to connect to devices. ++ ++; The following is a list of the devices we deal with. ++; Every device listed below will be available for calls in and out of Asterisk. ++; Discovered devices not in this list are not available. ++; Use the CLI command 'mobile search' to discover devices. ++; Use the CLI command 'mobile show devices' to see device status. ++; ++; To place a call use Dial(Mobile/[device]/NNN.....) in your dialplan. ++ ++[dave] ++address=00:12:56:90:6E:00 ++port=4 ++context=incoming-mobile ++ ++[headset] ++address=00:0B:9E:11:74:A5 ++port=1 ++type=headset ++=================================================================================== ++ ++Be sure to configure the right bd address and port number from the search. If you want inbound ++calls on a device to go to a specific context, add a context= line, otherwise the default will ++be used. The 'id' of the device [bitinbrackets] can be anything you like, just make the unique. ++ ++If your are configuring a Headset be sure to include the type=headset line, if left out it defaults ++to phone. ++ ++Having done this, unload chan_mobile and load it again. ++ ++The CLI command 'mobile show devices' can be used at any time to show the status of configured devices, ++and whether or not the device is capable of sending / receiving SMS via bluetooth. ++ ++*CLI> mobile show devices ++ID Address Connected State SMS ++blackberry 00:0F:86:0E:AE:42 Yes Free Yes ++dave 00:12:56:90:6E:00 Yes Free No ++headset 00:0B:9E:11:74:A5 Yes Free No ++*CLI> ++ ++ ++All being well Asterisk will now try and establish a connection to each configured device. If it cant ++it will retry after 'interval' seconds, infinately. ++ ++This means that as your cell phone comes into range and goes out of range, Asterisk will automatically ++connect and disconnect from it. You dont need to worry about it. ++ ++As each phone is connected you will see a message on the Asterisk console :- ++ ++ Loaded chan_mobile.so => (Bluetooth Mobile Device Channel Driver) ++ -- Bluetooth Device blackberry has connected. ++ -- Bluetooth Device dave has connected. ++ ++If someone calls your cell phone now, Asterisk will handle the call and it will be sent into the ++context you specified, or the default context. Mostly likely this means some SIP phone somewhere will ++ring, pick it up and take the call. ++ ++To make outbound calls, add something to you Dialplan like the following :- (modify to suit) ++ ++; Calls via TU500 ++exten => _9X.,1,Dial(Mobile/dave/${EXTEN:1},45) ++exten => _9X.,n,Hangup ++; Calls via Blackberry ++exten => _8X.,1,Dial(Mobile/blackberry/${EXTEN:1},45) ++exten => _8X.,n,Hangup ++ ++Pick up a SIP phone and dial 9 and the call vill go via the device 'dave' in ++mobile.conf. ++ ++To incoming calls to a headset do something like this :- ++ ++[incoming-context] ++exten => s,1,Dial(Mobile/headset,30) ++exten => s,n,Hangup() ++ ++To dial out on a headset, you need to use some other mechanism, because the headset is not likely ++to have all the needed buttons on it. res_clioriginate is good for this :- ++ ++*CLI> originate Mobile/headset extension NNNNN@context ++ ++This will call your headset, once you answer Asterisk will call NNNNN at context context ++ ++Dialplan hints :- ++ ++chan_mobile supports 'device status' so you can do somthing like ++ ++exten => 1234,hint,SIP/30&Mobile/dave&Mobile/blackberry ++ ++ ++MobileStatus Application :- ++ ++chan_mobile also registers an application named MobileStatus. You can use this in your Dialplan ++to determine the 'state' of a device. ++ ++For example, suppose you wanted to call dave's extension, but only if he was in the office. You could ++test to see if his cell phone was attached to Asterisk, if it is dial his extension, otherwise dial his ++cell phone. ++ ++exten => 40,1,MobileStatus(dave,DAVECELL) ++exten => 40,2,GotoIf($["${DAVECELL}" = "1"]?3:5) ++exten => 40,3,Dial(ZAP/g1/0427466412,45,tT) ++exten => 40,4,Hangup ++exten => 40,5,Dial(SIP/40,45,tT) ++exten => 40,6,Hangup ++ ++MobileStatus sets the value of the given variable to :- ++ ++1 = Disconnected. i.e. Device not in range of Asterisk, or turned off etc etc ++2 = Connected and Not on a call. i.e. Free ++3 = Connected and on a call. i.e. Busy ++ ++ ++SMS Sending / Receiving ++ ++If Asterisk has detected your cell phone is capable of SMS via bluetooth, you will be able to send and ++receive SMS. ++ ++Incoming SMS's cause Asterisk to create an inbound call to the context you defined in mobile.conf or the default ++context if you did not define one. The call will start at extension 'sms'. Two channel variables will be available, ++SMSSRC = the number of the originator of the SMS and SMSTXT which is the text of the SMS. ++This is not a voice call, so grab the values of the variables and hang the call up. ++ ++So, to handle incoming SMS's, do something like the following in your dialplan ++ ++[incoming-mobile] ++exten => sms,1,Verbose(Incoming SMS from ${SMSSRC} ${SMSTXT}) ++exten => sms,n,Hangup() ++ ++The above will just print the message on the console. ++ ++If you use res_jabber, you could do something like this :- ++ ++[incoming-mobile] ++exten => sms,1,JabberSend(transport,user@jabber.somewhere.com,SMS from ${SMSRC} ${SMSTXT}) ++exten => sms,2,Hangup() ++ ++To send an SMS, use the application MobileSendSMS like the following :- ++ ++exten => 99,1,MobileSendSMS(dave,0427123456,Hello World) ++ ++This will send 'Hello World' via device 'dave' to '0427123456' ++ ++ ++DTMF Debouncing :- ++ ++DTMF detection varies from phone to phone. There is a configuration variable that allows you to tune ++this to your needs. e.g. in mobile.conf ++ ++[dave] ++address=00:12:56:90:6E:00 ++port=4 ++context=incoming-mobile ++dtmfskip=50 ++ ++change dtmfskip to suit your phone. The default is 200. The larger the number, the more chance of missed DTMF. ++The smaller the number the more chance of multiple digits being detected. ++ ++ ++Debugging :- ++ ++Different phone manufacturers have different interpretations of the Bluetooth Handsfree Profile Spec. ++This means that not all phones work the same way, particularly in the connection setup / initialisation ++sequence. I've tried to make chan_cellphone as general as possible, but it may need modification to ++support some phone i've never tested. ++ ++The RIM Blackberry 7250 works extremely well. So does the LG TU500. ++ ++Some phones, most notably Sony Ericsson 'T' series, dont quite conform to the Bluetooth HFP spec. ++chan_mobile will detect these and adapt accordingly. The T-610 and T-630 have been tested and ++work fine. ++ ++If your phone doesnt behave has expected, turn on Asterisk debugging with 'core set debug 1'. ++ ++This will log a bunch of debug messages indicating what the phone is doing, importantly the rfcomm ++conversation between Asterisk and the phone. This can be used to sort out what your phone is doing ++and make chan_mobile support it. ++ ++Be aware also, that just about all cell phones behave differently. For example my LG TU500 wont dial unless ++the phone is a the 'idle' screen. i.e. if the phone is showing a 'menu' on the display, when you dial via ++Asterisk, the call will not work. chan_mobile handles this, but there may be other phones that do ++other things too... ++ ++Important: Watch what your cell phone is doing the first few times. Asterisk wont make random calls but ++if chan_mobile fails to hangup for some reason and you get a huge bill from your telco, dont blame me. ++ ++ ++Feedback, Support, Please can you make Cell Phone X work... etc :- ++ ++email me at david.bowerman at gmail.com or dseeb_ on #asterisk & #asterisk-dev irc. +diff -Nru asterisk-addons-1.4.6.org/Makefile asterisk-addons-1.4.6/Makefile +--- asterisk-addons-1.4.6.org/Makefile 2008-02-13 23:58:11.000000000 +0100 ++++ asterisk-addons-1.4.6/Makefile 2008-03-06 08:38:14.000000000 +0100 +@@ -215,6 +215,8 @@ + + gmenuconfig: gmenuselect + ++menuconfig: menuselect ++ + menuselect: menuselect/menuselect menuselect-tree + -@menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!" + +diff -Nru asterisk-addons-1.4.6.org/makeopts.in asterisk-addons-1.4.6/makeopts.in +--- asterisk-addons-1.4.6.org/makeopts.in 2008-02-13 23:58:11.000000000 +0100 ++++ asterisk-addons-1.4.6/makeopts.in 2008-03-06 08:38:14.000000000 +0100 +@@ -34,6 +34,9 @@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + ++BLUETOOTH_LIB=@BLUETOOTH_LIB@ ++BLUETOOTH_INCLUDE=@BLUETOOTH_INCLUDE@ ++ + CURSES_LIB=@CURSES_LIB@ + CURSES_INCLUDE=@CURSES_INCLUDE@ + diff --git a/net/asterisk-addons-1.4.x/patches/021-cross_configure.patch b/net/asterisk-addons-1.4.x/patches/021-cross_configure.patch index 42470c76e..3d3fb112f 100644 --- a/net/asterisk-addons-1.4.x/patches/021-cross_configure.patch +++ b/net/asterisk-addons-1.4.x/patches/021-cross_configure.patch @@ -1,12 +1,12 @@ -diff -ruN asterisk-addons-1.4.2-old/menuselect/Makefile asterisk-addons-1.4.2-new/menuselect/Makefile ---- asterisk-addons-1.4.2-old/menuselect/Makefile 2007-06-06 00:01:45.000000000 +0200 -+++ asterisk-addons-1.4.2-new/menuselect/Makefile 2007-09-19 18:00:27.000000000 +0200 -@@ -42,7 +42,7 @@ - @$(MAKE) menuselect +diff -Nru asterisk-addons-1.4.5.org/menuselect/Makefile asterisk-addons-1.4.5/menuselect/Makefile +--- asterisk-addons-1.4.5.org/menuselect/Makefile 2007-11-21 01:17:33.000000000 +0100 ++++ asterisk-addons-1.4.5/menuselect/Makefile 2007-12-20 22:47:17.000000000 +0100 +@@ -51,7 +51,7 @@ + $(OBJS) menuselect_gtk.o menuselect_curses.o menuselect_stub.o: autoconfig.h menuselect.h - autoconfig.h: -- @./configure $(CONFIGURE_SILENT) CC= LD= AR= -+ @./configure $(CONFIGURE_SILENT) CC= LD= AR= LDFLAGS= + makeopts autoconfig.h: autoconfig.h.in makeopts.in +- @./configure $(CONFIGURE_SILENT) CC= LD= AR= CFLAGS= ++ @./configure $(CONFIGURE_SILENT) CC= LD= AR= CFLAGS= LDFLAGS= + + menuselect gmenuselect: mxml/libmxml.a - _gmenuselect: autoconfig.h - @$(MAKE) gmenuselect diff --git a/net/asterisk-addons-1.4.x/patches/031-pthread_param.patch b/net/asterisk-addons-1.4.x/patches/031-pthread_param.patch new file mode 100644 index 000000000..ed4e93f83 --- /dev/null +++ b/net/asterisk-addons-1.4.x/patches/031-pthread_param.patch @@ -0,0 +1,19 @@ +*** asterisk-addons-1.4.7/channels/ooh323c/src/ooCmdChannel.c.orig 2008-06-27 18:12:50.000000000 +0800 +--- asterisk-addons-1.4.7/channels/ooh323c/src/ooCmdChannel.c 2008-06-27 18:12:11.000000000 +0800 +*************** +*** 37,43 **** + if ((ret = pipe(thePipe)) == -1) { + return OO_FAILED; + } +! pthread_mutex_init(&gCmdChanLock); + + gH323ep.cmdSock = dup(thePipe[0]); + close(thePipe[0]); +--- 37,43 ---- + if ((ret = pipe(thePipe)) == -1) { + return OO_FAILED; + } +! pthread_mutex_init(&gCmdChanLock, NULL); + + gH323ep.cmdSock = dup(thePipe[0]); + close(thePipe[0]);