When the Telecom Engine loads the CXACULAB.DLL (and CXACUDSP.DLL) libraries upon start-up, it first looks for the presence of a configuration file called ACUCFG.CFG.
This file tells the CXACULAB.DLL (and CXACUDSP.DLL) which Aculab cards to open and which ports/modules to open on those cards.
The location of the ACUCFG.CFG file can be defined by the environment variable called ACUCFGDIR (set it to a directory path: e.g. SET ACUCFGDIR=C:\TelecomEngine\Node08\config"). If the ACUCFGDIR environment variable is not set then the library will look in the current directory for the ACUCFG.CFG file.
If the ACUCFG.CFG file is not found then the boards are opened in the order that they are found in the Aculab Configuration Tool (ACT), and which is the order returned by the acu_get_system_snapshot() function, and all ports or modules found on those boards will be opened in sequential order.
It should be noted that most of the call control functions in the CXACULAB.DLL library take a port number and a channel number as the first two arguments.. E.g. CCenablein(port,channel). The port number specified here is a logical port number where the first logical port in the system is port 0 and then increases sequentially through ports 1, 2, 3 .. etc for every other port opened in the system (defined by the order that they are opened).
For example if there were two Prosody X cards in a system, each with 8 E1 ports and two IP ports, then if all of these ports were opened the logical port numbers would range from 0 throught to 9 for the first card (including the VOIP ports 8 and 9), then logical ports 10 through to 19 for the second card.
Note: For Speech cards, the speech channels opened upon startup are numbered sequentially from 1 up to the number of speech channels in the system (E.g. if there were two Prosody Speech modules of 150 channels each then the logical channel numbers (as used by the SMxxxx(vox_chan,...) functions) would range from 1 through to 300).
The entries in the ACUCFG.CFG must always start with a board=<serial number> statement, then be followed by one or more of the following statements (comments are preceded by a # character):
The ports statement:
ports=<port no. 1[:no.chans]>[,<port no. 2[:no.chans]>[,port no. 3...]]
This specifies which of the physical ports on the card to open (and in which order). For example:
# Open four E1 ports of first aculab card
board=192821
ports=0,1,2,3
# Open four E1 ports of second aculab card
board=192822
ports=0,1,2,3
The above would result in eight logical port numbers being created at startup (0..7) for the eight ports opened across the two Aculab cards specified. It is also possible to specify the number of channels to open on each port, but if this is omitted then the port will be opened with the default number of channels (31 for E1 ports, 30 for IP ports), although for E1 channels the valid_vector field in the port info parameter will also be used to define which channels are bearer channels and which channels are signalling channels.
For E1 ports its usually best not to specify the number of channels directly unless you specifically want to allocate less channels that the full number. For example the following will open two ports on the card, but will only allocate the first 15 channels on these ports:
# Open four E1 ports of first aculab card
board=192821
ports=0:15,1:15
For IP ports on Prosody X cards the default number of channels to allocate is 30 if it is not explicitly specified. In the following ACUCFG.CFG a single Prosody X card has 8 E1 ports and 2 IP ports. Only the first IP port is opened here and 150 IP channels are allocated to it:
board=192799
ports=0,1,2,3,4,5,6,7,8:150
It is possible to skip one or more physical ports or rearrange the order that they are opened if required:
# Open four E1 ports of first aculab card
board=192821
ports=0,1,3
# Open four E1 ports of second aculab card
board=192822
ports=0,2,3,1
In the above example only seven logical ports are created (0..6) and on the second board the order that the physical ports are to be opened has been changed (physical ports 0,2,3,1 on the second card would map to logical ports 3,4,5,6 in this example).
The modules statement:
modules=<module no. 1[:no. channels]>[,<module no. 2[:no channels]>[,...]]
This specifies which DSP modules to open on the card (and in which order), plus the number of channels on the module to allocate can optionally be specified (otherwise all the channels on the module will be allocated (150 for Prosody X modules, 60 for older Prosody modules).
For example the following will open a single board with 4 E1 ports and 150 channels of speech (numbered from 1 to 150):
# Open four E1 ports and DSP module 0 (which has 150 channels)
board=192823
ports=0,1,2,3
modules=0:150
On a Prosody X board the default number of channels to open on a module is 150 so this doesn't necessariry need to beed specified. Below is the equivalent ACUCFG.CFG file to the above:
# Open four E1 ports and DSP module 0 (which has 150 channels)
board=192823
ports=0,1,2,3
modules=0
If there are multiple modules on a board then these can be specified in the order that they are to be opened:
# Open four E1 ports and DSP module 0 (which has 150 channels)
board=192823
ports=0,1,2,3
modules=0:150,1:150
board=192824
ports=0,1,2,3
modules=0:60
The above will open modules 0 and 1 on the first board (allocating 300 channels number 1 to 300), then will open module 0 on the second card, allocating 60 channels (which will be numbered 301 to 360).
The ipports statement:
ipports=<port 1 no. IP channels[:port 1 type]>[port 2 no. IP channels[:port 2 type]>[,...]]]
For Prosody S it is necessary to open system-wide IP port(s) to handle VOIP calls and the above statement provides the means to specify these ports. The ipports statement must follow the definition for a Prosody S type board (with serial number HS_PROSODYS) as follows:
# open Prosody S board
board=HS_PROSODYS
modules=0:150
ipports=30:S,30:S
If you specify an ipports statement for a non-prosody S board then it will be ignored. The port type parameter specifies the number of IP channels to allocate on the IP port and may be followed by an optional port type specifier where S is for a SIP port and H is for a H.323 port. By default the IP port is opened as a SIP port.
So in the above example the Prosody S card is opened and two system-wide IP ports are opened (one for SIP, one for H323) with 30 IP channels each. Note that with Prosody S boards there is a single module (which is actually an on-host media DSP) and the number of channels that can be allocated will depend upon the processing power of the host CPU.
When they are opened, the IP ports will be given a logical port number which is then used in the call control functions just like for normal E1 ports. In the above example two logical ports are opened (0 and 1) for the two IP ports specified.
In the example below the IP ports will be allocated logical port numbers 4 and 5 since there are also 4 E1 ports specified on the first Aculab card which will be allocated ports 0,1,2 and 3:
# open 4 E1 ports on first card
board=192821
ports=0,1,2,3
# open Prosody S board
board=HS_PROSODYS
modules=0:150
ipports=30:S,30:S
Below are some examples of ACUCFG.CFG files for typical purposes:
The following could be used for the Prosody S evaluation license which provides 4 channels of media and IP processing for up to 45 days:
# Prosody S board
board=HS_PROSODYS
modules=0:4
ipports=4:S
The following could be used for on-host Prosody S with licence for 150 media and IP ports
# Prosody S board
board=HS_PROSODYS
modules=0:150
ipports=150:S
The following opens a single prosody X card with 8 E1 ports plus the H323 port with 150 IP channels
# Prosody X board
board=192876
modules=0:150
ports=0,1,2,3,4,5,6,7,9
The following opens a single E1 card with two E1 ports, plus an old style Prosody speech card with a single DSP module:
# E1 card
board=178912
ports=0,1
#Prosody DSP card
board=165444
modules=0:60