summaryrefslogtreecommitdiffstats
path: root/stack/include/xml_mlp_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'stack/include/xml_mlp_api.h')
-rw-r--r--stack/include/xml_mlp_api.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/stack/include/xml_mlp_api.h b/stack/include/xml_mlp_api.h
new file mode 100644
index 0000000..eabbfbd
--- /dev/null
+++ b/stack/include/xml_mlp_api.h
@@ -0,0 +1,169 @@
+/******************************************************************************
+ **
+ ** Name: xml_mlp_api.h
+ ** $Id:
+ **
+ ** Description: This module contains xml parser of MAP message list object
+ **
+ ** Copyright (c) 2004-2005, Broadcom Corporation, All Rights Reserved.
+ ** WIDCOMM Bluetooth Core. Proprietary and confidential.
+ ******************************************************************************/
+
+#ifndef XML_MLP_API_H
+#define XML_MLP_API_H
+
+#include "bt_target.h"
+#include "gki.h"
+#include "xml_pars_api.h"
+
+
+#ifndef XML_ML_CARRY_OVER_LEN
+#define XML_ML_CARRY_OVER_LEN 512 /* number of bytes we can store in case we did not yet find the > */
+#endif
+
+/**********************************************************************************/
+
+typedef struct
+{
+ UINT16 msg_handle_len;
+ UINT16 subject_len;
+ UINT16 datetime_len;
+ UINT16 sender_name_len;
+ UINT16 sender_addressing_len;
+ UINT16 replyto_addressing_len;
+ UINT16 recipient_name_len;
+ UINT16 recipient_addressing_len;
+ UINT16 type_len;
+ UINT16 org_msg_size_len;
+ UINT16 text_len;
+ UINT16 reception_status_len;
+ UINT16 attachment_size_len;
+ UINT16 priority_status_len;
+ UINT16 read_len;
+ UINT16 sent_len;
+ UINT16 is_protected_len;
+ UINT8 *msg_handle;
+ UINT8 *subject;
+ UINT8 *datetime;
+ UINT8 *sender_name;
+ UINT8 *sender_addressing;
+ UINT8 *replyto_addressing;
+ UINT8 *recipient_name;
+ UINT8 *recipient_addressing;
+ UINT8 *type;
+ UINT8 *org_msg_size;
+ UINT8 *text;
+ UINT8 *reception_status;
+ UINT8 *attachment_size;
+ UINT8 *priority_status;
+ UINT8 *read;
+ UINT8 *sent;
+ UINT8 *is_protected;
+} tXML_ML_ENTRY;
+
+/**********************************************************************************/
+
+enum
+{
+ XML_ML_OK, /* parsing is ok, operation is ok */
+ XML_ML_PENDING, /* parsing is ok but not enough data */
+ XML_ML_END_LIST, /* found </MAP-msg-listing> */
+ XML_ML_OUT_FULL, /* output buffer full /MAP-msg-listing not reached! data is dumped */
+ XML_ML_ERROR, /* some parsing error occured */
+ XML_ML_NO_RES, /* ran out of resources (memory) */
+ XML_ML_DST_NO_RES /* ran out of destination data buffer */
+};
+typedef UINT8 tXML_ML_RES;
+
+
+typedef struct
+{
+ tXML_ML_ENTRY *p_entry; /* point to parser_cb->mlist.evt_rpt */
+ tXML_PROP *p_prop; /* GKI_BUF3_SIZE */
+
+ tXML_PROP *offset_prop; /* current filling property */
+ UINT16 prop_num; /* number of properties left to be filled in */
+
+ INT16 current_entry;
+ INT16 max_name_len; /* maximum length of name length of entry
+ XML parser limits to 196 bytes i think. */
+ UINT16 max_entry;
+ BOOLEAN ended;
+ UINT16 prop_index;
+ UINT16 max_num_prop;
+ UINT8 obj; /* the XML object - (tFTC_XML_OBJ + 1)*/
+} tXML_ML_STATE;
+
+typedef struct
+{
+ tXML_MUL_STATE xml;
+ tXML_ML_STATE xml_user_data;
+} tXML_ML_PARSER;
+
+/* only this value is of significance, if not ok frame is dropped by parser */
+#define XML_ML_ENTRY_OK 0
+
+typedef UINT8 tXML_ML_STATUS;
+
+
+typedef struct
+{
+ UINT8 *data;
+ UINT16 len;
+ BOOLEAN final; /* If TRUE, entry is last of the series */
+ tXML_ML_STATUS status; /* Fields are valid when status is BTA_FTC_OK */
+} tXML_ML_LIST; /* clone of tBTA_FTC_LIST */
+
+
+/**************************************************************************************
+** Function XML_MlInit
+**
+** Description Initialize xml parser state machine.
+**
+** Parameters p_xml_state: address of parser structure, allocate an additional space
+** of size XML_ML_CARRY_OVER_LEN right after p_xml_state
+** to hold carry over data.
+** p_entry : points start of output directory entry. caller needs do free this memory
+** max_entry : max is 16 bit integer value which is the maximum number of folder entries.
+
+**
+** Returns void
+**************************************************************************************/
+MCE_API void XML_MlInit( tXML_ML_PARSER *p_xml_state,
+ tXML_ML_ENTRY *p_entry,
+ const UINT16 max_entry );
+
+
+/**************************************************************************************
+** Function XML_MLParse
+**
+** Description This function is called to parse the xml data received from OBEX
+** into folder entries associated with properties value. It can also be
+** used as clean up function to delete left over data from previous parse.
+** This clean up function is typically used when application runs out of
+** resource and decides to discard extra xml data received.
+**
+** Parameters p_xml_state: pointer to a xml parser initialized by XML_FolderInit().
+** xml_data: valid pointer to OBEX list data in xml format.
+** xml_len: length of the package, must be non-zero value.
+** dst_data: valid pointer to the buffer for holding converted folder entry name.
+** When dst_data is NULL, clean up all remaining data in the parser.
+** dst_len: length of the dst_data buffer, its carry out value is the number
+** of bytes of available buffer remains.
+** num_entries: current number of entries, in the end it is the total number of entries
+**
+** Returns tXML_ML_RES (see xml_flp.h)
+** XML_PENDING: parsing not completed
+** XML_END_LIST: found /folder-listing but no final flag detected
+** XML_ML_OUT_FULL: reached max_entry -> do not call parser anymore!!! dump data
+** XML_ML_DST_NO_RES : run out of dst buffer resource while
+** some xml data still remains.
+
+**************************************************************************************/
+MCE_API extern tXML_ML_RES XML_MlParse( tXML_ML_PARSER *p_xml_state,
+ UINT8 *xml_data, UINT16 xml_len,
+ UINT8 *dst_data, UINT16 *dst_len,
+ UINT16 *num_entries );
+
+
+#endif