Sends a suspend message to the far exchange and starts the suspend timer T2.
DWORD ISUPSuspendReq ( CTAHD ctahd, SuId suId, SiInstId suInstId, SiInstId spInstId, CirId circuit, SiSuspEvnt *suspEvnt)
Argument |
Description |
ctahd |
Natural Access handle returned by ctaCreateContext. |
suId |
ISUP service access point. |
suInstId |
Service user instance ID. |
spInstId |
Service provider instance ID. |
circuit |
Circuit with which this message is associated. |
suspEvnt |
Pointer to the caller's suspend event structure containing all parameters (IEs) to be included in the message to the far exchange. |
Return value |
Description |
ISUP_SUCCESS |
|
CTAERR_BAD_ARGUMENT |
One or more arguments are invalid. |
CTAERR_DRIVER_SEND_FAILED |
Error occurred accessing the TX driver. |
CTAERR_INVALID_CTAHD |
Natural Access handle is invalid. |
If the ISUP layer receives no resume or release message before the expiration of the T2 timer, the ISUP layer clears the call in both directions.
The value specified in the suInstId field is passed to all subsequent events associated with this connection.
The value for spInstId must be the spInstId value that was received from the ISUP layer in the connect indication event.
DWORD status;
SiSuspEvnt suspEvnt;
IsupRcvInfoBlk rcvInfo;
S16 switchType = ST_ITUWHITE;
CTAHD ctahd = Valid CTA Handle;
status = ISUPRetrieveMessage(ctahd, &rcvEvent, &rcvInfo, 1);
if (status == ISUP_NOMSG)
{
fprintf(stderr, "ISUPRetrieveMessage() did not get a message, probably a congestion event \n");
return(ISUP_SUCCESS);
}
if (status != ISUP_SUCCESS)
{
fprintf(stderr, "ISUPRetrieveMessage() failed, returned %d\n", status);
return(status);
}
...
...
ISUPInitSUS( switchType, &suspEvnt);
status = ISUPSuspendReq( ctahd, rcvInfo.suId, rcvInfo.suInstId, rcvInfo.spInstId,
rcvInfo.circuit, &suspEvnt);
if(status != ISUP_SUCCESS)
printf("ISUPSuspendReq() failed, status = %d\n", status);
else
printf("SUSpend request sent for circuit %ld\n", circuit);