..

SIP RE-INVITE

..

Developer Group

Developer Group
Connect with thousands of other developers to brainstorm ideas, share best practices and tips - or just chat about the latest emerging technologies making noise in the field. And of course, get the most up-to-date service and support news from Dialogic.
Dialogic PowerMedia HMP GlobalCall and R4 API

SIP RE-INVITE

  • Hello,

    I've problems with Global Call API implementation (enable) of the SIP re-INVITE request method (1PCC), disabled by default.

    With the HMP Windows 3.0 SU 371 version, in a simple 4-channel SIP development system, I have no problems enabling re-invite:

    • Bridge Devices 
    • Bridge-0 
    • DM3 
    • HMP_Software #0 in slot 0/65535 
    • TDM Bus 
    • Bus-0

    HMP LOG:

    04/06/2020 09:50:56.001 6252 6040 gc APPL gclib <:::: gc_SetConfigData(target_type:9, target_id:2, timeout:0, update_cond:0, mode:async)
    04/06/2020 09:50:56.001 6252 6040 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, time_out:0, update_cond:0, mode:32768) - entry
    04/06/2020 09:50:56.001 6252 6040 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2) - FindCCLibTargetInfo() returns:0
    04/06/2020 09:50:56.001 6252 6040 gc DEBG gcrtcm_mgr ----- VerifyTargetObjectData() - target object(type:9, cclibid:8) has set ID range (0x4700h to 0x47ffh).
    04/06/2020 09:50:56.001 6252 6040 gc APPL gc_util <:::: gc_util_next_parm(): parm_blk=0x5dd28a8 cur_parm = 0x0
    04/06/2020 09:50:56.001 6252 6040 gc APPL gc_util ::::> gc_util_next_parm(): success (cur_parm == NULL) next_parm = 0x05DD28AA, setid=0x3019 parmid=0x2 of size 0x4 at 0x05DD28AF
    04/06/2020 09:50:56.001 6252 6040 gc APPL gc_util <:::: gc_util_next_parm(): parm_blk=0x5dd28a8 cur_parm = 0x5dd28aa
    04/06/2020 09:50:56.001 6252 6040 gc DEBG gc_util ::::> gc_util_next_parm(): invalid cur_parm pointer - next pointer out of range, cur_parm = 0x5dd28aa
    04/06/2020 09:50:56.001 6252 6040 gc DEBG gcrtcm_mgr ----- VerifyTargetObjectData() - Succeed in assigning request ID:1
    04/06/2020 09:50:56.001 6252 6040 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, request_id:1) - VerifyTargetObjectData() returns:0
    04/06/2020 09:50:56.001 6252 6040 gc INFO gc_util ----- gc_util_next_parm_ex(): success setid=0x3019 parmid=0x2 of size 0x4 at 0x05DD28AF

    With the HMP  Windows 3.0 SU 357 version, in a 120-channel (30 ISDN + 90 SIP) production system :

    • Bridge Devices 
    • Bridge-0 
    • DM3 
    • DNI310TEPE2HMP #2 in slot 8/0 
    • HMP_Software #2 in slot 0/65535 
    • TDM Bus 
    • Bus-0

    The same code generates the following error: Invalid SET ID

    HMP LOGS:

    04/06/2020 05:14:40.686 7576 5760 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, request_id:1) - InsertRequestInfoToDB() returns:0
    04/06/2020 05:14:40.686 7576 5760 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, request_id:1, update_cond:0) - executing ccfp_SetConfigData(cclibid:6)
    04/06/2020 05:14:40.686 7576 5760 dm3cc ERR1 Libdm3cc ----- Invalid Set ID 12313
    04/06/2020 05:14:40.686 7576 5760 gc ERR1 gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, request_id:1) - ccfp_SetConfigData(cclibid:6) returns:-1
    04/06/2020 05:14:40.686 7576 5760 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, request_id:1) - CheckReponse(0x134, 0x6, 0x802c) is called
    04/06/2020 05:14:40.691 7576 5760 gc ERR1 gclib ::::> gc_SetConfigData(target_type:9, target_id:2, timeout:0, update_cond:0, request_id:1, mode:async) - returns:308
    04/06/2020 05:14:40.696 7576 5760 gc INFO gclib ----- gc_ResultMsg(cclibid:6, result_code:32812, msg:Invalid SET ID) - returns:0
    04/06/2020 05:14:40.701 7576 5760 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2, time_out:0, update_cond:0, mode:32768) - entry
    04/06/2020 05:14:40.701 7576 5760 gc DEBG gc_rtcm ----- rtcm_SetConfigData(target_type:9, target_id:2) - FindCCLibTargetInfo() returns:0
    04/06/2020 05:14:40.701 7576 5760 gc DEBG gcrtcm_mgr ----- VerifyTargetObjectData() - target object(type:9, cclibid:6) has set ID range (0x4600h to 0x46ffh).
    04/06/2020 05:14:40.701 7576 5760 gc DEBG gc_util ::::> gc_util_next_parm(): invalid cur_parm pointer - next pointer out of range, cur_parm = 0x99f7bc2

    Thanks

    Daniele

  • I suspect the target_id passed in the non working case is not that of IPT board device in this case, since it going thru the libdm3cc library. Make sure you are passing the correct device handle.

    Regards,.

    Jeff M.

  • Thanks Jeff.

    For over twenty years I have been using the Enghouse IVR Developer Toolkit (ex CT-ADE / ADL) to develop my applications under HMP. Evidently in the production system configured with DNI, channels 0-29 ISDN and 30-90 SIP VOIP, IVR-DT uses the wrong library or device for the following instructions:

    TrunkSetInt(REGID_R4GcSetupParmIDs, IPSET_CONFIG, IPPARM_OPERATING_MODE, INTSIZE);

    TrunkSetInt(REGID_R4GcInsertParmVal, IP_T38_MANUAL_MODIFY_MODE);

    TrunkSetInt(REGID_R4GcSetConfigData, GCTGT_CCLIB_NETIF,BOARD_ID, 0, GCUPDATE_IMMEDIATE, ASYNC);

    translated into C language (see Dialogic® Global Call IP Technology Guide May 2014,

    4.8.2 Enabling Application Access to re-INVITE Requests (page 164))

    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…

    }

  • Ok, if that is the case, sounds like an issue on mixed systems then. I would report that issue into the Enghouse team that handles CT ADE support.

    Regards,

    Jeff

  • Thanks Jeff for your kindness, I solved the problem!

      In an HMP system with different types of channels (IP / TDM (DNI etc)), the setup instructions (in ADL language) must be put in a script loaded from a VOIP channel, so IVR-DT is forced to send the command to the right library without specifying anything in particular. In a multitasking project like mine, I have to make sure that the instructions are executed only once even if the script is loaded several times, and this I get with a global variable.