Dialogic Dialogic Global Call IP IP Phone User Manual


 
327
Dialogic Corporation
To answer the T.38 offer, the application must associate a Fax device with the Media device and set
local T.38 media capability before calling the gc_AnswerCall( ) function. The following code
provides an example:
INT32 processEvtHandler()
{
METAEVENT metaEvent;
GC_PARM_BLK *parmblkp = NULL;
GC_PARM_DATAP t_gcParmDatap = NULL;
GC_PARM_BLK *parmblkp2 = NULL;
EXTENSIONEVTBLK *ext_evtblkp = NULL;
IP_CONNECT ipConnect;
IP_CAPABILITY ipcap;
:
switch (evtType)
{
case GCEV_OFFERED:
/* parse PARM_BLK examine data */
parmblkp = (GC_PARM_BLK *)metaEvent.extevtdatap;
while (t_gcParmDatap = gc_util_next_parm(parmblkp, t_gcParmDatap))
{
switch(t_gcParmDatap->set_ID)
{
case IPSET_FOIP:
switch(t_gcParmDatap->parm_ID)
{
case IPPARM_T38_OFFERED:
/* connect media with fax devices */
ipConnect.version = 0x100;
ipConnect.mediaHandle = pline->mediaH;
ipConnect.faxHandle = pline->faxH;
ipConnect.connectType = IP_FULLDUP;
gc_util_insert_parm_ref(&parmblkp2, IPSET_FOIP, IPPARM_T38_CONNECT,
(sizeof(IP_CONNECT)), (void *)(&ipConnect));
gc_SetUserInfo(GCTGT_GCLIB_CRN, pline->crn, parmblkp2, GC_SINGLECALL);
gc_util_delete_parm_blk(parmblkp2);
/* set T.38 media capability*/
ipcap.capability = GCCAP_DATA_t38UDPFax;
ipcap.type = GCCAPTYPE_RDATA;
ipcap.direction = IP_CAP_DIR_LCLTXRX;
ipcap.extra.data.max_bit_rate = 144;
gc_util_insert_parm_ref(&parmblkp2, GCSET_CHAN_CAPABILITY,
IPPARM_LOCAL_CAPABILITY,
sizeof(IP_CAPABILITY), &ipcap);
gc_SetUserInfo(GCTGT_GCLIB_CRN, pline->crn, pParmBlock2,
GC_SINGLECALL);
gc_util_delete_parm_blk(pParmBlock2);
/* received completion event for gc_Extension() */
gc_AnswerCall(pline->crn, 0, EV_ASYNC);
break;
}
break
}
}
break
}
}