1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/webrtc/signaling/src/sipcc/include/xml_parser_defines.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,636 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef XML_PARSER_DEFINES_H 1.9 +#define XML_PARSER_DEFINES_H 1.10 + 1.11 +#include "sll_lite.h" 1.12 +#include "cc_constants.h" 1.13 + 1.14 + 1.15 +/** 1.16 + * In general, when a parser constructs a xml string, 1.17 + * it should translate the enum to cooresponding string 1.18 + * value that is defined in the accompanied xsd files. 1.19 + */ 1.20 +/** 1.21 + * Define the state values 1.22 + */ 1.23 +typedef enum { 1.24 + XML_STATE_PARTIAL = 0, //Encode as "partial" 1.25 + XML_STATE_FULL //"full" 1.26 +} xml_state_t; 1.27 + 1.28 +/** 1.29 + * Define the call orientation 1.30 + */ 1.31 +typedef enum { 1.32 + XML_CALL_ORIENTATION_UNSPECIFIED = 0, 1.33 + XML_CALL_ORIENTATION_TO, 1.34 + XML_CALL_ORIENTATION_FROM 1.35 +} xml_call_orientation_t; 1.36 + 1.37 +/** 1.38 + * Define the call lock status 1.39 + */ 1.40 +typedef enum { 1.41 + XML_CALLLOCK_UNLOCKED = 0, 1.42 + XML_CALLLOCK_LOCKED, 1.43 + XML_CALLLOCK_REMOTE_LOCKED 1.44 +} xml_calllock_t; 1.45 + 1.46 +/** 1.47 + * Define the direction values 1.48 + */ 1.49 +typedef enum { 1.50 + XML_DIRECTION_INITIATOR = 0, 1.51 + XML_DIRECTION_RECIPIENT 1.52 +} xml_direction_t; 1.53 + 1.54 +/** 1.55 + * Define the event values 1.56 + */ 1.57 +typedef enum { 1.58 + XML_EVENT_CANCELLED = 0, 1.59 + XML_EVENT_REJECTED, 1.60 + XML_EVENT_REPLACED, 1.61 + XML_EVENT_LOCAL_BYE, 1.62 + XML_EVENT_REMOTE_BYE, 1.63 + XML_EVENT_ERROR, 1.64 + XML_EVENT_TIMEOUT 1.65 +} xml_event_t; 1.66 + 1.67 +/** 1.68 + * Define the yes or no values 1.69 + */ 1.70 +typedef enum { 1.71 + XML_NO = 0, 1.72 + XML_YES, 1.73 + XML_NONEAPPLICABLE //"na" 1.74 +} xml_yes_no_t; 1.75 + 1.76 +/** 1.77 + * Define the on or off value 1.78 + */ 1.79 +typedef enum { 1.80 + XML_OFF = 0, 1.81 + XML_ON 1.82 +} xml_on_off_t; 1.83 + 1.84 +/** 1.85 + * Define the true or false values 1.86 + */ 1.87 +typedef enum { 1.88 + XML_FALSE = 0, 1.89 + XML_TRUE 1.90 +} xml_true_false_t; 1.91 + 1.92 +/** 1.93 + * Define the line key events 1.94 + */ 1.95 +typedef enum { 1.96 + XML_LINE_KEY_EVENT_LINE = 0, 1.97 + XML_LINE_KEY_EVENT_SPEEDDIAL 1.98 +} xml_line_key_event_t; 1.99 + 1.100 +/** 1.101 + * Define the persist types 1.102 + */ 1.103 +typedef enum { 1.104 + XML_PERSIST_TYPE_ONE_SHOT = 0, 1.105 + XML_PERSIST_TYPE_PERSIST, 1.106 + XML_PERSIST_TYPE_SINGLE_NOTIFY 1.107 +} xml_persist_type_t; 1.108 + 1.109 +/** 1.110 + * Define the soft key invoke type 1.111 + */ 1.112 +typedef enum { 1.113 + XML_SKEY_INVOKE_EXPLICIT = 0, 1.114 + XML_SKEY_NVOKE_IMPLICIT 1.115 +} xml_skey_invoke_t; 1.116 + 1.117 +/** 1.118 + * Define the soft key event data 1.119 + */ 1.120 +typedef enum { 1.121 + XML_SKEY_EVENT_UNDEFINED = 0, 1.122 + XML_SKEY_EVENT_REDIAL, 1.123 + XML_SKEY_EVENT_NEWCALL, 1.124 + XML_SKEY_EVENT_HOLD, 1.125 + XML_SKEY_EVENT_TRANSFER, 1.126 + XML_SKEY_EVENT_CFWDALL, //5 1.127 + XML_SKEY_EVENT_CFWDBUSY, 1.128 + XML_SKEY_EVENT_CFWDNOANSWER, 1.129 + XML_SKEY_EVENT_BACKSPACE, 1.130 + XML_SKEY_EVENT_ENDCALL, 1.131 + XML_SKEY_EVENT_RESUME, //10 1.132 + XML_SKEY_EVENT_ANSWER, 1.133 + XML_SKEY_EVENT_INFO, 1.134 + XML_SKEY_EVENT_CONFERENCE, 1.135 + XML_SKEY_EVENT_JION, //15 1.136 + XML_SKEY_EVENT_REMVOVE_LAST_CONF_PARTICIPANT, 1.137 + XML_SKEY_EVENT_DIRECT_XFER, 1.138 + XML_SKEY_EVENT_SELECT, //25 1.139 + XML_SKEY_EVENT_TRANSFER_TO_VOICE_MAIL, 1.140 + XML_SKEY_EVENT_SAC, 1.141 + XML_SKEY_EVENT_UNSELECT, //35 1.142 + XML_SKEY_EVENT_CANCEL, 1.143 + XML_SKEY_EVENT_COPNFERENCE_DETAILS,//40 1.144 + XML_SKEY_EVENT_TRASFMG = 65, 1.145 + XML_SKEY_EVENT_INTRCPT, 1.146 + XML_SKEY_EVENT_SETWTCH, 1.147 + XML_SKEY_EVENT_TRNSFVM, 1.148 + XML_SKEY_EVENT_TRNSFAS 1.149 +} xml_skey_event_code_t; 1.150 + 1.151 +/** 1.152 + * Define the map for station sequence mapping 1.153 + */ 1.154 +typedef enum { 1.155 + XML_STATION_SEQ_FIRST = 0, 1.156 + XML_STATION_SEQ_MORE, 1.157 + XML_STATION_SEQ_LAST 1.158 +} xml_stataionseq_t; 1.159 + 1.160 +/** 1.161 + * Define the hold reasons 1.162 + */ 1.163 +typedef enum { 1.164 + XML_HOLD_REASON_NONE = 0, 1.165 + XML_HOLD_REASON_TRANSFER, 1.166 + XML_HOLD_REASON_CONFERENCE, 1.167 + XML_HOLD_REASON_INTERNAL 1.168 +} xml_hold_reason_t; 1.169 + 1.170 +/** 1.171 + * Define the lamp status 1.172 + */ 1.173 +typedef enum { 1.174 + XML_LAMP_STATE_OFF = 0, 1.175 + XML_LAMP_STATE_ON, 1.176 + XML_LAMP_STATE_BLINK, 1.177 + XML_LAMP_STATE_FLASH 1.178 +} xml_lamp_state_t; 1.179 + 1.180 +/** 1.181 + * Define the lamp type 1.182 + */ 1.183 +typedef enum { 1.184 + XML_LAMP_TYPE_LINE = 1, 1.185 + XML_LAMP_TYPE_VOICE_MAIL 1.186 +} xml_lamp_type_t; 1.187 + 1.188 +/** 1.189 + * Define the image down load method 1.190 + */ 1.191 +typedef enum { 1.192 + XML_IMAGE_DOWNLOAD_METHOD_TFTP = 1, 1.193 + XML_IMAGE_DOWNLAOD_METHOD_HTTP, 1.194 + XML_IMAGE_DOWNLOAD_METHOD_PPID 1.195 +} xml_image_dl_method_t; 1.196 + 1.197 +/** 1.198 + * Define the image download failure reason 1.199 + */ 1.200 +typedef enum { 1.201 + XML_IMAGE_DOWNLOAD_FAILURE_REASON_DISKFULL = 1, 1.202 + XML_IMAGE_DOWNLOAD_FAILURE_REASON_IMAGE_NOT_AVAILABLE, 1.203 + XML_IMAGE_DOWNLOAD_FAILURE_REASON_ACCESS_VIOLATION 1.204 +} xml_image_dl_failure_reason_t; 1.205 + 1.206 +typedef signed long xml_signed32; 1.207 +typedef unsigned long xml_unsigned32; 1.208 +typedef unsigned short xml_unsigned16; 1.209 +typedef unsigned char xml_unsigned8; 1.210 + 1.211 +// start of copy from ccsip_eventbodies.h 1.212 +typedef struct State { 1.213 + xml_signed32 event; 1.214 + xml_signed32 code; 1.215 + xml_signed32 state; 1.216 +} State; 1.217 + 1.218 +typedef struct Replaces { 1.219 + char call_id[128]; 1.220 + char local_tag[64]; 1.221 + char remote_tag[64]; 1.222 +} Replaces; 1.223 + 1.224 +typedef struct RefferedBy { 1.225 + char display_name[64]; 1.226 + char uri[64]; 1.227 +} RefferedBy; 1.228 + 1.229 +typedef struct RouteSet { 1.230 + char hop[5][16]; 1.231 +} RouteSet; 1.232 + 1.233 +typedef struct Identity { 1.234 + char display_name[64]; 1.235 + char uri[64]; 1.236 +} Identity; 1.237 + 1.238 +typedef struct Param { 1.239 + char pname[32]; 1.240 + char pval[32]; 1.241 +} Param; 1.242 + 1.243 +typedef struct Target { 1.244 + Param param[4]; 1.245 + char uri[64]; 1.246 +} Target; 1.247 + 1.248 +typedef struct SessionDescription { 1.249 + char type[32]; 1.250 +} SessionDescription; 1.251 + 1.252 +typedef struct Participant { 1.253 + Identity identity; 1.254 + Target target; 1.255 + SessionDescription session_description; 1.256 + xml_unsigned16 cseq; 1.257 +} Participant; 1.258 + 1.259 +typedef struct primCall { 1.260 + char call_id[128]; 1.261 + char local_tag[64]; 1.262 + char remote_tag[64]; 1.263 + xml_signed32 h_reason; 1.264 +} primCall; 1.265 + 1.266 +typedef struct callFeature { 1.267 + char cfwdall_set[128]; 1.268 + char cfwdall_clear[128]; 1.269 +} callFeature; 1.270 + 1.271 +typedef struct Stream { 1.272 + char reverse[16]; 1.273 +} Stream; 1.274 + 1.275 +typedef struct Regex { 1.276 + char regexData[32]; 1.277 + char tag[32]; 1.278 + char pre[32]; 1.279 +} Regex; 1.280 + 1.281 +typedef struct Pattern { 1.282 + xml_signed32 flush; 1.283 + Regex regex; 1.284 + xml_signed32 persist; 1.285 + xml_unsigned32 interdigittimer; 1.286 + xml_unsigned32 criticaldigittimer; 1.287 + xml_unsigned32 extradigittimer; 1.288 + xml_unsigned16 longhold; 1.289 + xml_unsigned8 longrepeat; 1.290 + xml_unsigned8 nopartial; 1.291 + char enterkey[8]; 1.292 +} Pattern; 1.293 + 1.294 +typedef struct KPMLRequest { 1.295 + Stream stream; 1.296 + Pattern pattern; 1.297 + char version[16]; 1.298 +} KPMLRequest; 1.299 + 1.300 +typedef struct KPMLResponse { 1.301 + char version[16]; 1.302 + char code[16]; 1.303 + char text[16]; 1.304 + xml_unsigned8 suppressed; 1.305 + char forced_flush[16]; 1.306 + char digits[16]; 1.307 + char tag[16]; 1.308 +} KPMLResponse; 1.309 + 1.310 +typedef struct dialogID { 1.311 + char callid[128]; 1.312 + char localtag[64]; 1.313 + char remotetag[64]; 1.314 +} dialogID; 1.315 + 1.316 +typedef struct consultDialogID { 1.317 + char callid[128]; 1.318 + char localtag[64]; 1.319 + char remotetag[64]; 1.320 +} consultDialogID; 1.321 + 1.322 +typedef struct joindialogID { 1.323 + char callid[128]; 1.324 + char localtag[64]; 1.325 + char remotetag[64]; 1.326 +} joindialogID; 1.327 + 1.328 +typedef struct reg_contact_t { 1.329 + char Register[16]; 1.330 + char Unregister[16]; 1.331 + xml_unsigned32 line; 1.332 + xml_unsigned32 low; 1.333 + xml_unsigned32 high; 1.334 + xml_signed32 all; 1.335 +} reg_contact_t; 1.336 + 1.337 + 1.338 +typedef struct remotecc { 1.339 + char status[16]; 1.340 +} remotecc; 1.341 + 1.342 +typedef struct combine { 1.343 + xml_unsigned16 max_bodies; 1.344 + remotecc remotecc; 1.345 + char service_control[16]; 1.346 +} combine; 1.347 + 1.348 +typedef struct dialog { 1.349 + char usage[64]; 1.350 + char unot[16]; 1.351 + char sub[16]; 1.352 +} dialog; 1.353 + 1.354 +typedef struct presence { 1.355 + char usage[64]; 1.356 + char unot[16]; 1.357 + char sub[16]; 1.358 +} presence; 1.359 + 1.360 +typedef struct voice_msg_t { 1.361 + xml_signed32 newCount; 1.362 + xml_signed32 oldCount; 1.363 +} voice_msg_t; 1.364 + 1.365 +typedef struct voice_msg_hp_t { 1.366 + xml_signed32 newCount; 1.367 + xml_signed32 oldCount; 1.368 +} voice_msg_hp_t; 1.369 + 1.370 +typedef struct fax_msg_t { 1.371 + xml_signed32 newCount; 1.372 + xml_signed32 oldCount; 1.373 +} fax_msg_t; 1.374 + 1.375 +typedef struct fax_msg_hp_t { 1.376 + xml_signed32 newCount; 1.377 + xml_signed32 oldCount; 1.378 +} fax_msg_hp_t; 1.379 + 1.380 +typedef struct emwi_t { 1.381 + voice_msg_t voice_msg; 1.382 + voice_msg_hp_t voice_msg_hp; 1.383 + fax_msg_t fax_msg; 1.384 + fax_msg_hp_t fax_msg_hp; 1.385 +} emwi_t; 1.386 + 1.387 +typedef struct cfwdallupdate { 1.388 + char fwdAddress[256]; 1.389 +} cfwdallupdate; 1.390 + 1.391 +typedef struct Contact_t { 1.392 + xml_unsigned32 line; 1.393 + xml_unsigned32 high; 1.394 + xml_unsigned32 low; 1.395 + xml_signed32 all; 1.396 + xml_signed32 mwi; 1.397 + emwi_t emwi; 1.398 + cfwdallupdate cfwdallupdate; 1.399 +} Contact_t; 1.400 + 1.401 +typedef struct dialog_t { 1.402 + char usage[64]; 1.403 + char unot[12]; 1.404 + char sub[12]; 1.405 +} dialog_t; 1.406 + 1.407 +typedef struct presence_t { 1.408 + char usage[64]; 1.409 + char unot[12]; 1.410 + char sub[12]; 1.411 +} presence_t; 1.412 + 1.413 +typedef struct options_ans_t { 1.414 + combine combine; 1.415 + dialog_t dialog; 1.416 + presence_t presence; 1.417 +} options_ans_t; 1.418 + 1.419 +typedef struct PersonStatusStruct { 1.420 + char basic[32]; 1.421 +} PersonStatusStruct; 1.422 + 1.423 +typedef struct ActivitiesStruct { 1.424 + char alerting[12]; 1.425 + char onThePhone[12]; 1.426 + char busy[12]; 1.427 + char away[12]; 1.428 + char meeting[12]; 1.429 +} ActivitiesStruct; 1.430 + 1.431 +typedef struct PersonStruct { 1.432 + char id[256]; 1.433 + PersonStatusStruct personStatus; 1.434 + ActivitiesStruct activities; 1.435 +} PersonStruct; 1.436 + 1.437 +typedef struct StatusStruct { 1.438 + char basic[32]; 1.439 + ActivitiesStruct activities; 1.440 +} StatusStruct; 1.441 + 1.442 +typedef struct TupleStruct { 1.443 + char id[256]; 1.444 + StatusStruct status; 1.445 + char contact[1][256]; 1.446 + char note[1][1024]; 1.447 +} TupleStruct; 1.448 + 1.449 +typedef struct PresenceRPIDStruct { 1.450 + char entity[256]; 1.451 + PersonStruct person; 1.452 + TupleStruct tuple[1]; 1.453 + char note[5][1024]; 1.454 +} PresenceRPIDStruct; 1.455 + 1.456 +typedef struct sipProfile { 1.457 + xml_unsigned16 kpml_val; 1.458 +} sipProfile; 1.459 + 1.460 +typedef struct ConfigApp_req_data_t { 1.461 + sipProfile sip_profile; 1.462 +} ConfigApp_req_data_t; 1.463 + 1.464 +typedef struct to_encoder_t { 1.465 + xml_unsigned32 picture_fast_update; 1.466 +} to_encoder_t; 1.467 + 1.468 +typedef struct vc_primivite_t { 1.469 + to_encoder_t to_encoder; 1.470 + char stream_id[128]; 1.471 +} vc_primivite_t; 1.472 + 1.473 +typedef struct Media_Control_t { 1.474 + vc_primivite_t vc_primitive; 1.475 + char general_error[128]; 1.476 +} Media_Control_t; 1.477 + 1.478 +// end of copy from ccsip_eventbodies.h 1.479 + 1.480 +typedef struct Presence_ext_t_ { 1.481 + PresenceRPIDStruct presence_body; 1.482 +/* 1.483 + * Some of the tags' mere presence in the rpid document has a meaning. These tags 1.484 + * may not contain any value between starting and ending tag. So we need a way to 1.485 + * indicate the presence of a tag. We will use the following boolean memeber fields. 1.486 + */ 1.487 + boolean onThePhone; 1.488 + boolean busy; 1.489 + boolean away; 1.490 + boolean meeting; 1.491 + boolean alerting; 1.492 +} Presence_ext_t; 1.493 + 1.494 + 1.495 +typedef enum { 1.496 + EVENT_DATA_INVALID = 0, 1.497 + EVENT_DATA_KPML_REQUEST, 1.498 + EVENT_DATA_KPML_RESPONSE, 1.499 + EVENT_DATA_REMOTECC_REQUEST, 1.500 + EVENT_DATA_PRESENCE, 1.501 + EVENT_DATA_DIALOG, 1.502 + EVENT_DATA_RAW, 1.503 + EVENT_DATA_CONFIGAPP_REQUEST, 1.504 + EVENT_DATA_MEDIA_INFO 1.505 +} ccsip_event_data_type_e; 1.506 + 1.507 +typedef struct { 1.508 + char *data; 1.509 + uint32_t length; 1.510 +} raw_data_t; 1.511 + 1.512 +typedef struct { 1.513 + Media_Control_t media_control; 1.514 + uint32_t picture_fast_update; 1.515 +} media_control_ext_t; 1.516 + 1.517 +#define TAG_LENGTH 16 1.518 +typedef struct { 1.519 + char current_method[TAG_LENGTH]; 1.520 + char hookstate[TAG_LENGTH]; 1.521 + char presence[TAG_LENGTH]; 1.522 +} Options_ind_t; 1.523 + 1.524 + 1.525 + 1.526 +typedef struct rcc_response_t { 1.527 + xml_unsigned16 code; 1.528 + char reason[128]; 1.529 + xml_unsigned32 applicationid; 1.530 + xml_unsigned32 transactionid; 1.531 + xml_signed32 stationsequence; 1.532 + xml_unsigned16 displaypriority; 1.533 + xml_unsigned16 appinstance; 1.534 + xml_unsigned16 linenumber; 1.535 + xml_unsigned32 routingid; 1.536 + xml_unsigned32 confid; 1.537 + char callID[128]; 1.538 + options_ans_t options_ind; 1.539 +} rcc_response_t; 1.540 + 1.541 +typedef enum { 1.542 + RCC_NULL_REQ = 0, 1.543 + RCC_INITCALL_REQ = 1, 1.544 + RCC_MONITORCALL_REQ, 1.545 + RCC_DIALCALL_REQ, 1.546 + RCC_DIALDTMF_REQ, 1.547 + RCC_ANSCALL_REQ, 1.548 + RCC_DISCCALL_REQ, 1.549 + RCC_XFERSETUP_REQ, 1.550 + RCC_XFERCOMPLETE_REQ, 1.551 + RCC_CONFSETUP_REQ, 1.552 + RCC_CONFCOMPLETE_REQ, 1.553 + RCC_HOLD_REQ, 1.554 + RCC_HOLDRETRIEVE_REQ, 1.555 + RCC_DATAPASSTHROUGH_REQ, 1.556 + RCC_CFWDALL_REQ, 1.557 + RCC_LINEKEY_EVT, 1.558 + RCC_STATUS_UPDATE_REQ, 1.559 + RCC_SET_IDLE_STATUS_PROMPT_REQ, 1.560 + RCC_PLAY_TONE_REQ, 1.561 + RCC_STOP_TONE_REQ, 1.562 + RCC_CALL_SELECT_REQ, 1.563 + RCC_SOFTKEY_EVT, 1.564 + RCC_LINE_RINGER_SET_REQ, 1.565 + RCC_HOLD_REVERSION_REQ, 1.566 + RCC_LAMP_CONTROL_REQ, 1.567 + RCC_LINEKEY_UPDATE, 1.568 + RCC_BULKREGISTER_REQ, 1.569 + RCC_OPTIONS_IND, 1.570 + RCC_BULK_UPDATE, 1.571 + RCC_CALL_JOIN_REQ, 1.572 + RCC_NOTIFY_REQ, 1.573 + RCC_MONITOR_UPDATE_REQ, 1.574 + RCC_MAX_REQ 1.575 +} rcc_request_type_t; 1.576 + 1.577 +typedef struct rcc_softkey_event_msg_t { 1.578 + xml_signed32 softkeyevent; 1.579 + dialogID dialogid; 1.580 + xml_unsigned16 linenumber; 1.581 + xml_unsigned16 participantnum; 1.582 + dialogID consultdialogid; 1.583 + xml_unsigned8 state; 1.584 + dialogID joindialogid; 1.585 + //eventData eventdata; 1.586 + char userdata[32]; 1.587 + xml_unsigned16 soktkeyid; 1.588 + xml_unsigned16 applicationid; 1.589 +} rcc_softkey_event_msg_t; 1.590 + 1.591 + 1.592 +typedef struct RCC_req_data { 1.593 + rcc_softkey_event_msg_t rcc_softkey_event_msg; 1.594 +} RCC_req_data; 1.595 + 1.596 +typedef struct rcc_int_t_ { 1.597 + RCC_req_data rcc_int; 1.598 + // User added fields 1.599 + xml_unsigned8 iterations; 1.600 + cc_lineid_t line; 1.601 + cc_callid_t gsm_id; 1.602 + cc_callid_t consult_gsm_id; 1.603 + cc_callid_t join_gsm_id; 1.604 + rcc_request_type_t rcc_request_type; 1.605 +} RCC_data; 1.606 + 1.607 + 1.608 +// Data for event generation 1.609 +typedef struct ccsip_event_data_t_ { 1.610 + struct ccsip_event_data_t_ *next; 1.611 + ccsip_event_data_type_e type; 1.612 + union { 1.613 + KPMLResponse kpml_response; 1.614 + KPMLRequest kpml_request; 1.615 + RCC_data remotecc_data; 1.616 + rcc_response_t remotecc_data_response; 1.617 + Options_ind_t options_ind; 1.618 + Presence_ext_t presence_rpid; 1.619 + raw_data_t raw_data; // used for cmxml and other body types 1.620 + ConfigApp_req_data_t configapp_data; 1.621 + media_control_ext_t media_control_data; 1.622 + } u; 1.623 +} ccsip_event_data_t; 1.624 + 1.625 + 1.626 +/** 1.627 + * Request to allocate memory for external xml parser 1.628 + * @param [in] size ofrequested memory 1.629 + * @return pointer to memory allocated. 1.630 + */ 1.631 +void *ccAllocXML(cc_size_t size); 1.632 + 1.633 +/** 1.634 + * Free xml memory 1.635 + * @param [in] mem - memory to free 1.636 + * @return void 1.637 + */ 1.638 +void ccFreeXML(void *mem); 1.639 +#endif