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

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