iam.fwdCallInd.end2EndInfoInd.pres = PRSNT_NODEF;
iam.fwdCallInd.end2EndInfoInd.val = E2EINF_NOINFO;
iam.fwdCallInd.isdnUsrPrtInd.pres = PRSNT_NODEF;
- iam.fwdCallInd.isdnUsrPrtInd.val = ISUP_USED;
+ iam.fwdCallInd.isdnUsrPrtInd.val = ISUP_NOTUSED;
iam.fwdCallInd.isdnUsrPrtPrfInd.pres = PRSNT_NODEF;
- iam.fwdCallInd.isdnUsrPrtPrfInd.val = PREF_REQAW;
+ iam.fwdCallInd.isdnUsrPrtPrfInd.val = PREF_PREFAW;
iam.fwdCallInd.isdnAccInd.pres = PRSNT_NODEF;
- iam.fwdCallInd.isdnAccInd.val = ISDNACC_ISDN;
+ iam.fwdCallInd.isdnAccInd.val = ISDNACC_NONISDN;
iam.fwdCallInd.sccpMethInd.pres = PRSNT_NODEF;
iam.fwdCallInd.sccpMethInd.val = SCCPMTH_NOIND;
copy_cdPtyNum_to_sngss7 (&ftdmchan->caller_data, &iam.cdPtyNum);
/* copy down the calling number information */
+
copy_cgPtyNum_to_sngss7 (&ftdmchan->caller_data, &iam.cgPtyNum);
/* check if the user would like a custom NADI value for the calling Pty Num */
nadi = ftdm_channel_get_var(ftdmchan, "ss7_nadi");
- if ((nadi != NULL) && (nadi != "")) {
+ if ((nadi != NULL) && (*nadi)) {
SS7_DEBUG_CHAN(ftdmchan,"Found user supplied NADI value \"%s\"\n", nadi);
iam.cgPtyNum.natAddrInd.val = atoi(nadi);
} else {
&iam,
0);
- SS7_MSG_TRACE(ftdmchan, sngss7_info, "Tx IAM\n");
+ SS7_INFO_CHAN(ftdmchan,"Tx IAM clg = \"%s\", cld = \"%s\"\n",
+ ftdmchan->caller_data.cid_num.digits,
+ ftdmchan->caller_data.dnis.digits);
SS7_FUNC_TRACE_EXIT (__FUNCTION__);
return;
/* fill in the needed information for the ACM */
acm.bckCallInd.eh.pres = PRSNT_NODEF;
acm.bckCallInd.chrgInd.pres = PRSNT_NODEF;
- acm.bckCallInd.chrgInd.val = 0x00;
+ acm.bckCallInd.chrgInd.val = CHRG_CHRG;
acm.bckCallInd.cadPtyStatInd.pres = PRSNT_NODEF;
acm.bckCallInd.cadPtyStatInd.val = 0x01;
acm.bckCallInd.cadPtyCatInd.pres = PRSNT_NODEF;
- acm.bckCallInd.cadPtyCatInd.val = 0x00;
+ acm.bckCallInd.cadPtyCatInd.val = CADCAT_ORDSUBS;
acm.bckCallInd.end2EndMethInd.pres = PRSNT_NODEF;
- acm.bckCallInd.end2EndMethInd.val = 0x00;
+ acm.bckCallInd.end2EndMethInd.val = E2EMTH_NOMETH;
acm.bckCallInd.intInd.pres = PRSNT_NODEF;
- acm.bckCallInd.intInd.val = 0x00;
+ acm.bckCallInd.intInd.val = INTIND_NOINTW;
acm.bckCallInd.end2EndInfoInd.pres = PRSNT_NODEF;
- acm.bckCallInd.end2EndInfoInd.val = 0x00;
+ acm.bckCallInd.end2EndInfoInd.val = E2EINF_NOINFO;
acm.bckCallInd.isdnUsrPrtInd.pres = PRSNT_NODEF;
- acm.bckCallInd.isdnUsrPrtInd.val = 0x0;
+ acm.bckCallInd.isdnUsrPrtInd.val = ISUP_USED;
acm.bckCallInd.holdInd.pres = PRSNT_NODEF;
- acm.bckCallInd.holdInd.val = 0x00;
+ acm.bckCallInd.holdInd.val = HOLD_NOTREQD;
acm.bckCallInd.isdnAccInd.pres = PRSNT_NODEF;
- acm.bckCallInd.isdnAccInd.val = 0x0;
+ acm.bckCallInd.isdnAccInd.val = ISDNACC_NONISDN;
acm.bckCallInd.echoCtrlDevInd.pres = PRSNT_NODEF;
acm.bckCallInd.echoCtrlDevInd.val = 0x1; /* ec device present */
acm.bckCallInd.sccpMethInd.pres = PRSNT_NODEF;
- acm.bckCallInd.sccpMethInd.val = 0x00;
+ acm.bckCallInd.sccpMethInd.val = SCCPMTH_NOIND;
/* send the ACM request to LibSngSS7 */
sng_cc_con_status (1,
int k;
int j;
int flag;
+ int odd;
char tmp[2];
- unsigned char lower;
- unsigned char upper;
+ uint8_t lower;
+ uint8_t upper;
/**************************************************************************/
cgPtyNum->eh.pres = PRSNT_NODEF;
k = 0;
j = 0;
flag = 0;
+ odd = 0;
+ upper = 0x0;
+ lower = 0x0;
while (1) {
+ /* grab a digit from the ftdm digits */
tmp[0] = ftdm->cid_num.digits[k];
+ /* check if the digit is a number and that is not null */
+ while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
+ /* move on to the next value */
+ k++;
+ tmp[0] = ftdm->cid_num.digits[k];
+ } /* while(!(isdigit(tmp))) */
+
+ /* check if tmp is null or a digit */
if (tmp[0] != '\0') {
- if (isdigit(tmp[0])) {
- lower = atoi(&tmp[0]);
+ /* push it into the lower nibble */
+ lower = atoi(&tmp[0]);
+ /* move to the next digit */
+ k++;
+ /* grab a digit from the ftdm digits */
+ tmp[0] = ftdm->cid_num.digits[k];
+
+ /* check if the digit is a number and that is not null */
+ while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
k++;
tmp[0] = ftdm->cid_num.digits[k];
- } else {
- while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
- k++;
- tmp[0] = ftdm->cid_num.digits[k];
- } /* while(!(isdigit(tmp))) */
-
- if (tmp[0] != '\0') {
- lower = atoi(&tmp[0]);
- k++;
- tmp[0] = ftdm->cid_num.digits[k];
- } else {
- flag = 1;
- lower = 0xf;
- } /* if (tmp != '\0') */
- } /* (isdigit(tmp)) */
- } else {
- flag = 1;
- lower = 0xf;
- } /* if (tmp != '\0') */
-
- tmp[0] = ftdm->cid_num.digits[k];
+ } /* while(!(isdigit(tmp))) */
- if (tmp[0] != '\0') {
- if (isdigit(tmp[0])) {
+ /* check if tmp is null or a digit */
+ if (tmp[0] != '\0') {
+ /* push the digit into the upper nibble */
upper = (atoi(&tmp[0])) << 4;
} else {
- while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
- k++;
- tmp[0] = ftdm->cid_num.digits[k];
- } /* while(!(isdigit(tmp))) */
-
- if (tmp[0] != '\0') {
- upper = (atoi(&tmp[0])) << 4;
- k++;
- } else {
- flag = 1;
- upper = 0xf;
- } /* if (tmp != '\0') */
- } /* if (isdigit(tmp)) */
- } else {
- if (flag == 1) {
+ /* there is no upper ... fill in 0 */
upper = 0x0;
- } else {
+ /* throw the odd flag */
+ odd = 1;
+ /* throw the end flag */
flag = 1;
- upper = 0xf;
- } /* if (flag == 1) */
- } /* if (tmp != '\0') */
+ } /* if (tmp != '\0') */
+ } else {
+ /* keep the odd flag down */
+ odd = 0;
+ /* throw the flag */
+ flag = 1;
+ }
+ /* push the digits into the trillium structure */
cgPtyNum->addrSig.val[j] = upper | lower;
+ /* increment the trillium pointer */
j++;
- if (flag) {
- break;
- } else {
- k++;
- }
+ /* if the flag is up we're through all the digits */
+ if (flag) break;
+
+ /* move to the next digit */
+ k++;
} /* while(1) */
cgPtyNum->addrSig.len = j;
/**************************************************************************/
cgPtyNum->oddEven.pres = PRSNT_NODEF;
-
- cgPtyNum->oddEven.val = ((cgPtyNum->addrSig.val[j] >> 4) == 0x0 ) ? 0x01 : 0x00;
-
+ cgPtyNum->oddEven.val = odd;
/**************************************************************************/
return 0;
}
int k;
int j;
int flag;
+ int odd;
char tmp[2];
- unsigned char lower;
- unsigned char upper;
+ uint8_t lower;
+ uint8_t upper;
/**************************************************************************/
cdPtyNum->eh.pres = PRSNT_NODEF;
/* atoi will search through memory starting from the pointer it is given until
* it finds the \0...since tmp is on the stack it will start going through the
* possibly causing corruption. Hard code a \0 to prevent this
- */
+ */ /* dnis */
tmp[1] = '\0';
k = 0;
j = 0;
flag = 0;
+ odd = 0;
+ upper = 0x0;
+ lower = 0x0;
while (1) {
+ /* grab a digit from the ftdm digits */
tmp[0] = ftdm->dnis.digits[k];
+ /* check if the digit is a number and that is not null */
+ while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
+ /* move on to the next value */
+ k++;
+ tmp[0] = ftdm->dnis.digits[k];
+ } /* while(!(isdigit(tmp))) */
+
+ /* check if tmp is null or a digit */
if (tmp[0] != '\0') {
- if (isdigit(tmp[0])) {
- lower = atoi(&tmp[0]);
+ /* push it into the lower nibble */
+ lower = atoi(&tmp[0]);
+ /* move to the next digit */
+ k++;
+ /* grab a digit from the ftdm digits */
+ tmp[0] = ftdm->dnis.digits[k];
+
+ /* check if the digit is a number and that is not null */
+ while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
k++;
tmp[0] = ftdm->dnis.digits[k];
- } else {
- while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
- k++;
- tmp[0] = ftdm->dnis.digits[k];
- } /* while(!(isdigit(tmp))) */
-
- if (tmp[0] != '\0') {
- lower = atoi(&tmp[0]);
- k++;
- tmp[0] = ftdm->dnis.digits[k];
- } else {
- flag = 1;
- lower = 0xf;
- } /* if (tmp != '\0') */
- } /* (isdigit(tmp)) */
- } else {
- flag = 1;
- lower = 0xf;
- } /* if (tmp != '\0') */
+ } /* while(!(isdigit(tmp))) */
- tmp[0] = ftdm->dnis.digits[k];
-
- if (tmp[0] != '\0') {
- if (isdigit(tmp[0])) {
+ /* check if tmp is null or a digit */
+ if (tmp[0] != '\0') {
+ /* push the digit into the upper nibble */
upper = (atoi(&tmp[0])) << 4;
} else {
- while (!(isdigit(tmp[0])) && (tmp[0] != '\0')) {
- k++;
- tmp[0] = ftdm->dnis.digits[k];
- } /* while(!(isdigit(tmp))) */
-
- if (tmp[0] != '\0') {
- upper = (atoi(&tmp[0])) << 4;
- k++;
- } else {
- flag = 1;
- upper = 0xf;
- } /* if (tmp != '\0') */
- } /* if (isdigit(tmp)) */
- } else {
- if (flag == 1) {
- upper = 0x0;
- } else {
+ /* there is no upper ... fill in ST */
+ upper = 0xF;
+ /* throw the odd flag */
+ odd = 1;
+ /* throw the end flag */
flag = 1;
- upper = 0xf;
- } /* if (flag == 1) */
- } /* if (tmp != '\0') */
+ } /* if (tmp != '\0') */
+ } else {
+ /* keep the odd flag down */
+ odd = 1;
+ /* need to add the ST */
+ lower = 0xF;
+ upper = 0x0;
+ /* throw the flag */
+ flag = 1;
+ }
+ /* push the digits into the trillium structure */
cdPtyNum->addrSig.val[j] = upper | lower;
+ /* increment the trillium pointer */
j++;
- if (flag) {
- break;
- } else {
- k++;
- }
+ /* if the flag is up we're through all the digits */
+ if (flag) break;
+
+ /* move to the next digit */
+ k++;
} /* while(1) */
cdPtyNum->addrSig.len = j;
/**************************************************************************/
cdPtyNum->oddEven.pres = PRSNT_NODEF;
- cdPtyNum->oddEven.val = ((cdPtyNum->addrSig.val[j] >> 4) == 0x0 ) ? 0x01 : 0x00;
+ cdPtyNum->oddEven.val = odd;
/**************************************************************************/
return 0;