home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 29 Fixes_o / 29-Fixes_o.zip / ur458017.dsk / R1EMREL.TXT < prev    next >
Text File  |  1996-07-17  |  22KB  |  462 lines

  1.             E1 R1/E&M CAS Protocol
  2.     V1.2 Release Note & Implementation Guide : 13-07-95 Aculab
  3.         
  4.         1 Introduction and Scope
  5.          
  6.         This  release note considers the use of the Aculab  ISDN/E1  card 
  7.         with  the CAS E&M Signalling System 'R1EM', and the  implications 
  8.         for the applications programmer.
  9.         
  10.         This  document is only intended to be a guide  to  implementation 
  11.         and  is not intended to be an exhaustive description of the  API; 
  12.         see the Generic API Specification documents for full details.  It 
  13.         should  be noted that many of the features illustrated here  were 
  14.         only  introduced along with the Release 3 of Aculab  device  dri-
  15.         vers, and are not available with any previous release, and indeed 
  16.         this  signalling protocol is not supported by any  device  driver 
  17.         prior to Release 3.
  18.         
  19.         This firmware implements several versions of E&M line  signalling 
  20.         with R1 register signalling, and may be used in the reception  of 
  21.         signalling that perhaps originated in a T1 network, and has  been 
  22.         (partly)  converted  to E1, but which retains  it's  original  R1 
  23.         register signalling.
  24.         
  25.         The variants of line signalling implemented by this firmware  are 
  26.         E&M 'immediate start', E&M 'delay dial', and E&M 'wink start.
  27.         
  28.         The E&M signalling protocol is a 1-bit protocol (although 2  bits 
  29.         are  used,  the B bit following the A bit), and  so  is  somewhat 
  30.         sparse in features, and depends somewhat upon timing.  The imple-
  31.         mentation described here uses DTMF for register signalling.
  32.          
  33.         Note that, by way of illustration, this document uses the  EV_xxx 
  34.         (event) scheme provided by the API to describe various  telephony 
  35.         issues, but the state based approach is equally valid.
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.         
  43.         2 Basic Functionality
  44.         
  45.         Outgoing 
  46.         Line seize, with recognition of either delay dial or wink start.
  47.         Call Setup, with Destination Address (DTMF)
  48.         Explicit of automatic generation of KP and ST
  49.         Overlap Sending (DTMF)
  50.         Recognition of Charging Pulses (optional)
  51.         Call Release 
  52.         Remote Disconnect on Release (optional)
  53.         
  54.         Incoming 
  55.         Recognition of seize, optional wink generation
  56.         Generation of dial tone (optional)
  57.         Call Accept, with DDI digits (DTMF)
  58.         Generation of two alternate Ring Tones (optional)
  59.         Generation of Charging Pulses (optional)
  60.         Call Release
  61.         
  62.         
  63.         3 A Caution
  64.         
  65.         As  with all signalling systems that us tone-based register  sig-
  66.         nalling, the digits can only be generated or received if the tone 
  67.         generators or receivers are connected to the B channel whilst the 
  68.         tones are present.  The same goes for call progress signals, such 
  69.         as dial tone or ring-back.
  70.         
  71.         On  the  Aculab  E1 card, tone signalling is provided  by  a  DSP 
  72.         module attached to the main E1 card.
  73.         
  74.         The  API library call 'system_init()' connects the trunk  (all  B 
  75.         channels) through to the DSP module (when present) on the E1 card 
  76.         prior   to   the  first  call,  and  if  the   library   function 
  77.         'idle_net_ts()' is used at the end of every call, it will  recon-
  78.         nect the channel to the DSP module ready for the next call.
  79.         
  80.         Typically,  the programmer should ensure that outgoing  B-channel 
  81.         connections  are not made from either the PEB or MVIP  bus  until 
  82.         the call has answered, or at earliest after all outgoing  signal-
  83.         ling (or call progress tones if required on incoming calls)  have 
  84.         completed.  
  85.         
  86.         The incoming B-channel may be connected through to resource cards 
  87.         at  any time, as this will not disrupt the connection to the  DSP 
  88.         module  (the switch matrix can make a  'one-to-many'  connection, 
  89.         but  not  a 'many-to-one' connection - only the  last  connection 
  90.         made to a certain point is effective).
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.         
  98.         4 Driver Configuration
  99.         
  100.         For  Aculab's generic CAS and R2 device drivers, it is  sometimes 
  101.         useful (and occasionally vital) for the device driver and signal-
  102.         ling  system firmware to known the number of DDI and  CLI  digits 
  103.         supported by the trunk via the -cDn and -cCn driver configuration 
  104.         switches.  
  105.         
  106.         For this signalling system it is NOT necessary to tell the driver 
  107.         how  many DDI digits to expect, and  indeed CLI is not  supported 
  108.         at all.
  109.         
  110.         It should be noted that in common with many CAS and R2 protocols, 
  111.         incoming calls cannot be rejected or cleared before answer in the 
  112.         way  that ISDN allows, and this is true of  this  implementation.  
  113.         As  early release or rejection is not available, a call could  be 
  114.         incoming even prior to the application issuing a 'call_openin()', 
  115.         (unless arrangements have been made for automatic back-busy)  and 
  116.         if present, such a call will be recognised and made available via 
  117.         the   API   when   the  application  requests   an   event   with 
  118.         'call_event()'.  
  119.         
  120.         However,  a caller attempting to call in to the system without  a 
  121.         call_openin having been made, will normally just hear silence.
  122.         
  123.         
  124.         5 Implementation Details
  125.         
  126.         This signalling system is balanced, meaning that the same  proto-
  127.         col  may  be used at both ends of a link,  for  both-way  working 
  128.         (although  of course, only one end - usually the network or  Cen-
  129.         tral Office end - should be sourcing the clock for the link).
  130.         
  131.         
  132.         6 Incoming Calls
  133.         
  134.         On incoming calls, the implementation will not produce the 'delay 
  135.         dial'  signal unless it has been specifically configured to  pro-
  136.         duce  a 'wink' (which is indistinguishable from a delay dial  and 
  137.         PTS signal).
  138.         
  139.         In  addition, if no dialled digit is received within 10  seconds, 
  140.         the line will be regarded as 'back-busied'.
  141.         
  142.         It is expected that any incoing dialled string will start with KP 
  143.         and be terminated with ST, and there is an '-s' switch that  will 
  144.         allow these to be shown as 'K' and 'S' in the incoming DDI  field 
  145.         if required.
  146.         
  147.         Unlike ISDN signalling systems, the incoming destination  address 
  148.         or  DDI  digits will never arrive en-bloc (all at one  time)  but 
  149.         will always arrive as overlap receiving (one digit at a time). If 
  150.         the  whole number was available at the outgoing register  at  the 
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.         time  that the call was forwarded, the digits will  arrive  quite 
  158.         fast,  possibly around 125mS per digit.  It is  equally  possible 
  159.         that the digits will arrive at the rate they were dialled by  the 
  160.         caller - ie. quite slowly, and this should be taken into account.
  161.         
  162.         In addition, it is quite possible for a caller to dial  incorrect 
  163.         digits, or insufficient digits to complete the DDI.  However,  as 
  164.         noted before, it is not possible to backwards release an incoming 
  165.         call before it is answered, so the application may either discon-
  166.         nect  the call at the API, in which case the channel will not  go 
  167.         IDLE  until the caller goes ON-HOOK, or it may simply wait  until 
  168.         the  caller  goes  ON-HOOK, and the channel goes  to  IDLE,  then 
  169.         release  the  call.  An alternative would be to play BUSY  or  NU 
  170.         tone  to the caller, to persuade him to drop the call (there  may 
  171.         or may not be a backward path through the Central Office  network 
  172.         that will allow the caller to hear these tones).
  173.         
  174.         On incoming calls, if the application sends  'call_incoming_ring-
  175.         ing()'  the  implementation will wait for the ST signal  (if  not 
  176.         already  received) then optionally generate one of two ring  tone 
  177.         cadences whilst waiting for answer,  and the API will return  the 
  178.         event EV_WAIT_FOR_ACCEPT.
  179.         
  180.         The  exact  purpose  of the EV_WAIT_FOR_ACCEPT is  to  allow  the 
  181.         application program to know when in-band register signalling  has 
  182.         been  completed,  so that the B-channel may be switched  to  some 
  183.         other (custom) call progress tone generator source without danger 
  184.         of preempting some of the signalling.  
  185.         
  186.         If 'call_incoming_ringing()' is not used, then no ring back,  and 
  187.         no EV_WAIT_FOR_ACCEPT will be generated.
  188.         
  189.         Once  connected,  the incoming end can generate  backwards  meter 
  190.         pulses,  nominally 150mS wide, via 'call_put_charge()',  although 
  191.         some  implementations  may not allow these, and  they  may  cause 
  192.         clearing  at  the outgoing end.  Also, they may be  quite  indis-
  193.         tinguishable from a 'hookflash' or 'recall' signal, if these  are 
  194.         implemented.
  195.         
  196.         When  incoming release is recognised, if the 'remote  disconnect' 
  197.         feature  is  used by the application, the incoming end  will  not 
  198.         return clearing until 'call_disconnect()' or 'call_release()'  is 
  199.         called by the application.
  200.         
  201.         It  may be useful for the programmer to know that timeslot  0  of 
  202.         the DSP output stream (stream 17 for port 0 or stream 19 for port 
  203.         1)  is initialised to produce a signal of 440Hz at -8dBm0,  which 
  204.         may  be switched on and off (using 'set_output()' with  mode=PAT-
  205.         TERN_MODE and pattern=0x54, silence) to any (possibly multiple) B 
  206.         channels to produce other call progress tones, via an appropriate 
  207.         cadence.
  208.         
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.         
  216.         7 Outgoing Calls
  217.         
  218.         On  outgoing  calls, the implementation will make no  attempt  to 
  219.         detect  the  presence  of dial tone, but instead  relies  of  the 
  220.         presence  of  either the 'delay dial' and PTS (prepare  to  send) 
  221.         signal to ensure that the incoming end is ready.   Alternatively, 
  222.         the  implementation can be configured to wait for a  'wink'  from 
  223.         the incoming end before dialling.
  224.         
  225.         If  it is required to recognise an actual dial tone  before  dia-
  226.         lling,  a  'call_openout()' may be made without  any  destination 
  227.         digits, then the B-channel may be monitored by an external speech 
  228.         processing card (or similar), then all destination digits may  be 
  229.         supplied,   either   one  at  a  time  or   all   together,   via 
  230.         'call_send_overlap()'.
  231.         
  232.         If  no  digits  are supplied within a minimum  period  (often  10 
  233.         seconds),  the far end may regard the channel  as  'back-busied', 
  234.         and not accept subsequent incoming digits.
  235.         
  236.         The  R1 protocol implemented requires the destination address  to 
  237.         start  with  a  KP signal, and end with a ST signal.   If  KP  is 
  238.         included  explicitly by the use of a 'K' at the from of the  dia-
  239.         lled number string, then the implementation will expect an expli-
  240.         cit  'S'  to terminate the string.  If no 'K'  is  supplied,  the 
  241.         implementation  will send one automatically prior to any  dialled 
  242.         digits, and will time out a 10 second timer after the last  digit 
  243.         supplied,  and  send an ST automatically.  This  timeout  can  be 
  244.         modified  via  an -s switch, as 10 seconds will be too  long  for 
  245.         many purposes.  Alternatively, an explicit 'S' may be supplied to 
  246.         end the signalling.
  247.         
  248.         After the ST signal has been sent, the event  EV_OUTGOING_RINGING 
  249.         will be returned to the application.  This is clearly a misuse of 
  250.         the name of this event as it is not the case that actual  ringing 
  251.         has  been detected, although it does indicate generally the  same 
  252.         stage of signalling. 
  253.         
  254.         Once  connected, the outgoing end will survive meter pulses  less 
  255.         than  (a default of) 350mS wide, and if CNF_CALL_CHARGE has  been 
  256.         used, the API will return the event EV_CALL_CHARGE to the  appli-
  257.         cation.
  258.         
  259.         As  a result of detecting meter pulses, the  implementation  will 
  260.         take (a default of) 350mS to recognise a backward clearing condi-
  261.         tion.   When this is recognised, if the 'remote disconnect'  fea-
  262.         ture  is  activated in the driver, the outgoing  end  will  await 
  263.         clearing  from the API before sending a forward release.  If  the 
  264.         incoming end goes off-hook again and re-answers, the outgoing end 
  265.         will return to 'connected'.  
  266.         
  267.         If  'remote  disconnect' is not enabled, the  outgoing  end  will 
  268.         release immediately.
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.         
  276.         8 Configuration Switch Settings for R1EM
  277.         
  278.         This sections details the CONFIG.SYS switch settings (and  confi-
  279.         guration string switches for UNIX), for various optional features 
  280.         in  PD1.   The use of these switches within  CONFIG.SYS  will  be 
  281.         similar to the following:-
  282.         
  283.              device = c:\sys\mvclcas.sys -p380 -i10 -s16 -s17 -s18
  284.         
  285.         See the device driver release notes and README files on disk  for 
  286.         full  information  on device driver installation and  the  normal 
  287.         switches (-p, -i, -d etc).  
  288.         
  289.         Note  that -s switches may also be used with a network port  num-
  290.         ber,  as  in  -s17n0.  Simply using a switch with  no  comma  and 
  291.         argument  is equivalent to using an argument of 1 (as in  s17,1).  
  292.         The  maximum  value of argument that may be used is  255  (as  in 
  293.         s17,255).
  294.         
  295.         The switches that are applicable to EEMA are as follows:-
  296.         
  297.         -s1       Informs the protocol that it must always send a wink on 
  298.                   incoming calls, and must always wait for a wink  before 
  299.                   dialling on outgoing calls.  The timing for sending the 
  300.                   wink is as set by -s3 and -s4.
  301.         
  302.         -s2,1     Enable  generation of ringback on incoming calls  as  a 
  303.                   result of calling the API function  call_incoming_ring-
  304.                   ing().   The  ringback cadence is a single  cadence  of 
  305.                   440Hz  at -3.5 dBm0, 1S on and 3S off.  No ringback  is 
  306.                   generated if -s98 is used.
  307.         
  308.         -s2,2     Enable  generation of ringback on incoming calls  as  a 
  309.                   result of calling the API function  call_incoming_ring-
  310.                   ing().   The  ringback is a dual cadence  of  440Hz  at 
  311.                   -3.5dBm0, .4S on, .2S off, .4S on, 2S off.  No ringback 
  312.                   is generated if -s98 is used.
  313.         
  314.         -s3,nn    If -s1 is set, this switch overrides the default  100mS 
  315.                   delay  on incoming calls before sending the wink.   The 
  316.                   new delay will be nn*10 mS. 
  317.         
  318.         -s4,nn    If  -s1  is set, this switch overrides the  default  of 
  319.                   150mS  for the duration of the wink on incoming  calls.  
  320.                   The new duration will be nn*10 mS.
  321.         
  322.         -s5,nn    Provides  an override to the default delay of 135mS  on 
  323.                   outgoing  calls waiting for the delay dial/PTS  signal, 
  324.                   and  is  effectively a pre-dial delay.  The  new  delay 
  325.                   will be nn * 10mS, so to produce a 500mS wait for  PTS, 
  326.                   set -s5,50.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.         -s6,nn    On outgoing calls, causes ST to be sent, and the  event 
  334.                   EV_OUTGOING_RINGING to be automatically generated nn  * 
  335.                   100mS  after  the  last digit has been  sent,  and  the 
  336.                   supply of further digits via call_send_overlap() is not 
  337.                   possible.  
  338.         
  339.                   If  this  switch is not set, a default  timeout  of  10 
  340.                   seconds will exist (as a defence mechanism).
  341.         
  342.         -s7       If this switch is used, then 'K' for KP and 'S' for  ST 
  343.                   will be included in the incoming DDI digit string.
  344.         
  345.         -s10      If  this switch is set, it allows the incoming  end  to 
  346.                   send  ringing  or  to  answer calls  before  an  ST  is 
  347.                   received,  although subsequent received digits will  be 
  348.                   lost.
  349.         
  350.         -s16      Generates  dialtone  on  incoming  calls,  between  the 
  351.                   initial seize and recognition of KP.  The dialtone is a 
  352.                   constant  mixture of 330Hz and 440Hz each  at  -10dBm0.  
  353.                   No tones are generated if -s98 is used.
  354.         
  355.         -s25      Enables  the  generation of meter  pulses  on  incoming 
  356.                   calls, which are otherwise not passed from the API.
  357.         
  358.         -s25,nn   Enable  the generation of meter pulses,  and  overrides 
  359.                   the default meter pulse length of 150mS.  The new value 
  360.                   set is x * 10mS.
  361.         
  362.         -s26      Enables  the  detection  of meter  pulses  on  outgoing 
  363.                   calls, and considers that pulse lengths less than 350mS 
  364.                   are meter pulses, and pulses over 350mS are clearing.
  365.         
  366.         -s26,nn   Enables  the  detection  of meter  pulses  on  outgoing 
  367.                   calls,  and  modifies the default detection  period  to 
  368.                   nn*10mS.
  369.         
  370.         -s28,nn   Overrides  the default DTMF on/off time.  The  time  is 
  371.                   calculated as x * 5mS, and the default value is 70mS.
  372.         
  373.         -s31      Modifies the default delay (in 100mS increments) when a 
  374.                   comma ',' is encountered in the destination address for 
  375.                   dialling.  To set a delay of 1.5 Secs, for example, use 
  376.                   -s31,15.   The  default value for a single comma  is  1 
  377.                   Sec.
  378.         
  379.         -s98      Prevents  the  firmware from accessing the DSP  on  the 
  380.                   card,  thereby making it safe to allow the use  of  the 
  381.                   firmware  on  a card not fitted with a  DSP.   If  this 
  382.                   switch is used, the protocol will neither generate  nor 
  383.                   detect tones, so external tone signalling must be used.
  384.                   NOTE: If there is no DSP present and this switch is not 
  385.                   set, the card will not start, and device driver initia-
  386.                   lisation will fail.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.         -s99,n    Enables  protocol trace generation by the  software  on 
  394.                   the  card.  If n=1..31 the generated trace  is  enabled 
  395.                   for channel n (as long as n != 16), if n=32 then  trace 
  396.                   is enabled for all channels (except 16).  The left  bit 
  397.                   trace and tone columns are the transmitted signals, and 
  398.                   the  right bit trace and tone columns are the  received 
  399.                   signals.   
  400.         
  401.         
  402.         9 Standard Switch Settings
  403.         
  404.         This  section  lists  switch settings  for  commonly  encountered 
  405.         signalling systems.
  406.         
  407.              Always optional          -s2 -s6 -s7 -s16
  408.                   "    "              -s25 -s26 -s28 -s31
  409.         
  410.              E&M 'immediate start'    (none)
  411.                   optional            -s5,nn
  412.         
  413.              E&M 'delay dial'         (none)
  414.                   optional            -s5,nn
  415.         
  416.              E&M 'wink start'         -s1
  417.                   optional            -s3,nn -s4,nn -s5,nn
  418.         
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.         
  426.         10 Auto Back-Busy Option Switch
  427.         
  428.         The device driver auto back-busy option is available on the  EEMA 
  429.         firmware and the associated CAS driver software, whereby channels 
  430.         not  'open_for_incoming'  will  automatically  present  back-busy 
  431.         (which will not be recognised as such for a short period of time, 
  432.         as it initially looks like an incoming seize).
  433.         
  434.         Examples for the auto back-busy switch are as follows:-
  435.         
  436.              -cBBY               global back-busy, affects both ports
  437.              -cBBYn0             global back-busy, affects port 0
  438.              -cBBYn1             global back-busy, affects port 1
  439.              -cBBY,FF0000FF      selective back-busy, affects both ports
  440.                                       (timeslots 1..7 & 24..31 only)
  441.              -cBBY,0000FFFFn0    selective back-busy, affects port 0
  442.                                       (timeslots 1..15 only)
  443.              -cBBY,FFFF0000n1    selective back-busy, affects port 1
  444.                                       (timeslots 17..31 only)
  445.         
  446.         The  value  after the comma is a hexadecimal LONG  INTEGER.   The 
  447.         least significant (rightmost) bit represents timeslot 0, and  the 
  448.         most  significant  bit  (leftmost) bit  represents  timeslot  31, 
  449.         however, as there is no Bearer Channel for timeslots 0 or 16, the 
  450.         bits  for those positions have no effect and are ignored,  so  in 
  451.         that respect FFFEFFFE and FFFFFFFF are equivalent.
  452.         
  453.         
  454.         
  455.         
  456.                          *              *              *
  457.         
  458.  
  459.  
  460.  
  461. 
  462.