freeswitch/libs/sipcc/include/cc_constants.h

564 lines
11 KiB
C

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef _CC_CONSTANTS_H_
#define _CC_CONSTANTS_H_
#include "cc_types.h"
#define PC_HANDLE_SIZE 17 /* 8 random bytes in hex plus null */
/**
* Max call servers
*/
#define MAX_CALL_SERVERS 4
/**
* Define notification priority
*/
#define CC_DEF_NOTIFY_PRI 20
#define CC_HR_NOTIFY_PRI 1
#define CC_ALL_LINES 255
#define SID_LINE_SHIFT 16
#define CC_NO_CALL_ID (0)
#define CC_NO_LINE (0)
#define CC_NO_CALL_INSTANCE (0)
#define CC_MAX_LEN_REQ_SUPP_PARAM_CISCO_SISTAG 64
/**
* Attrib bit in video available direction byte to indicate if the video is over CAST
*/
#define CC_ATTRIB_CAST 0x8
/**
* Define the line id. The value 0 (CC_NO_LINE) means not set, it will be set by pSipcc system.
*/
typedef unsigned short cc_lineid_t;
/**
* Define the call id. The value 0 (CC_NO_CALL_ID) means not set, it will be set by pSipcc system.
*/
typedef unsigned short cc_callid_t;
typedef unsigned short cc_streamid_t;
typedef unsigned short cc_mcapid_t;
typedef unsigned short cc_groupid_t;
typedef unsigned short cc_level_t;
/**
* Define the call instance id
*/
typedef unsigned short cc_call_instance_t;
/**
* Define string char
*/
typedef const char *cc_string_t;
/**
* Define an empty call handle
*/
#define CC_EMPTY_CALL_HANDLE (0)
/**
* This will be returned by pSipcc system, a user/application should use the following two methods to get the selected or
* assinged line id and call id.
* When a user or an application doesn't select a line (user passes 0 to pSipcc),, the pSipcc will assign it with the first available
* line to it based on the maximum call per line that is configured.
*/
typedef unsigned int cc_call_handle_t;
#define CC_SID_TYPE_SHIFT 28
#define CC_SID_LINE_SHIFT 16
#define CC_SESSIONTYPE_CALLCONTROL 1
#define GET_LINE_ID(call_handle) (cc_lineid_t)((call_handle & 0xFFF0000) >> CC_SID_LINE_SHIFT )
#define GET_CALL_ID(call_handle) (cc_callid_t)(call_handle & 0xFFFF)
#define CREATE_CALL_HANDLE(line, callid) (cc_call_handle_t)(((line & 0xFFF) << CC_SID_LINE_SHIFT) + (callid & 0xFFFF))
#define CREATE_CALL_HANDLE_FROM_SESSION_ID(session_id) (session_id & 0xFFFFFFF)
#define CREATE_SESSION_ID_FROM_CALL_HANDLE(call_handle) ((CC_SESSIONTYPE_CALLCONTROL << CC_SID_TYPE_SHIFT) + call_handle)
/**
* Define return codes
*/
typedef enum {
CC_FAILURE = -1,
CC_SUCCESS
} cc_return_t;
/**
* Define valid number digits for SendDigit method
*/
typedef enum {
KEY_1 = '1',
KEY_2 = '2',
KEY_3 = '3',
KEY_4 = '4',
KEY_5 = '5',
KEY_6 = '6',
KEY_7 = '7',
KEY_8 = '8',
KEY_9 = '9',
KEY_0 = '0',
KEY_STAR = '*',
KEY_POUND = '#',
KEY_A = 'A',
KEY_B = 'B',
KEY_C = 'C',
KEY_D = 'D',
KEY_PLUS = '+'
} cc_digit_t;
/**
* Defines cucm mode of the call manager to which device is connected.
*/
typedef enum {
CC_MODE_INVALID = -1,
CC_MODE_CCM,
CC_MODE_NONCCM
} cc_cucm_mode_t;
// Line feature
typedef enum {
CC_LINE_FEATURE_NONE = 0,
CC_LINE_FEATURE_REDIAL = 1,
CC_LINE_FEATURE_SPEEDDIAL = 2,
CC_LINE_FEATURE_DN = 9,
CC_LINE_FEATURE_SERVICE = 20,
CC_LINE_FEATURE_SPEEDDIALBLF = 21,
CC_LINE_FEATURE_MALICIOUSCALLID = 27,
CC_LINE_FEATURE_CALLPICKUP = 127,
CC_LINE_FEATURE_GROUPCALLPICKUP = 128,
CC_LINE_FEATURE_QUALREPORTTOOL = 133,
CC_LINE_FEATURE_OTHERPICKUP = 135,
CC_LINE_FEATURE_ALLCALLS = 140,
CC_LINE_FEATURE_ANSWEROLDEST = 141,
CC_LINE_FEATURE_SERVICES = 192,
CC_LINE_FEATURE_BLF = 255
} cc_line_feature_t;
/**
* Define feature option mask
*/
typedef enum {
CC_FEATUREOPTIONMASK_NONE,
CC_FEATUREOPTIONMASK_BLF_PICKUP
} cc_feature_option_mask_t;
/**
* Defines cucm secure levels
*/
typedef enum {
CC_CUCM_NONSECURE,
CC_CUCM_AUTHENTICATED,
CC_CUCM_ENCRYPTED,
CC_CUCM_NOT_IN_CTL
} cc_cucm_sec_level_t;
/**
* Defines cc events causing registration state change
*/
typedef enum {
CC_CAUSE_NONE,
CC_CAUSE_FAILOVER,
CC_CAUSE_FALLBACK,
CC_CAUSE_REG_ALL_FAILED,
CC_CAUSE_SHUTDOWN,
CC_CAUSE_UNREG_ALL,
CC_CAUSE_LOGOUT_RESET
} cc_service_cause_t;
/**
* Defines cc service state
*/
typedef enum {
CC_STATE_IDLE = 0,
CC_STATE_INS,
CC_STATE_OOS,
CC_STATE_PRO_BASE
} cc_service_state_t;
/**
* Define cucm connection status.
*/
typedef enum {
CC_CCM_STATUS_NONE = 0,
CC_CCM_STATUS_STANDBY,
CC_CCM_STATUS_ACTIVE
} cc_ccm_status_t;
/**
* Define line registration state
*/
typedef enum {
CC_UNREGISTERED,
CC_REGISTERED
}cc_line_reg_state_t;
/**
* Defines pSipcc shutdown reason code
*/
typedef enum {
CC_SHUTDOWN_NORMAL,
CC_SHUTDOWN_UNSPECIFIED,
CC_SHUTDOWN_VERMISMATCH
} cc_shutdown_reason_t;
/**
* Defines kpml value
*/
typedef enum {
CC_KPML_NONE = 0x0,
CC_KPML_SIGNAL_ONLY = 0x1,
CC_KPML_DTMF_ONLY = 0x2,
CC_KPML_BOTH = 0x3
} cc_kpml_config_t;
/**
* Defines whether to upgrade now or later to recently download firmware image
*/
typedef enum {
CC_UPGRADE_NONE = 0,
CC_UPGRADE_NOW,
CC_UPGRADE_LATER
} cc_upgrade_t;
/* Media flow direction */
typedef enum {
CC_SDP_DIRECTION_INACTIVE,
CC_SDP_DIRECTION_SENDONLY,
CC_SDP_DIRECTION_RECVONLY,
CC_SDP_DIRECTION_SENDRECV,
CC_SDP_MAX_QOS_DIRECTIONS
} cc_sdp_direction_t;
/**
* Defines BLF state
*/
typedef enum {
CC_SIP_BLF_UNKNOWN,
CC_SIP_BLF_IDLE,
CC_SIP_BLF_INUSE,
CC_SIP_BLF_EXPIRED,
CC_SIP_BLF_REJECTED,
CC_SIP_BLF_ALERTING
} cc_blf_state_t;
/**
* Defines BLF feature mask
*/
typedef enum {
CC_BLF_FEATURE_MASK_NONE = 0,
CC_BLF_FEATURE_MASK_PICKUP
} cc_blf_feature_mask_t;
/**
* Defines call state
*/
typedef enum {
OFFHOOK,
ONHOOK,
RINGOUT,
RINGIN,
PROCEED,
CONNECTED,
HOLD,
REMHOLD,
RESUME,
BUSY,
REORDER,
CONFERENCE,
DIALING,
REMINUSE,
HOLDREVERT,
WHISPER,
PRESERVATION,
WAITINGFORDIGITS = 21,
CREATEOFFER,
CREATEANSWER,
CREATEOFFERERROR,
CREATEANSWERERROR,
SETLOCALDESC,
SETREMOTEDESC,
SETLOCALDESCERROR,
SETREMOTEDESCERROR,
REMOTESTREAMADD,
MAX_CALL_STATES
} cc_call_state_t;
/**
* Defines call attribute
*/
typedef enum {
CC_ATTR_NOT_DEFINED = -1,
CC_ATTR_NORMAL,
CC_ATTR_XFR_CONSULT,
CC_ATTR_CONF_CONSULT,
CC_ATTR_BARGING,
CC_ATTR_RIUHELD_LOCKED,
CC_ATTR_LOCAL_CONF_CONSULT,
CC_ATTR_LOCAL_XFER_CONSULT,
CC_ATTR_CFWDALL,
CC_ATTR_GRP_CALL_PICKUP,
CC_ATTR_CFWD_ALL,
CC_ATTR_MAX
} cc_call_attr_t;
/**
* Defines the hold reason
*/
typedef enum {
CC_HOLD_REASON_NONE,
CC_HOLD_REASON_XFER,
CC_HOLD_REASON_CONF,
CC_HOLD_REASON_SWAP,
CC_HOLD_REASON_INTERNAL
} cc_hold_reason_t;
/**
* Defines call type
*/
typedef enum {
CC_CALL_TYPE_NONE,
CC_CALL_TYPE_INCOMING,
CC_CALL_TYPE_OUTGOING,
CC_CALL_TYPE_FORWARDED
} cc_call_type_t;
/**
* Defines call security
*/
typedef enum {
CC_SECURITY_NONE,
CC_SECURITY_UNKNOWN,
CC_SECURITY_AUTHENTICATED,
CC_SECURITY_NOT_AUTHENTICATED,
CC_SECURITY_ENCRYPTED
} cc_call_security_t;
/**
* Defines call policy
*/
typedef enum {
/* Call Policy */
CC_POLICY_NONE,
CC_POLICY_UNKNOWN,
CC_POLICY_CHAPERONE
} cc_call_policy_t;
/**
* Defines Log disposition
*/
typedef enum {
CC_LOGD_MISSED,
CC_LOGD_RCVD,
CC_LOGD_SENT,
CC_LOGD_UNKNWN,
CC_LOGD_DELETE
} cc_log_disposition_t;
/**
* Defines call priority
*/
typedef enum{
CC_PRIORITY_NORMAL,
CC_PRIORITY_URGENT
} cc_call_priority_t;
/**
* Defines call selection
*/
typedef enum {
CC_CALL_SELECT_NONE,
CC_CALL_SELECT_LOCKED,
CC_CALL_SELECT_UNLOCKED,
CC_CALL_SELECT_REMOTE_LOCKED
} cc_call_selection_t;
/**
* Defines service control request
*/
typedef enum {
CC_DEVICE_RESET = 1,
CC_DEVICE_RESTART,
CC_DEVICE_ICMP_UNREACHABLE = 5
} cc_srv_ctrl_req_t;
/**
* Defines service control command
*/
typedef enum {
CC_ACTION_RESET = 1,
CC_ACTION_RESTART
} cc_srv_ctrl_cmd_t;
/**
* Defines messaging type
*/
typedef enum {
CC_VOICE_MESSAGE = 1,
CC_TEXT_MESSAGE
} cc_message_type_t;
/**
* Defines handset lamp state
*/
typedef enum {
CC_LAMP_NONE = 0,
CC_LAMP_ON,
CC_LAMP_BLINK,
CC_LAMP_FRESH
} cc_lamp_state_t;
/**
* defines call cause
* Important: when update this enum, please update the cc_cause_name accordingly.
*/
typedef enum {
CC_CAUSE_MIN = -1,
CC_CAUSE_BASE = -1,
CC_CAUSE_OK,
CC_CAUSE_ERROR,
CC_CAUSE_UNASSIGNED_NUM,
CC_CAUSE_NO_RESOURCE,
CC_CAUSE_NO_ROUTE,
CC_CAUSE_NORMAL,
CC_CAUSE_BUSY,
CC_CAUSE_NO_USER_RESP,
CC_CAUSE_NO_USER_ANS,
CC_CAUSE_REJECT,
CC_CAUSE_INVALID_NUMBER,
CC_CAUSE_FACILITY_REJECTED,
CC_CAUSE_CALL_ID_IN_USE,
CC_CAUSE_XFER_LOCAL,
CC_CAUSE_XFER_REMOTE,
CC_CAUSE_XFER_BY_REMOTE,
CC_CAUSE_XFER_CNF,
CC_CAUSE_CONGESTION,
CC_CAUSE_ANONYMOUS,
CC_CAUSE_REDIRECT,
CC_CAUSE_PAYLOAD_MISMATCH,
CC_CAUSE_CONF,
CC_CAUSE_REPLACE,
CC_CAUSE_NO_REPLACE_CALL,
CC_CAUSE_NO_RESUME,
CC_CAUSE_NO_MEDIA,
CC_CAUSE_REQUEST_PENDING,
CC_CAUSE_INVALID_PARTICIPANT,
CC_CAUSE_NO_CNF_BRIDE,
CC_MAXIMUM_PARTICIPANT,
CC_KEY_NOT_ACTIVE,
CC_TEMP_NOT_AVAILABLE,
CC_CAUSE_REMOTE_SERVER_ERROR,
CC_CAUSE_BARGE,
CC_CAUSE_CBARGE,
CC_CAUSE_NOT_FOUND,
CC_CAUSE_SECURITY_FAILURE,
CC_CAUSE_MONITOR,
CC_CAUSE_UI_STATE_BUSY,
CC_SIP_CAUSE_ANSWERED_ELSEWHERE,
CC_CAUSE_RETRIEVED,
CC_CAUSE_FORWARDED,
CC_CAUSE_ABANDONED,
CC_CAUSE_XFER_LOCAL_WITH_DIALSTRING,
CC_CAUSE_BW_OK,
CC_CAUSE_XFER_COMPLETE,
CC_CAUSE_RESP_TIMEOUT,
CC_CAUSE_SERV_ERR_UNAVAIL,
CC_CAUSE_REMOTE_DISCONN_REQ_PLAYTONE,
CC_CAUSE_OUT_OF_MEM,
CC_CAUSE_VALUE_NOT_FOUND,
CC_CAUSE_MAX
} cc_cause_t;
/**
* defines subscription event type
*/
typedef enum {
CC_SUBSCRIPTIONS_DIALOG_EXT = 2,
CC_SUBSCRIPTIONS_KPML_EXT = 4,
CC_SUBSCRIPTIONS_PRESENCE_EXT = 5,
CC_SUBSCRIPTIONS_REMOTECC_EXT = 6,
CC_SUBSCRIPTIONS_REMOTECC_OPTIONSIND_EXT = 7,
CC_SUBSCRIPTIONS_CONFIGAPP_EXT = 8,
CC_SUBSCRIPTIONS_MEDIA_INFO_EXT = 10
} cc_subscriptions_ext_t;
typedef enum {
APPLY_DYNAMICALLY=0,
RESTART_NEEDED,
APPLY_CONFIG_NONE
} cc_apply_config_result_t;
/**
* defines ID of cucm
*/
typedef enum {
PRIMARY_CCM = 0,
SECONDARY_CCM,
TERTIARY_CCM,
MAX_CCM,
UNUSED_PARAM
} CCM_ID;
typedef enum {
CC_SIS_B2B_CONF = 0,
CC_SIS_SWAP,
CC_SIS_CFWD_ANY_LINE
} cc_sis_feature_id_e;
/**
* enum for conference participant status
*/
typedef enum {
CCAPI_CONFPARTICIPANT_UNKNOWN,
CCAPI_CONFPARTICIPANT_DIALING_OUT,
CCAPI_CONFPARTICIPANT_ALERTING,
CCAPI_CONFPARTICIPANT_CONNECTED,
CCAPI_CONFPARTICIPANT_ON_HOLD,
CCAPI_CONFPARTICIPANT_DISCONNECTED
} cc_conf_participant_status_t;
typedef enum {
JSEP_NO_ACTION = -1,
JSEP_OFFER,
JSEP_ANSWER,
JSEP_PRANSWER
} cc_jsep_action_t;
typedef cc_string_t cc_peerconnection_t;
typedef unsigned int cc_media_stream_id_t;
typedef unsigned int cc_media_track_id_t;
typedef enum {
NO_STREAM = -1,
AUDIO,
VIDEO,
TYPE_MAX
} cc_media_type_t;
typedef struct {
char *name;
char *value;
cc_boolean mandatory;
} cc_media_constraint_t;
typedef struct {
cc_media_constraint_t** constraints;
cc_uint16_t constraint_count;
} cc_media_constraints_t;
#endif /* _CC_CONSTANTS_H_ */