Upon start-up the CXACULAB.DLL library opens and initialises the Aculab call control boards ready to make and receive calls. The order that the boards are opened is specified by the ACUCFG.CFG configuration file, or if this doesn't exist then the boards are opened in the order returned by the acu_get_system_snapshot() function. See ACUCFG.CFG configuration for a full description of this file.
The format of ACUCFG.CFG file is a text file that contains a set of statements that provides the list of Aculab board serial numbers to open, plus information about which ports or modules to open on each board.
The order that the call control boards are opened is important since it defines the logical port number that is used in many of the calls to the CXACULAB.DLL functions. Port numbers relate to the E1 or T1 port on the boards and is numbered from zero to one less than the number of E1/T1 ports opened across all the boards in the system.
For example if the system contains two boards each with 4 E1s then there will be a total of 8 E1 ports (numbered 0 to 3 and 4 to 7). The order that the serial numbers appear in the ACUCFG.CFG file defines which of these boards has the ports numbered 0 through 3 and which will have the ports numbered 4 through 7.
Most of the call control functions take the port number and the channel number as the first two parameters to the function call (for example. CCtrace(port,channel,tracelevel) , CCabort(port,channel) etc)..
The channel represents the channel on the port ranging from 1 to 31 (depending on the protocol being used and the number of signalling channels etc).
Once the boards are opened then the board capabilities are examined and any boards that have switching capabilities will have their transmit channels ‘nailed’ to the external H.100 or SCBUS. This provides a consistent method for switching between channels and in the current version of the library even channels on the same board will be switched through the external H.100 or SCBUS.
H.100 timeslots are defined by both a stream number and a timeslot number where each stream can have up to 128 timeslots. For the SCBUS there is only one stream and the timeslots range from 0 up to 4096. To create a consistent way of referencing these timeslots whether the external bus is a H.100 bus or an SCBUS the CXACULAB.DLL generates a logical handle which is calculated from the stream and the timeslot as follows:
handle = stream * 4096 + timeslot
For the SCbus the stream is always 24 which is the internal fixed stream that is used by the ACULAB firmware when SCBUS is present.
This handle is used/returned by the switching functions listed below.
handle=CCgetslot(port,channel);
x= CClisten(port,channel,handle);
x= CCunlisten(port,channel);
By default the first channel on the first logical port will be ‘nailed’ to stream 0, timeslot 0 of the H100 bus (or just timeslot 0 of the SCBUS). If there is other non-Aculab hardware in the system that is using these stream/timeslot ranges, or there is some other reason why a different stream/timeslot range should be used for nailing the transmit channels to the external bus then the environment variable ACUCC_TSOFFS can be set to define the start stream and timeslot offset to nail to.
This variable should be specified in the same form as defined above for the stream/timeslot handle. For example if you want to start nailing the call control channel starting at stream 64, timeslot 0 then you would set the environment variable as follows:
REM set offset to: 64 * 4096 + 0
SET ACUCC_TSOFFS=262144
N.B. The current version of the library does yet transparently support multi-chassis switching for Prosody-X functionality (although the programmer has access to the RTP functions and can therefore implement their own multi-chassis switching capability). The next version of the library will include a transparent method for multi-chassis switching consistent with above function calls and methodology.