Previous Page Table Of Contents../index.html IndexNext Page


Call Rejection

Synchronous Programming

Application

Device Driver

State

Firmware

Network

    cc_MakeCall( )
    -->
    CRN assigned  
    Call_Outgoing
    
    -->
    DIALING
   
     
    CALL_OUTGOING
    
    -->
    Set up
      
    -->
 
    CCEV_  
    DISCONNECTED
    
      <--
    *DISCONNECTED
    CALL_REJECTION
    
      <--
    Rel_Comp
      
      <--
 
    ISDN_Block_Ts  
    (sync mode only)
      
    -->
 
    Incoming call blocked
 
    cc_DropCall( )
 
    IDLE
    B channel disconnected
      
    CALL_DISC
 
 
    CCEV_DROPCALL
 
    CALL_CLEARED
      
      <--
 
    cc_ReleaseCall( )
    -->
    Call_Dealloc
    
    -->
    NULL
   
 
    Driver releases CRN  
    Return
      
      <--
 
    F/W releases CRN  
    CALL_DEALLOC_ACK
      
      <--
 
    *Application can use cc_ResultValue( ) to determine the cause value for the disconnect (ERR_ISDN_CAUSE).

Synchronous Programming

Application

Device Driver

State

Firmware

Network

    cc_WaitCall( )
    -->
    ISDN_Unblock_Ts
    
    -->
    NULL
    Incoming call unblocked
 
       
    Set_Up
      
      <--
     
    *B channel cut-thru  
    CALL_PROCEEDING
    
    -->
    Proceeding
      
    -->
 
    CRN assigned  
    termination of cc_WaitCall( ) 
    
      <--
    OFFERED
    CALL_INCOMING
      
      <--
 
    cc_GetDNIS( )
    (option)
    -->
       
 
    Return immediately with DNIS 
      
      <--
     
    cc_DropCall( )
    -->
    Call_Disconnect  
    (cause value ¹ 0) 
      
    -->
     
   
    IDLE
    B channel disconnected  
    CALL_DISC
    
    -->
    disconnect
      
    -->
       
    Release
      
      <--
 
    termination of cc_DropCall( )
      
      <--
 
    CALL_CLEARED
    
      <--
    Rel_Comp
      
    -->
 
    ISDN_Block_Ts
 
    Incoming call unblocked
 
    cc_ReleaseCall( )
    -->
    Returned immediately   
      <--  
    Call_Dealloc 
      
    -->
     
 
    Driver releases CRN  
    Return
    
      <--
    NULL
    F/W releases CRN  
    CALL_DEALLOC_ACK
      
      <--
 
       
    Set_Up
      
      <--
   
    OFFERED
    CALL_INCOMING 
      
      <--
 
    cc_GetDNIS( )
    (option)
    -->
       
    cc_CallAck( )
    -->
     
    Proceeding 
    
    -->
    *Application may control CALL_PROCEEDING by adding CCMSK_CALL_PROC and using cc_CallAck( ) to send event mask, proceeding toward network.

Asynchronous Programming

Application

Device Driver

State

Firmware

Network

    cc_WaitCall( )
    -->
    ISDN_Unblock_Ts
    
    -->
    NULL
    Incoming call unblocked
 
       
    Set_Up
      
      <--
     
    *CALL_PROCEEDING
    
    -->
    Proceeding 
      
    -->
 
    CRN assigned  
    CCEV_OFFERED 
    
      <--
    OFFERED
    CALL_INCOMING
      
      <--
 
    cc_GetDNIS( )
    (option)
    -->
       
 
    Return immediately with DNIS 
      
      <--
     
    cc_DropCall( )
    -->
    Call_Disconnect (cause value ¹ 0) -->
     
   
    IDLE
    B channel disconnected  
    CALL_DISC
    
    -->
    disconnect
      
    -->
       
    Release
      
      <--
 
    CCEV_DROPCALL
      
      <--
 
    CALL_CLEARED
    
      <--
    Rel_Comp
    
    -->
    cc_ReleaseCall( ) 
    -->
    Call_Dealloc 
      
    -->
     
 
    Driver releases CRN  
    Return
    
      <--
    NULL
    F/W releases CRN  
    CALL_DEALLOC_ACK
      
      <--
 
       
    Set_Up
      
      <--
   
    OFFERED
    CALL_INCOMING 
      
      <--
 
    cc_GetDNIS( )
    (option)
    -->
       
    cc_CallAck( )
     
    Proceeding 
    
    -->
    * Application may control CALL_PROCEEDING by adding CCMSK_CALL_PROC and using cc_CallAck( ) to send event mask, proceeding toward network.

A glare condition occurs when both an incoming and outgoing call request the same time slot. When glare occurs, the incoming call is assigned the time slot. In this scenario, the firmware detects an incoming SETUP message after transmitting the outgoing SETUP message to the network. In this case, the firmware contains a call reference number for both the incoming and outgoing calls. Therefore, the application must issue cc_DropCall( ) and cc_ReleaseCall( ) to release the outgoing call prior to processing the incoming call. This scenario applies to an exclusive service setting with a firmware-controlled release configuration.

Asynchronous Programming

Application

Device Driver

State

Firmware

Network

    cc_MakeCall()-->
    Host CRN # 1 assigned  
    Call_Outgoing
    
    -->
    NULL
   
     
    Firmware CRN #1 is assigned  
    CALL_OUTGOING
    
    -->
    Set up
      
    -->
       
    Set_Up
      
      <--
     
    *B channel cut-thru CALL_PROCEEDING
    
    -->
    Proceeding
      
    -->
 
    Host CRN # 2 assigned  
    CCEV_OFFERED
    
      <--
    OFFERED
    Firmware CRN #2 is assigned  
    CALL_INCOMING
      
      <--
 
    cc_AcceptCall()
    (option)
    -->
    Call_Alert
      
    -->
 
    CALL_ALERT
    
    -->
    Alerting
      
    -->
 
    CCEV_ACCEPTCALL
    
      <--
    ACCEPTED
    CALL_ALERT_ACK
      
      <--
 
    cc_AnswerCall()
    -->
    Call_Connect
      
    -->
 
    *B channel cut-thru  
    CALL_CONNECT
    
    -->
    Connect
      
    -->
 
    CCEV_ANSWERCALL
    
      <--
    CONNECTED
    CALL_CONNECT_ACK
    
      <--
    Conn_ACK
      
      <--
 
    CCEV_DISCONNECTED
    
      <--
    **DISCONNECTED
    CALL_REJECTION on CRN # 1
    
      <--
    Rel_Comp
    
      <--
    cc_DropCall()
    -->
    Call_Dis
      
    -->
     
    CCEV_DROPCALL
    <--
 
    IDLE 
    CALL_CLEARED
      
    <--
 
    cc_ReleaseCall( )
    Call_Dealloc
    
    -->
    NULL
   
 
    Host CRN #1 released
 
    Firmware CRN #1 released  
    CALL_DEALLOC_ACK
      
      <--
 
    *Application may connect a voice channel to the B channel.
    **Application can use cc_ResultValue( ) to determine cause value for disconnect (ERR_ISDN_CAUSE).

A glare condition occurs when both an incoming and outgoing call request the same time slot. When glare occurs, the incoming call is assigned the time slot. In this scenario, the firmware detects an incoming SETUP message prior to transmitting the outgoing SETUP message to the network. The application receives a failure to process the request to transmit the SETUP message (CCEV_TASKFAIL event). In this case, the application does not need to issue cc_DropCall( ) and cc_ReleaseCall( ), and continues to process the incoming call. This scenario applies to an exclusive service setting with a firmware-controlled release configuration.

Asynchronous Programming

Application

Device Driver

State

Firmware

Network

    cc_MakeCall()-->
    Host CRN # 1 assigned  
    Call_Outgoing
    
    -->
    NULL
   
       
    Set_Up
      
    <--
     
    *B channel cut-thru CALL_PROCEEDING
    
    -->
    Proceeding
    
    -->
    ISDN Application does not need cc_DropCall() or cc_ReleaseCall() and continues processing the incoming call.)
    **Library receives ISDN_ERROR and releases host CRN #1 CCEV_TASKFAIL <--
    NULL
    Firmware detects the collision prior to sending out the SETUP message to the network. Precedence is given to the incoming call. Firmware CRN #1 is released.   
    ISDN_ERROR
      
      <--
 
 
    Host CRN # 2 assigned  
    CCEV_OFFERED
    
    <--
    OFFERED
    CALL_INCOMING
      
      <--
 
    cc_AcceptCall()
    (option)
    -->
    Call_Alert
      
    -->
 
    CALL_ALERT
    
    -->
    Alerting
      
    -->
 
    CCEV_ACCEPTCALL
    
      <--
    ACCEPTED
    CALL_ALERT_ACK
      
      <--
 
    cc_AnswerCall()
    -->
    Call_Connected
      
    -->
 
    *B channel cut-thru  
    CALL_CONNECT
    
    -->
    Connect
      
    -->
 
    CCEV_ANSWERCALL
    
      <--
    CONNECTED
    CALL_CONNECT_ACK
    
      <--
    Conn_ACK
    
      <--
    *Application may connect a voice channel to the B channel.
    **Note that the CCEV_TASKFAIL event may occur anytime between calling cc_MakeCall() and the receipt of the CCEV_ANSWERCALL event.

A simultaneous disconnect condition occurs when both the application and the network attempt to disconnect the call. The following scenarios are written for the asynchronous programming model. For synchronous programming, CCEV_DROPCALL will terminate cc_DropCall( ).

The first simultaneous disconnect scenario covers the following conditions:

NOTE:
This scenario assumes the default firmware-controlled disconnect process.

Asynchronous Programming

Application

Device Driver

State

Firmware

Network

   
    CONNECTED
   
 
    CCEV_  
    DISCONNECTED
    
      <--
    DISCONNECTED
    CALL_DISC
    
      <--
    Disconnect
    
      <--
    *cc_DropCall( )
    Call_Disconnected (cause value =0)
    
    -->
    IDLE
    Firmware does nothing here until Release is sent
    Release
      
    -->
 
    **CCEV_DISCONNECTED
      
      <--
   
    Release
      
    -->
 
    CCEV_DROPCALL
      
      <--
 
    CALL_CLEARED
    
      <--
    Rel_Comp
    
      <--
    ***cc_ReleaseCall( )
    -->
    Call_Dealloc
      
    -->
     
 
    Driver releases CRN  
    Return
    
      <--
    NULL
    F/W releases CRN  
    CALL_DEALLOC_ACK
      
      <--
 
    *Application should set a "drop call" flag.
    **Application should ignore CCEV_DISCONNECTED if "drop call" flag is set.
    ***cc_ReleaseCall( ) always clears "drop call" flag.

The next scenario covers the following simultaneous disconnect conditions:

Asynchronous Programming

Application

Device Driver

State

Firmware

Network

   
    CONNECTED
   
 
    CCEV_DISCONNECTED
    
      <--
    DISCONNECTED
    CALL_DISC
    
      <--
    Disconnect
      
      <--
       
    Release
      
    -->
       
    Rel_Comp
    
      <--
    cc_DropCall( )
    -->
    Call_Disconnected (cause value =0)
    
    -->
    IDLE
   
 
    CCEV_DROPCALL
      
      <--
 
    CALL_CLEARED
      
      <--
 
 
    ISDN_Block_Ts
      
    (sync model only)
 
    Incoming call blocked
 
    cc_ReleaseCall( )
    -->
    Call_Dealloc
      
    -->
     
 
    Driver releases CRN  
    Return
    
      <--
    NULL
    F/W releases CRN  
    CALL_DEALLOC_ACK
      
      <--
 


Previous PageTable Of ContentsTop Of PageIndexNext Page

Click here to contact Dialogic Customer Engineering

Copyright 2001, Dialogic Corporation
All rights reserved
This page generated December, 2001