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.
Core/BufferedArray.h@0:837e6c48e90d, 2015-10-22 (annotated)
- Committer:
- yangcq88517
- Date:
- Thu Oct 22 12:28:26 2015 +0000
- Revision:
- 0:837e6c48e90d
initial upload
Who changed what in which revision?
User | Revision | Line number | New 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 |