[svn-commits] dcb: trunk r436 - in /trunk: ./ configs/ doc/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Sep 1 21:33:21 CDT 2007


Author: dcb
Date: Sat Sep  1 21:33:20 2007
New Revision: 436

URL: http://svn.digium.com/view/asterisk-addons?view=rev&rev=436
Log:
* Implemented 'trunk groups' for those wanting to create GSM gateways
  Dial(Mobile/gn/NNNNNN) will call NNNNNN on the first free connected
  phone in group n.

Modified:
    trunk/chan_mobile.c
    trunk/configs/mobile.conf.sample
    trunk/doc/chan_mobile.txt

Modified: trunk/chan_mobile.c
URL: http://svn.digium.com/view/asterisk-addons/trunk/chan_mobile.c?view=diff&rev=436&r1=435&r2=436
==============================================================================
--- trunk/chan_mobile.c (original)
+++ trunk/chan_mobile.c Sat Sep  1 21:33:20 2007
@@ -123,6 +123,7 @@
 	struct ast_frame fr;			/* "null" frame */
 	enum mbl_type type;				/* Phone or Headset */
 	char id[31];					/* The id from mobile.conf */
+	int group;						/* group number for group dialling */
 	bdaddr_t addr;					/* address of device */
 	struct adapter_pvt *adapter;	/* the adapter we use */
 	char context[AST_MAX_CONTEXT];	/* the context for incoming calls */
@@ -244,13 +245,15 @@
 
 	struct mbl_pvt *pvt;
 	char bdaddr[18];
-
-	#define FORMAT "%-15.15s %-17.17s %-15.15s %-9.9s %-5.5s %-3.3s\n"
-
-	ast_cli(fd, FORMAT, "ID", "Address", "Adapter", "Connected", "State", "SMS");
+	char group[6];
+
+	#define FORMAT "%-15.15s %-17.17s %-5.5s %-15.15s %-9.9s %-5.5s %-3.3s\n"
+
+	ast_cli(fd, FORMAT, "ID", "Address", "Group", "Adapter", "Connected", "State", "SMS");
 	AST_LIST_TRAVERSE(&devices, pvt, entry) {
 		ba2str(&pvt->addr, bdaddr);
-		ast_cli(fd, FORMAT, pvt->id, bdaddr, pvt->adapter->id, pvt->connected?"Yes":"No", (pvt->state == MBL_STATE_IDLE)?"Free":(pvt->state < MBL_STATE_IDLE)?"Init":"Busy", (pvt->has_sms)?"Yes":"No");
+		snprintf(group, 5, "%d", pvt->group);
+		ast_cli(fd, FORMAT, pvt->id, bdaddr, group, pvt->adapter->id, pvt->connected?"Yes":"No", (pvt->state == MBL_STATE_IDLE)?"Free":(pvt->state < MBL_STATE_IDLE)?"Init":"Busy", (pvt->has_sms)?"Yes":"No");
 	}	
 
 	return RESULT_SUCCESS;
@@ -448,7 +451,7 @@
 	struct mbl_pvt *pvt;
 	char *dest_dev = NULL;
 	char *dest_num = NULL;
-	int oldformat;
+	int oldformat, group;
 	
 	if (!data) {
 		ast_log(LOG_WARNING, "Channel requested with no data\n");
@@ -472,7 +475,11 @@
 
 	/* Find requested device and make sure its connected. */
 	AST_LIST_TRAVERSE(&devices, pvt, entry) {
-		if (!strcmp(pvt->id, dest_dev)) {
+		if ((dest_dev[0] == 'g') || (dest_dev[0] == 'G')) {
+			group = atoi(dest_dev+1);
+			if (pvt->group == group)
+				break;
+		} else if (!strcmp(pvt->id, dest_dev)) {
 			break;
 		}
 	}
@@ -1805,7 +1812,7 @@
 	struct ast_config *cfg = NULL;
 	char *cat = NULL;
 	struct ast_variable *var;
-	const char *id, *address, *useadapter, *port, *context, *type, *skip;
+	const char *id, *address, *useadapter, *port, *context, *type, *skip, *group;
 	struct mbl_pvt *pvt;
 	struct adapter_pvt *adapter;
 	uint16_t vs;
@@ -1882,6 +1889,7 @@
 			context = ast_variable_retrieve(cfg, cat, "context");
 			type = ast_variable_retrieve(cfg, cat, "type");
 			skip = ast_variable_retrieve(cfg, cat, "dtmfskip");
+			group = ast_variable_retrieve(cfg, cat, "group");
 			if (address && port && useadapter) {
 				/* find the adapter */
 				AST_LIST_TRAVERSE(&adapters, adapter, entry) {
@@ -1900,6 +1908,10 @@
 					ast_copy_string(pvt->id, cat, sizeof(pvt->id));
 					str2ba(address, &pvt->addr);
 					ast_copy_string(pvt->context, S_OR(context, "default"), sizeof(pvt->context));
+					if (group)
+						pvt->group = atoi(group);	/* group 0 if invalid */
+					else
+						pvt->group = 0;
 					pvt->connected = 0;
 					pvt->state = MBL_STATE_INIT;
 					pvt->rfcomm_socket = -1;

Modified: trunk/configs/mobile.conf.sample
URL: http://svn.digium.com/view/asterisk-addons/trunk/configs/mobile.conf.sample?view=diff&rev=436&r1=435&r2=436
==============================================================================
--- trunk/configs/mobile.conf.sample (original)
+++ trunk/configs/mobile.conf.sample Sat Sep  1 21:33:20 2007
@@ -25,20 +25,22 @@
 ; Use the CLI command 'mobile search' to discover devices.
 ; Use the CLI command 'mobile show devices' to see device status.
 ;
-; To place a call out through a mobile phone use Dial(Mobile/[device]/NNN.....) in your dialplan.
+; To place a call out through a mobile phone use Dial(Mobile/[device]/NNN.....) or Dial(Mobile/gn/NNN......) in your dialplan.
 ; To call a headset use Dial(Mobile/[device]).
 
 [LGTU550]
 address=00:E0:91:7F:46:44	; the address of the phone
 port=4				; the rfcomm port number (from mobile search)
 context=incoming-mobile		; dialplan context for incoming calls
-adapter=dlink			; adapter to use
+adapter=dlink				; adapter to use
+group=1						; this phone is in channel group 1
 
 [6310i]
 address=00:60:57:32:7E:B1
 port=13
 context=incoming-mobile
 adapter=dlink
+group=1						; this phone is in channel group 1 also.
 
 [headset]
 address=00:0B:9E:11:AE:C6

Modified: trunk/doc/chan_mobile.txt
URL: http://svn.digium.com/view/asterisk-addons/trunk/doc/chan_mobile.txt?view=diff&rev=436&r1=435&r2=436
==============================================================================
--- trunk/doc/chan_mobile.txt (original)
+++ trunk/doc/chan_mobile.txt Sat Sep  1 21:33:20 2007
@@ -17,6 +17,7 @@
 Application MobileStatus can be used in the dialplan to see if a mobile phone / headset is connected.
 Supports devicestate for dialplan hinting.
 Supports Inbound and Outbound SMS.
+Supports 'channel' groups for implementing 'GSM Gateways'
 
 
 Requirements :-
@@ -97,9 +98,9 @@
 and whether or not the device is capable of sending / receiving SMS via bluetooth.
 
 *CLI> mobile show devices 
-ID              Address           Adapter         Connected State SMS
-headset         00:0B:9E:11:AE:C6 blue            No        Init  No 
-LGTU550         00:E0:91:7F:46:44 dlink           No        Init  No 
+ID              Address           Group Adapter         Connected State SMS
+headset         00:0B:9E:11:AE:C6 0     blue            No        Init  No 
+LGTU550         00:E0:91:7F:46:44 1     dlink           No        Init  No 
 *CLI>
 
 As each phone is connected you will see a message on the Asterisk console :-
@@ -113,6 +114,14 @@
 ; Calls via LGTU5500
 exten => _9X.,1,Dial(Mobile/LGTU550/${EXTEN:1},45)
 exten => _9X.,n,Hangup
+
+To use channel groups, add an entry to each phones definition in mobile.conf like group=n
+where n is a number.
+
+Then if you do something like Dial(Mobile/g1/123456) Asterisk will dial 123456 on the first
+connected free phone in group 1.
+
+Phones which do not have a specific 'group=n' will be in group 0.
 
 
 To dial out on a headset, you need to use some other mechanism, because the headset is not likely




More information about the svn-commits mailing list