User`s guide

Dialogic
®
System Release 6.0 PCI for Windows
®
Release Update, Rev 62 — January 30, 2008 208
Dialogic Corporation
if(gc_ResultValue(pEvent, &gcError, &ccLibId, &ccError) == GC_SUCCESS)
{
gc_ResultMsg(LIBID_GC, (long) gcError, &GCerrMsg);
gc_ResultMsg(ccLibId, ccError, &errMsg);
printf("Ld 0x%lx, GC (%d) %s, CC (%ld) %s, (%s)\n",
evtDev, gcError, GCerrMsg, ccError, errMsg, ATDV_NAMEP(evtDev));
}
}
1.51.3.5 Handling a Transfer Request
The following code snippet illustrates how party B handles an incoming transfer request
(REFER). Party B can either reject the request or accept it. Note that if no rejection reason
is specified, the default reason, 603 Decline, is used.
int Gc_HandleXferReq(int channel)
{
if(session[channel].ConfigFileParm.autoRejectCallXfer)
{
printf("GC_APP : [%d] Reject call xfer request\n",channel);
if(GC_SUCCESS != gc_RejectXfer(session[channel].crn, IPEC_SIPReasonStatus502BadGateway,
0, EV_ASYNC))
{
printf("GC_APP : [%d] Reject call xfer failed on device 0x%lx\n", channel,
session[channel].ldev);
PrintEventError(g_evtdev);
return GC_ERROR;
}
}
else
{
printf("GC_APP : [%d] Accept call xfer request\n",channel);
if(GC_SUCCESS != gc_AcceptXfer(session[channel].crn, 0, EV_ASYNC))
{
printf("GC_APP : [%d] Accept call xfer failed on device 0x%lx\n", channel,
session[channel].ldev);
PrintEventError(g_evtdev);
return GC_ERROR;
}
}
return GC_SUCCESS;
}
1.51.3.6 Making a Transferred Call
The following code snippet illustrates how party B makes the transferred call to party C
after accepting transfer request from party A
int Gc_MakeXferCall(int channelPrimary, int channelXfer)
{
GC_PARM_BLK * t_pParmBlk = NULL;
GCLIB_MAKECALL_BLK t_gclibmakecallblk ;
GC_MAKECALL_BLK t_gcmakecallblk = {0};
t_gcmakecallblk.gclib = &t_gclibmakecallblk;
int channelXfer;
memset(&t_gclibmakecallblk, 0, sizeof(GCLIB_MAKECALL_BLK));