All pastes #23965 Raw Edit

Someone

public text v1 · immutable
#23965 ·published 2005-09-26 17:00 UTC
rendered paste body
There is a definition for dtmfbuf already.

char dtmfbuf[300];

These are the 5 possible strings that will appear in dtmfbuf

*002044896227#
*002044896227#*6045551212#
*002044896227#*06045551212#
*1381537359#*002044896227#*3592943431012#
*1581537359#*002044896227#*3592943431012#


Here are the variables I need populated.  All must be strings.  No functions can be used.

IXC_PRESUB
IXC_ANI
IXC_DNIS
IXC_INTL
IXC_CIC
IXC_OZZ
IXC_COUNTRY
IXC_OPERATOR
IXC_CUTTHROUGH

*AABBBBBBBBBB#					- source #
*AABBBBBBBBBB#*CCCCCCCCCC#			- source # dest #
*AABBBBBBBBBB#*DCCCCCCCCCC#			- source # dest #
*EEEFFFFGGG#*AABBBBBBBBBB#*CCCCCCCCCCCCC#	- intl # source # dest #

AA 		= IXC_PRESUB
BBBBBBBBBB 	= IXC_ANI
CCCCCCCCCC 	= IXC_DNIS
D 		= IXC_OPERATOR ("0" = yes, everything else = no)
EEE 		= IXC_OPEATOR ("138" = no, "158" = yes)
FFFF 		= IXC_CIC
GGG 		= IXC_COUNTRY


Here is how I would handle this.  You may choose to do it differently.

part_source char[100];
part_dest char[100];
part_intl char[100];

	IXC_PRESUB	= "0";
	IXC_ANI		= ""
	IXC_DNIS	= ""
	IXC_INTL	= "0"
	IXC_CIC		= "1537";
	IXC_OZZ		= "";
	IXC_COUNTRY	= "1";
	IXC_OPERATOR	= "0";
	IXC_CUTTHROUGH	= "0";

if (strlen(dtmfbuf) == 14) {
	/* *AABBBBBBBBBB#					- source # */

	part_source = dtmfbuf;
	part_dest[0] = 0;
	part_dest[0] = 0;

	IXC_CUTTHROUGH = "1";
	IXC_PRESUB = substr(part_source ,1,2);		- AA
	IXC_ANI = substr(part_source ,3,10);		- BBBBBBBBBB

} else if (strlen(dtfmbuf) < 28) {
	/* *AABBBBBBBBBB#*CCCCCCCCCC#			- source # dest # */
	/* *AABBBBBBBBBB#*DCCCCCCCCCC#			- source # dest # */

	part_source = strsep(&dtmfbuf,"#");
	part_dest = strsep(&dtmfbuf,"#");

	IXC_PRESUB = substr(part_source ,1,2);		- AA
	IXC_ANI = substr(part_source ,3,10);		- BBBBBBBBBB
	
	If substr(part_dest,2,1) == '0' {		- D
		IXC_OPERATOR = "1";
		IXC_DNIS = "1"+substr(part_dest,2,10);	- CCCCCCCCCC
	} else {
		IXC_DNIS = "1"+part_dest;		- CCCCCCCCCC
	}

} else if (strlen(dtmfbuf) > 28) {

	/* *EEEFFFFGGG#*AABBBBBBBBBB#*CCCCCCCCCCCCC#	- intl # source # dest # */

	part_intl = strsep(&dtmfbuf,'#');
	part_source = strsep(&dtmfbuf,"#");
	part_dest = strsep(&dtmfbuf,"#")
	
	IXC_INTL = "1";
	IXC_OZZ = substr(part_intl,2,3);		- EEE
	IXC_CIC = substr(part_intl,5,4);		- FFFF
	IXC_COUNTRY = substr(part_intl,9,3)		- GGG

	IXC_PRESUB = substr(part_source ,1,2);		- AA
	IXC_ANI = substr(part_source ,3,10);		- BBBBBBBBBB
	IXC_DNIS = "011"+part_dest;			- CCCCCCCCCC

	IF (IXC_OZZ == "158") {
		IXC_OPERATOR = "1";
	}
	
}



Example 1:
*002044896227#	- Cut Through
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS=""
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ=""
IXC_COUNTRY="1"
IXC_OPERATOR="0"
IXC_CUTTHROUGH="1"

Example 2:
*002044896227#*6045551212# - Dial-Around
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="6045551212"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ=""
IXC_COUNTRY="1"
IXC_OPERATOR="0"
IXC_CUTTHROUGH="0"

Example 3:
*002044896227#*06045551212# - Dial-Around Operator
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="6045551212"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ=""
IXC_OPERATOR="1"
IXC_COUNTRY="1"
IXC_CUTTHROUGH="0"

Example 4:
*1381537359#*002044896227#*3592943431012# - Dial-Around International
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="3592943431012"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ="138"
IXC_COUNTRY="359"
IXC_OPERATOR="0"
IXC_CUTTHROUGH="0"

Example 5:
*1581537359#*002044896227#*3592943431012# - Dial-Around International - Operator
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="3592943431012"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ="158"
IXC_COUNTRY="359"
IXC_OPERATOR="1"
IXC_CUTTHROUGH="0"