Table of Contents Index NMS Glossary Previous Page Next Page Version


Chapter 6

Demonstration Programs and Utilities


6.1 Introduction
6.2 Board to Board Program: brd2brd
6.3 Call Center Program: callcntr
6.4 Switching Shell: swish
6.5 Show Switch Connections: showcx95
6.6 Service Configuration Utility: ppxservicecfg

6.1 IntroductionTop of Page

This chapter describes the following demonstration programs and utilities shipped with the Point-to-Point Switching service:
Program/Utility

Description

brd2brd

Demonstrates call transfer from an incoming line to an outgoing line over the MVIP bus using the Point-to-Point Switching service to make connections.

callcntr

Demonstrates a call transfer from an incoming line to an outgoing line over the MVIP bus. The Point-to-Point Switching service is used to create a connection and add talkers/listeners to the connection.

swish

Allows interactive or text-file-driven control of MVIP switches. It provides a convenient way to manually test connections during development.

showcx95

Displays switch connections for all boards that have MVIP switches.

ppxservicecfg

Installs the PPX server as an NT service or removes it from the registry.

Natural Access is shipped with source code for all demonstration programs. Each demonstration program is shipped as an executable program and includes its source and makefiles.

Before you start the demonstration programs, verify that:

Refer to the appropriate installation manual for details on board installation.

6.2 Board to Board Program: brd2brdTop of Page

Name

brd2brd

Purpose

Demonstrates call transfer from an incoming line to an outgoing line over the MVIP bus using the Point-to-Point Switching service.

Usage

brd2brd [options]

where options are:
Option

Description

-b n

Specifies the NMS board number n for the primary incoming line. Default = 0

-B n

Specifies the NMS board number n for the outgoing line.
Default = 1

-x n

Specifies the PPX switch number n for the primary incoming line. Default = 0

-X n

Specifies the PPX switch number n for the outgoing line.
Default = 1

-s n

Specifies the incoming call timeslot. Default = 0

-S n

Specifies the outgoing call timeslot. Default = 0

-i protocol

Specifies the protocol to run on the primary incoming line.
Default = lps0

-o protocol

Specifies the protocol to run on the outgoing line.
Default = lps0

Functions

ppxConnect, ppxDisconnect

Description

brd2brd performs call transfer of an incoming call to an outgoing line using the Point-to-Point Switching service. The connection is made over the CT Bus using the MVIP-95 model for stream numbering.

Procedure

The following procedure assumes you are using a system with the following configuration:

The Point-to-Point Switching service also requires that the switching fabric be defined in the Point-to-Point Switching configuration file, \nms\ctaccess\cfg\ppx.cfg. Make sure this file exists and represents your hardware configuration. The following example represents the hardware layout described above:

[PPX]
Fabric
  Bus H100
        CTBUS:0..15:0..31
        CTBUS:16..23:0..63
        CTBUS:24..31:0..127
  End Bus
  
  Switch 0                  ## AG-2000
   SwitchType = HMIC
   DeviceName = "agsw"
    DeviceNumber = 0
    Bus H100 (CTBUS:0..15:0..31)
    Inputs                        
        LOCAL:0..6(2):0..7   
    End Inputs
    Outputs                      
        LOCAL:1..7(2):0..7   
    End Outputs
  End Switch
 Switch 1                  ## AG-2000
   SwitchType = HMIC
   DeviceName = "agsw"
    DeviceNumber = 1
    Bus H100 (CTBUS:0..15:0..31)
    Inputs                  
        LOCAL:0..6(2):0..7   
    End Inputs
    Outputs                
        LOCAL:1..7(2):0..7  
    End Outputs
  End Switch
End Fabric

Before you start up brd2brd, start ctdaemon and ppxserv and verify that the boards have been booted. Refer to the NMS OAM System User's Manual for information about oamsys, the Natural Access Developer's Reference Manual for information about ctdaemon, and Section 1.6 of this manual for information about ppxserv.

Note: Be sure the PPX server is properly configured and installed before running bdr2brd. The PPX demos will fail to execute if the server application is not running.

To run brd2brd:

  1. Start ctdaemon (if it is not already running).

    
    
  2. Run oamsys to boot the boards.

    
    
  3. Start ppxserv.

    
    
  4. Start brd2brd by entering:

    
    brd2brd -b 0 -s 4 -B 1 -S 2 -i lps0 -o wnk0
    This indicates the following usage:
    • Board 0, timeslot 4 on the local streams for the incoming call.

      
      
    • Board 1, timeslot 2 on the local streams for the outgoing call.

      
      
    • Loop start is being run on the incoming call; wink start is being run on the outgoing call.

      
      As the program initializes, you see event messages indicating that services are open on each of the two ports. In addition, the lps0 protocols have started on the incoming line.
      Event: CTAEVN_OPEN_SERVICES_DONE, Finished
      Event: CTAEVN_OPEN_SERVICES_DONE, Finished
      Event: ADIEVN_STARTPROTOCOL_DONE, Finished
      --------
      Waiting for incoming call...
      brd2brd is now ready to receive a call.
    • Pick up the phone connected to the loop start line and dial a 3 digit number.

      
      brd2brd displays the following:
      Event: ADIEVN_INCOMING_CALL
      Incoming Call...
      Answering call...
      Event: ADIEVN_ANSWERING_CALL
      Event: ADIEVN_CALL_CONNECTED, Answered
      You will hear a greeting and a prompt to provide an extension number.
    • Enter an extension number.

      
      brd2brd displays the following:
      Collecting digits to dial...
      Event: ADIEVN_DIGIT_BEGIN, '3'
      Event: ADIEVN_DIGIT_END
      Event: ADIEVN_DIGIT_BEGIN, '3'
      Event: ADIEVN_DIGIT_END
      Event: ADIEVN_DIGIT_BEGIN, '1'
      Event: ADIEVN_COLLECTION_DONE,
      Finished digit string ='331'
      Got extension: 331
      You will hear: "I'll try that extension now."
      brd2brd displays the following:
      Playing file 'ctademo', msg #17...
      Playing 1 messages from 'ctademo'...
      Event: ADIEVN_DIGIT_END
      Event: VCEEVN_PLAY_DONE, Finished, msec=2240
      Placing a call to '331'...
      Event: ADIEVN_PLACING_CALL
    • Take the outgoing phone handset off-hook, and then quickly replace it to provide the needed wink.

      
      brd2brd displays the following:
      Event: ADIEVN_CALL_CONNECTED, Signal Connected.
      The program makes a duplex connection between the incoming and outgoing lines.
    • Confirm that the two voice streams are connected by tapping on the mouthpiece of one handset.

      
      You should be able to hear the tapping on the other handset.
    • Hang up the outgoing line.

      
      The program tears down the call and returns to its initial state, waiting for a call. brd2brd displays the following:
      Hanging up...
      Event: ADIEVN_CALL_RELEASED
      Call done.
      Hanging up...
      Event: ADIEVN_CALL_RELEASED
      Call done.
      Event: ADIEVN_STOPPROTOCOL_DONE, Finished
      Event: ADIEVN_STOPPROTOCOL_DONE, Finished
      Event: ADIEVN_STARTPROTOCOL_DONE, Finished
      --------
      Waiting for incoming call...

    6.3 Call Center Program: callcntrTop of Page

    Name

    callcntr

    Purpose

    Demonstrates call transfer from an incoming line to an outgoing line over the CT bus using the Point-to-Point Switching service connection objects.

    Usage

    callcntr [options]

    where options are:
    Option

    Description

    -b n

    Specifies the NMS board number n for the incoming line(s). Default = 0

    -B n

    Specifies the NMS board number n for the outgoing line.
    Default = 1

    -x n

    Specifies the PPX switch number n for the primary incoming line. Default = 0

    -X n

    Specifies the PPX switch number n for the outgoing line.
    Default = 1

    -s n[,n,...,n]

    Specifies between 1 to 8 timeslots for incoming lines.
    Default = 0

    -S n

    Specifies the outgoing call timeslot. Default = 0.
    Note: timeslot n+1 is used for playing the on hold recording.

    -i protocol

    Specifies the protocol to run on the incoming line(s). All incoming lines are assumed to run the same protocol.
    Default = lps0

    -o protocol

    Specifies the protocol to run on the outgoing line.
    Default = lps0

    Functions

    ppxAddListeners, ppxConnect, ppxCreateConnection, ppxDisconnect, ppxRemoveListeners, ppxSetTalker

    Description

    callcntr uses the Point-to-Point Switching service to connect incoming and outgoing calls. This demonstration program presents two styles of point-to-point switch management:

    The second mode of operation is modeled upon an operator line servicing calls that have been put on hold. This portion of the demonstration program shows the ease with which connection switches can be managed using the Point-to-Point Switching Service. (The purpose is not to present a true call center application model.)

    In this second mode, this demonstration program creates a connection for the management of callers that have been put on hold, waiting for an operator to become available. As customers call in, and the demonstration program determines that the operator line is busy, these callers are added as listeners to the connection. These callers are later removed from the connection, one at a time, as the operator becomes available.

    Note: The MVIP-95 switch model is used in this demonstration program for stream numbering.

    Procedure

    The following procedure assumes you are using a system with the following configuration:

    The Point-to-Point Switching service also requires that the switching fabric be defined in the Point-to-Point Switching configuration file, \nms\ctaccess\cfg\ppx.cfg. Make sure this file exists and represents your hardware configuration. The following example represents the hardware layout described above:

    [PPX]
    Fabric
      Bus H100
            CTBUS:0..15:0..31
            CTBUS:16..23:0..63
            CTBUS:24..31:0..127
      End Bus
      
      Switch 0                  ## AG 2000
       SwitchType = HMIC
       DeviceName = "agsw"
        DeviceNumber = 0
        Bus H100 (CTBUS:0..15:0..31)
        Inputs                        
            LOCAL:0..6(2):0..7   
        End Inputs
        Outputs                      
            LOCAL:1..7(2):0..7   
        End Outputs
      End Switch
      Switch 1                  ## AG 2000
       SwitchType = HMIC
       DeviceName = "agsw"
        DeviceNumber = 1
        Bus H100 (CTBUS:0..15:0..31)
        Inputs                  
            LOCAL:0..6(2):0..7   
        End Inputs
        Outputs                
            LOCAL:1..7(2):0..7  
        End Outputs
      End Switch
    End Fabric
    
    
    Before you start up callcntr, start ctdaemon and ppxserv and verify that the boards have been booted. Refer to the NMS OAM System User's Manual for information about OAM, the Natural Access Developer's Reference Manual for information about ctdaemon, and Section 1.6 of this manual for information about ppxserv.

    Note: Be sure the PPX server is properly configured and installed before running callcntr. The PPX demos will fail to execute if the server application is not running.

    To run callcntr:

    1. Start ctdaemon (if it is not already running).

      
      
    2. Run oamsys to boot the boards.

      
      
    3. Start ppxserv.

      
      
    4. Start callcntr by entering the following prompt:

      
      callcntr -b 1 -s 4,2 -B 0 -S 4 -i wnk0 -o lps0
      This indicates the following usage:
      • Board 1, timeslots 2 and 4 on the local streams for the incoming (customer) lines.

        
        
      • Board 0, timeslot 4 on the local streams for the outgoing (operator) line.

        
        
      • Board 0, timeslot 5 on the local streams for the DSP voice resource used when managing the callers on hold for an operator.

        
        
      • Wink start is being run on the incoming customer calls; loop start protocol is being run on the outgoing operator line.

        
        As the program initializes, event messages display indicating that services are open on each of the four ports: the operator port, two customer ports, and the on hold message port. In addition, protocols are started on the two customer ports and on the hold message port. 
        Event: CTAEVN_OPEN_SERVICES_DONE, Finished
        Event: CTAEVN_OPEN_SERVICES_DONE, Finished
        Event: CTAEVN_OPEN_SERVICES_DONE, Finished
        Event: CTAEVN_OPEN_SERVICES_DONE, Finished
        Event: ADIEVN_STARTPROTOCOL_DONE, Finished
        Event: ADIEVN_STARTPROTOCOL_DONE, Finished
        --------
        Waiting for incoming call...
        Event: ADIEVN_STARTPROTOCOL_DONE, Finished
        --------
        Waiting for incoming call...
        Two messages indicating that the program is waiting for an incoming call are displayed. Each of these messages represents a thread in the demonstration program that is waiting for calls to be received on the customer lines, and indicates that a message is continually being played on the on hold port:
        Playing file 'ctademo', msg #17...
        Playing 1 messages from 'ctademo'...
        Event: VCEEVN_PLAY_DONE, Finished ,
        msec=2240
        callcntr is ready to receive an incoming call.
      • Take the handset of the telephone connected to board 1, local stream 0:4 off-hook.

        
        You should hear a relay click. 
      • Dial a 3-digit telephone number (such as 331) for the loop start handset.

        
        callcntr displays the following:
        Event: ADIEVN_INCOMING_CALL
        Incoming Call...Answering call...
        Event: ADIEVN_ANSWERING_CALL
        Event: ADIEVN_CALL_CONNECTED, Answered
        And then:
        --------
        Placing a call to '331'...
        Event: ADIEVN_PLACING_CALL
      • Answer the call on the operator phone that is connected to the loop start line when it rings.

        
        callcntr displays the following:
        Event: ADIEVN_CALL_CONNECTED, Voice Begin Connected.
        callcntr makes a duplex connection between the customer line and the operator line.
      • Confirm that the two voice streams are connected by tapping on the mouthpiece of one handset.

        
        You should be able to hear the tapping on the other handset.
      • Take the receiver of the second telephone connected to board 1, local stream 0:2 off-hook.

        
        You should hear a relay click. 
      • Dial the 3 digit telephone number for the loop start handset.

        
        callcntr displays the following:
        Event: ADIEVN_INCOMING_CALL
        Incoming Call...
        Answering call...
        Event: ADIEVN_ANSWERING_CALL
        Event: ADIEVN_CALL_CONNECTED, Answered
        Call connected.
        Because there is a previously established connection to the operator, you continually hear a message saying "I'll try that extension now ... I'll try that extension now ... I'll try..."
      • Hang up both the phone originally taken off hook and the operator phone.

        
        callcntr displays the following message twice:
        Hanging up...
        Event: ADIEVN_CALL_RELEASED
        Call done.
        Event: ADIEVN_STOPPROTOCOL_DONE, Finished
        callcntr then displays the following message, which indicates that the customer protocol is being reestablished so that it can wait for the next call:
        Event: ADIEVN_STARTPROTOCOL_DONE, Finished
        Almost immediately following this message, there is a message indicating that a call is being placed to the operator:
        Placing a call to '331'...
        Event: ADIEVN_PLACING_CALL
        The operator phone rings.
      • Answer the call.

        
        callcntr displays the following:
        Event: ADIEVN_CALL_CONNECTED, Voice Connected.
      • Confirm that you no longer hear the message "I'll try that extension now...", but instead have a voice connection with the operator phone (see step 8.)

        
        
      • Do not hang up the phones. Repeat step 10 using the phone on timeslot 4 of board 1. You hear the message as described.

      6.4 Switching Shell: swishTop of Page

      Name

      swish

      Purpose

      Provides interactive or text-file-driven control of MVIP and H.100 switches through the Switching service, the Point-to-Point Switching service, or directly using the device drivers.

      Usage

      swish [-i] [filename]

      Options

      -i specifies that the default initialization file, swish.ini, is ignored.

      filename specifies an ASCII file that contains swish commands to be executed before any interactive commands are executed.

      Description

      swish is a tool for interactive or text-file-driven control of switches. It provides a convenient way to manually test connections during development to verify the commands that will be given to switches from within Natural Access applications that use the Switching service.

      Procedure

      swish may be used in interactive mode, text-file-driven mode, or in a combination of the two.

      In interactive mode, the user enters swish commands at the swish command prompt to control the switches on the underlying hardware.

      In text-file-driven mode, the user provides swish with the name of the text file that holds the commands to be executed. If the text file does not have the exit command at the end, swish goes into interactive mode after executing the commands in the text file. Use the filename.swi naming convention for the input text file.

      To run swish interactively enter the following command at the prompt:

      swish

      
      
      To run swish using input from a text file enter the following command at the prompt:

      swish filename

      
      
      In interactive mode, the command prompt swish: displays. Type help to get a list of commands and arguments that swish supports. You can also enter the name of a command without any arguments to get more information about the command.

      In text-file-driven mode, swish executes the commands from the specified filename. The syntax of the commands in the file is the same as the syntax of the commands in interactive mode.

      swish supports four kinds of commands:

      The Point-to-Point Switching service commands use functions from the Point-to-Point Switching service API. The names of the commands are the same as the functions provided by the Point-to-Point Switching service, and the arguments to the commands are also similar. Refer to Chapter 5 for more information about the Point-to-Point Switching service functions.

      The swish commands use prefixes that correspond to the related APIs or device drivers, as shown in the following table:

      Use this prefix...

      To indicate...

      swi

      Switching service commands.

      ppx

      Point-to-Point Switching service commands.

      drv

      MVIP-90 driver commands (retained for legacy systems).

      d95

      MVIP-95 driver commands.

      swish supports the following commands:

      Command

      Arguments

      Description

      ppx.CreateConnection

      <ppxHd> = <CxName> <DefaultPattern>

      Creates an empty connection.

      ppx.OpenConnection

      <ppxHd> = <CxName>

      Opens a previously created connection.

      ppx.CloseConnection

      <ppxHd>

      Closes a connection.

      ppx.CloseX

      <Switch Number>

      Closes handle to opened switch.

      ppx.DestroyNamed
      Connection

      <ppxHd>

      Destroys a named connection.

      ppx.SetTalker

      <ppxHd> <Talker>

      Sets the talker for a connection.

      ppx.AddListeners

      <ppxHd> <ListenerList>

      Adds listeners to a connection.

      ppx.RemoveListeners

      <ppxHd> <ListenerList>

      Removes listeners from a connection.

      ppx.SetDefaultPattern

      <ppxHd> <pattern>

      Sets the default pattern for a connection.

      ppx.Connect

      <TiList> TO <ToList> [SIMPLEX | DUPLEX | QUAD]

      Makes a connection.

      ppx.Disconnect

      <ToList> FROM <TiList> [SIMPLEX | DUPLEX | QUAD]

      Disconnects a connection.

      ppx.Begin

      Starts collecting commands.

      ppx.BeginCancel

      Cancels a begin command.

      ppx.ShowDB

      Dumps the PPX runtime database to a text file.

      ppx.Submit

      Sends commands to server.

      For more information about a specific command, type the name of the command and press enter.

      Refer to the Switching Service Developer's Reference Manual for more information on the swish utility.

      Example

      The following ppx.cfg file is used for this example:

      [PPX]
      Fabric
        Bus H100
              CTBUS:0..15:0..31
              CTBUS:16..23:0..63
              CTBUS:24..31:0..127
        End Bus
        
        Switch 0                  ## AG 2000
         SwitchType = HMIC
         DeviceName = "agsw"
          DeviceNumber = 0
          Bus H100 (CTBUS:0..15:0..31)
          Inputs                        
              LOCAL:0..6(2):0..7   
          End Inputs
          Outputs                      
              LOCAL:1..7(2):0..7   
          End Outputs
        End Switch
      End Fabric
      
      # This SWISH script connects the Line-interfaces on an AG 2000 board as
      # listeners on a connection block to a DSP resource on the AG 2000 board
      # which is playing a hold message (the talker).

      # Create the connection block.
      ppx.CreateConnection hd0 = "" 0

      # Set the talker
      ppx.SetTalker hd0 0:LOCAL:4:0

      # Add the listeners - add the 8 incoming lines
      ppx.AddListeners hd0 0:LOCAL:0:0..7

      # A new message can be played to all the listeners by simply setting a
      # new talker to the connection. The previous talker is disconnected.
      ppx.SetTalker hd0 0:LOCAL:4:1

      # Close the connection
      ppx.CloseConnection hd0
      quit

      6.5 Show Switch Connections: showcx95Top of Page

      Name

      showcx95

      Purpose

      Displays switch connections.

      Usage

      showcx95 [switch_driver]

      Description

      Displays the switch connections for all boards that have MVIP switches. If a pattern is being sent on a timeslot, the pattern value is displayed.

      Procedure

      To run showcx95 for AG boards, enter the following:

      showcx95 agsw

      Example

      The following example makes connections between an AG 2000 board and an AG Quad T.

      The following ppx.cfg file is used for this example:

      [PPX]
      Fabric
        Bus H100                 
         CTBUS:0..15:0..31
         CTBUS:16..23:0..63
         CTBUS:24..31:0..127
        End Bus
        Switch 0                            ## AG 2000 
         SwitchType = HMIC
         DeviceName = "agsw"
         DeviceNumber = 0
         Bus H100 (CTBUS:0..15:0..31)
         Inputs                  
          LOCAL:0..6(2):0..7   
         End Inputs
         Outputs                     
          LOCAL:1..7(2):0..7   
         End Outputs
        End Switch
        Switch 2                             ## Quad T
         SwitchType = HMIC
         DeviceName = "agsw"
         DeviceNumber = 2
         Bus H100 ()
         Inputs                       
          LOCAL:0..14(2):0..23     # Trunk
          LOCAL:16..18(2):0..127   # DSP
         End Inputs
         Outputs                           
          LOCAL:1..15(2):0..23     # Trunk
          LOCAL:17..19(2):0..127   # DSP
         End Outputs
        End Switch
      End Fabric
      
      
      For the following swish commands:

      ppx.Connect  0:local:0:0   to 2:local:17:0   SIMPLEX
      ppx.Connect  0:local:0:2   to 2:local:17:2   DUPLEX
      ppx.Connect  0:local:0:4   to 2:local:17:4   QUAD
      
      
      The showcx95 output is:

       SHOWCX95 Version 1.1       Jan 15 1998

      AGSW 0
      M-14:02 <- L-00:00 M-14:04 <- L-00:02 M-14:06 <- L-00:04 M-14:07 <- L-02:04 L-01:00 <- 0x7f L-01:02 <- M-15:00 L-01:04 <- M-15:01 L-01:06 <- 0x7f L-03:00 <- 0x00 L-03:02 <- 0x00 L-03:04 <- M-15:02 AGSW 2 M-15:00 <- L-16:02 M-15:01 <- L-16:04 M-15:02 <- L-18:04 L-01:00..23 <- 0x7f
      [...]

       L-15:00..23            <-   0x00
       L-17:00                <-  M-14:02
       L-17:01                <-   0x7f
       L-17:02                <-  M-14:04
       L-17:03                <-   0x7f
       L-17:04                <-  M-14:06
       L-17:05..127           <-   0x7f
       L-19:00..03            <-   0x00
       L-19:04                <-  M-14:07
       L-19:05..127           <-   0x00
      
      In the showcx95 output, M indicates MVIP bus and L indicates local bus. The showcx95 output shows three types of connections:

      6.6 Service Configuration Utility: ppxservicecfgTop of Page

      Name

      ppxservicecfg

      Purpose

      Installs the PPX server as an NT service or removes it from the registry.

      Usage

      ppxservicecfg [ -install | -remove ] [options]

      -install Registers the service.

      -remove Stops the service and removes it.

      where options includes:

      Option

      Description

      -f filename

      Specifies the configuration filename.
      Default = \nms\ctaccess\cfg\ppx.cfg

      -e filename

      Specifies the error log filename.
      Default = \nms\ctaccess\ppxerror.log

      -d filename

      Specifies the database output filename.
      Default = \nms\ctaccess\ppxdb.log

      -l

      Turns on the SWI command logging process.
      Default = OFF

      -w number

      Specifies the line number at which the SWI log file will wrap to start. Default = 2000

      -s filename

      Specifies the SWI command log filename.
      Default = \nms\ctaccess\ppxswi.log



      Table of Contents Index NMS Glossary Previous Page Next Page Version


      Want to send us feedback on our documentation? Email: Tech_Pubs@nmss.com
      Copyright © 2001, NMS Communications Corporation. All rights reserved.