iot_water_monitor_v2

Dependencies:   easy-connect-v16 Watchdog FP MQTTPacket RecordType-v-16 watersenor_and_temp_code

Committer:
DuyLionTran
Date:
Thu Dec 07 17:07:44 2017 +0000
Revision:
11:3802c82a5ae9
version 1.5 MQTT works oke

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DuyLionTran 11:3802c82a5ae9 1 /**
DuyLionTran 11:3802c82a5ae9 2 ******************************************************************************
DuyLionTran 11:3802c82a5ae9 3 * @file RecordHeader.h
DuyLionTran 11:3802c82a5ae9 4 * @author ST / Central Labs
DuyLionTran 11:3802c82a5ae9 5 * @version V2.0.0
DuyLionTran 11:3802c82a5ae9 6 * @date 28 Apr 2017
DuyLionTran 11:3802c82a5ae9 7 * @brief Record header class
DuyLionTran 11:3802c82a5ae9 8 ******************************************************************************
DuyLionTran 11:3802c82a5ae9 9 * @attention
DuyLionTran 11:3802c82a5ae9 10 *
DuyLionTran 11:3802c82a5ae9 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
DuyLionTran 11:3802c82a5ae9 12 *
DuyLionTran 11:3802c82a5ae9 13 * Redistribution and use in source and binary forms, with or without modification,
DuyLionTran 11:3802c82a5ae9 14 * are permitted provided that the following conditions are met:
DuyLionTran 11:3802c82a5ae9 15 * 1. Redistributions of source code must retain the above copyright notice,
DuyLionTran 11:3802c82a5ae9 16 * this list of conditions and the following disclaimer.
DuyLionTran 11:3802c82a5ae9 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
DuyLionTran 11:3802c82a5ae9 18 * this list of conditions and the following disclaimer in the documentation
DuyLionTran 11:3802c82a5ae9 19 * and/or other materials provided with the distribution.
DuyLionTran 11:3802c82a5ae9 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
DuyLionTran 11:3802c82a5ae9 21 * may be used to endorse or promote products derived from this software
DuyLionTran 11:3802c82a5ae9 22 * without specific prior written permission.
DuyLionTran 11:3802c82a5ae9 23 *
DuyLionTran 11:3802c82a5ae9 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
DuyLionTran 11:3802c82a5ae9 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
DuyLionTran 11:3802c82a5ae9 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DuyLionTran 11:3802c82a5ae9 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
DuyLionTran 11:3802c82a5ae9 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DuyLionTran 11:3802c82a5ae9 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
DuyLionTran 11:3802c82a5ae9 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
DuyLionTran 11:3802c82a5ae9 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
DuyLionTran 11:3802c82a5ae9 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
DuyLionTran 11:3802c82a5ae9 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DuyLionTran 11:3802c82a5ae9 34 *
DuyLionTran 11:3802c82a5ae9 35 ******************************************************************************
DuyLionTran 11:3802c82a5ae9 36 */
DuyLionTran 11:3802c82a5ae9 37
DuyLionTran 11:3802c82a5ae9 38 #ifndef NDEFLIB_RECORDHEADER_H_
DuyLionTran 11:3802c82a5ae9 39 #define NDEFLIB_RECORDHEADER_H_
DuyLionTran 11:3802c82a5ae9 40
DuyLionTran 11:3802c82a5ae9 41 #include <stdint.h>
DuyLionTran 11:3802c82a5ae9 42
DuyLionTran 11:3802c82a5ae9 43 namespace NDefLib {
DuyLionTran 11:3802c82a5ae9 44
DuyLionTran 11:3802c82a5ae9 45 /**
DuyLionTran 11:3802c82a5ae9 46 * Record header class.
DuyLionTran 11:3802c82a5ae9 47 * @see NFC Data Exchange Format (NDEF) Technical Specification NDEF 1.0
DuyLionTran 11:3802c82a5ae9 48 */
DuyLionTran 11:3802c82a5ae9 49 class RecordHeader {
DuyLionTran 11:3802c82a5ae9 50
DuyLionTran 11:3802c82a5ae9 51 public:
DuyLionTran 11:3802c82a5ae9 52
DuyLionTran 11:3802c82a5ae9 53 /**
DuyLionTran 11:3802c82a5ae9 54 * Record type format
DuyLionTran 11:3802c82a5ae9 55 */
DuyLionTran 11:3802c82a5ae9 56 typedef enum TypeNameFormat {
DuyLionTran 11:3802c82a5ae9 57 Empty = 0x00, //!< Empty
DuyLionTran 11:3802c82a5ae9 58 NFC_well_known = 0x01, //!< NFC_well_known
DuyLionTran 11:3802c82a5ae9 59 Mime_media_type = 0x02,//!< Mime_media_type
DuyLionTran 11:3802c82a5ae9 60 Absolute_URI = 0x03, //!< Absolute_URI
DuyLionTran 11:3802c82a5ae9 61 NFC_external = 0x04, //!< NFC_external
DuyLionTran 11:3802c82a5ae9 62 Unknown = 0x05, //!< Unknown
DuyLionTran 11:3802c82a5ae9 63 Unchanged = 0x06, //!< Unchanged
DuyLionTran 11:3802c82a5ae9 64 Reserved = 0x07 //!< Reserved
DuyLionTran 11:3802c82a5ae9 65 } TypeNameFormat_t;
DuyLionTran 11:3802c82a5ae9 66
DuyLionTran 11:3802c82a5ae9 67
DuyLionTran 11:3802c82a5ae9 68 RecordHeader() :
DuyLionTran 11:3802c82a5ae9 69 headerFlags(0), typeLength(0), payloadLength(0) {
DuyLionTran 11:3802c82a5ae9 70 set_SR(true);
DuyLionTran 11:3802c82a5ae9 71 }
DuyLionTran 11:3802c82a5ae9 72
DuyLionTran 11:3802c82a5ae9 73 /**
DuyLionTran 11:3802c82a5ae9 74 * Set the 'message begin' flag.
DuyLionTran 11:3802c82a5ae9 75 * @param value True if the record is the first within the message.
DuyLionTran 11:3802c82a5ae9 76 */
DuyLionTran 11:3802c82a5ae9 77 void set_MB(bool value) {
DuyLionTran 11:3802c82a5ae9 78 if (value) {
DuyLionTran 11:3802c82a5ae9 79 headerFlags |= 0x80;
DuyLionTran 11:3802c82a5ae9 80 } else {
DuyLionTran 11:3802c82a5ae9 81 headerFlags &= ~0x80;
DuyLionTran 11:3802c82a5ae9 82 }
DuyLionTran 11:3802c82a5ae9 83 }//set_MB
DuyLionTran 11:3802c82a5ae9 84
DuyLionTran 11:3802c82a5ae9 85 /**
DuyLionTran 11:3802c82a5ae9 86 * Check the 'message begin' flag.
DuyLionTran 11:3802c82a5ae9 87 * @return true if it is the first record in the message
DuyLionTran 11:3802c82a5ae9 88 */
DuyLionTran 11:3802c82a5ae9 89 bool get_MB() const {
DuyLionTran 11:3802c82a5ae9 90 return (headerFlags & 0x80) != 0;
DuyLionTran 11:3802c82a5ae9 91 }//get_MB
DuyLionTran 11:3802c82a5ae9 92
DuyLionTran 11:3802c82a5ae9 93 /**
DuyLionTran 11:3802c82a5ae9 94 * Set the 'message end' flag.
DuyLionTran 11:3802c82a5ae9 95 * @param value True if it is the last record in the message.
DuyLionTran 11:3802c82a5ae9 96 */
DuyLionTran 11:3802c82a5ae9 97 void set_ME(bool value) {
DuyLionTran 11:3802c82a5ae9 98 if (value) {
DuyLionTran 11:3802c82a5ae9 99 headerFlags |= 0x40;
DuyLionTran 11:3802c82a5ae9 100 } else {
DuyLionTran 11:3802c82a5ae9 101 headerFlags &= ~0x40;
DuyLionTran 11:3802c82a5ae9 102 }
DuyLionTran 11:3802c82a5ae9 103 }//set_ME
DuyLionTran 11:3802c82a5ae9 104
DuyLionTran 11:3802c82a5ae9 105 /**
DuyLionTran 11:3802c82a5ae9 106 * Check the 'message end' flag.
DuyLionTran 11:3802c82a5ae9 107 * @return true if it is the last record in the message
DuyLionTran 11:3802c82a5ae9 108 */
DuyLionTran 11:3802c82a5ae9 109 bool get_ME() const {
DuyLionTran 11:3802c82a5ae9 110 return (headerFlags & 0x40) != 0;
DuyLionTran 11:3802c82a5ae9 111 }//get_ME
DuyLionTran 11:3802c82a5ae9 112
DuyLionTran 11:3802c82a5ae9 113 /**
DuyLionTran 11:3802c82a5ae9 114 * Set the 'Chunk' flag.
DuyLionTran 11:3802c82a5ae9 115 * @param value True if the record is in the first record chunk or in a middle record
DuyLionTran 11:3802c82a5ae9 116 * chunk of a chunked payload.
DuyLionTran 11:3802c82a5ae9 117 */
DuyLionTran 11:3802c82a5ae9 118 void set_CF(bool value) {
DuyLionTran 11:3802c82a5ae9 119 if (value) {
DuyLionTran 11:3802c82a5ae9 120 headerFlags |= 0x20;
DuyLionTran 11:3802c82a5ae9 121 } else {
DuyLionTran 11:3802c82a5ae9 122 headerFlags &= ~0x20;
DuyLionTran 11:3802c82a5ae9 123 }
DuyLionTran 11:3802c82a5ae9 124 }//set_CF
DuyLionTran 11:3802c82a5ae9 125
DuyLionTran 11:3802c82a5ae9 126 /**
DuyLionTran 11:3802c82a5ae9 127 * Check the 'Chunk' flag value.
DuyLionTran 11:3802c82a5ae9 128 * @return true if the record is in the first record chunk or in a middle record
DuyLionTran 11:3802c82a5ae9 129 * chunk of a chunked payload
DuyLionTran 11:3802c82a5ae9 130 */
DuyLionTran 11:3802c82a5ae9 131 bool get_CF() const {
DuyLionTran 11:3802c82a5ae9 132 return (headerFlags & 0x20) != 0;
DuyLionTran 11:3802c82a5ae9 133 }//get_CF
DuyLionTran 11:3802c82a5ae9 134
DuyLionTran 11:3802c82a5ae9 135 /**
DuyLionTran 11:3802c82a5ae9 136 * Set the 'Short record' flag value.
DuyLionTran 11:3802c82a5ae9 137 * @param value True if the record size can be encoded with 8 bits.
DuyLionTran 11:3802c82a5ae9 138 */
DuyLionTran 11:3802c82a5ae9 139 void set_SR(bool value) {
DuyLionTran 11:3802c82a5ae9 140 if (value) {
DuyLionTran 11:3802c82a5ae9 141 headerFlags |= 0x10;
DuyLionTran 11:3802c82a5ae9 142 } else {
DuyLionTran 11:3802c82a5ae9 143 headerFlags &= ~0x10;
DuyLionTran 11:3802c82a5ae9 144 }
DuyLionTran 11:3802c82a5ae9 145 }//setSR
DuyLionTran 11:3802c82a5ae9 146
DuyLionTran 11:3802c82a5ae9 147 /**
DuyLionTran 11:3802c82a5ae9 148 * Check the 'Short record' flag.
DuyLionTran 11:3802c82a5ae9 149 * @return true if the short range header format is set
DuyLionTran 11:3802c82a5ae9 150 */
DuyLionTran 11:3802c82a5ae9 151 bool get_SR() const {
DuyLionTran 11:3802c82a5ae9 152 return (headerFlags & 0x10) != 0;
DuyLionTran 11:3802c82a5ae9 153 }//getSR
DuyLionTran 11:3802c82a5ae9 154
DuyLionTran 11:3802c82a5ae9 155 /**
DuyLionTran 11:3802c82a5ae9 156 * Set the 'ID length' flag.
DuyLionTran 11:3802c82a5ae9 157 * @param value True if the 'ID length' value is used.
DuyLionTran 11:3802c82a5ae9 158 */
DuyLionTran 11:3802c82a5ae9 159 void set_IL(bool value) {
DuyLionTran 11:3802c82a5ae9 160 if (value) {
DuyLionTran 11:3802c82a5ae9 161 headerFlags |= 0x08;
DuyLionTran 11:3802c82a5ae9 162 } else {
DuyLionTran 11:3802c82a5ae9 163 headerFlags &= ~0x08;
DuyLionTran 11:3802c82a5ae9 164 }
DuyLionTran 11:3802c82a5ae9 165 }//setIL
DuyLionTran 11:3802c82a5ae9 166
DuyLionTran 11:3802c82a5ae9 167 /**
DuyLionTran 11:3802c82a5ae9 168 * Check the 'ID length' flag.
DuyLionTran 11:3802c82a5ae9 169 * @param value True if 'ID length' is set.
DuyLionTran 11:3802c82a5ae9 170 */
DuyLionTran 11:3802c82a5ae9 171 bool get_IL() const {
DuyLionTran 11:3802c82a5ae9 172 return (headerFlags & 0x08) != 0;
DuyLionTran 11:3802c82a5ae9 173 }//getIL
DuyLionTran 11:3802c82a5ae9 174
DuyLionTran 11:3802c82a5ae9 175 /**
DuyLionTran 11:3802c82a5ae9 176 * Set the type name format field.
DuyLionTran 11:3802c82a5ae9 177 * @param value Record type name format.
DuyLionTran 11:3802c82a5ae9 178 */
DuyLionTran 11:3802c82a5ae9 179 void set_FNT(const TypeNameFormat_t value) {
DuyLionTran 11:3802c82a5ae9 180 uint8_t temp = (uint8_t) value;
DuyLionTran 11:3802c82a5ae9 181 temp &= 0x07; //keep the first 3 bits
DuyLionTran 11:3802c82a5ae9 182 headerFlags &= 0xF8; //clean the fist 3 bits
DuyLionTran 11:3802c82a5ae9 183 headerFlags |= temp; //set the fist 3 bits
DuyLionTran 11:3802c82a5ae9 184 }//setFNT
DuyLionTran 11:3802c82a5ae9 185
DuyLionTran 11:3802c82a5ae9 186 /**
DuyLionTran 11:3802c82a5ae9 187 * Get the record type name.
DuyLionTran 11:3802c82a5ae9 188 * @return type name format of the record
DuyLionTran 11:3802c82a5ae9 189 */
DuyLionTran 11:3802c82a5ae9 190 TypeNameFormat_t get_FNT() const {
DuyLionTran 11:3802c82a5ae9 191 return (TypeNameFormat_t) (headerFlags & 0x07);
DuyLionTran 11:3802c82a5ae9 192 }
DuyLionTran 11:3802c82a5ae9 193
DuyLionTran 11:3802c82a5ae9 194 /**
DuyLionTran 11:3802c82a5ae9 195 * Set the record payload length.
DuyLionTran 11:3802c82a5ae9 196 * @par This function will update the SR field as needed.
DuyLionTran 11:3802c82a5ae9 197 * @param length payload length
DuyLionTran 11:3802c82a5ae9 198 */
DuyLionTran 11:3802c82a5ae9 199 void set_payload_length(uint32_t length) {
DuyLionTran 11:3802c82a5ae9 200 payloadLength = length;
DuyLionTran 11:3802c82a5ae9 201 set_SR(payloadLength <= 255);
DuyLionTran 11:3802c82a5ae9 202 }
DuyLionTran 11:3802c82a5ae9 203
DuyLionTran 11:3802c82a5ae9 204 /**
DuyLionTran 11:3802c82a5ae9 205 * Get the payload length.
DuyLionTran 11:3802c82a5ae9 206 * @return payload length
DuyLionTran 11:3802c82a5ae9 207 */
DuyLionTran 11:3802c82a5ae9 208 uint32_t get_payload_length() const {
DuyLionTran 11:3802c82a5ae9 209 return payloadLength;
DuyLionTran 11:3802c82a5ae9 210 }
DuyLionTran 11:3802c82a5ae9 211
DuyLionTran 11:3802c82a5ae9 212 /**
DuyLionTran 11:3802c82a5ae9 213 * Set the type length.
DuyLionTran 11:3802c82a5ae9 214 * @param size.
DuyLionTran 11:3802c82a5ae9 215 */
DuyLionTran 11:3802c82a5ae9 216 void set_type_length(uint8_t size) {
DuyLionTran 11:3802c82a5ae9 217 typeLength = size;
DuyLionTran 11:3802c82a5ae9 218 }
DuyLionTran 11:3802c82a5ae9 219
DuyLionTran 11:3802c82a5ae9 220 /**
DuyLionTran 11:3802c82a5ae9 221 * Get the type length.
DuyLionTran 11:3802c82a5ae9 222 * @return type length
DuyLionTran 11:3802c82a5ae9 223 */
DuyLionTran 11:3802c82a5ae9 224 uint8_t get_type_length() const {
DuyLionTran 11:3802c82a5ae9 225 return typeLength;
DuyLionTran 11:3802c82a5ae9 226 }
DuyLionTran 11:3802c82a5ae9 227
DuyLionTran 11:3802c82a5ae9 228 /**
DuyLionTran 11:3802c82a5ae9 229 * Set the id length.
DuyLionTran 11:3802c82a5ae9 230 * @param size.
DuyLionTran 11:3802c82a5ae9 231 */
DuyLionTran 11:3802c82a5ae9 232 void set_id_length(uint8_t size) {
DuyLionTran 11:3802c82a5ae9 233 if (size!=0) {
DuyLionTran 11:3802c82a5ae9 234 idLength = size;
DuyLionTran 11:3802c82a5ae9 235 set_IL(true);
DuyLionTran 11:3802c82a5ae9 236 } else {
DuyLionTran 11:3802c82a5ae9 237 set_IL(false);
DuyLionTran 11:3802c82a5ae9 238 }
DuyLionTran 11:3802c82a5ae9 239 }
DuyLionTran 11:3802c82a5ae9 240
DuyLionTran 11:3802c82a5ae9 241 /**
DuyLionTran 11:3802c82a5ae9 242 * Get the id length.
DuyLionTran 11:3802c82a5ae9 243 * @return id length
DuyLionTran 11:3802c82a5ae9 244 */
DuyLionTran 11:3802c82a5ae9 245 uint8_t get_id_length() const {
DuyLionTran 11:3802c82a5ae9 246 return idLength;
DuyLionTran 11:3802c82a5ae9 247 }
DuyLionTran 11:3802c82a5ae9 248
DuyLionTran 11:3802c82a5ae9 249 /**
DuyLionTran 11:3802c82a5ae9 250 * Get the number of bytes needed to store this record.
DuyLionTran 11:3802c82a5ae9 251 * @return 3 or 6
DuyLionTran 11:3802c82a5ae9 252 */
DuyLionTran 11:3802c82a5ae9 253 uint16_t get_record_length() const {
DuyLionTran 11:3802c82a5ae9 254 return (get_SR() ? 3 : 6) + (get_IL() ? idLength : 0)+typeLength + payloadLength;
DuyLionTran 11:3802c82a5ae9 255 }
DuyLionTran 11:3802c82a5ae9 256
DuyLionTran 11:3802c82a5ae9 257 /**
DuyLionTran 11:3802c82a5ae9 258 * Store the header information in the buffer.
DuyLionTran 11:3802c82a5ae9 259 * @param[out] outBuffer Buffer to write the header into.
DuyLionTran 11:3802c82a5ae9 260 * @return number of write bytes
DuyLionTran 11:3802c82a5ae9 261 */
DuyLionTran 11:3802c82a5ae9 262 uint8_t write_header(uint8_t *outBuffer) const {
DuyLionTran 11:3802c82a5ae9 263
DuyLionTran 11:3802c82a5ae9 264 uint32_t index = 0;
DuyLionTran 11:3802c82a5ae9 265
DuyLionTran 11:3802c82a5ae9 266 outBuffer[index++] = headerFlags;
DuyLionTran 11:3802c82a5ae9 267 outBuffer[index++] = typeLength;
DuyLionTran 11:3802c82a5ae9 268 if (get_SR()) {
DuyLionTran 11:3802c82a5ae9 269 outBuffer[index++] = (uint8_t) payloadLength;
DuyLionTran 11:3802c82a5ae9 270 } else {
DuyLionTran 11:3802c82a5ae9 271 outBuffer[index++] = (uint8_t) ((payloadLength & 0xFF000000)
DuyLionTran 11:3802c82a5ae9 272 >> 24);
DuyLionTran 11:3802c82a5ae9 273 outBuffer[index++] = (uint8_t) ((payloadLength & 0x00FF0000)
DuyLionTran 11:3802c82a5ae9 274 >> 16);
DuyLionTran 11:3802c82a5ae9 275 outBuffer[index++] = (uint8_t) ((payloadLength & 0x0000FF00)
DuyLionTran 11:3802c82a5ae9 276 >> 8);
DuyLionTran 11:3802c82a5ae9 277 outBuffer[index++] = (uint8_t) (payloadLength & 0x000000FF);
DuyLionTran 11:3802c82a5ae9 278 } //if-else
DuyLionTran 11:3802c82a5ae9 279 if (get_IL()) {
DuyLionTran 11:3802c82a5ae9 280 outBuffer[index++] =idLength;
DuyLionTran 11:3802c82a5ae9 281 }
DuyLionTran 11:3802c82a5ae9 282
DuyLionTran 11:3802c82a5ae9 283 return index;
DuyLionTran 11:3802c82a5ae9 284 } //writeHeader
DuyLionTran 11:3802c82a5ae9 285
DuyLionTran 11:3802c82a5ae9 286 /**
DuyLionTran 11:3802c82a5ae9 287 * Load an header from a buffer.
DuyLionTran 11:3802c82a5ae9 288 * @param buffer Buffer to load the header from.
DuyLionTran 11:3802c82a5ae9 289 * @return number of read bytes
DuyLionTran 11:3802c82a5ae9 290 */
DuyLionTran 11:3802c82a5ae9 291 uint16_t load_header(const uint8_t * const buffer) {
DuyLionTran 11:3802c82a5ae9 292 uint32_t index = 0;
DuyLionTran 11:3802c82a5ae9 293 headerFlags = buffer[index++];
DuyLionTran 11:3802c82a5ae9 294 typeLength = buffer[index++];
DuyLionTran 11:3802c82a5ae9 295 if (get_SR()) {
DuyLionTran 11:3802c82a5ae9 296 payloadLength = buffer[index++];
DuyLionTran 11:3802c82a5ae9 297 } else {
DuyLionTran 11:3802c82a5ae9 298 payloadLength = (((uint32_t) buffer[index + 0]) << 24)
DuyLionTran 11:3802c82a5ae9 299 | (((uint32_t) buffer[index + 1]) << 16)
DuyLionTran 11:3802c82a5ae9 300 | (((uint32_t) buffer[index + 2]) << 8)
DuyLionTran 11:3802c82a5ae9 301 | ((uint32_t) buffer[index + 3]);
DuyLionTran 11:3802c82a5ae9 302 index += 4;
DuyLionTran 11:3802c82a5ae9 303 } //if-else
DuyLionTran 11:3802c82a5ae9 304 if (get_IL()) {
DuyLionTran 11:3802c82a5ae9 305 idLength = buffer[index++];
DuyLionTran 11:3802c82a5ae9 306 } else {
DuyLionTran 11:3802c82a5ae9 307 idLength = 0;
DuyLionTran 11:3802c82a5ae9 308 }
DuyLionTran 11:3802c82a5ae9 309
DuyLionTran 11:3802c82a5ae9 310 return index;
DuyLionTran 11:3802c82a5ae9 311 } //loadHeader
DuyLionTran 11:3802c82a5ae9 312
DuyLionTran 11:3802c82a5ae9 313 /**
DuyLionTran 11:3802c82a5ae9 314 * Equal operator.
DuyLionTran 11:3802c82a5ae9 315 * @param other Other object to compare with.
DuyLionTran 11:3802c82a5ae9 316 * @return true if the two record headers are equal
DuyLionTran 11:3802c82a5ae9 317 */
DuyLionTran 11:3802c82a5ae9 318 bool operator==(const RecordHeader &other) const{
DuyLionTran 11:3802c82a5ae9 319 return (headerFlags==other.headerFlags) &&
DuyLionTran 11:3802c82a5ae9 320 (typeLength==other.typeLength) &&
DuyLionTran 11:3802c82a5ae9 321 (payloadLength==other.payloadLength);
DuyLionTran 11:3802c82a5ae9 322 }
DuyLionTran 11:3802c82a5ae9 323
DuyLionTran 11:3802c82a5ae9 324 bool operator!=(const RecordHeader &other) const{
DuyLionTran 11:3802c82a5ae9 325 return !(*this==other);
DuyLionTran 11:3802c82a5ae9 326 }
DuyLionTran 11:3802c82a5ae9 327
DuyLionTran 11:3802c82a5ae9 328 private:
DuyLionTran 11:3802c82a5ae9 329 uint8_t idLength;
DuyLionTran 11:3802c82a5ae9 330 uint8_t headerFlags;
DuyLionTran 11:3802c82a5ae9 331 uint8_t typeLength;
DuyLionTran 11:3802c82a5ae9 332 uint32_t payloadLength;
DuyLionTran 11:3802c82a5ae9 333 };
DuyLionTran 11:3802c82a5ae9 334
DuyLionTran 11:3802c82a5ae9 335 } /* namespace NDefLib */
DuyLionTran 11:3802c82a5ae9 336
DuyLionTran 11:3802c82a5ae9 337 #endif /* NDEFLIB_RECORDHEADER_H_ */
DuyLionTran 11:3802c82a5ae9 338
DuyLionTran 11:3802c82a5ae9 339
DuyLionTran 11:3802c82a5ae9 340 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/