637 lines
13 KiB
C
637 lines
13 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 XML_PARSER_DEFINES_H
|
|
#define XML_PARSER_DEFINES_H
|
|
|
|
#include "sll_lite.h"
|
|
#include "cc_constants.h"
|
|
|
|
|
|
/**
|
|
* In general, when a parser constructs a xml string,
|
|
* it should translate the enum to cooresponding string
|
|
* value that is defined in the accompanied xsd files.
|
|
*/
|
|
/**
|
|
* Define the state values
|
|
*/
|
|
typedef enum {
|
|
XML_STATE_PARTIAL = 0, //Encode as "partial"
|
|
XML_STATE_FULL //"full"
|
|
} xml_state_t;
|
|
|
|
/**
|
|
* Define the call orientation
|
|
*/
|
|
typedef enum {
|
|
XML_CALL_ORIENTATION_UNSPECIFIED = 0,
|
|
XML_CALL_ORIENTATION_TO,
|
|
XML_CALL_ORIENTATION_FROM
|
|
} xml_call_orientation_t;
|
|
|
|
/**
|
|
* Define the call lock status
|
|
*/
|
|
typedef enum {
|
|
XML_CALLLOCK_UNLOCKED = 0,
|
|
XML_CALLLOCK_LOCKED,
|
|
XML_CALLLOCK_REMOTE_LOCKED
|
|
} xml_calllock_t;
|
|
|
|
/**
|
|
* Define the direction values
|
|
*/
|
|
typedef enum {
|
|
XML_DIRECTION_INITIATOR = 0,
|
|
XML_DIRECTION_RECIPIENT
|
|
} xml_direction_t;
|
|
|
|
/**
|
|
* Define the event values
|
|
*/
|
|
typedef enum {
|
|
XML_EVENT_CANCELLED = 0,
|
|
XML_EVENT_REJECTED,
|
|
XML_EVENT_REPLACED,
|
|
XML_EVENT_LOCAL_BYE,
|
|
XML_EVENT_REMOTE_BYE,
|
|
XML_EVENT_ERROR,
|
|
XML_EVENT_TIMEOUT
|
|
} xml_event_t;
|
|
|
|
/**
|
|
* Define the yes or no values
|
|
*/
|
|
typedef enum {
|
|
XML_NO = 0,
|
|
XML_YES,
|
|
XML_NONEAPPLICABLE //"na"
|
|
} xml_yes_no_t;
|
|
|
|
/**
|
|
* Define the on or off value
|
|
*/
|
|
typedef enum {
|
|
XML_OFF = 0,
|
|
XML_ON
|
|
} xml_on_off_t;
|
|
|
|
/**
|
|
* Define the true or false values
|
|
*/
|
|
typedef enum {
|
|
XML_FALSE = 0,
|
|
XML_TRUE
|
|
} xml_true_false_t;
|
|
|
|
/**
|
|
* Define the line key events
|
|
*/
|
|
typedef enum {
|
|
XML_LINE_KEY_EVENT_LINE = 0,
|
|
XML_LINE_KEY_EVENT_SPEEDDIAL
|
|
} xml_line_key_event_t;
|
|
|
|
/**
|
|
* Define the persist types
|
|
*/
|
|
typedef enum {
|
|
XML_PERSIST_TYPE_ONE_SHOT = 0,
|
|
XML_PERSIST_TYPE_PERSIST,
|
|
XML_PERSIST_TYPE_SINGLE_NOTIFY
|
|
} xml_persist_type_t;
|
|
|
|
/**
|
|
* Define the soft key invoke type
|
|
*/
|
|
typedef enum {
|
|
XML_SKEY_INVOKE_EXPLICIT = 0,
|
|
XML_SKEY_NVOKE_IMPLICIT
|
|
} xml_skey_invoke_t;
|
|
|
|
/**
|
|
* Define the soft key event data
|
|
*/
|
|
typedef enum {
|
|
XML_SKEY_EVENT_UNDEFINED = 0,
|
|
XML_SKEY_EVENT_REDIAL,
|
|
XML_SKEY_EVENT_NEWCALL,
|
|
XML_SKEY_EVENT_HOLD,
|
|
XML_SKEY_EVENT_TRANSFER,
|
|
XML_SKEY_EVENT_CFWDALL, //5
|
|
XML_SKEY_EVENT_CFWDBUSY,
|
|
XML_SKEY_EVENT_CFWDNOANSWER,
|
|
XML_SKEY_EVENT_BACKSPACE,
|
|
XML_SKEY_EVENT_ENDCALL,
|
|
XML_SKEY_EVENT_RESUME, //10
|
|
XML_SKEY_EVENT_ANSWER,
|
|
XML_SKEY_EVENT_INFO,
|
|
XML_SKEY_EVENT_CONFERENCE,
|
|
XML_SKEY_EVENT_JION, //15
|
|
XML_SKEY_EVENT_REMVOVE_LAST_CONF_PARTICIPANT,
|
|
XML_SKEY_EVENT_DIRECT_XFER,
|
|
XML_SKEY_EVENT_SELECT, //25
|
|
XML_SKEY_EVENT_TRANSFER_TO_VOICE_MAIL,
|
|
XML_SKEY_EVENT_SAC,
|
|
XML_SKEY_EVENT_UNSELECT, //35
|
|
XML_SKEY_EVENT_CANCEL,
|
|
XML_SKEY_EVENT_COPNFERENCE_DETAILS,//40
|
|
XML_SKEY_EVENT_TRASFMG = 65,
|
|
XML_SKEY_EVENT_INTRCPT,
|
|
XML_SKEY_EVENT_SETWTCH,
|
|
XML_SKEY_EVENT_TRNSFVM,
|
|
XML_SKEY_EVENT_TRNSFAS
|
|
} xml_skey_event_code_t;
|
|
|
|
/**
|
|
* Define the map for station sequence mapping
|
|
*/
|
|
typedef enum {
|
|
XML_STATION_SEQ_FIRST = 0,
|
|
XML_STATION_SEQ_MORE,
|
|
XML_STATION_SEQ_LAST
|
|
} xml_stataionseq_t;
|
|
|
|
/**
|
|
* Define the hold reasons
|
|
*/
|
|
typedef enum {
|
|
XML_HOLD_REASON_NONE = 0,
|
|
XML_HOLD_REASON_TRANSFER,
|
|
XML_HOLD_REASON_CONFERENCE,
|
|
XML_HOLD_REASON_INTERNAL
|
|
} xml_hold_reason_t;
|
|
|
|
/**
|
|
* Define the lamp status
|
|
*/
|
|
typedef enum {
|
|
XML_LAMP_STATE_OFF = 0,
|
|
XML_LAMP_STATE_ON,
|
|
XML_LAMP_STATE_BLINK,
|
|
XML_LAMP_STATE_FLASH
|
|
} xml_lamp_state_t;
|
|
|
|
/**
|
|
* Define the lamp type
|
|
*/
|
|
typedef enum {
|
|
XML_LAMP_TYPE_LINE = 1,
|
|
XML_LAMP_TYPE_VOICE_MAIL
|
|
} xml_lamp_type_t;
|
|
|
|
/**
|
|
* Define the image down load method
|
|
*/
|
|
typedef enum {
|
|
XML_IMAGE_DOWNLOAD_METHOD_TFTP = 1,
|
|
XML_IMAGE_DOWNLAOD_METHOD_HTTP,
|
|
XML_IMAGE_DOWNLOAD_METHOD_PPID
|
|
} xml_image_dl_method_t;
|
|
|
|
/**
|
|
* Define the image download failure reason
|
|
*/
|
|
typedef enum {
|
|
XML_IMAGE_DOWNLOAD_FAILURE_REASON_DISKFULL = 1,
|
|
XML_IMAGE_DOWNLOAD_FAILURE_REASON_IMAGE_NOT_AVAILABLE,
|
|
XML_IMAGE_DOWNLOAD_FAILURE_REASON_ACCESS_VIOLATION
|
|
} xml_image_dl_failure_reason_t;
|
|
|
|
typedef signed long xml_signed32;
|
|
typedef unsigned long xml_unsigned32;
|
|
typedef unsigned short xml_unsigned16;
|
|
typedef unsigned char xml_unsigned8;
|
|
|
|
// start of copy from ccsip_eventbodies.h
|
|
typedef struct State {
|
|
xml_signed32 event;
|
|
xml_signed32 code;
|
|
xml_signed32 state;
|
|
} State;
|
|
|
|
typedef struct Replaces {
|
|
char call_id[128];
|
|
char local_tag[64];
|
|
char remote_tag[64];
|
|
} Replaces;
|
|
|
|
typedef struct RefferedBy {
|
|
char display_name[64];
|
|
char uri[64];
|
|
} RefferedBy;
|
|
|
|
typedef struct RouteSet {
|
|
char hop[5][16];
|
|
} RouteSet;
|
|
|
|
typedef struct Identity {
|
|
char display_name[64];
|
|
char uri[64];
|
|
} Identity;
|
|
|
|
typedef struct Param {
|
|
char pname[32];
|
|
char pval[32];
|
|
} Param;
|
|
|
|
typedef struct Target {
|
|
Param param[4];
|
|
char uri[64];
|
|
} Target;
|
|
|
|
typedef struct SessionDescription {
|
|
char type[32];
|
|
} SessionDescription;
|
|
|
|
typedef struct Participant {
|
|
Identity identity;
|
|
Target target;
|
|
SessionDescription session_description;
|
|
xml_unsigned16 cseq;
|
|
} Participant;
|
|
|
|
typedef struct primCall {
|
|
char call_id[128];
|
|
char local_tag[64];
|
|
char remote_tag[64];
|
|
xml_signed32 h_reason;
|
|
} primCall;
|
|
|
|
typedef struct callFeature {
|
|
char cfwdall_set[128];
|
|
char cfwdall_clear[128];
|
|
} callFeature;
|
|
|
|
typedef struct Stream {
|
|
char reverse[16];
|
|
} Stream;
|
|
|
|
typedef struct Regex {
|
|
char regexData[32];
|
|
char tag[32];
|
|
char pre[32];
|
|
} Regex;
|
|
|
|
typedef struct Pattern {
|
|
xml_signed32 flush;
|
|
Regex regex;
|
|
xml_signed32 persist;
|
|
xml_unsigned32 interdigittimer;
|
|
xml_unsigned32 criticaldigittimer;
|
|
xml_unsigned32 extradigittimer;
|
|
xml_unsigned16 longhold;
|
|
xml_unsigned8 longrepeat;
|
|
xml_unsigned8 nopartial;
|
|
char enterkey[8];
|
|
} Pattern;
|
|
|
|
typedef struct KPMLRequest {
|
|
Stream stream;
|
|
Pattern pattern;
|
|
char version[16];
|
|
} KPMLRequest;
|
|
|
|
typedef struct KPMLResponse {
|
|
char version[16];
|
|
char code[16];
|
|
char text[16];
|
|
xml_unsigned8 suppressed;
|
|
char forced_flush[16];
|
|
char digits[16];
|
|
char tag[16];
|
|
} KPMLResponse;
|
|
|
|
typedef struct dialogID {
|
|
char callid[128];
|
|
char localtag[64];
|
|
char remotetag[64];
|
|
} dialogID;
|
|
|
|
typedef struct consultDialogID {
|
|
char callid[128];
|
|
char localtag[64];
|
|
char remotetag[64];
|
|
} consultDialogID;
|
|
|
|
typedef struct joindialogID {
|
|
char callid[128];
|
|
char localtag[64];
|
|
char remotetag[64];
|
|
} joindialogID;
|
|
|
|
typedef struct reg_contact_t {
|
|
char Register[16];
|
|
char Unregister[16];
|
|
xml_unsigned32 line;
|
|
xml_unsigned32 low;
|
|
xml_unsigned32 high;
|
|
xml_signed32 all;
|
|
} reg_contact_t;
|
|
|
|
|
|
typedef struct remotecc {
|
|
char status[16];
|
|
} remotecc;
|
|
|
|
typedef struct combine {
|
|
xml_unsigned16 max_bodies;
|
|
remotecc remotecc;
|
|
char service_control[16];
|
|
} combine;
|
|
|
|
typedef struct dialog {
|
|
char usage[64];
|
|
char unot[16];
|
|
char sub[16];
|
|
} dialog;
|
|
|
|
typedef struct presence {
|
|
char usage[64];
|
|
char unot[16];
|
|
char sub[16];
|
|
} presence;
|
|
|
|
typedef struct voice_msg_t {
|
|
xml_signed32 newCount;
|
|
xml_signed32 oldCount;
|
|
} voice_msg_t;
|
|
|
|
typedef struct voice_msg_hp_t {
|
|
xml_signed32 newCount;
|
|
xml_signed32 oldCount;
|
|
} voice_msg_hp_t;
|
|
|
|
typedef struct fax_msg_t {
|
|
xml_signed32 newCount;
|
|
xml_signed32 oldCount;
|
|
} fax_msg_t;
|
|
|
|
typedef struct fax_msg_hp_t {
|
|
xml_signed32 newCount;
|
|
xml_signed32 oldCount;
|
|
} fax_msg_hp_t;
|
|
|
|
typedef struct emwi_t {
|
|
voice_msg_t voice_msg;
|
|
voice_msg_hp_t voice_msg_hp;
|
|
fax_msg_t fax_msg;
|
|
fax_msg_hp_t fax_msg_hp;
|
|
} emwi_t;
|
|
|
|
typedef struct cfwdallupdate {
|
|
char fwdAddress[256];
|
|
} cfwdallupdate;
|
|
|
|
typedef struct Contact_t {
|
|
xml_unsigned32 line;
|
|
xml_unsigned32 high;
|
|
xml_unsigned32 low;
|
|
xml_signed32 all;
|
|
xml_signed32 mwi;
|
|
emwi_t emwi;
|
|
cfwdallupdate cfwdallupdate;
|
|
} Contact_t;
|
|
|
|
typedef struct dialog_t {
|
|
char usage[64];
|
|
char unot[12];
|
|
char sub[12];
|
|
} dialog_t;
|
|
|
|
typedef struct presence_t {
|
|
char usage[64];
|
|
char unot[12];
|
|
char sub[12];
|
|
} presence_t;
|
|
|
|
typedef struct options_ans_t {
|
|
combine combine;
|
|
dialog_t dialog;
|
|
presence_t presence;
|
|
} options_ans_t;
|
|
|
|
typedef struct PersonStatusStruct {
|
|
char basic[32];
|
|
} PersonStatusStruct;
|
|
|
|
typedef struct ActivitiesStruct {
|
|
char alerting[12];
|
|
char onThePhone[12];
|
|
char busy[12];
|
|
char away[12];
|
|
char meeting[12];
|
|
} ActivitiesStruct;
|
|
|
|
typedef struct PersonStruct {
|
|
char id[256];
|
|
PersonStatusStruct personStatus;
|
|
ActivitiesStruct activities;
|
|
} PersonStruct;
|
|
|
|
typedef struct StatusStruct {
|
|
char basic[32];
|
|
ActivitiesStruct activities;
|
|
} StatusStruct;
|
|
|
|
typedef struct TupleStruct {
|
|
char id[256];
|
|
StatusStruct status;
|
|
char contact[1][256];
|
|
char note[1][1024];
|
|
} TupleStruct;
|
|
|
|
typedef struct PresenceRPIDStruct {
|
|
char entity[256];
|
|
PersonStruct person;
|
|
TupleStruct tuple[1];
|
|
char note[5][1024];
|
|
} PresenceRPIDStruct;
|
|
|
|
typedef struct sipProfile {
|
|
xml_unsigned16 kpml_val;
|
|
} sipProfile;
|
|
|
|
typedef struct ConfigApp_req_data_t {
|
|
sipProfile sip_profile;
|
|
} ConfigApp_req_data_t;
|
|
|
|
typedef struct to_encoder_t {
|
|
xml_unsigned32 picture_fast_update;
|
|
} to_encoder_t;
|
|
|
|
typedef struct vc_primivite_t {
|
|
to_encoder_t to_encoder;
|
|
char stream_id[128];
|
|
} vc_primivite_t;
|
|
|
|
typedef struct Media_Control_t {
|
|
vc_primivite_t vc_primitive;
|
|
char general_error[128];
|
|
} Media_Control_t;
|
|
|
|
// end of copy from ccsip_eventbodies.h
|
|
|
|
typedef struct Presence_ext_t_ {
|
|
PresenceRPIDStruct presence_body;
|
|
/*
|
|
* Some of the tags' mere presence in the rpid document has a meaning. These tags
|
|
* may not contain any value between starting and ending tag. So we need a way to
|
|
* indicate the presence of a tag. We will use the following boolean memeber fields.
|
|
*/
|
|
boolean onThePhone;
|
|
boolean busy;
|
|
boolean away;
|
|
boolean meeting;
|
|
boolean alerting;
|
|
} Presence_ext_t;
|
|
|
|
|
|
typedef enum {
|
|
EVENT_DATA_INVALID = 0,
|
|
EVENT_DATA_KPML_REQUEST,
|
|
EVENT_DATA_KPML_RESPONSE,
|
|
EVENT_DATA_REMOTECC_REQUEST,
|
|
EVENT_DATA_PRESENCE,
|
|
EVENT_DATA_DIALOG,
|
|
EVENT_DATA_RAW,
|
|
EVENT_DATA_CONFIGAPP_REQUEST,
|
|
EVENT_DATA_MEDIA_INFO
|
|
} ccsip_event_data_type_e;
|
|
|
|
typedef struct {
|
|
char *data;
|
|
uint32_t length;
|
|
} raw_data_t;
|
|
|
|
typedef struct {
|
|
Media_Control_t media_control;
|
|
uint32_t picture_fast_update;
|
|
} media_control_ext_t;
|
|
|
|
#define TAG_LENGTH 16
|
|
typedef struct {
|
|
char current_method[TAG_LENGTH];
|
|
char hookstate[TAG_LENGTH];
|
|
char presence[TAG_LENGTH];
|
|
} Options_ind_t;
|
|
|
|
|
|
|
|
typedef struct rcc_response_t {
|
|
xml_unsigned16 code;
|
|
char reason[128];
|
|
xml_unsigned32 applicationid;
|
|
xml_unsigned32 transactionid;
|
|
xml_signed32 stationsequence;
|
|
xml_unsigned16 displaypriority;
|
|
xml_unsigned16 appinstance;
|
|
xml_unsigned16 linenumber;
|
|
xml_unsigned32 routingid;
|
|
xml_unsigned32 confid;
|
|
char callID[128];
|
|
options_ans_t options_ind;
|
|
} rcc_response_t;
|
|
|
|
typedef enum {
|
|
RCC_NULL_REQ = 0,
|
|
RCC_INITCALL_REQ = 1,
|
|
RCC_MONITORCALL_REQ,
|
|
RCC_DIALCALL_REQ,
|
|
RCC_DIALDTMF_REQ,
|
|
RCC_ANSCALL_REQ,
|
|
RCC_DISCCALL_REQ,
|
|
RCC_XFERSETUP_REQ,
|
|
RCC_XFERCOMPLETE_REQ,
|
|
RCC_CONFSETUP_REQ,
|
|
RCC_CONFCOMPLETE_REQ,
|
|
RCC_HOLD_REQ,
|
|
RCC_HOLDRETRIEVE_REQ,
|
|
RCC_DATAPASSTHROUGH_REQ,
|
|
RCC_CFWDALL_REQ,
|
|
RCC_LINEKEY_EVT,
|
|
RCC_STATUS_UPDATE_REQ,
|
|
RCC_SET_IDLE_STATUS_PROMPT_REQ,
|
|
RCC_PLAY_TONE_REQ,
|
|
RCC_STOP_TONE_REQ,
|
|
RCC_CALL_SELECT_REQ,
|
|
RCC_SOFTKEY_EVT,
|
|
RCC_LINE_RINGER_SET_REQ,
|
|
RCC_HOLD_REVERSION_REQ,
|
|
RCC_LAMP_CONTROL_REQ,
|
|
RCC_LINEKEY_UPDATE,
|
|
RCC_BULKREGISTER_REQ,
|
|
RCC_OPTIONS_IND,
|
|
RCC_BULK_UPDATE,
|
|
RCC_CALL_JOIN_REQ,
|
|
RCC_NOTIFY_REQ,
|
|
RCC_MONITOR_UPDATE_REQ,
|
|
RCC_MAX_REQ
|
|
} rcc_request_type_t;
|
|
|
|
typedef struct rcc_softkey_event_msg_t {
|
|
xml_signed32 softkeyevent;
|
|
dialogID dialogid;
|
|
xml_unsigned16 linenumber;
|
|
xml_unsigned16 participantnum;
|
|
dialogID consultdialogid;
|
|
xml_unsigned8 state;
|
|
dialogID joindialogid;
|
|
//eventData eventdata;
|
|
char userdata[32];
|
|
xml_unsigned16 soktkeyid;
|
|
xml_unsigned16 applicationid;
|
|
} rcc_softkey_event_msg_t;
|
|
|
|
|
|
typedef struct RCC_req_data {
|
|
rcc_softkey_event_msg_t rcc_softkey_event_msg;
|
|
} RCC_req_data;
|
|
|
|
typedef struct rcc_int_t_ {
|
|
RCC_req_data rcc_int;
|
|
// User added fields
|
|
xml_unsigned8 iterations;
|
|
cc_lineid_t line;
|
|
cc_callid_t gsm_id;
|
|
cc_callid_t consult_gsm_id;
|
|
cc_callid_t join_gsm_id;
|
|
rcc_request_type_t rcc_request_type;
|
|
} RCC_data;
|
|
|
|
|
|
// Data for event generation
|
|
typedef struct ccsip_event_data_t_ {
|
|
struct ccsip_event_data_t_ *next;
|
|
ccsip_event_data_type_e type;
|
|
union {
|
|
KPMLResponse kpml_response;
|
|
KPMLRequest kpml_request;
|
|
RCC_data remotecc_data;
|
|
rcc_response_t remotecc_data_response;
|
|
Options_ind_t options_ind;
|
|
Presence_ext_t presence_rpid;
|
|
raw_data_t raw_data; // used for cmxml and other body types
|
|
ConfigApp_req_data_t configapp_data;
|
|
media_control_ext_t media_control_data;
|
|
} u;
|
|
} ccsip_event_data_t;
|
|
|
|
|
|
/**
|
|
* Request to allocate memory for external xml parser
|
|
* @param [in] size ofrequested memory
|
|
* @return pointer to memory allocated.
|
|
*/
|
|
void *ccAllocXML(cc_size_t size);
|
|
|
|
/**
|
|
* Free xml memory
|
|
* @param [in] mem - memory to free
|
|
* @return void
|
|
*/
|
|
void ccFreeXML(void *mem);
|
|
#endif
|