PD1 Signalling Protocol Release Note & Implementation Guide PD1 V3.1 : 28-01-95 : Aculab 1 Introduction and Scope This release note considers the use of the Aculab ISDN/E1 card with the CAS Signalling System 'PD1', and the implications for the applications programmer. This document is only intended to be a guide to implementation and is not intended to be an exhaus- tive description of the API; see the Generic API Specification documents for full details. It should be noted that many of the features illustrated here were only introduced along with the Release 3 of Aculab device drivers, and are not available with any previous release. The protocol is named after PD1, coming from the OFTEL document OTR001, which classifies this protocol group as 'port type PD1' for approvals purposes. They are also known variously as MCL (Mercury Communications Ltd) CAS (MCL specification SS5002), and from various PBX suppliers as variants of DC5A. The PD1 implementation provides three variants, as follows:- DDI CAS, DTMF and decadic, balanced Non-DDI CAS, DTMF and decadic, user end Non-DDI CAS, DTMF and decadic, exch end The term 'balanced' means symmetrical, the same protocol at the user end as the network end. In this respect the same means are used to provide the destination address on dialling out as is used to present DDI digits on incoming calls. On calls made from the network end to the user end using the non- ddi protocol, no destination digit transmission is possible. 2 Convergence of PD1x into PD1xD and PD1xD into PD1 Subsequent to versions 1.9, 2.4 and 2.5 of PD1DD, PD1UD and PD1ND respectively, the decadic dialling functionality of the PD1x protocols is intended to be supported by the PD1xD protocols rather than by separate PD1x firmware. That is to say, that the PD1xD protocols are now allowed to be used on E1 cards that do NOT have DSP modules fitted. Subsequent to versions 2.x of PD1xD, all functionality is suppor- ted by PD1 3.x. If no DSP module is fitted, then the -s98 device driver switch must be used so that the firmware does not attempt to access the DSP (which could cause misoperation). Also, without a DSP, no tones will be generated or detected, so dialling must be accom- plished decadically, requiring the use of -s17 and -s18. 3 Basic Functionality Outgoing Call Setup, with Destination Address Overlap Sending (both en-bloc and overlap from the API) Return of received Charging Pulses (Optional) Call Release Remote Disconnect on Release (Optional) Incoming Call Accept, with DDI digits Internal Generation of Dial Tone (Optional) Internal Generation of Ring Tone (Optional) Generation of Charging Pulses (Optional) Call Release General Auto Back-Busy on 'not open for incoming', selectable on a chan- nel by channel basis (Optional) 4 Outgoing Destination Address The outgoing dialled number may contain commas ',' which will cause a default of a 1 second delay in the dialling. Several commas may be used sequentially to produce an overall longer delay, and the default of 1 second delay may be changed via a configuration switch up to a maximum of 25.5 seconds (-s31,255). Sending of '*' and '#' is also supported. 5 Number of DDI and CLI Digits The CAS device drivers provide the -cDn and -cCn switch options, which on certain protocols specify the number of DDI and CLI digits to be expected or supported. These have no effect in the PD1 protocols, and are ignored. 6 Release of Incoming Calls before Answer It should be noted that, in common with many other CAS protocols, there is no physical means to release an incoming call before it is answered, although this functionality is (notionally) provided by the API thus any attempt to release an incoming call via the API will be handled sensibly. 7 Incoming Meter Pulses The the user end of the non-ddi, and on the ddi protocols, on outgoing calls, can return events relating to incoming 'C bit' metering pulses (if present). Metering is included in the speci- fication for the protocols, but may or may not be available, depending upon implementation. Generation of events on metering pulses depends upon the use of the CNF_CALL_CHARGE switch in the API (see the Generic Call Control manual). 8 Generation of Meter Pulses The network end of the non-ddi, and the ddi protocols, on incom- ing calls, can generate (150mS) metering pulses on the 'C bit' by the use of the call_put_charge() API call. Take care to use this feature only in circumstances where the far end is expecting it, and don't send meter pulses TO the public network and expect to be able to bill it! 9 Generation of Ring Tone There is a configuration switch that allows the protocol to generate ring back tone on incoming calls after the use of the API function call_incoming_ringing(). The ring back is BS 6305 compliant, being an equal mixture of 400Hz and 450Hz tones at -10dBm0, together producing a level 0f -7dBm0, with a cadence of 0.4S on, 0.2S off, 0.4S on, 2S off, following an initial cycle of 0.35S on and 0.22S off. The de- fault condition is NO ring back tone. 10 Generation of Dial Tone There is a configuration switch that allows the protocol to generate dial tone on incoming calls immediately after seizing and before detection of the first dialled digit. The dial tone is BS 6305 compliant as the 'new dial tone', being a continuous tone consisting of an equal mixture of 350Hz and 440Hz tones at -10dBm0, together producing a level 0f -7dBm0. It is possible to convert this to the 'special dial tone' (440Hz continuous, with 350Hz pulsed 750mS on, 750mS off) by adding a different argument to the configuration flag. 11 Generation of other Call Progress Tones Timeslot 0 of the DSP stream (stream 17 or 19) is initialised by the protocol to produce a constant tone of 400Hz at -10dBm0. Incoming speech channels may be switched between this tone and silence (set_output() with mode=PATTERN_MODE and pattern=0x54) in accordance with the relevant cadence. Relevant BS 6305 cadences are as follows:- Number Engaged (Busy) .375S on .375S off Path engaged (congested) .4S on, .35S off, .225S on, .525S off Number Unobtainable (NU) continuous 12 Remote Disconnect When the call is released from the far end, and the 'remote disconnect' feature of the release 3 device drivers is enabled (via the CNF_REM_DISC switch in the API), the API will return EV_REMOTE_DISCONNECT, but the signalling system will not actually release the channel at the near end until either call_disconnect or call_release is called. Bear in mind that outgoing calls will continue to be charged until disconnected or released. Also, if the call is not released at the near end, it is possible for the caller to go off-hook again, and re-answer. 13 End of En-Bloc Sending On outgoing calls, it is often useful to know when all of the DTMF digits have been sent in order to be able to nail up a bidirectional connection to a DSP or to another port. Switch -s6 enables the generation of an EV_OUTGOING_RINGING event when all of the digits provided in the call_openout() have been sent. It is still possible to use call_send_overlap() to send extra di- gits, but only one EV_OUTGOING_RINGING will be generated. In fact, if for example, 10 digits are sent via call_openout(), and a further digit is sent via call_send_overlap() before the first 10 digits have all gone, then the EV_OUTGOING_RINGING will be received after the 11th digit, rather than the 10th (just thought you would like to know that!). Clearly, the name EV_OUTGOING_RINGING is incorrect in this re- spect, in that it does not imply that ringing has been detected at the far end, just that the use of the B-channel for digit sending is complete. This usage is consistent with the use of the same event under R2. NOTE: The use of the terms 'en-bloc and 'overlap' in the context of DTMF really only refers to digits provided in call_openout() vs. digits via call_send_overlap() as properly all digits are sent one at a time via overlap sending. 14 Configuration Switch Settings for PD1 This sections details the CONFIG.SYS switch settings (and confi- guration string switches for UNIX), for various optional features in PD1. The use of these switches within CONFIG.SYS will be similar to the following:- device = c:\sys\mvclcas.sys -p380 -i10 -s16 -s17 -s18 See the device driver release notes and README files on disk for full information on device driver installation and the normal switches (-p, -i, -d etc). Note that -s switches may also be used with a network port num- ber, as in -s17n0. Simply using a switch with no comma and argument is equivalent to using an argument of 1 (as in s17,1). The maximum value of argument that may be used is 255 (as in s17,255). The switches that are applicable to PD1 are as follows:- -s1 Enable correct response to EARTH CALLING after incoming seize. On incoming seize, the protocol responds with ABCD==1111 as if it were a seize ack, for network end non-ddi only. -s2 Enable generation of ringback on incoming calls as a result of calling the API function call_incoming_ring- ing(). The ringback cadence is the UK standard dual cadence except on the non-ddi user end where the cad- ence is entirely determined by the incoming bit signal- ling. No ringback is generated if -s98 is used. -s3,nn Enable generation of 'disconnect clear' (ABCD=0001) signal on forward clearing. Total clear pulse time is nn * 10 mS, so for a 900mS clear pulse, a value of nn=90 must be used (maximum value is nn=255). Default is nn=0, idle clearing. Only available on the network end of the non-ddi protocol. -s4,nn Enable generation of call logger/meter pulse on answer of incoming calls. This causes a pulse on the C bit for nn * 10mS, so for a 20mS pulse nn=2 must be used. Default is nn=0, no pulse. Only available on the network end of the non-ddi protocol. -s5,nn Provides an override to the default value for the short delay waiting for the delay dial/PTS signal on the ddi version of the protocol. Both the PD1 and MCL specifications state that the delay dial, if produced, will be received within 30mS of seize. Some DC5A implementations (which are otherwise similar) require much longer timeouts, so this switch may be set to configure a longer wait for delay dial, which may also be regarded as a pre-dial delay. The delay is programmed as nn * 10mS, so to produce a 500mS pre-dial delay, set -s5,50. This switch is only available for the ddi protocol, and the default is 40mS. -s6 On outgoing calls, causes the event EV_OUTGOING_RINGING to be generated when there are no more digits to send, although the supply of further digits via call_send_overlap() is still possible. Available on the ddi and non-ddi user end only. -s7,x Overrides the default value of the pre-dial delay used on the non-ddi user end protocol. The delay is programmed x * 10mS - the default value is 750mS. -s8,1 Enables the network end of the non-ddi protocol for each channel NOT enabled as ddi protocol by -s20 to -s23. The default is the user end of the non-ddi version of the protocol. -s8,2 Enables the ddi version of the protocol across all of the channels, and overrides channel selection via -s20 to -s23. -s9,x Overrides the default value of the inter-digit delay for decadic dialling. The delay is calculated as x * 10mS, and the default value is 750mS. -s16,1 Generates dialtone on incoming calls, between the in- itial seize and recognition of the first dialled digit. Only available on the ddi and the non-ddi network end. No tones are generated if -s98 is used. -s16,2 Generate special dialtone on incoming calls, between the initial seize and recognition of the first dialled digit. Only available on the ddi and the non-ddi net- work end. No tones are generated if -s98 is used. -s17 Recognise decadic dialling on incoming calls as well as DTMF digits. Only available on the ddi and the non-ddi network end (non-ddi user end does not receive dialled digits). Must be used if -s98 is used, otherwise no register signalling is possible. -s18 Force decadic dialling on outgoing calls on all channels (overrides individual settings on s32 to s35). Only available on ddi and non-ddi user end (the network end does not dial). Should be used if -s98 is set, as otherwise no register signalling is possible. -s20,x Sets the ddi protocol for specific channels. Each bit represents one channel, and -s20 controls channels 0 to 7 - bit 1 controls channel 1, and bit 7 controls chan- nel 7 (bit 0 is not used as there is no channel 0). To set all channels 1-7 to ddi, use -s20,255. -s21,x Sets the ddi protocol for specific channels. Each bit represents one channel, and -s21 controls channels 8 to 15 - bit 1 controls channel 8, and bit 7 controls chan- nel 15. To set all channels 8-15 to ddi, use -s21,255. -s22,x Sets the ddi protocol for specific channels. Each bit represents one channel, and -s22 controls channels 17 to 23 - bit 1 controls channel 17, and bit 7 controls channel 23 (bit 0 is not used as there is no channel 16). To set all channels 17-23 to ddi, use -s22,255. -s23,x Sets the ddi protocol for specific channels. Each bit represents one channel, and -s23 controls channels 24 to 31 - bit 1 controls channel 24, and bit 7 controls channel 31. To set all channels 24-31 to ddi, use -s23,255. -s25,x Overrides the default meter pulse length of 150mS for outgoing pulses on the 'C'bit. The new value set is x * 10mS. -s28,x Overrides the default DTMF on/off time. The time is calculated as x * 5mS, and the default value is 70mS. -s31 Modifies the default delay (in 100mS increments) when a comma ',' is encountered in the destination address for dialling. To set a delay of 1.5 Secs, for example, use -s31,15. The default value for a single comma is 1 Sec. -s32,x Sets decadic outbound dialling for specific channels. Each bit represents one channel, and -s32 controls channels 0 to 7 - bit 1 controls channel 1, and bit 7 controls channel 7 (bit 0 is not used as there is no channel 0). To set all channels 1-7 to decadic, use -s32,255. -s33,x Sets the decadic outbound dialling for specific chan- nels. Each bit represents one channel, and -s33 con- trols channels 8 to 15 - bit 1 controls channel 8, and bit 7 controls channel 15. To set all channels 8-15 to decadic, use -s33,255. -s34,x Sets decadic outbound dialling for specific channels. Each bit represents one channel, and -s34 controls channels 17 to 23 - bit 1 controls channel 17, and bit 7 controls channel 23 (bit 0 is not used as there is no channel 16). To set all channels 17-23 to decadic, use -s34,255. -s35,x Sets decadic outbound dialling for specific channels. Each bit represents one channel, and -s35 controls channels 24 to 31 - bit 1 controls channel 24, and bit 7 controls channel 31. To set all channels 24-31 to ddi, use -s35,255. -s98 Prevents the firmware from accessing the DSP on the card, thereby making it safe to allow the use of the firmware on a card not fitted with a DSP. If this switch is used, the protocol will neither generate nor detect tones, so decadic dialling is the only option. If there is no DSP and this switch is not set, the card will not start, and device driver initialisation will fail. -s99,n Enables protocol trace generation by the software on the card. If n=1..31 the generated trace is enabled for channel n (as long as n != 16), if n=32 then trace is enabled for all channels (except 16). The left bit trace and tone columns are the transmitted signals, and the right bit trace and tone columns are the received signals. 15 Auto Back-Busy Option Switch The device driver auto back-busy option is available on the PD1xD firmware and the associated CAS driver software, whereby channels not 'open_for_incoming' will automatically present back-busy. Examples for the auto back-busy switch are as follows:- -cBBY global back-busy, affects both ports -cBBYn0 global back-busy, affects port 0 -cBBYn1 global back-busy, affects port 1 -cBBY,FF0000FF selective back-busy, affects both ports (timeslots 1..7 & 24..31 only) -cBBY,0000FFFFn0 selective back-busy, affects port 0 (timeslots 1..15 only) -cBBY,FFFF0000n1 selective back-busy, affects port 1 (timeslots 17..31 only) The value after the comma is a hexadecimal LONG INTEGER. The least significant (rightmost) bit represents timeslot 0, and the most significant bit (leftmost) bit represents timeslot 31, however, as there is no Bearer Channel for timeslots 0 or 16, the bits for those positions have no effect and are ignored, so in that respect FFFEFFFE and FFFFFFFF are equivalent. * * *