Dialogic Dialogic Global Call IP IP Phone User Manual


 
313
Dialogic Corporation
.
.
.
case GCEV_OFFERED:
{
if (metaevent.extevtdatap)
{
GC_PARM_BLKP parm_blkp = metaevent.extevtdatap;
GC_PARM_DATAP curParm = NULL;
printf("GCEV_OFFERED has parmblk:\n");
while ((curParm = gc_util_next_parm(parm_blkp, curParm)) != NULL)
{
CRN secondaryCRN = 0;
char transferringAddr[GC_ADDRSIZE];
printf("SetID: 0x%x ParmID: 0x%x\n",curParm->set_ID,curParm->parm_ID);
switch (curParm->parm_ID)
{
case GCPARM_SECONDARYCALL_CRN:
memcpy(&secondaryCRN, curParm->value_buf, curParm->value_size);
printf("GCPARM_SECONDARYCALL_CRN: 0x%x\n",secondaryCRN);
break;
case GCPARM_TRANSFERRING_ADDR:
memcpy(transferringAddr, curParm->value_buf, curParm->value_size);
printf("GCPARM_TRANSFERRING_ADDR: %s\n",transferringAddr);
break;
default:
printf("UNEXPECTED PARM_ID: %d\n",curParm->parm_ID);
break;
}
}
}
break;
.
.
.
4.25.4 Call Transfer Glare Condition
Glare can occur on a line device during both blind and supervised call transfer operations. Glare
occurs on a line device during call transfer at Party B when the application calls gc_MakeCall( ) to
establish the transferred call (after the application has called gc_AcceptXfer( ) on the primary
CRN). Glare occurs because the CCLIB IP library has chosen the same line device for an incoming
call that the application has chosen for establishing the transferred call. The application indication
that this glare condition has occurred is that gc_MakeCall( ) fails with an error indication of
EGC_INVSTATE, GCRV_GLARE, or EGC_ILLSTATE. The application should retry the
transferred call establishment request on another “available” line device. The application should
process the GCEV_OFFERED metaevent on the incoming call/line device that caused the glare
“normally” when it is retrieved. The call scenario in Figure 59 describes the glare condition and the
appropriate application response.