1579 lines
47 KiB
C
Executable File
1579 lines
47 KiB
C
Executable File
/* 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 _CCAPI_H_
|
|
#define _CCAPI_H_
|
|
|
|
//#include "prtypes.h"
|
|
#include "cpr_types.h"
|
|
#include "cpr_memory.h"
|
|
#include "phone_types.h"
|
|
#include "string_lib.h"
|
|
#include "vcm.h"
|
|
#include "sdp.h"
|
|
#include "cc_constants.h"
|
|
|
|
typedef unsigned int cc_security_e;
|
|
typedef unsigned int cc_select_state_e;
|
|
typedef unsigned int cc_call_type_e;
|
|
typedef unsigned int cc_policy_e;
|
|
typedef int cc_causes_t;
|
|
#define CC_CALL_OUTGOMING CC_CALL_TYPE_OUTGOING
|
|
#define CC_CALL_FORWARDED CC_CALL_TYPE_FORWARDED
|
|
#define CC_CALL_NONE CC_CALL_TYPE_NONE
|
|
#define CC_CALL_INCOMING CC_CALL_TYPE_INCOMING
|
|
#define SDP_SIZE 4096 /* must increase this */
|
|
#define CANDIDATE_SIZE 150
|
|
#define MID_SIZE 150
|
|
|
|
#include "sessionConstants.h"
|
|
|
|
typedef int cc_features_t;
|
|
typedef unsigned int softkey_events;
|
|
typedef unsigned int cc_call_priority_e;
|
|
extern cc_reg_state_t ccapp_get_state();
|
|
|
|
/* Session FEATURES */
|
|
/* please update cc_feature_names whenever this enum list is changed */
|
|
|
|
typedef enum {
|
|
CC_FEATURE_MIN = -1L,
|
|
CC_FEATURE_NONE,
|
|
CC_FEATURE_HOLD = 1L,
|
|
CC_FEATURE_RESUME,
|
|
CC_FEATURE_OFFHOOK,
|
|
CC_FEATURE_NEW_CALL,
|
|
CC_FEATURE_REDIAL,
|
|
CC_FEATURE_ONHOOK,
|
|
CC_FEATURE_KEYPRESS,
|
|
CC_FEATURE_DIAL,
|
|
CC_FEATURE_XFER,
|
|
CC_FEATURE_CFWD_ALL,
|
|
CC_FEATURE_END_CALL,
|
|
CC_FEATURE_ANSWER,
|
|
CC_FEATURE_INFO,
|
|
CC_FEATURE_CONF,
|
|
CC_FEATURE_JOIN,
|
|
CC_FEATURE_DIRTRXFR,
|
|
CC_FEATURE_SELECT,
|
|
CC_FEATURE_SPEEDDIAL,
|
|
CC_FEATURE_SWAP,
|
|
CC_FEATURE_SPEEDDIAL_BLF,
|
|
CC_FEATURE_BLIND_XFER_WITH_DIALSTRING,
|
|
CC_FEATURE_BKSPACE,
|
|
CC_FEATURE_CANCEL,
|
|
CC_FEATURE_DIALSTR,
|
|
CC_FEATURE_UPD_SESSION_MEDIA_CAP,
|
|
/* Not used in the session API */
|
|
CC_FEATURE_MEDIA,
|
|
CC_FEATURE_UPDATE,
|
|
CC_FEATURE_CALLINFO,
|
|
CC_FEATURE_BLIND_XFER,
|
|
CC_FEATURE_NOTIFY,
|
|
CC_FEATURE_SUBSCRIBE,
|
|
CC_FEATURE_B2BCONF,
|
|
CC_FEATURE_B2B_JOIN,
|
|
CC_FEATURE_HOLD_REVERSION,
|
|
CC_FEATURE_BLF_ALERT_TONE,
|
|
CC_FEATURE_REQ_PEND_TIMER_EXP,
|
|
CC_FEATURE_NUMBER,
|
|
CC_FEATURE_URL,
|
|
CC_FEATURE_REDIRECT,
|
|
CC_FEATURE_RINGBACK_DELAY_TIMER_EXP,
|
|
CC_FEATURE_CALL_PRESERVATION,
|
|
CC_FEATURE_UPD_MEDIA_CAP,
|
|
CC_FEATURE_CAC_RESP_PASS,
|
|
CC_FEATURE_CAC_RESP_FAIL,
|
|
CC_FEATURE_FAST_PIC_UPD,
|
|
CC_FEATURE_UNDEFINED,
|
|
CC_FEATURE_CREATEOFFER,
|
|
CC_FEATURE_CREATEANSWER,
|
|
CC_FEATURE_SETLOCALDESC,
|
|
CC_FEATURE_SETREMOTEDESC,
|
|
CC_FEATURE_LOCALDESC,
|
|
CC_FEATURE_REMOTEDESC,
|
|
CC_FEATURE_SETPEERCONNECTION,
|
|
CC_FEATURE_ADDSTREAM,
|
|
CC_FEATURE_REMOVESTREAM,
|
|
CC_FEATURE_ADDICECANDIDATE,
|
|
CC_FEATURE_MAX
|
|
} group_cc_feature_t;
|
|
|
|
#define skNewCall CC_FEATURE_NEW_CALL
|
|
#define skConfrn CC_FEATURE_CONF
|
|
|
|
/* please update the following cc_feature_names whenever this feature list is changed */
|
|
|
|
#ifdef __CC_FEATURE_STRINGS__
|
|
static const char *cc_feature_names[] = {
|
|
"NONE",
|
|
"HOLD",
|
|
"RESUME",
|
|
"OFFHOOK",
|
|
"NEW_CALL",
|
|
"REDIAL",
|
|
"ONHOOK",
|
|
"KEYPRESS",
|
|
"DIAL",
|
|
"XFER",
|
|
"CFWD_ALL", //10
|
|
"END_CALL",
|
|
"ANSWER",
|
|
"INFO",
|
|
"CONF",
|
|
"JOIN",
|
|
"DIR_XFER",
|
|
"SELECT",
|
|
"SPEEDDIAL",
|
|
"SWAP",
|
|
"SDBLF", //45
|
|
"BLIND_XFER_WITH_DIALSTRING",
|
|
"BSPACE",
|
|
"CANCEL",
|
|
"DIALSTR",
|
|
"UPD_SESSION_MEDIA_CAP",
|
|
"NEW_MEDIA",
|
|
"UPDATE",
|
|
"CALLINFO",
|
|
"BLIND_XFER",
|
|
"NOTIFY",
|
|
"SUBSCRIBE",
|
|
"B2BCONF",
|
|
"B2BJOIN",
|
|
"HOLD_REVERSION", //jni_max + 10
|
|
"BLF_ALERT_TONE",
|
|
"REQPENDTMREXP",
|
|
"NUMBER",
|
|
"URL",
|
|
"REDIRECT", //jni_max + 20
|
|
"RINGBACKDELAYTMREXP",
|
|
"CALL_PRESERVATION",
|
|
"UPD_MEDIA_CAP",
|
|
"CAC PASSED",
|
|
"CAC FAILED",
|
|
"FAST_PIC_UPD",
|
|
"UNDEFINED",
|
|
"CREATEOFFER",
|
|
"CREATEANSWER",
|
|
"SETLOCALDESC",
|
|
"SETREMOTEDESC",
|
|
"LOCALDESC",
|
|
"REMOTEDESC",
|
|
"SETPEERCONNECTION",
|
|
"ADDSTREAM",
|
|
"REMOVESTREAM",
|
|
"ADDICECANDIDATE",
|
|
"MAX"
|
|
};
|
|
|
|
/* This checks at compile-time that the cc_feature_names list
|
|
* is the same size as the cc_group_feature_t enum
|
|
*/
|
|
//PR_STATIC_ASSERT(PR_ARRAY_SIZE(cc_feature_names) == CC_FEATURE_MAX + 1);
|
|
|
|
#endif
|
|
|
|
/*
|
|
* Constants
|
|
*/
|
|
#define CC_MAX_DIALSTRING_LEN (512)
|
|
#define CC_MAX_MEDIA_TYPES (15)
|
|
#define CC_MAX_MEDIA_CAP (4)
|
|
#define CC_NO_CALL_ID (0)
|
|
#define CC_NO_LINE (0)
|
|
#define CC_NO_DATA (NULL)
|
|
#define CC_NO_MEDIA_REF_ID (0)
|
|
#define CC_MAX_REDIRECTS (1)
|
|
#define CC_MAX_BODY_PARTS 3
|
|
#define CC_NO_GROUP_ID (0)
|
|
#define CC_NO_CALL_INST_ID (0)
|
|
#define CC_SHORT_DIALSTRING_LEN (64)
|
|
#define CC_CISCO_PLAR_STRING "x-cisco-serviceuri-offhook"
|
|
#define CISCO_BLFPICKUP_STRING "x-cisco-serviceuri-blfpickup"
|
|
#define JOIN_ACROSS_LINES_DISABLED 0
|
|
#define CC_MAX_TRACKS 8 // <EM> query this figure
|
|
#define CC_MAX_STREAMS 2 // TODO: expand signaling to handle more than one of each a/v.
|
|
|
|
|
|
/*
|
|
*
|
|
* Support type definintions
|
|
*
|
|
*/
|
|
typedef enum cc_rcs_t_ {
|
|
CC_RC_MIN = -1,
|
|
CC_RC_SUCCESS,
|
|
CC_RC_ERROR,
|
|
CC_RC_MAX
|
|
} cc_rcs_t;
|
|
|
|
typedef enum cc_msgs_t_ {
|
|
CC_MSG_MIN = -1,
|
|
CC_MSG_SETUP,
|
|
CC_MSG_SETUP_ACK,
|
|
CC_MSG_PROCEEDING,
|
|
CC_MSG_ALERTING,
|
|
CC_MSG_CONNECTED,
|
|
CC_MSG_CONNECTED_ACK,
|
|
CC_MSG_RELEASE,
|
|
CC_MSG_RELEASE_COMPLETE,
|
|
CC_MSG_FEATURE,
|
|
CC_MSG_FEATURE_ACK,
|
|
CC_MSG_OFFHOOK,
|
|
CC_MSG_ONHOOK,
|
|
CC_MSG_LINE,
|
|
CC_MSG_DIGIT_BEGIN,
|
|
CC_MSG_DIGIT_END,
|
|
CC_MSG_DIALSTRING,
|
|
CC_MSG_MWI,
|
|
CC_MSG_AUDIT,
|
|
CC_MSG_CREATEOFFER,
|
|
CC_MSG_CREATEANSWER,
|
|
CC_MSG_SETLOCALDESC,
|
|
CC_MSG_SETREMOTEDESC,
|
|
CC_MSG_REMOTEDESC,
|
|
CC_MSG_LOCALDESC,
|
|
CC_MSG_SETPEERCONNECTION,
|
|
CC_MSG_ADDSTREAM,
|
|
CC_MSG_REMOVESTREAM,
|
|
CC_MSG_ADDCANDIDATE,
|
|
CC_MSG_AUDIT_ACK,
|
|
CC_MSG_OPTIONS,
|
|
CC_MSG_OPTIONS_ACK,
|
|
CC_MSG_SUBSCRIBE,
|
|
CC_MSG_NOTIFY,
|
|
CC_MSG_FAILOVER_FALLBACK,
|
|
CC_MSG_INFO,
|
|
/* update the following strings table if this is changed */
|
|
CC_MSG_MAX
|
|
} cc_msgs_t;
|
|
|
|
#ifdef __CC_MESSAGES_STRINGS__
|
|
static const char *cc_msg_names[] = {
|
|
"SETUP",
|
|
"SETUP_ACK",
|
|
"PROCEEDING",
|
|
"ALERTING",
|
|
"CONNECTED",
|
|
"CONNECTED_ACK",
|
|
"RELEASE",
|
|
"RELEASE_COMPLETE",
|
|
"FEAT:",
|
|
"FEATURE_ACK",
|
|
"OFFHOOK",
|
|
"ONHOOK",
|
|
"LINE",
|
|
"DIGIT_BEGIN",
|
|
"DIGIT_END",
|
|
"DIALSTRING",
|
|
"MWI",
|
|
"AUDIT",
|
|
"CREATEOFFER",
|
|
"CREATEANSWER",
|
|
"SETLOCALDESC",
|
|
"SETREMOTEDESC",
|
|
"REMOTEDESC",
|
|
"LOCALDESC",
|
|
"SETPEERCONNECTION",
|
|
"ADDSTREAM",
|
|
"REMOVESTREAM",
|
|
"ADDCANDIDATE",
|
|
"AUDIT_ACK",
|
|
"OPTIONS",
|
|
"OPTIONS_ACK",
|
|
"SUBSCRIBE",
|
|
"NOTIFY",
|
|
"FAILOVER_FALLBACK",
|
|
"INFO",
|
|
"INVALID",
|
|
};
|
|
|
|
/* This checks at compile-time that the cc_msg_names list
|
|
* is the same size as the cc_msgs_t enum
|
|
*/
|
|
//PR_STATIC_ASSERT(PR_ARRAY_SIZE(cc_msg_names) == CC_MSG_MAX + 1);
|
|
|
|
#endif //__CC_MESSAGES_STRINGS__
|
|
|
|
typedef enum cc_srcs_t_ {
|
|
CC_SRC_MIN = -1,
|
|
CC_SRC_GSM,
|
|
CC_SRC_UI,
|
|
CC_SRC_SIP,
|
|
CC_SRC_MISC_APP,
|
|
CC_SRC_RCC,
|
|
CC_SRC_CCAPP,
|
|
CC_SRC_MAX
|
|
} cc_srcs_t;
|
|
|
|
|
|
typedef enum cc_transfer_mode_e_ {
|
|
CC_XFR_MODE_MIN = -1,
|
|
CC_XFR_MODE_NONE,
|
|
CC_XFR_MODE_TRANSFEROR,
|
|
CC_XFR_MODE_TRANSFEREE,
|
|
CC_XFR_MODE_TARGET,
|
|
CC_XFR_MODE_MAX
|
|
} cc_transfer_mode_e;
|
|
|
|
typedef enum cc_regmgr_rsp_type_e_ {
|
|
CC_FAILOVER_RSP=0,
|
|
CC_RSP_START =1,
|
|
CC_RSP_COMPLETE=2
|
|
} cc_regmgr_rsp_type_e;
|
|
|
|
typedef enum cc_regmgr_rsp_e_ {
|
|
CC_REG_FAILOVER_RSP,
|
|
CC_REG_FALLBACK_RSP
|
|
} cc_regmgr_rsp_e;
|
|
|
|
/*
|
|
* Identifies what was in the Alert-Info header
|
|
*/
|
|
typedef enum {
|
|
ALERTING_NONE, /* No alert-info header present */
|
|
ALERTING_OLD, /* Unrecognized pattern or an error, mimic old behavior */
|
|
ALERTING_TONE, /* Play tone */
|
|
ALERTING_RING /* Play ringing pattern */
|
|
} cc_alerting_type;
|
|
|
|
typedef enum {
|
|
CC_MONITOR_NONE = 0,
|
|
CC_MONITOR_SILENT = 1,
|
|
CC_MONITOR_COACHING = 2
|
|
} monitor_mode_t;
|
|
|
|
typedef enum {
|
|
CFWDALL_NONE = -1,
|
|
CFWDALL_CLEAR,
|
|
CFWDALL_SET
|
|
} cfwdall_mode_t;
|
|
|
|
/* Do not change enum values unless remote-cc xml has been changed */
|
|
|
|
typedef enum {
|
|
CC_RING_DEFAULT = 0,
|
|
CC_RING_ENABLE = 1,
|
|
CC_RING_DISABLE = 2
|
|
} cc_rcc_ring_mode_e;
|
|
|
|
/* Do not change enum values unless remote-cc xml has been changed */
|
|
|
|
typedef enum {
|
|
CC_SK_EVT_TYPE_DEF = 0,
|
|
CC_SK_EVT_TYPE_EXPLI = CC_SK_EVT_TYPE_DEF,
|
|
CC_SK_EVT_TYPE_IMPLI = 1
|
|
} cc_rcc_skey_evt_type_e;
|
|
|
|
/* media name with media capability table */
|
|
typedef enum {
|
|
CC_AUDIO_1,
|
|
CC_VIDEO_1,
|
|
CC_DATACHANNEL_1,
|
|
} cc_media_cap_name;
|
|
|
|
typedef struct cc_sdp_addr_t_ {
|
|
cpr_ip_addr_t addr;
|
|
unsigned int port;
|
|
} cc_sdp_addr_t;
|
|
|
|
typedef struct cc_sdp_data_t_ {
|
|
cc_sdp_addr_t addr;
|
|
int media_types[CC_MAX_MEDIA_TYPES];
|
|
int32_t avt_payload_type;
|
|
} cc_sdp_data_t;
|
|
|
|
typedef struct cc_sdp_t_ {
|
|
sdp_t *src_sdp; /* pointer to source SDP */
|
|
sdp_t *dest_sdp; /* pointer to received SDP */
|
|
} cc_sdp_t;
|
|
|
|
typedef enum
|
|
{
|
|
cc_disposition_unknown = 0,
|
|
cc_disposition_render,
|
|
cc_disposition_session,
|
|
cc_dispostion_icon,
|
|
cc_disposition_alert,
|
|
cc_disposition_precondition
|
|
} cc_disposition_type_t;
|
|
|
|
typedef struct
|
|
{
|
|
cc_disposition_type_t disposition;
|
|
boolean required_handling;
|
|
} cc_content_disposition_t;
|
|
|
|
typedef enum
|
|
{
|
|
cc_content_type_unknown = 0,
|
|
cc_content_type_SDP,
|
|
cc_content_type_sipfrag,
|
|
cc_content_type_CMXML
|
|
} cc_content_type_t;
|
|
|
|
typedef struct cc_msgbody_t_ {
|
|
cc_content_type_t content_type;
|
|
cc_content_disposition_t content_disposition;
|
|
uint32_t body_length;
|
|
char *body;
|
|
char *content_id;
|
|
} cc_msgbody_t;
|
|
|
|
typedef struct cc_msgbody_info_t_ {
|
|
uint32_t num_parts; /* number of body parts */
|
|
cc_content_type_t content_type; /* top level content type */
|
|
cc_msgbody_t parts[CC_MAX_BODY_PARTS]; /* parts */
|
|
} cc_msgbody_info_t;
|
|
|
|
/*
|
|
* Message definitions
|
|
*/
|
|
|
|
typedef enum cc_redirect_reasons_t {
|
|
CC_REDIRECT_REASON_MIN = -1,
|
|
CC_REDIRECT_REASON_NONE,
|
|
CC_REDIRECT_REASON_BUSY,
|
|
CC_REDIRECT_REASON_NOANSWER,
|
|
CC_REDIRECT_REASON_UNCONDITIONAL,
|
|
CC_REDIRECT_REASON_DEFLECTION,
|
|
CC_REDIRECT_REASON_UNAVAILABLE
|
|
} cc_redirect_reasons_t;
|
|
|
|
typedef struct cc_redirect_t_ {
|
|
int count;
|
|
struct {
|
|
char number[CC_MAX_DIALSTRING_LEN];
|
|
cc_redirect_reasons_t redirect_reason;
|
|
} redirects[CC_MAX_REDIRECTS];
|
|
} cc_redirect_t;
|
|
|
|
typedef enum {
|
|
CC_FEAT_NONE,
|
|
CC_FEAT_HOLD,
|
|
CC_FEAT_RESUME,
|
|
CC_FEAT_BARGE,
|
|
CC_FEAT_CBARGE,
|
|
CC_FEAT_REPLACE,
|
|
CC_FEAT_CALLINFO,
|
|
CC_FEAT_INIT_CALL,
|
|
CC_FEAT_MONITOR,
|
|
CC_FEAT_TOGGLE_TO_SILENT_MONITORING,
|
|
CC_FEAT_TOGGLE_TO_WHISPER_COACHING
|
|
} cc_call_info_e;
|
|
|
|
typedef enum {
|
|
CC_REASON_NONE,
|
|
CC_REASON_XFER,
|
|
CC_REASON_CONF,
|
|
CC_REASON_SWAP,
|
|
CC_REASON_RCC,
|
|
CC_REASON_INTERNAL,
|
|
CC_REASON_MONITOR_UPDATE
|
|
} cc_hold_resume_reason_e;
|
|
|
|
typedef enum {
|
|
CC_PURPOSE_NONE,
|
|
CC_PURPOSE_INFO,
|
|
CC_PURPOSE_ICON,
|
|
CC_PURPOSE_CARD
|
|
} cc_purpose_e;
|
|
|
|
typedef enum {
|
|
CC_ORIENTATION_NONE = CC_CALL_TYPE_NONE,
|
|
CC_ORIENTATION_FROM = CC_CALL_TYPE_INCOMING,
|
|
CC_ORIENTATION_TO = CC_CALL_TYPE_OUTGOING
|
|
} cc_orientation_e;
|
|
|
|
typedef enum {
|
|
CC_UI_STATE_NONE,
|
|
CC_UI_STATE_RINGOUT,
|
|
CC_UI_STATE_CONNECTED,
|
|
CC_UI_STATE_BUSY
|
|
} cc_ui_state_e;
|
|
|
|
typedef enum {
|
|
CC_REASON_NULL,
|
|
CC_REASON_ACTIVECALL_LIST
|
|
} cc_onhook_reason_e;
|
|
|
|
typedef enum {
|
|
CC_CALL_LOG_DISP_MISSED,
|
|
CC_CALL_LOG_DISP_RCVD,
|
|
CC_CALL_LOG_DISP_PLACED,
|
|
CC_CALL_LOG_DISP_UNKNWN,
|
|
CC_CALL_LOG_DISP_IGNORE
|
|
} cc_call_logdisp_e;
|
|
|
|
/*
|
|
* The cc_caller_id_t structure contains caller IDs fields.
|
|
* Sending these fields accross components needs special care.
|
|
* There are CCAPI API that provide access or transport these fields
|
|
* by the source or by the destination. Any new caller IDs added,
|
|
* please update the APIs in ccapi.c to support the new fields.
|
|
* See cc_cp_caller(), cc_mv_caller_id() and cc_free_caller_id() functions.
|
|
*/
|
|
// mostly overlap with sessionTypes.h:cc_callinfo_t
|
|
typedef struct cc_caller_id_t_ {
|
|
string_t calling_name;
|
|
string_t calling_number;
|
|
string_t alt_calling_number;
|
|
boolean display_calling_number;
|
|
string_t called_name;
|
|
string_t called_number;
|
|
boolean display_called_number;
|
|
string_t orig_called_name;
|
|
string_t orig_called_number;
|
|
string_t last_redirect_name;
|
|
string_t last_redirect_number;
|
|
string_t orig_rpid_number;
|
|
cc_call_type_e call_type;
|
|
uint16_t call_instance_id;
|
|
} cc_caller_id_t;
|
|
|
|
/*
|
|
* The followings are definitions of bits in the feature_flag of the
|
|
* cc_feature_data_call_info_t strucure.
|
|
*
|
|
* The CC_DELAY_UI_UPDATE flag is not related to call information but
|
|
* it indicates that the call info event signaled by SIP stack
|
|
* to GSM that UI update can be delayed due to media manipulation
|
|
* event will follow. This allows GSM to defer UI update to after the
|
|
* media manipulation event.
|
|
*/
|
|
#define CC_SECURITY 1
|
|
#define CC_ORIENTATION (1<<1)
|
|
#define CC_UI_STATE (1<<2)
|
|
#define CC_CALLER_ID (1<<3)
|
|
#define CC_CALL_INSTANCE (1<<4)
|
|
#define CC_DELAY_UI_UPDATE (1<<5)
|
|
#define CC_POLICY (1<<6)
|
|
|
|
typedef struct cc_feature_data_call_info_t_{
|
|
uint16_t feature_flag;
|
|
cc_security_e security;
|
|
cc_policy_e policy;
|
|
cc_orientation_e orientation;
|
|
cc_ui_state_e ui_state;
|
|
cc_caller_id_t caller_id;
|
|
cc_call_priority_e priority;
|
|
boolean swap; //Indicate if hold/resume is because of swap
|
|
boolean protect; //indicate if the call has to be protected
|
|
boolean dusting; //indicate if it is a dusting call
|
|
uint32_t callref;
|
|
char global_call_id[CC_GCID_LEN];
|
|
} cc_feature_data_call_info_t;
|
|
|
|
typedef struct cc_replace_info_t_ {
|
|
callid_t remote_call_id; /* remote call ID to replace */
|
|
} cc_replace_info_t;
|
|
|
|
typedef struct cc_join_info_t_ {
|
|
callid_t join_call_id;
|
|
} cc_join_info_t;
|
|
|
|
typedef struct cc_initcall_t {
|
|
char gcid[CC_GCID_LEN]; // Global call id used for CTI
|
|
monitor_mode_t monitor_mode;
|
|
} cc_initcall_t;
|
|
|
|
typedef union {
|
|
cc_initcall_t initcall;
|
|
cc_hold_resume_reason_e hold_resume_reason;
|
|
cc_feature_data_call_info_t call_info_feat_data;
|
|
cc_purpose_e purpose; // Used for Barge, CBARGE
|
|
cc_replace_info_t replace;
|
|
cc_join_info_t join;
|
|
} cc_call_info_data_t;
|
|
|
|
typedef struct {
|
|
cc_call_info_data_t data;
|
|
cc_call_info_e type;
|
|
} cc_call_info_t;
|
|
|
|
typedef enum cc_xfer_methods_t_ {
|
|
CC_XFER_METHOD_MIN = -1,
|
|
CC_XFER_METHOD_NONE,
|
|
CC_XFER_METHOD_BYE,
|
|
CC_XFER_METHOD_REFER,
|
|
CC_XFER_METHOD_DIRXFR,
|
|
CC_RCC_METHOD_REFER,
|
|
CC_XFER_METHOD_MAX
|
|
} cc_xfer_methods_t;
|
|
|
|
typedef enum cc_subscriptions_t_ {
|
|
CC_SUBSCRIPTIONS_MIN = -1,
|
|
CC_SUBSCRIPTIONS_NONE,
|
|
CC_SUBSCRIPTIONS_XFER,
|
|
CC_SUBSCRIPTIONS_DIALOG = CC_SUBSCRIPTIONS_DIALOG_EXT,
|
|
CC_SUBSCRIPTIONS_CONFIG,
|
|
CC_SUBSCRIPTIONS_KPML = CC_SUBSCRIPTIONS_KPML_EXT,
|
|
CC_SUBSCRIPTIONS_PRESENCE = CC_SUBSCRIPTIONS_PRESENCE_EXT,
|
|
CC_SUBSCRIPTIONS_REMOTECC = CC_SUBSCRIPTIONS_REMOTECC_EXT,
|
|
CC_SUBSCRIPTIONS_REMOTECC_OPTIONSIND = CC_SUBSCRIPTIONS_REMOTECC_OPTIONSIND_EXT,
|
|
CC_SUBSCRIPTIONS_CONFIGAPP = CC_SUBSCRIPTIONS_CONFIGAPP_EXT,
|
|
CC_SUBSCRIPTIONS_MEDIA_INFO = CC_SUBSCRIPTIONS_MEDIA_INFO_EXT,
|
|
CC_SUBSCRIPTIONS_MAX
|
|
} cc_subscriptions_t;
|
|
|
|
typedef struct cc_feature_data_newcall_t_ {
|
|
char dialstring[CC_MAX_DIALSTRING_LEN];
|
|
cc_causes_t cause;
|
|
cc_redirect_t redirect;
|
|
cc_replace_info_t replace;
|
|
cc_join_info_t join;
|
|
char global_call_id[CC_GCID_LEN];
|
|
callid_t prim_call_id; /* For internal new call event
|
|
* refer primary call's call_id
|
|
*/
|
|
cc_hold_resume_reason_e hold_resume_reason; /* Reason for new consult call */
|
|
} cc_feature_data_newcall_t;
|
|
|
|
typedef struct cc_feature_data_xfer_t_ {
|
|
cc_causes_t cause;
|
|
char dialstring[CC_MAX_DIALSTRING_LEN];
|
|
char referred_by[CC_MAX_DIALSTRING_LEN];
|
|
cc_xfer_methods_t method;
|
|
callid_t target_call_id;
|
|
char global_call_id[CC_GCID_LEN];
|
|
} cc_feature_data_xfer_t;
|
|
|
|
typedef enum cc_app_type_t_ {
|
|
CC_APP_MIN = -1,
|
|
CC_APP_NONE,
|
|
CC_APP_CMXML,
|
|
CC_APP_REMOTECC,
|
|
CC_APP_MAX
|
|
} cc_app_type_t;
|
|
|
|
typedef struct cc_refer_body_t_ {
|
|
struct cc_refer_body_t_ *next;
|
|
char refer_body[200];
|
|
int refer_body_len;
|
|
cc_app_type_t app_type;
|
|
} cc_refer_body_t;
|
|
|
|
typedef struct cc_feature_data_ind_t__ {
|
|
cc_causes_t cause;
|
|
char to[CC_MAX_DIALSTRING_LEN];
|
|
char referred_by[CC_MAX_DIALSTRING_LEN];
|
|
char referred_to[CC_MAX_DIALSTRING_LEN];
|
|
cc_refer_body_t refer_body;
|
|
} cc_feature_data_ind_t;
|
|
|
|
typedef struct cc_feature_data_endcall_t_ {
|
|
cc_causes_t cause;
|
|
char dialstring[CC_MAX_DIALSTRING_LEN];
|
|
} cc_feature_data_endcall_t;
|
|
|
|
typedef struct cc_kfact_t {
|
|
char rxstats[CC_KFACTOR_STAT_LEN];
|
|
char txstats[CC_KFACTOR_STAT_LEN];
|
|
} cc_kfact_t;
|
|
|
|
typedef struct cc_feature_data_hold_t_ {
|
|
cc_msgbody_info_t msg_body;
|
|
cc_call_info_t call_info;
|
|
cc_kfact_t kfactor;
|
|
} cc_feature_data_hold_t;
|
|
|
|
typedef struct cc_feature_data_hold_reversion_t_ {
|
|
int alertInterval;
|
|
} cc_feature_data_hold_reversion_t;
|
|
|
|
typedef struct cc_feature_data_resume_t_ {
|
|
cc_causes_t cause;
|
|
cc_msgbody_info_t msg_body;
|
|
cc_call_info_t call_info;
|
|
cc_kfact_t kfactor;
|
|
} cc_feature_data_resume_t;
|
|
|
|
typedef struct cc_feature_data_redirect_t_ {
|
|
char redirect_number[CC_MAX_DIALSTRING_LEN];
|
|
cc_redirect_t redirect;
|
|
} cc_feature_data_redirect_t;
|
|
|
|
typedef struct cc_feature_data_subscribe_t_ {
|
|
cc_subscriptions_t event_package;
|
|
boolean subscribe;
|
|
char subscribe_uri[CC_MAX_DIALSTRING_LEN];
|
|
cc_srcs_t component;
|
|
int component_id;
|
|
int *callBack;
|
|
} cc_feature_data_subscribe_t;
|
|
|
|
typedef enum cc_dialog_lock_e_ {
|
|
CC_DIALOG_UNLOCKED, /* unlocked */
|
|
CC_DIALOG_LOCKED /* local selected or locked */
|
|
} cc_dialog_lock_e;
|
|
|
|
typedef struct cc_notify_data_config_t {
|
|
boolean config_state;
|
|
} cc_notify_data_config_t;
|
|
|
|
typedef struct cc_notify_data_kpml_t {
|
|
boolean kpml_state;
|
|
} cc_notify_data_kpml_t;
|
|
|
|
|
|
typedef struct cc_notify_data_rcc_t {
|
|
cc_features_t feature;
|
|
cc_select_state_e select;
|
|
} cc_notify_data_rcc_t;
|
|
|
|
|
|
typedef union cc_notify_data_t {
|
|
cc_notify_data_config_t config;
|
|
cc_notify_data_kpml_t kpml;
|
|
cc_notify_data_rcc_t rcc;
|
|
} cc_notify_data_t;
|
|
|
|
typedef struct cc_feature_data_notify_t_ {
|
|
cc_subscriptions_t subscription;
|
|
cc_xfer_methods_t method;
|
|
cc_causes_t cause;
|
|
// The refer data above should have been in a cc_notify_data_refer_t
|
|
int cause_code;
|
|
callid_t blind_xferror_gsm_id;
|
|
boolean final;
|
|
cc_notify_data_t data;
|
|
} cc_feature_data_notify_t;
|
|
|
|
typedef struct cc_feature_data_update_t_ {
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_feature_data_update_t;
|
|
|
|
typedef struct cc_feature_data_b2bcnf_t_ {
|
|
cc_causes_t cause;
|
|
callid_t call_id;
|
|
callid_t target_call_id;
|
|
char global_call_id[CC_GCID_LEN];
|
|
} cc_feature_data_b2bcnf_t;
|
|
|
|
typedef struct cc_feature_data_record_t_ {
|
|
boolean subref_flag;
|
|
} cc_feature_data_record_t;
|
|
|
|
typedef struct cc_feature_data_select_t_ {
|
|
boolean select; /* TRUE when select, FALSE when unselect */
|
|
} cc_feature_data_select_t;
|
|
|
|
typedef struct cc_feature_data_b2b_join_t_ {
|
|
callid_t b2bjoin_callid;
|
|
callid_t b2bjoin_joincallid;
|
|
} cc_feature_data_b2b_join_t;
|
|
|
|
|
|
typedef struct cc_media_cap_t_ {
|
|
cc_media_cap_name name; /* media channel name designator */
|
|
sdp_media_e type; /* media type: audio, video etc */
|
|
boolean enabled; /* this media is enabled or disabled */
|
|
boolean support_security; /* security is supported */
|
|
sdp_direction_e support_direction;/* supported direction */
|
|
cc_media_stream_id_t pc_stream; /* The media stream in the PC */
|
|
cc_media_track_id_t pc_track; /* The track ID in the media stream */
|
|
} cc_media_cap_t;
|
|
|
|
typedef struct cc_media_cap_table_t_ {
|
|
uint32_t id;
|
|
cc_media_cap_t cap[CC_MAX_MEDIA_CAP];/* capability table. */
|
|
} cc_media_cap_table_t;
|
|
|
|
typedef struct cc_media_track_t_ {
|
|
unsigned int media_stream_track_id;
|
|
boolean video;
|
|
} cc_media_track_t;
|
|
|
|
typedef struct cc_media_remote_track_table_t_ {
|
|
uint32_t num_tracks;
|
|
uint32_t media_stream_id;
|
|
cc_media_track_t track[CC_MAX_TRACKS];
|
|
} cc_media_remote_track_table_t;
|
|
|
|
typedef struct cc_media_remote_stream_table_t_ {
|
|
cc_media_remote_track_table_t streams[CC_MAX_STREAMS];
|
|
} cc_media_remote_stream_table_t;
|
|
|
|
typedef struct cc_media_local_track_table_t_ {
|
|
uint32_t media_stream_id;
|
|
cc_media_track_t track[CC_MAX_TRACKS];
|
|
} cc_media_local_track_table_t;
|
|
|
|
typedef struct cc_feature_data_generic_t {
|
|
boolean subref_flag;
|
|
uint32_t eventid;
|
|
} cc_feature_data_generic_t;
|
|
|
|
typedef struct cc_feature_data_cnf_t_ {
|
|
cc_causes_t cause;
|
|
callid_t call_id;
|
|
callid_t target_call_id;
|
|
} cc_feature_data_cnf_t;
|
|
|
|
typedef struct cc_feature_data_cancel_t_ {
|
|
cc_rcc_skey_evt_type_e cause;
|
|
callid_t call_id;
|
|
callid_t target_call_id;
|
|
} cc_feature_data_cancel_t;
|
|
|
|
typedef struct cc_feature_data_pc_t_ {
|
|
char pc_handle[PC_HANDLE_SIZE];
|
|
} cc_feature_data_pc_t;
|
|
|
|
typedef struct cc_feature_data_track_t_ {
|
|
cc_media_stream_id_t stream_id;
|
|
cc_media_track_id_t track_id;
|
|
cc_media_type_t media_type;
|
|
} cc_feature_data_track_t;
|
|
|
|
|
|
typedef struct cc_feature_candidate_t_ {
|
|
uint16_t level;
|
|
char candidate[CANDIDATE_SIZE];
|
|
char mid[MID_SIZE];
|
|
} cc_feature_candidate_t;
|
|
|
|
typedef struct cc_feature_session_t_ {
|
|
unsigned int sessionid;
|
|
cc_boolean has_constraints;
|
|
} cc_feature_session_t;
|
|
|
|
|
|
typedef union cc_feature_data_t {
|
|
cc_feature_data_newcall_t newcall;
|
|
cc_feature_data_xfer_t xfer;
|
|
cc_feature_data_ind_t indication;
|
|
cc_feature_data_endcall_t endcall;
|
|
cc_feature_data_hold_t hold;
|
|
cc_feature_data_hold_reversion_t hold_reversion;
|
|
cc_feature_data_resume_t resume;
|
|
cc_feature_data_redirect_t redirect;
|
|
cc_feature_data_subscribe_t subscribe;
|
|
cc_feature_data_notify_t notify;
|
|
cc_feature_data_update_t update;
|
|
cc_feature_data_b2bcnf_t b2bconf;
|
|
cc_feature_data_call_info_t call_info;
|
|
cc_feature_data_record_t record;
|
|
cc_feature_data_select_t select;
|
|
cc_feature_data_b2b_join_t b2bjoin;
|
|
cc_feature_data_generic_t generic;
|
|
cc_feature_data_cnf_t cnf;
|
|
cc_feature_data_b2bcnf_t cancel;
|
|
cc_media_cap_t caps;
|
|
cc_feature_data_pc_t pc;
|
|
cc_feature_data_track_t track;
|
|
cc_feature_candidate_t candidate;
|
|
cc_feature_session_t session;
|
|
} cc_feature_data_t;
|
|
|
|
typedef struct cc_setup_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_alerting_type alert_info;
|
|
vcm_ring_mode_t alerting_ring;
|
|
vcm_tones_t alerting_tone;
|
|
cc_caller_id_t caller_id;
|
|
cc_redirect_t redirect;
|
|
cc_call_info_t call_info;
|
|
boolean replaces;
|
|
string_t recv_info_list;
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_setup_t;
|
|
|
|
typedef struct cc_setup_ack_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_caller_id_t caller_id;
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_setup_ack_t;
|
|
|
|
typedef struct cc_proceeding_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_caller_id_t caller_id;
|
|
} cc_proceeding_t;
|
|
|
|
typedef struct cc_alerting_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_caller_id_t caller_id;
|
|
cc_msgbody_info_t msg_body;
|
|
boolean inband;
|
|
} cc_alerting_t;
|
|
|
|
typedef struct cc_connected_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_caller_id_t caller_id;
|
|
string_t recv_info_list;
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_connected_t;
|
|
|
|
typedef struct cc_connected_ack_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_caller_id_t caller_id;
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_connected_ack_t;
|
|
|
|
typedef struct cc_release_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_causes_t cause;
|
|
char dialstring[CC_MAX_DIALSTRING_LEN];
|
|
cc_kfact_t kfactor;
|
|
} cc_release_t;
|
|
|
|
typedef struct cc_release_complete_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_causes_t cause;
|
|
cc_kfact_t kfactor;
|
|
} cc_release_complete_t;
|
|
|
|
typedef struct cc_feature_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_features_t feature_id;
|
|
cc_feature_data_t data;
|
|
boolean data_valid;
|
|
cc_jsep_action_t action;
|
|
char sdp[SDP_SIZE];
|
|
} cc_feature_t;
|
|
|
|
typedef struct cc_feature_ack_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_features_t feature_id;
|
|
cc_feature_data_t data;
|
|
boolean data_valid;
|
|
cc_causes_t cause;
|
|
} cc_feature_ack_t;
|
|
|
|
typedef struct cc_offhook_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
char global_call_id[CC_GCID_LEN];
|
|
callid_t prim_call_id; /* For internal new call event
|
|
* refer primary call's call_id
|
|
*/
|
|
cc_hold_resume_reason_e hold_resume_reason; /* Reason for new consult call */
|
|
monitor_mode_t monitor_mode;
|
|
cfwdall_mode_t cfwdall_mode;
|
|
} cc_offhook_t;
|
|
|
|
typedef struct cc_onhook_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
boolean softkey;
|
|
callid_t prim_call_id; /* For internal new call event
|
|
* refer primary call's call_id
|
|
*/
|
|
cc_hold_resume_reason_e hold_resume_reason; /* Reason for new consult call */
|
|
cc_onhook_reason_e active_list; /* onhook is because of active call
|
|
* press
|
|
*/
|
|
} cc_onhook_t;
|
|
|
|
typedef struct cc_line_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
} cc_line_t;
|
|
|
|
typedef struct cc_digit_begin_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
int digit;
|
|
} cc_digit_begin_t;
|
|
|
|
typedef struct cc_digit_end_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
int digit;
|
|
} cc_digit_end_t;
|
|
|
|
typedef struct cc_dialstring_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
char dialstring[CC_MAX_DIALSTRING_LEN];
|
|
char g_call_id[CC_GCID_LEN];
|
|
monitor_mode_t monitor_mode;
|
|
} cc_dialstring_t;
|
|
|
|
// mostly overlap with sessionTypes.h:cc_mwi_status_t
|
|
typedef struct cc_action_data_mwi_ {
|
|
boolean on;
|
|
int type;
|
|
int newCount;
|
|
int oldCount;
|
|
int hpNewCount;
|
|
int hpOldCount;
|
|
} cc_action_data_mwi_t;
|
|
|
|
typedef struct cc_mwi_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_action_data_mwi_t msgSummary;
|
|
} cc_mwi_t;
|
|
|
|
typedef struct cc_options_sdp_req_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
void * pMessage;
|
|
} cc_options_sdp_req_t;
|
|
|
|
typedef struct cc_options_sdp_ack_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
void * pMessage;
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_options_sdp_ack_t;
|
|
|
|
typedef struct cc_audit_sdp_req_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
boolean apply_ringout;
|
|
} cc_audit_sdp_req_t;
|
|
|
|
typedef struct cc_audit_sdp_ack_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_msgbody_info_t msg_body;
|
|
} cc_audit_sdp_ack_t;
|
|
|
|
typedef struct cc_feature_tmr_t_ {
|
|
callid_t call_id;
|
|
line_t line;
|
|
cc_features_t feature_id;
|
|
} cc_feature_tmr_t;
|
|
|
|
typedef struct cc_regmgr_t_ {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t src_id;
|
|
int rsp_type;
|
|
cc_regmgr_rsp_e rsp_id;
|
|
boolean wait_flag;
|
|
} cc_regmgr_t;
|
|
|
|
// mostly overlap with sessionTypes.h:session_send_info_t
|
|
typedef struct cc_info_t {
|
|
cc_msgs_t msg_id;
|
|
cc_srcs_t not_used; // why not share a common struct?? why cast everything to cc_setup_t??
|
|
callid_t call_id;
|
|
line_t line;
|
|
string_t info_package;
|
|
string_t content_type;
|
|
string_t message_body;
|
|
} cc_info_t;
|
|
|
|
typedef struct cc_msg_t_ {
|
|
union {
|
|
cc_setup_t setup;
|
|
cc_setup_ack_t setup_ack;
|
|
cc_proceeding_t proceeding;
|
|
cc_alerting_t alerting;
|
|
cc_connected_t connected;
|
|
cc_connected_ack_t connected_ack;
|
|
cc_release_t release;
|
|
cc_release_complete_t release_complete;
|
|
cc_feature_t feature;
|
|
cc_feature_ack_t feature_ack;
|
|
cc_offhook_t offhook;
|
|
cc_onhook_t onhook;
|
|
cc_line_t line;
|
|
cc_digit_begin_t digit_begin;
|
|
cc_digit_end_t digit_end;
|
|
cc_dialstring_t dialstring;
|
|
cc_mwi_t mwi;
|
|
cc_options_sdp_ack_t options_ack;
|
|
cc_audit_sdp_ack_t audit_ack;
|
|
cc_info_t info;
|
|
} msg;
|
|
} cc_msg_t;
|
|
|
|
|
|
callid_t cc_get_new_call_id(void);
|
|
const char *cc_msg_name(cc_msgs_t id);
|
|
const char *cc_src_name(cc_srcs_t id);
|
|
const char *cc_cause_name(cc_causes_t id);
|
|
const char *cc_feature_name(cc_features_t id);
|
|
|
|
void cc_int_setup(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_caller_id_t *caller_id,
|
|
cc_alerting_type alert_info, vcm_ring_mode_t alerting_ring,
|
|
vcm_tones_t alerting_tone, cc_redirect_t *redirect,
|
|
cc_call_info_t *call_info_p, boolean replaces,
|
|
string_t recv_info_list, cc_msgbody_info_t *msg_body);
|
|
|
|
void cc_int_setup_ack(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_caller_id_t *caller_id,
|
|
cc_msgbody_info_t *msg_body);
|
|
|
|
void cc_int_proceeding(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_caller_id_t *caller_id);
|
|
|
|
void cc_int_alerting(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_caller_id_t *caller_id,
|
|
cc_msgbody_info_t *msg_body, boolean inband);
|
|
|
|
void cc_int_connected(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_caller_id_t *caller_id,
|
|
string_t recv_info_list, cc_msgbody_info_t *msg_body);
|
|
|
|
void cc_int_connected_ack(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_caller_id_t *caller_id,
|
|
cc_msgbody_info_t *msg_body);
|
|
|
|
void cc_int_release(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_causes_t cause, const char *dialstring,
|
|
cc_kfact_t *kfactor);
|
|
|
|
void cc_int_release_complete(cc_srcs_t src_id, cc_srcs_t dst_id,
|
|
callid_t call_id, line_t line, cc_causes_t cause,
|
|
cc_kfact_t *kfactor);
|
|
|
|
void cc_int_feature2(cc_msgs_t msg_id, cc_srcs_t src_id, cc_srcs_t dst_id,
|
|
callid_t call_id, line_t line, cc_features_t feature_id,
|
|
cc_feature_data_t *data);
|
|
|
|
void cc_createoffer(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_features_t feature_id, cc_feature_data_t *data);
|
|
|
|
void cc_createanswer (cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_features_t feature_id, string_t sdp, cc_feature_data_t *data);
|
|
|
|
void cc_setlocaldesc (cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id, line_t line,
|
|
cc_features_t feature_id, cc_jsep_action_t action, string_t sdp, cc_feature_data_t *data);
|
|
|
|
void cc_setremotedesc (cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id, line_t line,
|
|
cc_features_t feature_id, cc_jsep_action_t action, string_t sdp, cc_feature_data_t *data);
|
|
|
|
void cc_localdesc (cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id, line_t line,
|
|
cc_features_t feature_id, cc_feature_data_t *data);
|
|
|
|
void cc_remotedesc (cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id, line_t line,
|
|
cc_features_t feature_id, cc_feature_data_t *data);
|
|
|
|
void cc_int_feature_ack(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_features_t feature_id,
|
|
cc_feature_data_t *data, cc_causes_t cause);
|
|
|
|
void cc_int_offhook(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t prim_call_id,
|
|
cc_hold_resume_reason_e consult_reason, callid_t call_id,
|
|
line_t line, char *global_call_id,
|
|
monitor_mode_t monitor_mode,
|
|
cfwdall_mode_t cfwdall_mode);
|
|
|
|
void cc_int_onhook(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t prim_call_id,
|
|
cc_hold_resume_reason_e consult_reason, callid_t call_id,
|
|
line_t line, boolean softkey, cc_onhook_reason_e active_list);
|
|
|
|
void cc_int_line(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line);
|
|
|
|
void cc_int_digit_begin(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, int digit);
|
|
|
|
void cc_int_digit_end(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, int digit);
|
|
|
|
void cc_int_dialstring(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, const char *dialstring,
|
|
const char *g_call_id, monitor_mode_t monitor_mode);
|
|
|
|
void cc_int_mwi(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, boolean on, int type, int newCount,
|
|
int oldCount, int hpNewCount, int hpOldCount);
|
|
|
|
void cc_int_options_sdp_req(cc_srcs_t src_id, cc_srcs_t dst_id,
|
|
callid_t call_id, line_t line, void *pMessage);
|
|
|
|
void cc_int_options_sdp_ack(cc_srcs_t src_id, cc_srcs_t dst_id,
|
|
callid_t call_id, line_t line, void *pMessage,
|
|
cc_msgbody_info_t *msg_body);
|
|
|
|
void cc_int_audit_sdp_req(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, boolean apply_ringout);
|
|
|
|
void cc_int_audit_sdp_ack(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, cc_msgbody_info_t *msg_body);
|
|
|
|
void cc_int_info(cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id,
|
|
line_t line, string_t info_package, string_t content_type,
|
|
string_t message_body);
|
|
|
|
void cc_int_fail_fallback(cc_srcs_t src_id, cc_srcs_t dst_id, int rsp_type,
|
|
cc_regmgr_rsp_e rsp_id, boolean waited);
|
|
#define cc_fail_fallback_sip(a, b, c, d) cc_int_fail_fallback(a, CC_SRC_SIP, b, c, d)
|
|
#define cc_fail_fallback_gsm(a, b, c) cc_int_fail_fallback(a, CC_SRC_GSM, b, c, FALSE)
|
|
|
|
#define cc_setup(a, b, c, d, e, f, g, h, i, j, k, l) cc_int_setup(a, CC_SRC_GSM, b, c, d, e, f, g, h, i, j, k, l)
|
|
#define cc_setup_ack(a, b, c, d, e) \
|
|
cc_int_setup_ack(a, CC_SRC_GSM, b, c, d, e)
|
|
#define cc_proceeding(a, b, c, d) cc_int_proceeding(a, CC_SRC_GSM, b, c, d)
|
|
#define cc_alerting(a, b, c, d, e, f) \
|
|
cc_int_alerting(a, CC_SRC_GSM, b, c, d, e, f)
|
|
#define cc_connected(a, b, c, d, e, f) \
|
|
cc_int_connected(a, CC_SRC_GSM, b, c, d, e, f)
|
|
#define cc_connected_ack(a, b, c, d, e) \
|
|
cc_int_connected_ack(a, CC_SRC_GSM, b, c, d, e)
|
|
#define cc_release(a, b, c, d, e, f) cc_int_release(a, CC_SRC_GSM, b, c, d, e, f)
|
|
#define cc_release_complete(a, b, c, d, e) \
|
|
cc_int_release_complete(a, CC_SRC_GSM, b, c, d, e)
|
|
#define cc_feature(a, b, c, d, e) cc_int_feature2(CC_MSG_FEATURE, a, CC_SRC_GSM, b, c, d, e)
|
|
#define cc_int_feature(a, b, c, d, e, f) cc_int_feature2(CC_MSG_FEATURE, a, b, c, d, e, f)
|
|
#define cc_feature_ack(a, b, c, d, e, f) \
|
|
cc_int_feature_ack(a, CC_SRC_GSM, b, c, d, e, f)
|
|
#define cc_offhook(a, b, c) cc_int_offhook(a, CC_SRC_GSM, CC_NO_CALL_ID, CC_REASON_NONE, b, c, NULL, CC_MONITOR_NONE,CFWDALL_NONE)
|
|
#define cc_offhook_ext(a, b, c, d, e) cc_int_offhook(a, CC_SRC_GSM, CC_NO_CALL_ID, CC_REASON_NONE, b, c, d, e,CFWDALL_NONE)
|
|
#define cc_onhook(a, b, c, d) cc_int_onhook(a, CC_SRC_GSM, CC_NO_CALL_ID, CC_REASON_NONE, b, c, d, CC_REASON_NULL)
|
|
#define cc_onhook_ext(a, b, c, d, e) cc_int_onhook(a, CC_SRC_GSM, CC_NO_CALL_ID, CC_REASON_NONE, b, c, d, e)
|
|
#define cc_line(a, b, c) cc_int_line(a, CC_SRC_GSM, b, c)
|
|
#define cc_digit_begin(a, b, c, d) cc_int_digit_begin(a, CC_SRC_GSM, b, c, d)
|
|
#define cc_dialstring(a, b, c, d) cc_int_dialstring(a, CC_SRC_GSM, b, c, d, NULL, CC_MONITOR_NONE)
|
|
#define cc_dialstring_ext(a, b, c, d, e, f) cc_int_dialstring(a, CC_SRC_GSM, b, c, d, e, f)
|
|
#define cc_mwi(a, b, c, d, e, f, g, h, i) cc_int_mwi(a, CC_SRC_GSM, b, c, d, e, f, g, h, i )
|
|
#define cc_options_sdp_req(a, b, c, d) cc_int_options_sdp_req(a, CC_SRC_GSM, b, c, d)
|
|
#define cc_audit_sdp_req(a, b, c, d) cc_int_audit_sdp_req(a, CC_SRC_GSM, b, c, d)
|
|
|
|
typedef enum cc_types_t_ {
|
|
CC_TYPE_INVALID,
|
|
CC_TYPE_CCM,
|
|
CC_TYPE_OTHER
|
|
} cc_types_t;
|
|
|
|
typedef enum cc_states_t_ {
|
|
CC_STATE_MIN = -1,
|
|
CC_STATE_OFFHOOK,
|
|
CC_STATE_DIALING,
|
|
CC_STATE_DIALING_COMPLETED,
|
|
CC_STATE_CALL_SENT,
|
|
CC_STATE_FAR_END_PROCEEDING,
|
|
CC_STATE_FAR_END_ALERTING,
|
|
CC_STATE_CALL_RECEIVED,
|
|
CC_STATE_ALERTING,
|
|
CC_STATE_ANSWERED,
|
|
CC_STATE_CONNECTED,
|
|
CC_STATE_HOLD,
|
|
CC_STATE_RESUME,
|
|
CC_STATE_ONHOOK,
|
|
CC_STATE_CALL_FAILED,
|
|
CC_STATE_HOLD_REVERT,
|
|
CC_STATE_UNKNOWN,
|
|
CC_STATE_MAX
|
|
} cc_states_t;
|
|
|
|
/* Update cc_action_names structure in lsm.c with the
|
|
* corresponding change for the following structure.
|
|
*/
|
|
typedef enum cc_actions_t_ {
|
|
CC_ACTION_MIN = -1,
|
|
CC_ACTION_SPEAKER,
|
|
CC_ACTION_DIAL_MODE,
|
|
CC_ACTION_MWI,
|
|
CC_ACTION_MWI_LAMP_ONLY,
|
|
CC_ACTION_OPEN_RCV,
|
|
CC_ACTION_UPDATE_UI,
|
|
CC_ACTION_MEDIA,
|
|
CC_ACTION_RINGER,
|
|
CC_ACTION_SET_LINE_RINGER,
|
|
CC_ACTION_PLAY_TONE,
|
|
CC_ACTION_STOP_TONE,
|
|
CC_ACTION_STOP_MEDIA,
|
|
CC_ACTION_START_RCV,
|
|
CC_ACTION_ANSWER_PENDING,
|
|
CC_ACTION_PLAY_BLF_ALERTING_TONE,
|
|
CC_ACTION_MAX
|
|
} cc_actions_t;
|
|
|
|
typedef enum cc_services_t_ {
|
|
CC_SERVICE_MIN = -1,
|
|
CC_SERVICE_MAX
|
|
} cc_services_t;
|
|
|
|
typedef enum cc_update_ui_actions_t_ {
|
|
CC_UPDATE_MIN = -1,
|
|
CC_UPDATE_CONF_ACTIVE,
|
|
CC_UPDATE_CONF_RELEASE,
|
|
CC_UPDATE_XFER_PRIMARY,
|
|
CC_UPDATE_CALLER_INFO,
|
|
CC_UPDATE_SECURITY_STATUS,
|
|
CC_UPDATE_SET_CALL_STATUS,
|
|
CC_UPDATE_CLEAR_CALL_STATUS,
|
|
CC_UPDATE_SET_NOTIFICATION,
|
|
CC_UPDATE_CLEAR_NOTIFICATION,
|
|
CC_UPDATE_CALL_PRESERVATION,
|
|
CC_UPDATE_CALL_CONNECTED,
|
|
CC_UPDATE_MAX
|
|
} cc_update_ui_actions_t;
|
|
|
|
typedef struct cc_state_data_offhook_t_ {
|
|
cc_caller_id_t caller_id;
|
|
int dial_mode;
|
|
} cc_state_data_offhook_t;
|
|
|
|
/*
|
|
* This structure is passed in CC_STATE_DIALING to lsm to indicate
|
|
* wether a dialtone needs to be played or not
|
|
* should the stutter dial tone be suppressed or not
|
|
*/
|
|
typedef struct cc_state_data_dialing_t_ {
|
|
boolean play_dt;
|
|
boolean suppress_stutter;
|
|
} cc_state_data_dialing_t;
|
|
|
|
typedef struct cc_state_data_dialing_completedt_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_dialing_completed_t;
|
|
|
|
typedef struct cc_state_data_call_sent_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_call_sent_t;
|
|
|
|
typedef struct cc_state_data_far_end_proceeding_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_far_end_proceeding_t;
|
|
|
|
typedef struct cc_state_data_far_end_alerting_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_far_end_alerting_t;
|
|
|
|
typedef struct cc_state_data_call_received_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_call_received_t;
|
|
|
|
typedef struct cc_state_data_alerting_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_alerting_t;
|
|
|
|
typedef struct cc_state_data_answered_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_answered_t;
|
|
|
|
typedef struct cc_state_data_connected_t_ {
|
|
cc_caller_id_t caller_id;
|
|
} cc_state_data_connected_t;
|
|
|
|
typedef struct cc_state_data_hold_t_ {
|
|
cc_caller_id_t caller_id;
|
|
boolean local;
|
|
cc_hold_resume_reason_e reason;
|
|
} cc_state_data_hold_t;
|
|
|
|
typedef struct cc_state_data_resume_t_ {
|
|
cc_caller_id_t caller_id;
|
|
boolean local;
|
|
} cc_state_data_resume_t;
|
|
|
|
typedef struct cc_state_data_onhook_t_ {
|
|
cc_caller_id_t caller_id;
|
|
boolean local;
|
|
cc_causes_t cause;
|
|
} cc_state_data_onhook_t;
|
|
|
|
typedef struct cc_state_data_call_failed_t_ {
|
|
cc_caller_id_t caller_id;
|
|
cc_causes_t cause;
|
|
} cc_state_data_call_failed_t;
|
|
|
|
typedef union cc_state_data_t_ {
|
|
cc_state_data_offhook_t offhook;
|
|
cc_state_data_dialing_t dialing;
|
|
cc_state_data_dialing_completed_t dialing_completed;
|
|
cc_state_data_call_sent_t call_sent;
|
|
cc_state_data_far_end_proceeding_t far_end_proceeding;
|
|
cc_state_data_far_end_alerting_t far_end_alerting;
|
|
cc_state_data_call_received_t call_received;
|
|
cc_state_data_alerting_t alerting;
|
|
cc_state_data_answered_t answered;
|
|
cc_state_data_connected_t connected;
|
|
cc_state_data_hold_t hold;
|
|
cc_state_data_resume_t resume;
|
|
cc_state_data_onhook_t onhook;
|
|
cc_state_data_call_failed_t call_failed;
|
|
} cc_state_data_t;
|
|
|
|
typedef struct cc_action_data_digit_begin_ {
|
|
int tone;
|
|
} cc_action_data_digit_begin_t;
|
|
|
|
typedef struct cc_action_data_tone_ {
|
|
vcm_tones_t tone;
|
|
} cc_action_data_tone_t;
|
|
|
|
typedef struct cc_action_data_speaker_ {
|
|
boolean on;
|
|
} cc_action_data_speaker_t;
|
|
|
|
typedef struct cc_action_data_dial_mode_ {
|
|
int mode;
|
|
int digit_cnt;
|
|
} cc_action_data_dial_mode_t;
|
|
|
|
/*
|
|
typedef struct cc_action_data_mwi_ {
|
|
boolean on;
|
|
int32_t type;
|
|
int32_t newCount;
|
|
int32_t oldCount;
|
|
int32_t hpNewCount;
|
|
int32_t hpOldCount;
|
|
} cc_action_data_mwi_t;
|
|
*/
|
|
|
|
typedef struct cc_action_data_open_rcv_ {
|
|
boolean is_multicast;
|
|
cpr_ip_addr_t listen_ip;
|
|
uint16_t port;
|
|
boolean rcv_chan;
|
|
boolean keep;
|
|
media_refid_t media_refid; /* the ID of the media to reference to */
|
|
sdp_media_e media_type;
|
|
} cc_action_data_open_rcv_t;
|
|
|
|
typedef struct cc_set_call_status_data_ {
|
|
char *phrase_str_p;
|
|
int timeout;
|
|
callid_t call_id;
|
|
line_t line;
|
|
} cc_set_call_status_data_t;
|
|
|
|
typedef struct cc_clear_call_status_data_ {
|
|
callid_t call_id;
|
|
line_t line;
|
|
} cc_clear_call_status_data_t;
|
|
|
|
// mostly overlap with sessionTypes.h:cc_notification_data_t
|
|
typedef struct cc_set_notification_data_ {
|
|
char *phrase_str_p;
|
|
unsigned long timeout;
|
|
unsigned long priority;
|
|
} cc_set_notification_data_t;
|
|
|
|
typedef union cc_update_ui_data_ {
|
|
cc_feature_data_call_info_t caller_info;
|
|
cc_set_call_status_data_t set_call_status_parms;
|
|
cc_clear_call_status_data_t clear_call_status_parms;
|
|
cc_set_notification_data_t set_notification_parms;
|
|
string_t security_status;
|
|
} cc_update_ui_data_t;
|
|
|
|
typedef struct cc_action_data_update_ui_ {
|
|
cc_update_ui_actions_t action;
|
|
cc_update_ui_data_t data;
|
|
} cc_action_data_update_ui_t;
|
|
|
|
typedef struct cc_action_data_ringer_ {
|
|
boolean on;
|
|
} cc_action_data_ringer_t;
|
|
|
|
typedef struct cc_action_data_stop_media_ {
|
|
media_refid_t media_refid; /* the ID of the media to reference to */
|
|
} cc_action_data_stop_media_t;
|
|
|
|
typedef union cc_action_data_t_ {
|
|
cc_action_data_digit_begin_t digit_begin;
|
|
cc_action_data_tone_t tone;
|
|
cc_action_data_speaker_t speaker;
|
|
cc_action_data_dial_mode_t dial_mode;
|
|
cc_action_data_mwi_t mwi;
|
|
cc_action_data_open_rcv_t open_rcv;
|
|
cc_action_data_update_ui_t update_ui;
|
|
cc_action_data_ringer_t ringer;
|
|
cc_action_data_stop_media_t stop_media;
|
|
} cc_action_data_t;
|
|
|
|
typedef struct cc_service_data_get_facility_by_line_ {
|
|
line_t line;
|
|
} cc_service_data_get_facility_by_line_t;
|
|
|
|
typedef union cc_service_data_t_ {
|
|
cc_service_data_get_facility_by_line_t get_facility_by_line;
|
|
} cc_service_data_t;
|
|
|
|
|
|
typedef enum {
|
|
MEDIA_INTERFACE_UPDATE_NOT_REQUIRED,
|
|
MEDIA_INTERFACE_UPDATE_STARTED,
|
|
MEDIA_INTERFACE_UPDATE_IN_PROCESS
|
|
} dock_undock_event_t;
|
|
|
|
extern dock_undock_event_t g_dock_undock_event;
|
|
|
|
void cc_call_state(callid_t call_id, line_t line, cc_states_t state,
|
|
cc_state_data_t *data);
|
|
cc_rcs_t cc_call_action(callid_t call_id, line_t line, cc_actions_t action,
|
|
cc_action_data_t *data);
|
|
cc_rcs_t cc_call_service(callid_t call_id, line_t line, cc_services_t service,
|
|
cc_service_data_t *data);
|
|
void cc_call_attribute(callid_t call_id, line_t line, call_attr_t attr);
|
|
void cc_init(void);
|
|
void cc_free_msg_body_parts(cc_msgbody_info_t *msg_body);
|
|
void cc_free_msg_data(cc_msg_t *msg);
|
|
void cc_initialize_msg_body_parts_info(cc_msgbody_info_t *msg_body);
|
|
void cc_mv_msg_body_parts(cc_msgbody_info_t *dst_msg,
|
|
cc_msgbody_info_t *src_msg);
|
|
cc_rcs_t cc_cp_msg_body_parts(cc_msgbody_info_t *dst_msg,
|
|
cc_msgbody_info_t *src_msg);
|
|
void cc_mv_caller_id(cc_caller_id_t *dst_caller, cc_caller_id_t *src_caller);
|
|
//function that will be invoked by modules external to gsm:
|
|
|
|
int cc_is_cnf_call(callid_t call_id);
|
|
cc_transfer_mode_e cc_is_xfr_call(callid_t call_id);
|
|
|
|
extern cprBuffer_t cc_get_msg_buf(int min_size);
|
|
extern const char *cc_feature_name(cc_features_t id);
|
|
extern const char *cc_msg_name(cc_msgs_t id);
|
|
extern const char *cc_cause_name(cc_causes_t id);
|
|
extern void cc_media_update_native_video_support(boolean val);
|
|
extern void cc_media_update_video_cap(boolean val);
|
|
extern void cc_media_update_native_video_txcap(boolean val);
|
|
extern cc_boolean cc_media_isTxCapEnabled();
|
|
extern cc_boolean cc_media_isVideoCapEnabled();
|
|
extern void cc_media_setVideoAutoTxPref(cc_boolean txPref);
|
|
extern cc_boolean cc_media_getVideoAutoTxPref();
|
|
#endif
|