Telematics SDK - Interface Specification

Data Structures

class  telux::tel::ICall
 ICall represents a call in progress. An ICall cannot be directly created by the client, rather it is returned as a result of instantiating a call or from the PhoneListener when receiving an incoming call. More...
 
class  telux::tel::ICallListener
 A listener class for monitoring changes in call, including call state change and ECall state change. Override the methods for the state that you wish to receive updates for. More...
 
class  telux::tel::ICallManager
 Call Manager does aggregate state management for in-progress calls It provides APIs for makeCall, makeECall, conferencing or swapping active and on-hold calls and to get the list of in-progress calls. More...
 
class  telux::tel::IMakeCallCallback
 Interface for Make Call callback object. Client needs to implement this interface to get single shot responses for commands like make call. More...
 

Enumerations

enum  telux::tel::CallDirection { telux::tel::CallDirection::INCOMING, telux::tel::CallDirection::OUTGOING, telux::tel::CallDirection::NONE }
 
enum  telux::tel::CallState {
  telux::tel::CallState::CALL_IDLE = -1, telux::tel::CallState::CALL_ACTIVE, telux::tel::CallState::CALL_ON_HOLD, telux::tel::CallState::CALL_DIALING,
  telux::tel::CallState::CALL_INCOMING, telux::tel::CallState::CALL_WAITING, telux::tel::CallState::CALL_ALERTING, telux::tel::CallState::CALL_ENDED
}
 
enum  telux::tel::CallEndCause {
  telux::tel::CallEndCause::UNOBTAINABLE_NUMBER = 1, telux::tel::CallEndCause::NO_ROUTE_TO_DESTINATION = 3, telux::tel::CallEndCause::CHANNEL_UNACCEPTABLE = 6, telux::tel::CallEndCause::OPERATOR_DETERMINED_BARRING = 8,
  telux::tel::CallEndCause::NORMAL = 16, telux::tel::CallEndCause::BUSY = 17, telux::tel::CallEndCause::NO_USER_RESPONDING = 18, telux::tel::CallEndCause::NO_ANSWER_FROM_USER = 19,
  telux::tel::CallEndCause::CALL_REJECTED = 21, telux::tel::CallEndCause::NUMBER_CHANGED = 22, telux::tel::CallEndCause::PREEMPTION = 25, telux::tel::CallEndCause::DESTINATION_OUT_OF_ORDER = 27,
  telux::tel::CallEndCause::INVALID_NUMBER_FORMAT = 28, telux::tel::CallEndCause::FACILITY_REJECTED = 29, telux::tel::CallEndCause::RESP_TO_STATUS_ENQUIRY = 30, telux::tel::CallEndCause::NORMAL_UNSPECIFIED = 31,
  telux::tel::CallEndCause::CONGESTION = 34, telux::tel::CallEndCause::NETWORK_OUT_OF_ORDER = 38, telux::tel::CallEndCause::TEMPORARY_FAILURE = 41, telux::tel::CallEndCause::SWITCHING_EQUIPMENT_CONGESTION = 42,
  telux::tel::CallEndCause::ACCESS_INFORMATION_DISCARDED = 43, telux::tel::CallEndCause::REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44, telux::tel::CallEndCause::RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47, telux::tel::CallEndCause::QOS_UNAVAILABLE = 49,
  telux::tel::CallEndCause::REQUESTED_FACILITY_NOT_SUBSCRIBED = 50, telux::tel::CallEndCause::INCOMING_CALLS_BARRED_WITHIN_CUG = 55, telux::tel::CallEndCause::BEARER_CAPABILITY_NOT_AUTHORIZED = 57, telux::tel::CallEndCause::BEARER_CAPABILITY_UNAVAILABLE = 58,
  telux::tel::CallEndCause::SERVICE_OPTION_NOT_AVAILABLE = 63, telux::tel::CallEndCause::BEARER_SERVICE_NOT_IMPLEMENTED = 65, telux::tel::CallEndCause::ACM_LIMIT_EXCEEDED = 68, telux::tel::CallEndCause::REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
  telux::tel::CallEndCause::ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70, telux::tel::CallEndCause::SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79, telux::tel::CallEndCause::INVALID_TRANSACTION_IDENTIFIER = 81, telux::tel::CallEndCause::USER_NOT_MEMBER_OF_CUG = 87,
  telux::tel::CallEndCause::INCOMPATIBLE_DESTINATION = 88, telux::tel::CallEndCause::INVALID_TRANSIT_NW_SELECTION = 91, telux::tel::CallEndCause::SEMANTICALLY_INCORRECT_MESSAGE = 95, telux::tel::CallEndCause::INVALID_MANDATORY_INFORMATION = 96,
  telux::tel::CallEndCause::MESSAGE_TYPE_NON_IMPLEMENTED = 97, telux::tel::CallEndCause::MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98, telux::tel::CallEndCause::INFORMATION_ELEMENT_NON_EXISTENT = 99, telux::tel::CallEndCause::CONDITIONAL_IE_ERROR = 100,
  telux::tel::CallEndCause::MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101, telux::tel::CallEndCause::RECOVERY_ON_TIMER_EXPIRED = 102, telux::tel::CallEndCause::PROTOCOL_ERROR_UNSPECIFIED = 111, telux::tel::CallEndCause::INTERWORKING_UNSPECIFIED = 127,
  telux::tel::CallEndCause::CALL_BARRED = 240, telux::tel::CallEndCause::FDN_BLOCKED = 241, telux::tel::CallEndCause::IMSI_UNKNOWN_IN_VLR = 242, telux::tel::CallEndCause::IMEI_NOT_ACCEPTED = 243,
  telux::tel::CallEndCause::DIAL_MODIFIED_TO_USSD = 244, telux::tel::CallEndCause::DIAL_MODIFIED_TO_SS = 245, telux::tel::CallEndCause::DIAL_MODIFIED_TO_DIAL = 246, telux::tel::CallEndCause::CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
  telux::tel::CallEndCause::CDMA_DROP = 1001, telux::tel::CallEndCause::CDMA_INTERCEPT = 1002, telux::tel::CallEndCause::CDMA_REORDER = 1003, telux::tel::CallEndCause::CDMA_SO_REJECT = 1004,
  telux::tel::CallEndCause::CDMA_RETRY_ORDER = 1005, telux::tel::CallEndCause::CDMA_ACCESS_FAILURE = 1006, telux::tel::CallEndCause::CDMA_PREEMPTED = 1007, telux::tel::CallEndCause::CDMA_NOT_EMERGENCY = 1008,
  telux::tel::CallEndCause::CDMA_ACCESS_BLOCKED = 1009, telux::tel::CallEndCause::ERROR_UNSPECIFIED = 0xffff
}
 

Detailed Description

This section contains APIs related to Call.


Data Structure Documentation

class telux::tel::ICall

ICall represents a call in progress. An ICall cannot be directly created by the client, rather it is returned as a result of instantiating a call or from the PhoneListener when receiving an incoming call.

Public Member Functions

virtual telux::common::Status answer (std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status hold (std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status resume (std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status reject (std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status reject (const std::string &rejectSMS, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status hangup (std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status playDtmfTone (char tone, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status startDtmfTone (char tone, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status stopDtmfTone (std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual CallState getCallState ()=0
 
virtual int getCallIndex ()=0
 
virtual CallDirection getCallDirection ()=0
 
virtual std::string getRemotePartyNumber ()=0
 
virtual CallEndCause getCallEndCause ()=0
 
virtual int getPhoneId ()=0
 
virtual ~ICall ()
 

Constructor & Destructor Documentation

virtual telux::tel::ICall::~ICall ( )
virtual

Member Function Documentation

virtual telux::common::Status telux::tel::ICall::answer ( std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr)
pure virtual

Allows the client to answer the call. This is only applicable for CallDirection::INCOMING.

Parameters
[in]callback- optional callback pointer to get the response of answer request below are possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of hold function i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::hold ( std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr)
pure virtual

Puts the ongoing call on hold.

Parameters
[in]callback- optional callback pointer to get the response of hold request below are possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of hold function i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::resume ( std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr)
pure virtual

Resumes this call from on-hold state to active state

Parameters
[in]callback- optional callback pointer to get the response of resume request below are possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of resume function i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::reject ( std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr)
pure virtual

Reject the incoming call. Only applicable for CallDirection::INCOMING.

Parameters
[in]callback- optional callback pointer to get the response of reject request below are possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of reject function i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::reject ( const std::string &  rejectSMS,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Reject the call and send an SMS to caller. Only applicable for CallDirection::INCOMING.

Parameters
[in]rejectSMSSMS string used to send in response to a call rejection.
[in]callback- optional callback pointer to get the response of rejectwithSMS request below are possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of success for call reject() or suitable error code.
virtual telux::common::Status telux::tel::ICall::hangup ( std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr)
pure virtual

Hang up the active call.

Parameters
[in]callback- optional callback pointer to get the response of hangup request below are possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of hangup i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::playDtmfTone ( char  tone,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Play a DTMF tone and stop it. The interval for which the tone is played is dependent on the system implementation. If continuous DTMF tone is playing, it will be stopped.

Parameters
[in]tone- a single character with one of 12 values: 0-9, *, #.
[in]callback- Optional callback pointer to get the result of playDtmfTones function
Returns
Status of playDtmfTones i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::startDtmfTone ( char  tone,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Starts a continuous DTMF tone. To terminate the continous DTMF tone,stopDtmfTone API needs to be invoked explicitly.

Parameters
[in]tone- a single character with one of 12 values: 0-9, *, #.
[in]callback- Optional callback pointer to get the result of startDtmfTone function.
Returns
Status of startDtmfTone i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICall::stopDtmfTone ( std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr)
pure virtual

Stop the currently playing continuous DTMF tone.

Parameters
[in]callback- Optional callback pointer to get the result of stopDtmfTone function.
Returns
Status of stopDtmfTone i.e. success or suitable error code.
virtual CallState telux::tel::ICall::getCallState ( )
pure virtual

Get the current state of the call, such as ringing, in progress etc.

Returns
CallState - enumeration representing call State
virtual int telux::tel::ICall::getCallIndex ( )
pure virtual

Get the unique index of the call assigned by Telephony subsystem

Returns
Call Index
virtual CallDirection telux::tel::ICall::getCallDirection ( )
pure virtual

Get the direction of the call

Returns
CallDirection - enumeration representing call direction i.e. INCOMING/ OUTGOING
virtual std::string telux::tel::ICall::getRemotePartyNumber ( )
pure virtual

Get the dailing number

Returns
Phone Number to which the call was dialed out Empty string in case of INCOMING call direction
virtual CallEndCause telux::tel::ICall::getCallEndCause ( )
pure virtual

Get the cause of the termination of the call.

Returns
Enum representing call end cause.
virtual int telux::tel::ICall::getPhoneId ( )
pure virtual

Get id of the phone object which represents the network/SIM on which the call is in progress.

Returns
Phone Id.
class telux::tel::ICallListener

A listener class for monitoring changes in call, including call state change and ECall state change. Override the methods for the state that you wish to receive updates for.

The methods in listener can be invoked from multiple different threads. The implementation should be thread safe.

Public Member Functions

virtual void onIncomingCall (std::shared_ptr< ICall > call)
 
virtual void onCallInfoChange (std::shared_ptr< ICall > call)
 
virtual void onECallMsdTransmissionStatus (int phoneId, telux::common::ErrorCode errorCode)
 
virtual ~ICallListener ()
 

Constructor & Destructor Documentation

virtual telux::tel::ICallListener::~ICallListener ( )
virtual

Member Function Documentation

virtual void telux::tel::ICallListener::onIncomingCall ( std::shared_ptr< ICall call)
virtual

This function is called when device receives an incoming call.

Parameters
[in]call- Pointer to ICall instance
virtual void telux::tel::ICallListener::onCallInfoChange ( std::shared_ptr< ICall call)
virtual

This function is called when there is a change in call attributes

Parameters
[in]call- Pointer to ICall instance
virtual void telux::tel::ICallListener::onECallMsdTransmissionStatus ( int  phoneId,
telux::common::ErrorCode  errorCode 
)
virtual

This function is called when device completes MSD Transmission.

Parameters
[in]phoneId- Unique Id of phone on which MSD Transmission Status is being reported
[in]status- Indicates MSD Transmission status i.e. success or failure
class telux::tel::ICallManager

Call Manager does aggregate state management for in-progress calls It provides APIs for makeCall, makeECall, conferencing or swapping active and on-hold calls and to get the list of in-progress calls.

Public Member Functions

virtual telux::common::Status makeCall (int phoneId, const std::string &dialNumber, std::shared_ptr< IMakeCallCallback > callback=nullptr)=0
 
virtual telux::common::Status makeECall (int phoneId, const ECallMsdData &eCallMsdData, int emergencyCategory, int eCallVariant, std::shared_ptr< IMakeCallCallback > callback=nullptr)=0
 
virtual telux::common::Status updateECallMsd (int phoneId, const ECallMsdData &eCallMsd, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual std::vector
< std::shared_ptr< ICall > > 
getInProgressCalls ()=0
 
virtual telux::common::Status conference (std::shared_ptr< ICall > call1, std::shared_ptr< ICall > call2, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status swap (std::shared_ptr< ICall > callToHold, std::shared_ptr< ICall > callToActivate, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status registerListener (std::shared_ptr< telux::tel::ICallListener > listener)=0
 
virtual telux::common::Status removeListener (std::shared_ptr< telux::tel::ICallListener > listener)=0
 
virtual ~ICallManager ()
 

Constructor & Destructor Documentation

virtual telux::tel::ICallManager::~ICallManager ( )
virtual

Member Function Documentation

virtual telux::common::Status telux::tel::ICallManager::makeCall ( int  phoneId,
const std::string &  dialNumber,
std::shared_ptr< IMakeCallCallback callback = nullptr 
)
pure virtual

Initiate a voice call.

Parameters
[in]phoneId- Represents phone corresponding to which on make call operation is performed
[in]dialNumber- String representing the dialing number
[in]callback- Optional callback pointer to get the response of makeCall request. Possible error codes for callback response
Returns
Status of makeCall i.e. success or suitable status code.
virtual telux::common::Status telux::tel::ICallManager::makeECall ( int  phoneId,
const ECallMsdData eCallMsdData,
int  emergencyCategory,
int  eCallVariant,
std::shared_ptr< IMakeCallCallback callback = nullptr 
)
pure virtual

Initiate an ecall.

Parameters
[in]phoneId- Represents phone corresponding to which on make ecall operation is performed
[in]eCallMsdData- The structure containing required fields to create eCall Minimum Set of Data (MSD)
[in]emergencyCategory- Denotes the eCall category
  • 0x20 or 32 (VOICE_EMER_CAT_MANUAL)
  • 0x40 or 64 (VOICE_EMER_CAT_AUTO_ECALL)
[in]eCallVariant- Denotes the call variant enum which can take following values:
  • 0x01 – Test ECALL (Originate test eCall to the mobile number configured in NV params), This is the default value.
  • 0x02 – Emergency ECALL (Originate EMERGENCY eCall i.e. call to 112)
[in]callback- Optional callback pointer to get the response of makeECall request. Possible error codes for callback response
  • SUCCESS
  • RADIO_NOT_AVAILABLE
  • NO_MEMORY
  • MODEM_ERR
  • INTERNAL_ERR
  • INVALID_STATE
  • INVALID_CALL_ID
  • INVALID_ARGUMENTS
  • OPERATION_NOT_ALLOWED
  • GENERIC_FAILURE
Returns
Status of makeECall i.e. success or suitable status code.
virtual telux::common::Status telux::tel::ICallManager::updateECallMsd ( int  phoneId,
const ECallMsdData eCallMsd,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Update the eCall MSD in modem to be sent to Public Safety Answering Point (PSAP) when requested.

Parameters
[in]phoneId- Represents phone corresponding to which updateECallMsd operation is performed
[in]eCallMsd- The data structure represents the Minimum Set of Data (MSD)
Returns
Status of updateECallMsd i.e. success or suitable error code.
virtual std::vector<std::shared_ptr<ICall> > telux::tel::ICallManager::getInProgressCalls ( )
pure virtual

Get a vector of all currently in-progress calls in the system

Returns
List of active calls.
virtual telux::common::Status telux::tel::ICallManager::conference ( std::shared_ptr< ICall call1,
std::shared_ptr< ICall call2,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Join two calls in a conference

Parameters
[in]call1- Call object to conference.
[in]call2- Call object to conference.
[in]callback- Optional callback pointer to get the result of conference function
Returns
Status of conference i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICallManager::swap ( std::shared_ptr< ICall callToHold,
std::shared_ptr< ICall callToActivate,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Swap two calls - make one active and put the other on hold.

Parameters
[in]callToHold- Active call object to swap to hold state.
[in]callToActivate- Hold call object to swap to active state.
[in]callback- Optional callback pointer to get the result of swap function
Returns
Status of swap i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICallManager::registerListener ( std::shared_ptr< telux::tel::ICallListener listener)
pure virtual

Add a listener for Call events. This listener will only get called for state changes on the Call objects.

Parameters
[in]listener- Pointer to ICallListener object which receives event corresponding to phone
Returns
Status of registerListener i.e. success or suitable error code.
virtual telux::common::Status telux::tel::ICallManager::removeListener ( std::shared_ptr< telux::tel::ICallListener listener)
pure virtual

Remove a previously added listener.

Parameters
[in]listener- Pointer to ICallListener object which receives event corresponding to call
Returns
Status of removeListener i.e. success or suitable error code.
class telux::tel::IMakeCallCallback

Interface for Make Call callback object. Client needs to implement this interface to get single shot responses for commands like make call.

The methods in callback can be invoked from multiple different threads. The implementation should be thread safe.

Public Member Functions

virtual void makeCallResponse (telux::common::ErrorCode error, std::shared_ptr< ICall > call=nullptr)
 

Member Function Documentation

virtual void telux::tel::IMakeCallCallback::makeCallResponse ( telux::common::ErrorCode  error,
std::shared_ptr< ICall call = nullptr 
)
virtual

This function is called with the response to makeCall API.

Parameters
[out]error- ErrorCode
[out]call- Pointer to Call object or nullptr in case of failure

Enumeration Type Documentation

Defines type of call like incoming, outgoing and none.

Enumerator
INCOMING 
OUTGOING 
NONE 
enum telux::tel::CallState
strong

Defines the states a call can be in

Enumerator
CALL_IDLE 

idle call, default state of a newly created call object

CALL_ACTIVE 

active call

CALL_ON_HOLD 

on hold call

CALL_DIALING 

out going call, in dialing state and not yet connected, MO Call only

CALL_INCOMING 

incoming call, not yet answered

CALL_WAITING 

waiting call

CALL_ALERTING 

alerting call, MO Call only

CALL_ENDED 

call ended / disconnected

Reason for the recently terminated call (either normally ended or failed)

Enumerator
UNOBTAINABLE_NUMBER 
NO_ROUTE_TO_DESTINATION 
CHANNEL_UNACCEPTABLE 
OPERATOR_DETERMINED_BARRING 
NORMAL 
BUSY 
NO_USER_RESPONDING 
NO_ANSWER_FROM_USER 
CALL_REJECTED 
NUMBER_CHANGED 
PREEMPTION 
DESTINATION_OUT_OF_ORDER 
INVALID_NUMBER_FORMAT 
FACILITY_REJECTED 
RESP_TO_STATUS_ENQUIRY 
NORMAL_UNSPECIFIED 
CONGESTION 
NETWORK_OUT_OF_ORDER 
TEMPORARY_FAILURE 
SWITCHING_EQUIPMENT_CONGESTION 
ACCESS_INFORMATION_DISCARDED 
REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE 
RESOURCES_UNAVAILABLE_OR_UNSPECIFIED 
QOS_UNAVAILABLE 
REQUESTED_FACILITY_NOT_SUBSCRIBED 
INCOMING_CALLS_BARRED_WITHIN_CUG 
BEARER_CAPABILITY_NOT_AUTHORIZED 
BEARER_CAPABILITY_UNAVAILABLE 
SERVICE_OPTION_NOT_AVAILABLE 
BEARER_SERVICE_NOT_IMPLEMENTED 
ACM_LIMIT_EXCEEDED 
REQUESTED_FACILITY_NOT_IMPLEMENTED 
ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE 
SERVICE_OR_OPTION_NOT_IMPLEMENTED 
INVALID_TRANSACTION_IDENTIFIER 
USER_NOT_MEMBER_OF_CUG 
INCOMPATIBLE_DESTINATION 
INVALID_TRANSIT_NW_SELECTION 
SEMANTICALLY_INCORRECT_MESSAGE 
INVALID_MANDATORY_INFORMATION 
MESSAGE_TYPE_NON_IMPLEMENTED 
MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE 
INFORMATION_ELEMENT_NON_EXISTENT 
CONDITIONAL_IE_ERROR 
MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE 
RECOVERY_ON_TIMER_EXPIRED 
PROTOCOL_ERROR_UNSPECIFIED 
INTERWORKING_UNSPECIFIED 
CALL_BARRED 
FDN_BLOCKED 
IMSI_UNKNOWN_IN_VLR 
IMEI_NOT_ACCEPTED 
DIAL_MODIFIED_TO_USSD 
DIAL_MODIFIED_TO_SS 
DIAL_MODIFIED_TO_DIAL 
CDMA_LOCKED_UNTIL_POWER_CYCLE 
CDMA_DROP 
CDMA_INTERCEPT 
CDMA_REORDER 
CDMA_SO_REJECT 
CDMA_RETRY_ORDER 
CDMA_ACCESS_FAILURE 
CDMA_PREEMPTED 
CDMA_NOT_EMERGENCY 
CDMA_ACCESS_BLOCKED 
ERROR_UNSPECIFIED