Add toolchain and mbtk source

Change-Id: Ie12546301367ea59240bf23d5e184ad7e36e40b3
diff --git a/mbtk/mbtk_lib/inc/ds_ASBuffer.h b/mbtk/mbtk_lib/inc/ds_ASBuffer.h
new file mode 100644
index 0000000..492b436
--- /dev/null
+++ b/mbtk/mbtk_lib/inc/ds_ASBuffer.h
@@ -0,0 +1,268 @@
+/*==============================================================================

+

+                              ds_ASBuffer.h

+

+GENERAL DESCRIPTION

+  A buffer class with utility functions for parsing raw bytes.

+

+EXTERNALIZED FUNCTIONS

+

+INITIALIZATION AND SEQUENCING REQUIREMENTS

+

+  Copyright (c) 2014 by Qualcomm Technologies Incorporated. All Rights Reserved.

+==============================================================================*/

+

+/*==============================================================================

+                           EDIT HISTORY FOR MODULE

+

+This section contains comments describing changes made to the module.

+Notice that changes are listed in reverse chronological order.

+

+when        who    what, where, why

+--------    ---    ----------------------------------------------------------

+04/21/14    ml     Created file/Initial version.

+==============================================================================*/

+

+#ifndef __DS_AS_BUFFER_H__

+#define __DS_AS_BUFFER_H__

+

+//#include "comdef.h"

+#include "mbtk_type.h"

+class ASString;

+

+

+/*==============================================================================

+CLASS ASBuffer

+

+DESCRIPTION

+  A buffer class with utility functions for parsing raw bytes.

+==============================================================================*/

+class ASBuffer

+{

+public:

+  /*===========================================================================

+  FUNCTION ASBuffer CONSTRUCTOR

+

+  DESCRIPTION

+    Creates a new ASBuffer.

+

+  DEPENDENCIES

+    capacity - The initial buffer capacity to set.

+

+  SIDE EFFECTS

+    None

+  ===========================================================================*/

+  ASBuffer();

+  ASBuffer(uint32 capacity);

+

+  ASBuffer(ASBuffer &buf);

+  ASBuffer(const ASBuffer &buf);

+  ASBuffer(const uint8* buf, uint32 capacity);

+

+  ~ASBuffer();

+

+

+  ASBuffer& operator=(const ASBuffer &rhs);

+

+  /*============================================================================

+  FUNCTION ASBuffer::content

+

+  DESCRIPTION

+    Returns a pointer to the buffer content

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  const uint8* content() const;

+

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::non_const_content

+

+  DESCRIPTION

+    Returns a pointer to the buffer content. Use this function ONLY if you need

+    a non-const version and it is guaranteed that the returned pointer will

+    never be modified.

+

+    Note: Workaround function for MD5 auth-int. Otherwise shouldn't be used.

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  uint8* non_const_content();

+

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::c_str

+

+  DESCRIPTION

+    Returns a pointer to the buffer content. This assumes the buffer content is

+    in c-string format

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  const char* c_str() const;

+

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::size

+

+  DESCRIPTION

+    Returns the size of the buffer

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  uint32 size() const;

+

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::empty

+

+  DESCRIPTION

+    Returns true if the buffer is empty

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  bool empty() const;

+

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::error

+

+  DESCRIPTION

+    Returns true if the buffer is in error status due to internal memory

+    allocation failure.

+

+    This can happen when

+      - Constructor fails to allocate memory for the new buffer

+      - Append requires to resize the buffer but fails

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  bool error() const;

+

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::append

+

+  DESCRIPTION

+    Appends the given data to the buffer. Returns true if append is successful,

+    false if append fails.

+

+  PARAMETERS

+    [In] append_buffer - The data to append

+    [In] size          - The number of bytes to append

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  bool append(const uint8* append_buffer, const uint32 size);

+  bool append(const char append_buffer);

+  bool append(const char* append_buffer);

+  bool append(const char* append_buffer, const uint32 size);

+  bool append(const ASBuffer& append_buffer);

+  bool append(const ASString& append_buffer); // temp

+

+

+  /*============================================================================

+  FUNCTION ASBuffer::clear

+

+  DESCRIPTION

+    Returns true if the buffer is in error status due to internal memory

+    allocation failure.

+

+    This can happen when

+      - Constructor fails to allocate memory for the new buffer

+      - Append requires to resize the buffer but fails

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  void clear();

+

+

+

+private:

+  /*============================================================================

+  FUNCTION ASBuffer::init

+

+  DESCRIPTION

+    Initialize buffer

+

+  PARAMETERS

+    None

+

+  DEPENDENCIES

+    None

+

+  SIDE EFFECTS

+    None

+  ============================================================================*/

+  void init();

+  bool increment_buffer_capacity(const uint32 req_size);

+

+

+  uint8* buffer; // Buffer object. Memory dynamically allocated as necessary

+  uint32 buffer_size;

+  uint32 buffer_capacity;

+  bool   error_status; // true if error, else false

+};

+

+

+

+#endif /* __DS_AS_BUFFER_H__ */