[svn-commits] seanbright: branch 1.4 r885 - in /branches/1.4: libpri.h pri_internal.h q931.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Jun 24 13:19:28 CDT 2009


Author: seanbright
Date: Wed Jun 24 13:19:24 2009
New Revision: 885

URL: http://svn.asterisk.org/svn-view/libpri?view=rev&rev=885
Log:
Capture and expose the Reverse Charging Indication IE on ISDN PRI.

(issue #13760)
Reported by: mrgabu
Patches:
      20090619_libpri_1.4.patch uploaded by seanbright (license 71)
Tested by: seanbright, pruonckk

Review: https://reviewboard.asterisk.org/r/291/

Modified:
    branches/1.4/libpri.h
    branches/1.4/pri_internal.h
    branches/1.4/q931.c

Modified: branches/1.4/libpri.h
URL: http://svn.asterisk.org/svn-view/libpri/branches/1.4/libpri.h?view=diff&rev=885&r1=884&r2=885
==============================================================================
--- branches/1.4/libpri.h (original)
+++ branches/1.4/libpri.h Wed Jun 24 13:19:24 2009
@@ -421,6 +421,7 @@
 	char origcallednum[256];
 	int callingplanorigcalled;		/* Dialing plan of Originally Called Number */
 	int origredirectingreason;
+	int reversecharge;
 } pri_event_ring;
 
 typedef struct pri_event_hangup {
@@ -708,6 +709,7 @@
 #define PRI_REDIRECTING_REASON
 #define PRI_AOC_UNITS
 #define PRI_ANI
+#define PRI_REVERSECHARGE_SUPPORT
 
 /* Send notification */
 int pri_notify(struct pri *pri, q931_call *c, int channel, int info);

Modified: branches/1.4/pri_internal.h
URL: http://svn.asterisk.org/svn-view/libpri/branches/1.4/pri_internal.h?view=diff&rev=885&r1=884&r2=885
==============================================================================
--- branches/1.4/pri_internal.h (original)
+++ branches/1.4/pri_internal.h Wed Jun 24 13:19:24 2009
@@ -272,6 +272,7 @@
 	q931_call *bridged_call;        /* Pointer to other leg of bridged call (Used by Q.SIG when eliminating tromboned calls) */
 
 	int changestatus;		/* SERVICE message changestatus */
+	int reversecharge;		/* Reverse charging indication */
 };
 
 extern int pri_schedule_event(struct pri *pri, int ms, void (*function)(void *data), void *data);

Modified: branches/1.4/q931.c
URL: http://svn.asterisk.org/svn-view/libpri/branches/1.4/q931.c?view=diff&rev=885&r1=884&r2=885
==============================================================================
--- branches/1.4/q931.c (original)
+++ branches/1.4/q931.c Wed Jun 24 13:19:24 2009
@@ -2143,6 +2143,16 @@
 	pri_message(ctrl, "Count=%d (0x%02x)\n", ie->data[0] & 0x1f, ie->data[0] & 0x1f);
 }
 
+static void dump_reverse_charging_indication(int full_ie, struct pri *ctrl, q931_ie *ie, int len, char prefix)
+{
+	pri_message(ctrl, "%c Reverse Charging Indication (len=%02d): %d\n", prefix, len, ie->data[0] & 0x7);
+}
+
+static int receive_reverse_charging_indication(int full_ie, struct pri *ctrl, q931_call *call, int msgtype, q931_ie *ie, int len)
+{
+	call->reversecharge = ie->data[0] & 0x7;
+	return 0;
+}
 
 static struct ie ies[] = {
 	/* Codeset 0 - Common */
@@ -2160,7 +2170,7 @@
 	{ 1, Q931_BINARY_PARAMETERS, "Packet-layer Binary Parameters" },
 	{ 1, Q931_WINDOW_SIZE, "Packet-layer Window Size" },
 	{ 1, Q931_CLOSED_USER_GROUP, "Closed User Group" },
-	{ 1, Q931_REVERSE_CHARGE_INDIC, "Reverse Charging Indication" },
+	{ 1, Q931_REVERSE_CHARGE_INDIC, "Reverse Charging Indication", dump_reverse_charging_indication, receive_reverse_charging_indication },
 	{ 1, Q931_CALLING_PARTY_NUMBER, "Calling Party Number", dump_calling_party_number, receive_calling_party_number, transmit_calling_party_number },
 	{ 1, Q931_CALLING_PARTY_SUBADDR, "Calling Party Subaddress", dump_calling_party_subaddr, receive_calling_party_subaddr },
 	{ 1, Q931_CALLED_PARTY_NUMBER, "Called Party Number", dump_called_party_number, receive_called_party_number, transmit_called_party_number },
@@ -3784,6 +3794,7 @@
 		ctrl->ev.ring.redirectingreason = c->redirectingreason;
 		ctrl->ev.ring.progress = c->progress;
 		ctrl->ev.ring.progressmask = c->progressmask;
+		ctrl->ev.ring.reversecharge = c->reversecharge;
 		return Q931_RES_HAVEEVENT;
 	case Q931_ALERTING:
 		if (c->newcall) {




More information about the svn-commits mailing list