Update asterisk-addons-1.4.x to 1.4.7

Requires a patch to pthread call.

Signed-off-by: Michael Geddes <michael at frog dot wheelycreek dot net>

git-svn-id: svn://svn.openwrt.org/openwrt/packages@12795 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
agb 2008-09-29 03:37:49 +00:00
parent 8b28448af3
commit cbee4e0946
4 changed files with 386 additions and 406 deletions

View File

@ -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

View File

@ -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<number of pizza shop> 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 @@
<depend>mysqlclient</depend>
<depend>asterisk</depend>
</member>
+ <member name="chan_mobile" remove_on_change="chan_mobile.so chan_mobile.o" displayname="Bluetooth Mobile Device channel driver">
+ <depend>bluetooth</depend>
+ <depend>asterisk</depend>
+ </member>
<member name="chan_ooh323" displayname="Objective Systems H.323 Channel Driver">
<depend>asterisk</depend>
</member>
--- 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<number of pizza shop> 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@

View File

@ -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

View File

@ -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]);