Dialogic 05-2239-009 User Manual

Page of 604
Dialogic
®
 Global Call IP Technology Guide — November 2007
159
Dialogic Corporation
IP-Specific Operations
changing between audio and T.38 fax modes 
Note: The existing automatic and manual modes for audio/T.38 switching (as described in 
) have used re-INVITE “under the hood” when using 
the SIP protocol. But when an application has enabled access to re-INVITE requests, 
audio/T.38 fax mode changes must be handled explicitly by the application, just like 
any other re-INVITE requests.
4.7.2
Enabling Application Access to re-INVITE Requests
Note:
Access to re-INVITE messages must be enabled as described in this section in both 1PCC and 
3PCC operating modes.  
For backwards compatibility in 1PCC mode, the default behavior of the Dialogic
®
 Global Call API 
library is to automatically reject all re-INVITE requests it receives that are not related to T.38, and 
to do so without notifying the application.
In order to have access to received SIP re-INVITE requests, applications must set a specific 
parameter value using the Global Call gc_SetConfigData( ) function. To enable the 
GCEV_REQ_MODIFY_CALL event type that is used to notify applications of re-INVITE 
requests, the application must include the following parameter element in the GC_PARM_BLK 
that it passes to the gc_SetConfigData( ) function:
IPSET_CONFIG
IPPARM_OPERATING_MODE
value = IP_T38_MANUAL_MODIFY_MODE
The following code snippet illustrates how to set this parameter:
   GC_PARM_BLKP parmblkp = NULL;
   long request_id = 0;
   gc_util_insert_parm_val(&parmblkp, 
                           IPSET_CONFIG, 
                           IPPARM_OPERATING_MODE, 
                           sizeof(int), 
                           IP_T38_MANUAL_MODIFY_MODE);
   if (gc_SetConfigData(GCTGT_CCLIB_NETIF, boardDev, parmblkp, 0 /*timeout*/, 
                        GCUPDATE_IMMEDIATE, &request_id, EV_ASYNC) != GC_SUCCESS)
   {
      // handle error…
   }
In addition to enabling the GCEV_REQ_MODIFY_CALL event for access to received re-INVITE 
requests, this parameter setting also enables the three gc_xxxModifyMedia( ) APIs that support re-
INVITE functionality. Unless this parameter value is set, any attempt to call one of the 
gc_xxxModifyMedia( ) functions will fail with an IPERR_BAD_PARM error code. 
4.7.3
Receiving SIP re-INVITE Requests
This section focuses primarily on library behavior in 1PCC operating mode. In 3PCC, the 
application is responsible for parsing and SDP offers and constructing SDP answers.