freeswitch/libs/sipcc/core/ccapp/CCProvider.h

145 lines
3.9 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 __CCPROVIDER_H__
#define __CCPROVIDER_H__
#include "cpr_types.h"
#include "cpr_ipc.h"
#include "cpr_socket.h"
#include "cpr_memory.h"
#include "cpr_errno.h"
#include "cpr_in.h"
#include "cpr_rand.h"
#include "cpr_string.h"
#include "cpr_threads.h"
#include "phone_types.h"
#include "session.h"
#include "cc_constants.h"
#include "ccapi_types.h"
#include "conf_roster.h"
#define CC_DEVICE_ID 0
#include "ccapi_service.h"
typedef enum {
FAILOVER,
FALLBACK,
NO_CUCM_SRST_AVAILABLE,
NONE_AVAIL,
} Cucm_mode_t;
typedef struct
{
cc_reg_state_t state;
Cucm_mode_t cucm_mode;
cc_boolean inPreservation;
session_id_t preservID;
unsigned int mode;
unsigned int cause;
} CCAppGlobal_t;
typedef struct cc_call_log_t_ {
string_t localPartyName;
string_t localPartyNumber;
string_t remotePartyName[2];
string_t remotePartyNumber[2];
string_t altPartyNumber[2];
cc_log_disposition_t logDisp;
cc_call_state_t callState;
time_t startTime;
cc_uint32_t duration;
} cc_call_log_t;
typedef struct cc_call_info_t_{
uint32_t ref_count;
session_id_t sess_id;
line_t line;
callid_t id;
uint16_t inst;
cc_call_state_t state;
cc_call_attr_t attr;
cc_call_type_t type;
cc_call_security_t security;
cc_call_policy_t policy;
unsigned int callref;
int isSelected;
unsigned int log_disp;
string_t clg_name;
string_t clg_number;
string_t alt_number;
string_t cld_name;
string_t cld_number;
string_t orig_called_name;
string_t orig_called_number;
string_t last_redir_name;
string_t last_redir_number;
string_t plcd_name;
string_t plcd_number;
string_t status;
char gci[CC_MAX_GCID];
cc_int32_t cause;
cc_int32_t vid_dir;
cc_int32_t vid_offer;
cc_boolean is_conf;
cc_boolean ringer_start;
cc_boolean ringer_once;
cc_int32_t ringer_mode;
cc_boolean allowed_features[CCAPI_CALL_CAP_MAX];
cc_string_t info_package;
cc_string_t info_type;
cc_string_t info_body;
cc_call_log_t call_log;
cc_boolean audio_mute;
cc_boolean video_mute;
cc_call_conference_Info_t call_conference;
cc_string_t sdp;
unsigned int media_stream_track_id;
unsigned int media_stream_id;
const cc_media_constraints_t* cc_constraints;
} session_data_t;
typedef enum {
NO_ACTION=0,
RESET_ACTION,
RESTART_ACTION,
RE_REGISTER_ACTION,
STOP_ACTION,
DESTROY_ACTION
} cc_action_t;
#define CCAPP_SERVICE_CMD 1
#define CCAPP_CREATE_SESSION 2
#define CCAPP_CLOSE_SESSION 3
#define CCAPP_INVOKE_FEATURE 4
#define CCAPP_SESSION_UPDATE 5
#define CCAPP_FEATURE_UPDATE 6
#define CCAPP_UPDATELINES 7
#define CCAPP_FAILOVER_IND 8
#define CCAPP_FALLBACK_IND 9
#define CCAPP_MODE_NOTIFY 10
#define CCAPP_SHUTDOWN_ACK 11
#define CCAPP_REG_ALL_FAIL 12
#define CCAPP_INVOKEPROVIDER_FEATURE 13
#define CCAPP_SEND_INFO 14
#define CCAPP_RCVD_INFO 15
#define CCAPP_LOGOUT_RESET 16
#define CCAPP_THREAD_UNLOAD 17
#define CCAPP_SESSION_MGMT 18
extern cpr_status_e ccappTaskPostMsg(unsigned int msgId, void * data, uint16_t len, int appId);
extern void ccappSyncSessionMgmt(session_mgmt_t *sessMgmt);
extern void CCApp_task(void * arg);
extern void *findhash(unsigned int key);
extern session_id_t createSessionId(line_t line, callid_t call);
extern void getLineIdAndCallId (line_t *line_id, callid_t *call_id);
extern void ccp_handler(void* msg, int type);
extern session_data_t * getDeepCopyOfSessionData(session_data_t *data);
extern void cleanSessionData(session_data_t *data);
extern cc_call_handle_t ccappGetConnectedCall();
#endif