freeswitch/libs/sipcc/core/includes/ccSession.h

208 lines
5.2 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 _CCSESSION_H_
#define _CCSESSION_H_
#include "session.h"
#include "sessuri.h"
#define SID_TYPE_SHIFT 28
#define SID_LINE_SHIFT 16
#define GET_SESS_TYPE(x) ( (x & 0xF0000000) >> SID_TYPE_SHIFT )
#define GET_LINEID(x) (line_t)( (x & 0xFFF0000) >> SID_LINE_SHIFT )
#define GET_CALLID(x) (callid_t)(x & 0xFFFF)
/**
* ccSessionProviderCmd
* CallControl Provider Management Interface
* Called by Application to issue cmds to sipStack
*
* @param data - command and data
* data->cmd - see Session Provider Commands in session.h
* data->cmdData.ccData.reason - reason for SHUTDOWN/UNREGISTER_ALL_LINES CMD
CC_CAUSE_NORMAL/CC_CAUSE_NONE
* data->cmdData.ccData.reason_info - Descriptive stringa "notused"
*
* @return none
*
*/
void ccSessionProviderCmd(sessionProvider_cmd_t *data);
/**
* ccSessionProviderState
* Method to report provider state updates to Application
*
* @param state - indicates the Session Provider state CCApp_states_t
* @param data - ccProvider_state_t indicating
* data->stateData.ccData.mode - REGMODE CCM
* data->stateData.ccData.cause - FAILOVER/FALLBACK
*
* @return none
*
*/
void ccSessionProviderState(unsigned int state, ccProvider_state_t *data);
/**
* ccSessionCmd
* Method to Handle session lifecycle command such as realize, start etc.
*
* @param sCmd - session liefcycle command
* sCmd->cmd - REQUEST CMD
* sCmd->sessID - session ID
*
* @return none
*
*/
void ccSessionCmd (sessionCmd_t *sCmd);
/**
* ccCreateSession
*
* Called by Application to create a new session
*
* @param param - uri_t
* param->param.call_session_param.line_id - line on which to create the session
* @return ccSession_id_t - id of the session created
*/
session_id_t ccCreateSession(uri_t *param);
/**
* ccCloseSession
*
* Called by Application to close a session
*
* @param sess_id - ID of the session to be closed
*
* @return 0 success -1 failure
*
*/
int ccCloseSession(session_id_t sess_id);
/* Need to document IDs and data for the following 4 methods */
/**
* ccInvokeFeature
*
* Called by Application to invoke feature on session
*
* @param featData - featID and Additional info if needed for the feature
*
* @return none
*
*/
void ccInvokeFeature(session_feature_t *featData);
/**
* ccInvokeProviderFeature
*
* Called by Application to invoke device specific features
*
* @param featData - Additional info if needed for the feature
*
* @return none
*
*/
void ccInvokeProviderFeature(session_feature_t *featData);
/**
* ccSessionUpdate
*
* Called by sipstack to update session state and data
*
* @param eventID - ID of the event updating the session data
* @param session_data - event specific data
*
* @return none
*
*/
void ccSessionUpdate(session_update_t *session);
/**
* ccFeatureUpdate
*
* Called by sipstack to update feature state and data
*
* @param featureID - ID of the feature updated
* @param session_data - feature specific data
*
* @return none
*
*/
void ccFeatureUpdate(feature_update_t *session);
/***** Internal APIs below this line ***************/
/**
* ccCreateSession
*
* Called to create a CC session
*
* @param param - ccSession_create_param_t
* Contains the type of session and specific data
*
* @return ccSession_id_t - id of the session created
*/
session_id_t createSessionId(line_t line, callid_t call);
void platform_sync_cfg_vers (char *cfg_ver, char *dp_ver, char *softkey_ver);
/********************************************************************************/
/* Misc getter/setter function to get set the following */
#define PROPERTY_ID_MWI 1 // per line
#define PROPERTY_ID_TIME 2 // unsigned long
#define PROPERTY_ID_KPML 3
#define PROPERTY_ID_REGREASON 4
#define PROPERTY_ID_SPKR_HDST 5 1
void setIntProperty(unsigned int id, int val);
int getIntProperty(unsigned int id);
void setStrProperty(unsigned int id, char * val);
char * getStrProperty(unsigned int id);
/* Preserved API's from TNP Platform */
char *ccSetDP(const char *dp_file_name);
// update_label_n_speed_dial method here
void setPropertyCacheBoolean(int cfg_id, int bool_value);
void setPropertyCacheInteger(int cfg_id, int int_value);
void setPropertyCacheString(int cfg_id, const char *string_value);
void setPropertyCacheByte(int cfg_id, char byte_value);
void setPropertyCacheByteArray(int cfg_id, char *byte_value, int length);
/* BLF */
void ccBLFSubscribe(int request_id, int duration, const char *watcher,
const char *presentity, int app_id, int feature_mask);
void ccBLFUnsubscribe(int request_id);
void ccBLFUnsubscribeAll();
void blf_notification(int request_id, int status, int app_id);
/**********************************************************************
MID_JPlatUi_ui_log_status_msg, Ask RCDN team if log is changing?
**********************************************************************/
#endif