diff -r 000000000000 -r 6474c204b198 media/webrtc/signaling/src/sipcc/include/xml_parser_defines.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/media/webrtc/signaling/src/sipcc/include/xml_parser_defines.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,636 @@ +/* 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