[svn-commits] rmudgett: branch group/issue14292 r818 - /team/group/issue14292/
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Wed May 27 16:49:54 CDT 2009
Author: rmudgett
Date: Wed May 27 16:49:50 2009
New Revision: 818
URL: http://svn.asterisk.org/svn-view/libpri?view=rev&rev=818
Log:
Updated to use new COLP API changes.
Modified:
team/group/issue14292/pri_facility.c
team/group/issue14292/pri_internal.h
team/group/issue14292/q931.c
Modified: team/group/issue14292/pri_facility.c
URL: http://svn.asterisk.org/svn-view/libpri/team/group/issue14292/pri_facility.c?view=diff&rev=818&r1=817&r2=818
==============================================================================
--- team/group/issue14292/pri_facility.c (original)
+++ team/group/issue14292/pri_facility.c Wed May 27 16:49:50 2009
@@ -1910,18 +1910,6 @@
}
/* ===== End Call Completion Supplementary Service (ETS 300 366/ECMA 186) ===== */
-static struct pri_subcommand *get_ptr_subcommand(struct pri_subcommands *sub)
-{
- if (sub->counter_subcmd < PRI_MAX_SUBCOMMANDS) {
- int count = sub->counter_subcmd;
-
- sub->counter_subcmd++;
- return &sub->subcmd[count];
- }
-
- return NULL;
-}
-
/*!
* \brief Put the APDU on the call queue.
*
@@ -2226,7 +2214,7 @@
switch (ctrl->switchtype) {
case PRI_SWITCH_QSIG:
- c_subcmd = get_ptr_subcommand(&call->subcmds);
+ c_subcmd = q931_alloc_subcommand(ctrl);
if (!c_subcmd) {
pri_error(ctrl, "ERROR: Too many facility subcommands\n");
break;
@@ -2400,7 +2388,7 @@
}
break;
case ROSE_QSIG_CcbsRequest:
- c_subcmd = get_ptr_subcommand(&call->subcmds);
+ c_subcmd = q931_alloc_subcommand(ctrl);
if (!c_subcmd) {
pri_error(ctrl, "ERROR: Too many facility subcommands\n");
break;
@@ -2413,7 +2401,7 @@
c_subcmd->cc_ccbs_rr.cc_request_res.cc_extension.cc_extension_tag = 0;
break;
case ROSE_QSIG_CcnrRequest:
- c_subcmd = get_ptr_subcommand(&call->subcmds);
+ c_subcmd = q931_alloc_subcommand(ctrl);
if (!c_subcmd) {
pri_error(ctrl, "ERROR: Too many facility subcommands\n");
break;
@@ -2943,7 +2931,7 @@
break;
#endif /* Not handled yet */
case ROSE_QSIG_CcCancel:
- c_subcmd = get_ptr_subcommand(&call->subcmds);
+ c_subcmd = q931_alloc_subcommand(ctrl);
if (!c_subcmd) {
pri_error(ctrl, "ERROR: Too many facility subcommands\n");
break;
@@ -2962,7 +2950,7 @@
}
break;
case ROSE_QSIG_CcExecPossible:
- c_subcmd = get_ptr_subcommand(&call->subcmds);
+ c_subcmd = q931_alloc_subcommand(ctrl);
if (!c_subcmd) {
pri_error(ctrl, "ERROR: Too many facility subcommands\n");
break;
@@ -2985,7 +2973,7 @@
break;
#endif /* Not handled yet */
case ROSE_QSIG_CcRingout:
- c_subcmd = get_ptr_subcommand(&call->subcmds);
+ c_subcmd = q931_alloc_subcommand(ctrl);
if (!c_subcmd) {
pri_error(ctrl, "ERROR: Too many facility subcommands\n");
break;
Modified: team/group/issue14292/pri_internal.h
URL: http://svn.asterisk.org/svn-view/libpri/team/group/issue14292/pri_internal.h?view=diff&rev=818&r1=817&r2=818
==============================================================================
--- team/group/issue14292/pri_internal.h (original)
+++ team/group/issue14292/pri_internal.h Wed May 27 16:49:50 2009
@@ -332,8 +332,6 @@
int ccoperation; /* QSIG_CCBSREQUEST/QSIG_CCNRREQUEST */
int ccrequestresult;
int cctimer2; /* Timer for QSIG-timer2 */
- /* QSIG cc infos (receive) */
- struct pri_subcommands subcmds;
int ani2; /* ANI II */
Modified: team/group/issue14292/q931.c
URL: http://svn.asterisk.org/svn-view/libpri/team/group/issue14292/q931.c?view=diff&rev=818&r1=817&r2=818
==============================================================================
--- team/group/issue14292/q931.c (original)
+++ team/group/issue14292/q931.c Wed May 27 16:49:50 2009
@@ -3689,115 +3689,6 @@
return NULL;
}
-static struct pri_subcommand *get_ptr_q931_subcommand_by_index(struct pri_subcommands *sub, int index)
-{
- if (index < PRI_MAX_SUBCOMMANDS) {
- sub->counter_subcmd--;
- return &sub->subcmd[index];
- }
-
- return NULL;
-}
-
-static int q931_facilities2eventfacilities(struct pri *pri, q931_call *c, struct pri_subcommands *subcmds)
-{
- int facilitypos;
- int facility_number;
- struct pri_subcommand *c_subcmd;
- struct pri_subcommand *e_subcmd;
-
- if (c->subcmds.counter_subcmd) {
- facility_number = c->subcmds.counter_subcmd;
-
- for (facilitypos = 0; facilitypos < facility_number; facilitypos++) {
- c->subcmds.counter_subcmd--;
- c_subcmd = get_ptr_q931_subcommand_by_index(&c->subcmds, facilitypos);
- e_subcmd = get_ptr_subcommand(subcmds);
- if (c_subcmd && e_subcmd) {
- switch (c_subcmd->cmd) {
- case PRI_SUBCMD_CC_CCBSREQUEST_RR:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_ccbs_rr, &e_subcmd->cc_ccbs_rr, sizeof(c_subcmd->cc_ccbs_rr));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_CCBSREQUEST) (%d/%d)\n",
- e_subcmd->cc_ccbs_rr.cc_request_res.no_path_reservation,
- e_subcmd->cc_ccbs_rr.cc_request_res.retain_service);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- c->ccrequestresult = 1;
- break;
- case PRI_SUBCMD_CC_CCNRREQUEST_RR:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_ccnr_rr, &e_subcmd->cc_ccnr_rr, sizeof(c_subcmd->cc_ccnr_rr));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_CCNRREQUEST) (%d/%d)\n",
- e_subcmd->cc_ccnr_rr.cc_request_res.no_path_reservation,
- e_subcmd->cc_ccnr_rr.cc_request_res.retain_service);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- c->ccrequestresult = 1;
- break;
- case PRI_SUBCMD_CC_CANCEL_INV:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_cancel_inv, &e_subcmd->cc_cancel_inv, sizeof(c_subcmd->cc_cancel_inv));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_CANCEL) (%s/%s)\n",
- e_subcmd->cc_cancel_inv.cc_optional_arg.number_A,
- e_subcmd->cc_cancel_inv.cc_optional_arg.number_B);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- break;
- case PRI_SUBCMD_CC_EXECPOSIBLE_INV:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_execposible_inv, &e_subcmd->cc_execposible_inv, sizeof(c_subcmd->cc_execposible_inv));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_EXECPOSIBLE) (%s/%s)\n",
- e_subcmd->cc_execposible_inv.cc_optional_arg.number_A,
- e_subcmd->cc_execposible_inv.cc_optional_arg.number_B);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- break;
- case PRI_SUBCMD_CC_RINGOUT_INV:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_ringout_inv, &e_subcmd->cc_ringout_inv, sizeof(c_subcmd->cc_ringout_inv));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_RINGOUT) (%d)\n",
- e_subcmd->cc_ringout_inv.cc_extension.cc_extension_tag);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- break;
- case PRI_SUBCMD_CC_SUSPEND_INV:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_suspend_inv, &e_subcmd->cc_suspend_inv, sizeof(c_subcmd->cc_suspend_inv));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_SUSPEND) (%d)\n",
- e_subcmd->cc_suspend_inv.cc_extension.cc_extension_tag);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- break;
- case PRI_SUBCMD_CC_ERROR:
- e_subcmd->cmd = c_subcmd->cmd;
- memcpy(&c_subcmd->cc_error, &e_subcmd->cc_error, sizeof(c_subcmd->cc_error));
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "facility(QSIG_CC_ERROR) (%d)\n",
- e_subcmd->cc_error.error_value);
- if (pri->debug & PRI_DEBUG_APDU)
- pri_message(pri, "counter_subcmd(%d)\n", subcmds->counter_subcmd);
- break;
- default:
- pri_error(pri, "Don't know how to handle Facility subcmd %d\n", c_subcmd->cmd);
- break;
- }
- }
- }
-#if 0
- } else {
- pri_message(pri, "No facilities specified\n");
-#endif
- }
- return 0;
-}
-
static int prepare_to_handle_maintenance_message(struct pri *pri, q931_mh *mh, q931_call *c)
{
if ((!pri) || (!mh) || (!c)) {
@@ -3841,7 +3732,6 @@
break;
case Q931_FACILITY:
q931_party_name_init(&c->caller_id.name);
- c->subcmds.counter_subcmd = 0;
break;
case Q931_SETUP:
if (pri->debug & PRI_DEBUG_Q931_STATE)
@@ -3887,7 +3777,6 @@
case Q931_CONNECT:
c->ccrequestresult = 0;
case Q931_ALERTING:
- c->subcmds.counter_subcmd = 0;
case Q931_PROGRESS:
c->useruserinfo[0] = '\0';
c->cause = -1;
@@ -3903,7 +3792,6 @@
break;
case Q931_RELEASE:
case Q931_DISCONNECT:
- c->subcmds.counter_subcmd = 0;
c->cause = -1;
c->causecode = -1;
c->causeloc = -1;
@@ -3918,7 +3806,6 @@
pri_schedule_del(pri, c->retranstimer);
c->retranstimer = 0;
c->useruserinfo[0] = '\0';
- c->subcmds.counter_subcmd = 0;
/* Fall through */
case Q931_STATUS:
c->cause = -1;
@@ -4200,9 +4087,6 @@
if (!c->newcall) {
break;
}
-
- clr_subcommands(&pri->ev.ring.subcmds);
-
if (c->progressmask & PRI_PROG_CALLER_NOT_ISDN)
c->nonisdn = 1;
c->newcall = 0;
@@ -4253,19 +4137,12 @@
pri->ev.ring.ctype = c->transcapability;
pri->ev.ring.progress = c->progress;
pri->ev.ring.progressmask = c->progressmask;
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending ring event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.ring.cref, c->nochannelsignalling, pri->ev.ring.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.ring.subcmds);
return Q931_RES_HAVEEVENT;
case Q931_ALERTING:
if (c->newcall) {
q931_release_complete(pri,c,PRI_CAUSE_INVALID_CALL_REFERENCE);
break;
}
- clr_subcommands(&pri->ev.ringing.subcmds);
-
UPDATE_OURCALLSTATE(pri, c, Q931_CALL_STATE_CALL_DELIVERED);
c->peercallstate = Q931_CALL_STATE_CALL_RECEIVED;
pri->ev.e = PRI_EVENT_RINGING;
@@ -4290,11 +4167,6 @@
}
libpri_copy_string(pri->ev.ringing.useruserinfo, c->useruserinfo, sizeof(pri->ev.ringing.useruserinfo));
c->useruserinfo[0] = '\0';
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending ringing event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.ringing.cref, c->nochannelsignalling, pri->ev.ringing.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.ringing.subcmds);
cur = c->apdus;
while (cur) {
@@ -4315,8 +4187,6 @@
q931_status(pri, c, PRI_CAUSE_WRONG_MESSAGE);
break;
}
- clr_subcommands(&pri->ev.answer.subcmds);
-
UPDATE_OURCALLSTATE(pri, c, Q931_CALL_STATE_ACTIVE);
c->peercallstate = Q931_CALL_STATE_CONNECT_REQUEST;
pri->ev.e = PRI_EVENT_ANSWER;
@@ -4333,11 +4203,6 @@
pri->ev.answer.source = PRI_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
libpri_copy_string(pri->ev.answer.useruserinfo, c->useruserinfo, sizeof(pri->ev.answer.useruserinfo));
c->useruserinfo[0] = '\0';
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending answer event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.answer.cref, c->nochannelsignalling, pri->ev.answer.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.answer.subcmds);
q931_connect_acknowledge(pri, c);
if (c->nochannelsignalling) {
if (c->ccrequestresult) {
@@ -4360,17 +4225,7 @@
q931_release_complete(pri,c,PRI_CAUSE_INVALID_CALL_REFERENCE);
break;
}
- if (c->subcmds.counter_subcmd) {
- pri->ev.e = PRI_EVENT_FACILITY;
- pri->ev.facility.channel = c->channelno | (c->ds1no << 8) | (c->ds1explicit << 16);
- pri->ev.facility.cref = c->cr;
- pri->ev.facility.call = c;
-
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending facility event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.facility.cref, c->nochannelsignalling, pri->ev.facility.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.facility.subcmds);
+ if (pri->subcmds.counter_subcmd) {
haveevent = 1;
}
if (c->ctcompleteflag) {
@@ -4587,8 +4442,6 @@
}
break;
case Q931_RELEASE_COMPLETE:
- clr_subcommands(&pri->ev.hangup.subcmds);
-
UPDATE_OURCALLSTATE(pri, c, Q931_CALL_STATE_NULL);
c->peercallstate = Q931_CALL_STATE_NULL;
pri->ev.hangup.subcmds = &pri->subcmds;
@@ -4599,11 +4452,6 @@
pri->ev.hangup.aoc_units = c->aoc_units;
libpri_copy_string(pri->ev.hangup.useruserinfo, c->useruserinfo, sizeof(pri->ev.hangup.useruserinfo));
c->useruserinfo[0] = '\0';
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending hangup event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.hangup.cref, c->nochannelsignalling, pri->ev.hangup.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.hangup.subcmds);
/* Free resources */
if (c->alive) {
pri->ev.e = PRI_EVENT_HANGUP;
@@ -4621,8 +4469,6 @@
q931_hangup(pri,c,c->cause);
break;
case Q931_RELEASE:
- clr_subcommands(&pri->ev.hangup.subcmds);
-
if (missingmand) {
/* Force cause to be mandatory IE missing */
c->cause = PRI_CAUSE_MANDATORY_IE_MISSING;
@@ -4642,11 +4488,6 @@
pri->ev.hangup.aoc_units = c->aoc_units;
libpri_copy_string(pri->ev.hangup.useruserinfo, c->useruserinfo, sizeof(pri->ev.hangup.useruserinfo));
c->useruserinfo[0] = '\0';
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending hangup event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.hangup.cref, c->nochannelsignalling, pri->ev.hangup.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.hangup.subcmds);
/* Don't send release complete if they send us release
while we sent it, assume a NULL state */
if (c->newcall)
@@ -4655,8 +4496,6 @@
return Q931_RES_HAVEEVENT;
break;
case Q931_DISCONNECT:
- clr_subcommands(&pri->ev.hangup.subcmds);
-
if (missingmand) {
/* Still let user call release */
c->cause = PRI_CAUSE_MANDATORY_IE_MISSING;
@@ -4684,11 +4523,6 @@
pri->ev.hangup.aoc_units = c->aoc_units;
libpri_copy_string(pri->ev.hangup.useruserinfo, c->useruserinfo, sizeof(pri->ev.hangup.useruserinfo));
c->useruserinfo[0] = '\0';
- if (pri->debug & PRI_DEBUG_APDU) {
- pri_message(pri, "Sending hangup event (%d) nochannelsignalling (%d) facility_number (%d)\n",
- pri->ev.hangup.cref, c->nochannelsignalling, pri->ev.hangup.subcmds.counter_subcmd);
- }
- q931_facilities2eventfacilities(pri, c, &pri->ev.hangup.subcmds);
if (c->alive)
return Q931_RES_HAVEEVENT;
else
More information about the svn-commits
mailing list