XBee and XBee-PRO ZigBee RF modules provide cost-effective wireless connectivity to electronic devices. They are interoperable with other ZigBee PRO feature set devices, including devices from other vendors.

Dependencies:   BufferedArray

Dependents:   MBEDminiproject

Committer:
yangcq88517
Date:
Thu Oct 22 12:28:26 2015 +0000
Revision:
0:837e6c48e90d
initial upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangcq88517 0:837e6c48e90d 1 #ifndef UK_AC_HERTS_SMARTLAB_XBEE_BufferedArray
yangcq88517 0:837e6c48e90d 2 #define UK_AC_HERTS_SMARTLAB_XBEE_BufferedArray
yangcq88517 0:837e6c48e90d 3
yangcq88517 0:837e6c48e90d 4 #include "mbed.h"
yangcq88517 0:837e6c48e90d 5
yangcq88517 0:837e6c48e90d 6 /**
yangcq88517 0:837e6c48e90d 7 * Represent a generic, dynamic-length raw binary data buffer.
yangcq88517 0:837e6c48e90d 8 */
yangcq88517 0:837e6c48e90d 9 class BufferedArray
yangcq88517 0:837e6c48e90d 10 {
yangcq88517 0:837e6c48e90d 11 protected :
yangcq88517 0:837e6c48e90d 12 /// initial size and automatically increase length.
yangcq88517 0:837e6c48e90d 13 static const int EXPANDSIZE = 20;
yangcq88517 0:837e6c48e90d 14
yangcq88517 0:837e6c48e90d 15 /// Raw data
yangcq88517 0:837e6c48e90d 16 char * data;
yangcq88517 0:837e6c48e90d 17
yangcq88517 0:837e6c48e90d 18 /// Current index of the data, could also used as data lendth.
yangcq88517 0:837e6c48e90d 19 int index;
yangcq88517 0:837e6c48e90d 20
yangcq88517 0:837e6c48e90d 21 /// Max data size that the raw data can hold.
yangcq88517 0:837e6c48e90d 22 int max;
yangcq88517 0:837e6c48e90d 23
yangcq88517 0:837e6c48e90d 24 void expandSpace(int length);
yangcq88517 0:837e6c48e90d 25
yangcq88517 0:837e6c48e90d 26 public:
yangcq88517 0:837e6c48e90d 27 BufferedArray();
yangcq88517 0:837e6c48e90d 28
yangcq88517 0:837e6c48e90d 29 BufferedArray(int size);
yangcq88517 0:837e6c48e90d 30
yangcq88517 0:837e6c48e90d 31 BufferedArray(BufferedArray * bufferedArray);
yangcq88517 0:837e6c48e90d 32
yangcq88517 0:837e6c48e90d 33 ~BufferedArray();
yangcq88517 0:837e6c48e90d 34
yangcq88517 0:837e6c48e90d 35 /** Get the raw data.
yangcq88517 0:837e6c48e90d 36 * @returns char array.
yangcq88517 0:837e6c48e90d 37 */
yangcq88517 0:837e6c48e90d 38 char * gets();
yangcq88517 0:837e6c48e90d 39
yangcq88517 0:837e6c48e90d 40 /** Get the raw data from a specific location.
yangcq88517 0:837e6c48e90d 41 *
yangcq88517 0:837e6c48e90d 42 * @param position where to retrieve
yangcq88517 0:837e6c48e90d 43 *
yangcq88517 0:837e6c48e90d 44 * @returns char array.
yangcq88517 0:837e6c48e90d 45 */
yangcq88517 0:837e6c48e90d 46 char * gets(int position);
yangcq88517 0:837e6c48e90d 47
yangcq88517 0:837e6c48e90d 48 /** Get 1 byte data from a specific location.
yangcq88517 0:837e6c48e90d 49 *
yangcq88517 0:837e6c48e90d 50 * @param position where to retrieve
yangcq88517 0:837e6c48e90d 51 *
yangcq88517 0:837e6c48e90d 52 * @returns char.
yangcq88517 0:837e6c48e90d 53 */
yangcq88517 0:837e6c48e90d 54 char get(int position);
yangcq88517 0:837e6c48e90d 55
yangcq88517 0:837e6c48e90d 56 /** Get the current index.
yangcq88517 0:837e6c48e90d 57 * @returns char array.
yangcq88517 0:837e6c48e90d 58 */
yangcq88517 0:837e6c48e90d 59 int getPosition();
yangcq88517 0:837e6c48e90d 60
yangcq88517 0:837e6c48e90d 61 /** Set the index within the max length of raw data.
yangcq88517 0:837e6c48e90d 62 * @param position where to begin read and write
yangcq88517 0:837e6c48e90d 63 */
yangcq88517 0:837e6c48e90d 64 void setPosition(int position);
yangcq88517 0:837e6c48e90d 65
yangcq88517 0:837e6c48e90d 66 /** Reset the raw data.
yangcq88517 0:837e6c48e90d 67 * @param length current max size for the raw data
yangcq88517 0:837e6c48e90d 68 */
yangcq88517 0:837e6c48e90d 69 void allocate(int length);
yangcq88517 0:837e6c48e90d 70
yangcq88517 0:837e6c48e90d 71 /** Reset the position and does not affect the content of the data.
yangcq88517 0:837e6c48e90d 72 * @param length current max size for the raw data
yangcq88517 0:837e6c48e90d 73 */
yangcq88517 0:837e6c48e90d 74 void rewind();
yangcq88517 0:837e6c48e90d 75
yangcq88517 0:837e6c48e90d 76 /** Write 8-bit data into current posiston and increase by 1.
yangcq88517 0:837e6c48e90d 77 * @param value sigle byte
yangcq88517 0:837e6c48e90d 78 */
yangcq88517 0:837e6c48e90d 79 void set(char value);
yangcq88517 0:837e6c48e90d 80
yangcq88517 0:837e6c48e90d 81 /** Write array of data into current posiston, and increase by the lenght.
yangcq88517 0:837e6c48e90d 82 * @param value array of byte
yangcq88517 0:837e6c48e90d 83 * @param offset start point of the data
yangcq88517 0:837e6c48e90d 84 * @param length length to write
yangcq88517 0:837e6c48e90d 85 */
yangcq88517 0:837e6c48e90d 86 void sets(const char * value, int offset, int length);
yangcq88517 0:837e6c48e90d 87
yangcq88517 0:837e6c48e90d 88 /** Write 8-bit data into specific posiston and deos not affect the current position.
yangcq88517 0:837e6c48e90d 89 * @param position where to write
yangcq88517 0:837e6c48e90d 90 * @param value sigle byte
yangcq88517 0:837e6c48e90d 91 */
yangcq88517 0:837e6c48e90d 92 void set(int position, char value);
yangcq88517 0:837e6c48e90d 93
yangcq88517 0:837e6c48e90d 94 /** Write array of data into specific posiston and deos not affect the current position.
yangcq88517 0:837e6c48e90d 95 * @param position where to write
yangcq88517 0:837e6c48e90d 96 * @param value array of byte
yangcq88517 0:837e6c48e90d 97 * @param offset start point of the data
yangcq88517 0:837e6c48e90d 98 * @param length length to write
yangcq88517 0:837e6c48e90d 99 */
yangcq88517 0:837e6c48e90d 100 void sets(int position, const char * value, int offset, int length);
yangcq88517 0:837e6c48e90d 101 };
yangcq88517 0:837e6c48e90d 102
yangcq88517 0:837e6c48e90d 103 #endif