X.25 Call Setup
call_EncodeClearRequest()
Encode cause and diagnostic codes, address, facilities and user data into a clear request packet.
#include "call.h"
LResult call_EncodeClearRequest
(
CallClearData data,
CallBuffer buffer,
CallBufferSize size
);
| data | input for data to encode |
| buffer | output buffer for clear request packet |
| size | size of buffer in bytes |
call_EncodeClearRequest() encodes a C language representation of cause and diagnostic codes, address, facilities and user data into a clear request packet. The example code given below shows how to set up the data structures passed to call_EncodeClearRequest(). Facilities and user data are optional, but if either is used, the address field is required.
If successful, call_EncodeClearRequest() returns a non-negative value indicating the number of bytes of encoded data. Otherwise, it returns a negative value. Failure to encode indicates that the input parameters are invalid.
CallClearDataStruct callClearData;
CallSetupDataStruct callSetupData;
AddressBlock addressBlock;
char packet[128];
LResult result;
/* Set up clear data block */
callClearData.cause = cause_CLEAR_INVALID_FACILITY_REQUEST;
callClearData.diag = dg_FACILITY_CODE_NOT_ALLOWED;
callClearData.callSetupData = &callSetupData;
/* Set up call setup data block */
callSetupData.address = &addressBlock;
callSetupData.facilities = NULL;
callSetupData.userData = NULL;
callSetupData.userDataCount = 0;
/* Set up address information */
addressBlock.format = call_STANDARD_ADDRESS_FORMAT;
strcpy(addressBlock.dte.std.calledDTE, calledDte);
strcpy(addressBlock.dte.std.callingDTE, callingDte);
result = call_EncodeClearRequest(&callClearData, packet, (uint) sizeof(packet));
if (result < 0)
{
/* Error encoding */
}
else
{
lgo_ConnectReject(cid, packet, result);
}