diff options
author | Russell Bryant <russell@russellbryant.com> | 2009-06-30 16:40:38 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2009-06-30 16:40:38 +0000 |
commit | c511a2674906fd93470f0a9b77340041771466e1 (patch) | |
tree | d3d6aa7ea86d11ecaa6e88efbc46a5dde1c63ea5 /addons/ooh323c/src/ooq931.h | |
parent | 62d3f1dfd9632f18c4f7c12e44af30f4cc08c292 (diff) |
Move Asterisk-addons modules into the main Asterisk source tree.
Someone asked yesterday, "is there a good reason why we can't just put these
modules in Asterisk?". After a brief discussion, as long as the modules are
clearly set aside in their own directory and not enabled by default, it is
perfectly fine.
For more information about why a module goes in addons, see README-addons.txt.
chan_ooh323 does not currently compile as it is behind some trunk API updates.
However, it will not build by default, so it should be okay for now.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@204413 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src/ooq931.h')
-rw-r--r-- | addons/ooh323c/src/ooq931.h | 766 |
1 files changed, 766 insertions, 0 deletions
diff --git a/addons/ooh323c/src/ooq931.h b/addons/ooh323c/src/ooq931.h new file mode 100644 index 000000000..a61ef8e6e --- /dev/null +++ b/addons/ooh323c/src/ooq931.h @@ -0,0 +1,766 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * @file ooq931.h + * This file contains functions to support call signalling. + */ + +#ifndef _OOQ931HDR_H_ +#define _OOQ931HDR_H_ + +#include "ooasn1.h" +#include "ootypes.h" +#include "H323-MESSAGES.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXTERN +#ifdef MAKE_DLL +#define EXTERN __declspec(dllexport) +#else +#define EXTERN +#endif /* MAKE_DLL */ +#endif /* EXTERN */ + +/** + * @defgroup q931 Q.931/H.2250 Message Handling + * @{ + */ +/* Maximum length of the Calling/Called party number number */ +#define OO_MAX_NUMBER_LENGTH 50 + +/* Maximum value for a call token identifier */ +#define OO_MAX_CALL_TOKEN 9999 + +/* Q.931 packet must be at least 5 bytes long */ +#define Q931_E_TOOSHORT (-1001) +/* callReference field must be 2 bytes long */ +#define Q931_E_INVCALLREF (-1002) +/* invalid length of message */ +#define Q931_E_INVLENGTH (-1003) + +enum Q931MsgTypes { + Q931NationalEscapeMsg = 0x00, + Q931AlertingMsg = 0x01, + Q931CallProceedingMsg = 0x02, + Q931ConnectMsg = 0x07, + Q931ConnectAckMsg = 0x0f, + Q931ProgressMsg = 0x03, + Q931SetupMsg = 0x05, + Q931SetupAckMsg = 0x0d, + Q931ResumeMsg = 0x26, + Q931ResumeAckMsg = 0x2e, + Q931ResumeRejectMsg = 0x22, + Q931SuspendMsg = 0x25, + Q931SuspendAckMsg = 0x2d, + Q931SuspendRejectMsg = 0x21, + Q931UserInformationMsg = 0x20, + Q931DisconnectMsg = 0x45, + Q931ReleaseMsg = 0x4d, + Q931ReleaseCompleteMsg = 0x5a, + Q931RestartMsg = 0x46, + Q931RestartAckMsg = 0x4e, + Q931SegmentMsg = 0x60, + Q931CongestionCtrlMsg = 0x79, + Q931InformationMsg = 0x7b, + Q931NotifyMsg = 0x6e, + Q931StatusMsg = 0x7d, + Q931StatusEnquiryMsg = 0x75, + Q931FacilityMsg = 0x62 +}; + +enum Q931IECodes { + Q931BearerCapabilityIE = 0x04, + Q931CauseIE = 0x08, + Q931FacilityIE = 0x1c, + Q931ProgressIndicatorIE = 0x1e, + Q931CallStateIE = 0x14, + Q931DisplayIE = 0x28, + Q931SignalIE = 0x34, + Q931CallingPartyNumberIE = 0x6c, + Q931CalledPartyNumberIE = 0x70, + Q931RedirectingNumberIE = 0x74, + Q931UserUserIE = 0x7e, + Q931KeypadIE = 0x2c +}; + +enum Q931InformationTransferCapability { + Q931TransferSpeech, + Q931TransferUnrestrictedDigital = 8, + Q931TransferRestrictedDigital = 9, + Q931Transfer3_1kHzAudio = 16, + Q931TrasnferUnrestrictedDigitalWithTones = 17, + Q931TransferVideo = 24 +}; + +enum Q931CauseValues { + Q931UnallocatedNumber = 0x01, + Q931NoRouteToNetwork = 0x02, + Q931NoRouteToDestination = 0x03, + Q931ChannelUnacceptable = 0x06, + Q931NormalCallClearing = 0x10, + Q931UserBusy = 0x11, + Q931NoResponse = 0x12, + Q931NoAnswer = 0x13, + Q931SubscriberAbsent = 0x14, + Q931CallRejected = 0x15, + Q931NumberChanged = 0x16, + Q931Redirection = 0x17, + Q931DestinationOutOfOrder = 0x1b, + Q931InvalidNumberFormat = 0x1c, + Q931NormalUnspecified = 0x1f, + Q931StatusEnquiryResponse = 0x1e, + Q931NoCircuitChannelAvailable = 0x22, + Q931NetworkOutOfOrder = 0x26, + Q931TemporaryFailure = 0x29, + Q931Congestion = 0x2a, + Q931RequestedCircuitUnAvailable = 0x2c, + Q931ResourcesUnavailable = 0x2f, + Q931IncompatibleDestination = 0x58, + Q931ProtocolErrorUnspecified = 0x6f, + Q931RecoveryOnTimerExpiry = 0x66, + Q931InvalidCallReference = 0x51, + Q931ErrorInCauseIE = 0 +}; + +enum Q931SignalInfo { + Q931SignalDialToneOn, + Q931SignalRingBackToneOn, + Q931SignalInterceptToneOn, + Q931SignalNetworkCongestionToneOn, + Q931SignalBusyToneOn, + Q931SignalConfirmToneOn, + Q931SignalAnswerToneOn, + Q931SignalCallWaitingTone, + Q931SignalOffhookWarningTone, + Q931SignalPreemptionToneOn, + Q931SignalTonesOff = 0x3f, + Q931SignalAlertingPattern0 = 0x40, + Q931SignalAlertingPattern1, + Q931SignalAlertingPattern2, + Q931SignalAlertingPattern3, + Q931SignalAlertingPattern4, + Q931SignalAlertingPattern5, + Q931SignalAlertingPattern6, + Q931SignalAlertingPattern7, + Q931SignalAlretingOff = 0x4f, + Q931SignalErrorInIE = 0x100 +}; + +enum Q931NumberingPlanCodes { + Q931UnknownPlan = 0x00, + Q931ISDNPlan = 0x01, + Q931DataPlan = 0x03, + Q931TelexPlan = 0x04, + Q931NationalStandardPlan = 0x08, + Q931PrivatePlan = 0x09, + Q931ReservedPlan = 0x0f +}; + +enum Q931TypeOfNumberCodes { + Q931UnknownType = 0x00, + Q931InternationalType = 0x01, + Q931NationalType = 0x02, + Q931NetworkSpecificType = 0x03, + Q931SubscriberType = 0x04, + Q931AbbreviatedType = 0x06, + Q931ReservedType = 0x07 +}; + +enum Q931CodingStandard{ + Q931CCITTStd = 0, + Q931ReservedInternationalStd, + Q931NationalStd, + Q931NetworkStd +}; + +enum Q931TransferMode { + Q931TransferCircuitMode = 0, /* 00 */ + Q931TransferPacketMode = 2 /* 10 */ +}; + +enum Q931TransferRate{ + Q931TransferRatePacketMode = 0x00, /* 00000 */ + Q931TransferRate64Kbps = 0x10, /* 10000 */ + Q931TransferRate128kbps = 0x11, /* 10001 */ + Q931TransferRate384kbps = 0x13, /* 10011 */ + Q931TransferRate1536kbps = 0x15, /* 10101 */ + Q931TransferRate1920kbps = 0x17 /* 10111 */ +}; + +enum Q931UserInfoLayer1Protocol{ + Q931UserInfoLayer1CCITTStdRate = 1, + Q931UserInfoLayer1G711ULaw, + Q931UserInfoLayer1G711ALaw, + Q931UserInfoLayer1G721ADPCM, + Q931UserInfoLayer1G722G725, + Q931UserInfoLayer1H261, + Q931UserInfoLayer1NonCCITTStdRate, + Q931UserInfoLayer1CCITTStdRateV120, + Q931UserInfoLayer1X31 +}; + +/* + Structure to build store outgoing encoded UUIE + The different fields in the structure have octet lengths + as specified in the spec. +*/ +typedef struct Q931InformationElement { + int discriminator; + int offset; + int length; + ASN1OCTET data[1]; +} Q931InformationElement; + +/** + * Q.931 message structure. Contains context for memory allocation, + * protocol discriminator, call reference, meesage type and list of + * user-user information elements (IEs). + */ +typedef struct Q931Message { + ASN1UINT protocolDiscriminator; + ASN1UINT callReference; + ASN1BOOL fromDestination; + ASN1UINT messageType; /* Q931MsgTypes */ + ASN1UINT tunneledMsgType; /* The H245 message this message is tunneling*/ + ASN1INT logicalChannelNo; /* channel number associated with tunneled */ + /* message, 0 if no channel */ + DList ies; + Q931InformationElement *bearerCapabilityIE; + Q931InformationElement *callingPartyNumberIE; + Q931InformationElement *calledPartyNumberIE; + Q931InformationElement *causeIE; + Q931InformationElement *keypadIE; + H225H323_UserInformation *userInfo; +} Q931Message; + +/** + * This structure is used to hold an H.323 alias address. + */ +typedef struct OOAliases { + int type; /*!< H.225 AliasAddress choice option (t value) */ + char *value; /*!< H.225 AliasAddress value */ + OOBOOL registered; + struct OOAliases *next; +} OOAliases; + +#define ooAliases OOAliases + +struct OOH323CallData; + +/* + * These are message callbacks which can be used by user applications + * to perform application specific things on receiving a particular + * message or before sending a particular message. For ex. user application + * can change values of some parameters of setup message before it is actually + * sent out. + */ +/** + * This callback is triggered when an H.225 SETUP message is received by + * the application. + * @param call The call the message is associated with. + * @param pmsg Q.931 message structure. + * @return OO_OK if message processing successful or OO_FAILED if not. + */ +typedef int (*cb_OnReceivedSetup) + (struct OOH323CallData *call, struct Q931Message *pmsg); + +/** + * This callback is triggered when an H.225 CONNECT message is received by + * the application. + * @param call The call the message is associated with. + * @param pmsg Q.931 message structure. + * @return OO_OK if message processing successful or OO_FAILED if not. + */ +typedef int (*cb_OnReceivedConnect) + (struct OOH323CallData *call, struct Q931Message *pmsg); + +/** + * This callback is triggered after an H.225 SETUP message has been + * constructed and is ready to be sent out. It provides the application + * with an opportunity to add additional non-standard information. + * @param call The call the message is associated with. + * @param pmsg Q.931 message structure. + * @return OO_OK if message processing successful or OO_FAILED if not. + */ +typedef int (*cb_OnBuiltSetup) + (struct OOH323CallData *call, struct Q931Message *pmsg); + +/** + * This callback is triggered after an H.225 CONNECT message has been + * constructed and is ready to be sent out. It provides the application + * with an opportunity to add additional non-standard information. + * @param call The call the message is associated with. + * @param pmsg Q.931 message structure. + * @return OO_OK if message processing successful or OO_FAILED if not. + */ +typedef int (*cb_OnBuiltConnect) + (struct OOH323CallData *call, struct Q931Message *pmsg); + +/** + * This structure holds the various callback functions that are + * triggered when H.225 messages are received or constructed. + * @see ooH323EpSetH225MsgCallbacks + */ +typedef struct OOH225MsgCallbacks { + cb_OnReceivedSetup onReceivedSetup; + cb_OnReceivedConnect onReceivedConnect; + cb_OnBuiltSetup onBuiltSetup; + cb_OnBuiltConnect onBuiltConnect; +} OOH225MsgCallbacks; + +/** + * This function is invoked to decode a Q931 message. + * + * @param call Handle to call which owns the message. + * @param msg Pointer to the Q931 message + * @param length Length of the encoded data + * @param data Pointer to the data to be decoded + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooQ931Decode +(struct OOH323CallData *call, Q931Message* msg, int length, ASN1OCTET *data); + +/** + * This function is used to decode the UUIE of the message from the list of + * ies. It decodes the User-User ie and populates the userInfo field of the + * message. + * @param q931Msg Pointer to the message whose User-User ie has to be + * decoded. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooDecodeUUIE(Q931Message *q931Msg); + +/** + * This function is used to encode the UUIE field of the Q931 message. + * It encodes UUIE and adds the encoded data to the list of ies. + * @param q931msg Pointer to the Q931 message whose UUIE field has to be + * encoded. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooEncodeUUIE(Q931Message *q931msg); + +/** + * This function is invoked to retrieve an IE element from a Q931 message. + * + * @param q931msg Pointer to the Q931 message + * @param ieCode IE code for the IE element to be retrieved + * + * @return Pointer to a Q931InformationElement contating + * the IE element. + */ +EXTERN Q931InformationElement* ooQ931GetIE (const Q931Message* q931msg, + int ieCode); + +/** + * This function is invoked to print a Q931 message. + * + * @param q931msg Pointer to the Q931 message + * + * @return - none + */ +EXTERN void ooQ931Print (const Q931Message* q931msg); + + +/** + * This function is invoked to create an outgoing Q931 message. + * + * @param msg Reference to the pointer of type Q931 message. + * @param msgType Type of Q931 message to be created + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooCreateQ931Message(Q931Message **msg, int msgType); + +/** + * This function is invoked to generate a unique call reference number. + * + * @return - call reference number + */ +EXTERN ASN1USINT ooGenerateCallReference(void); + + +/** + * This function is used to generate a unique call identifier for the call. + * @param callid Pointer to the callid structure, which will be populated + * with the generated callid. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooGenerateCallIdentifier(H225CallIdentifier *callid); + +/** + * This function is invoked to release the memory used up by a Q931 message + * + * @param q931Msg Pointer to a Q931 message which has to be freed. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooFreeQ931Message(Q931Message *q931Msg); + +/** + * This function is invoked to retrive the outgoing message buffer for + * Q931 message + * + * @param call Pointer to call for which outgoing Q931 message has to be + * retrieved. + * @param msgbuf Pointer to a buffer in which retrieved message will + * be returned. + * @param len Pointer to int in which length of the buffer will + * be returned. + * @param msgType Pointer to integer in which message type of the ougoing + * message is returned. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooGetOutgoingQ931Msgbuf +(struct OOH323CallData *call, ASN1OCTET * msgbuf, int* len, int *msgType); + +/** + * This function is invoked to send a ReleaseComplete message for + * the currently active call. + * + * @param call Pointer to the call for which ReleaseComplete message have + * to be sent. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooSendReleaseComplete(struct OOH323CallData *call); + +/** + * This function is invoked to send a call proceeding message in response to + * received setup message. + * + * @param call Pointer to the call for which CallProceeding message have to + * be sent. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooSendCallProceeding(struct OOH323CallData *call); + +/** + * This function is invoked to send alerting message in response to received + * setup message. + * + * @param call Pointer to the call for which Alerting message have to be + * sent. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooSendAlerting(struct OOH323CallData *call); + +/** + * This function is invoked to send Facility message. + * + * @param call Pointer to the call for which Facility message have to be + * sent. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooSendFacility(struct OOH323CallData *call); + + +/** + * This function is used to send dtmf data as Q931 keypad information element + * as part of information message. + * @param call Pointer to the call for dtmf data has to be sent. + * @param data Dtmf data to be sent. + * + * @return OO_OK, on success; OO_FAILED, on failure. + */ +EXTERN int ooQ931SendDTMFAsKeyPadIE + (struct OOH323CallData *call, const char* data); + +/** + * This function is invoked to send a Connect message in response to received + * setup message. + * + * @param call Pointer to the call for which connect message has to be + * sent. + * + * @return Completion status - 0 on success, -1 on failure + */ +EXTERN int ooSendConnect(struct OOH323CallData *call); + +/** + * This function is used to send a SETUP message for outgoing call. It first + * creates an H.225 TCP connection with the remote end point and then sends + * SETUP message over this connection. + * @param dest Destination - IP:Port/alias. + * @param callToken Unique token for the new call. + * @param opts Call specific options. If passed a non-null value, these + * options will override global endpoint settings. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts); + +/** + * Helper function used to make a call once it is approved by the Gk. + * In case of no gk, this function is directly called to make a call. + * @param call Handle to the new call. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +int ooH323CallAdmitted( struct OOH323CallData *call); + +/** + * This function is used to handle a call forward request sent to local + * endpoint by remote endpoint. + * @param call Handle to the call which is being forwarded + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooH323HandleCallFwdRequest(struct OOH323CallData *call); + +/** + * This function is used for forwarding/redirecting a call to third party. + * @param callToken callToken for the call which has to be redirected. + * @param dest Address to which call has to be forwarded. Can be + * IP:Port or alias. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooH323ForwardCall(char* callToken, char *dest); + +/** + * This function is used to hangup a currently active call. It sets the call + * state to CLEARING and initiates closing of all logical channels. + * @param callToken Unique token of the call to be hanged. + * @param reason Reason for ending call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooH323HangCall(char * callToken, OOCallClearReason reason); + + +/** + * Function to accept a call by sending connect. This function is used + * as a helper function to ooSendConnect. + * @param call Pointer to the call for which connect has to be sent + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooAcceptCall(struct OOH323CallData *call); + +/* + * An helper function to ooMakeCall. + * @param call Pointer to the new call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooH323MakeCall_helper(struct OOH323CallData *call); + +/** + * This function is used to parse the destination + * @param call Handle to related call. + * @param dest Destination string to be parsed. + * @param parsedIP Pointer to buffer in which parsed ip:port will be returned. + * @param len Length of the buffer passed. + * @param aliasList Aliase List in which new aliases will be added. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +int ooParseDestination + (struct OOH323CallData *call, char *dest, char *parsedIP, unsigned len, + OOAliases** aliasList); + +/** + * This function is used to generate a new call token + * @param callToken Handle to the buffer in which new call token will be + * returned + * @param size size of the buffer + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +int ooGenerateCallToken (char *callToken, size_t size); + + +/** + * This function sends an encoded H.245 message buffer as a tunneled + * H.245 Facility message. + * @param call Pointer to the call for which H.245 message has to + * be tunneled. + * @param msgbuf Pointer to the encoded H.245 message to be tunneled. + * + * @param h245Len Length of the encoded H.245 message buffer. + * @param h245MsgType Type of the H245 message + * @param associatedChan The logical channel number with which the tunneled + * message is associated. In case of no channel, this + * value should be 0. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooSendAsTunneledMessage +(struct OOH323CallData *call, ASN1OCTET* msgbuf, + int h245Len, int h245MsgType, int associatedChan); + + +/** + * This function is used to encode an H.225 message. + * @param call Handle to the call. + * @param pq931Msg Pointer to the message to be encoded. + * @param msgbuf Pointer to the buffer in which encoded message will + * be returned. + * @param size Size of the buffer passed. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +int ooEncodeH225Message(struct OOH323CallData *call, Q931Message *pq931Msg, + char *msgbuf, int size); + +/** + * This is a callback function which is called when there is no CONNECT + * response from the remote endpoint after the SETUP has been sent and timeout + * period has passed. + * @param data The callback data registered at the time of timer + * creation. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +int ooCallEstbTimerExpired(void *data); + + + +/** + * This function is used to add a keypad IE to a Q931 message for sending dtmf. + * @param pmsg Q931 message to which keypad ie has to be + * added. + * @param data DTMF data to be sent. + * + * @return OO_OK on success, OO_FAILED, on failure. + */ +EXTERN int ooQ931SetKeypadIE(Q931Message *pmsg, const char* data); + +/** + * This function is used to add a bearer capability IE to a Q931 message. + * @param pmsg Q931 message to which bearer capability ie has to be + * added. + * @param codingStandard Coding standard to be used. + * @param capability Information transfer capability + * @param transferMode Information transfer mode.(circuit/packet modes). + * @param transferRate Information transfer rate. + * @param userInfoLayer1 User information layer 1 protocol. + * + * @return OO_OK on success, OO_FAILED, on failure. + */ +EXTERN int ooSetBearerCapabilityIE + (Q931Message *pmsg, enum Q931CodingStandard codingStandard, + enum Q931InformationTransferCapability capability, + enum Q931TransferMode transferMode, enum Q931TransferRate transferRate, + enum Q931UserInfoLayer1Protocol userInfoLayer1); + +/** + * This function is used to add a called party number ie to a q931 message. + * @param pmsg Q931 message to which CalledPartyNumber IE has to be + * added. + * @param number Number for called party. + * @param plan Numbering Plan used + * @param type Type of number + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooQ931SetCalledPartyNumberIE + (Q931Message *pmsg, const char *number, unsigned plan, unsigned type); + + +/** + * This function is used to add a CallingPartyNumber ie to a q931 message. + * @param pmsg Q931 message to which CallingPartyNumber IE has to be + * added. + * @param number Number for calling party. + * @param plan Numbering Plan used + * @param type Type of number + * @param presentation Presentation of the address is allowed or restricted. + * @param screening Whether address was provided by endpoint or screened + * by gatekeeper. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooQ931SetCallingPartyNumberIE + (Q931Message *pmsg, const char *number, unsigned plan, unsigned type, + unsigned presentation, unsigned screening); + +/** + * This function is used to set a cause ie for a q931 message. + * @param pmsg Valid Q931 Message + * @param cause Q931 Cause Value + * @param coding coding standard used. 0 for ITU-T standard coding + * @param location location. 0 for user. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooQ931SetCauseIE + (Q931Message *pmsg,enum Q931CauseValues cause, unsigned coding, + unsigned location); + +/** + * This function is used to convert a call clear reason to cause and + * reason code. It is used when local user is endoing the call and + * sending releaseComplete. + * @param clearReason Reason for ending call. + * @param cause Pointer to Q931CauseVaules enum in which cause + * will be returned. + * @param reasonCode Pointer to unsigned int in which reasonCode will + * be returned. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooQ931GetCauseAndReasonCodeFromCallClearReason + (OOCallClearReason clearReason, enum Q931CauseValues *cause, + unsigned *reasonCode); + +/** + * This function is used to convert a cause value and reason code received + * in ReleaseComplete message from remote endpoint into a CallClearReason. + * @param cause cause value received. + * @param reasonCode reasonCode received. + * + * @return Returns a CallClearReason. + */ +EXTERN OOCallClearReason ooGetCallClearReasonFromCauseAndReasonCode + (enum Q931CauseValues cause, unsigned reasonCode); + +/** + * This function is used to retrieve the description text for a + * message type. + * + * @param msgType Message type. + * @return The text description string. + */ +EXTERN const char* ooGetMsgTypeText (int msgType); + +/** + * This function is used to retrieve the text description for a Q931 Cause + * value in Cause IE. + * @param val Q931 Cause value + * @return The text description string + */ +EXTERN const char* ooGetQ931CauseValueText (int val); + +/** + * @} + */ +#ifdef __cplusplus +} +#endif + +#endif /* __Q931HDR_H */ |