AppNearMe µNFC stack for the NXP PN532 chip License: You can use the stack free of charge to prototype with mbed; if you want to use the stack with your commercial product, get in touch!
Dependents: IOT_sensor_nfc AppNearMe_MuNFC_PN532_Test p2p_nfc_test NFCMoodLamp ... more
License
You can use the stack free of charge to prototype with mbed; if you want to use the stack with your commercial product, get in touch!
Diff: PN532/TLVList.h
- Revision:
- 3:0b949b2d3b55
- Parent:
- 0:480387549d89
--- a/PN532/TLVList.h Thu Jul 26 10:02:19 2012 +0000 +++ b/PN532/TLVList.h Tue Aug 07 21:55:12 2012 +0000 @@ -1,157 +1,157 @@ -/* - TLVList.h - Copyright (c) Donatien Garnier 2012 - donatien.garnier@appnearme.com - http://www.appnearme.com/ -*/ - -/** \file TLVList.h -* List of Type/Length/Values items -*/ - -#ifndef TLVLIST_H_ -#define TLVLIST_H_ - -#include <cstdint> //For uint_*t -#include <cstring> //For size_t - -using std::uint8_t; -using std::uint16_t; -using std::uint32_t; -using std::size_t; - -typedef struct __tlv_list tlv_list; - -/** A simple container -* List of Type/Length/Values items -*/ -class TLVList -{ -public: - - //getNext... - //get() - //put() - - - //typedef tlv_type TLVType; - /** Type of a TLV item - * - */ - enum TLVType - { - UINT8, //!< Unsigned char (byte) - UINT32, //!< Unsigned int - UINT8_ARRAY, ///< Byte array - STRING, //!<String - NONE, //!<End of packet - UNKNOWN //!< Unknown type - }; - - /* Getters */ - - /** Iterate to next item. - * @return type if next item exists, NONE otherwise - */ - TLVType getNext(); - - /** Get uint8_t value. - * If the current item's type is uint32_t, the value will be masked with 0xFF. - * @return uint8_t value OR 0 if the type is incompatible - */ - uint8_t getUInt8(); - - /** Get uint32_t value. - * If the current item's type is uint8_t, the value will be casted to uint32_t. - * @return uint32_t value OR 0 if the type is incompatible - */ - uint32_t getUInt32(); - - /** Get array length. - * @return bytes array length - */ - size_t getArrayLength(); - - /** Get array. - * @param buf pointer to buffer's start - * @param maxLen maximum number of bytes to copy - * @return number of copied bytes - */ - size_t getArray(uint8_t* buf, size_t maxLen); - - /** Get string length. - * @return string length - */ - size_t getStringLength(); - - /** Get string. - * Copy string to buffer (including null-terminating char). - * @param str pointer to string's start - * @param maxLen maximum number of chars to copy (not including null-terminating char) - * @return number of copied chars - */ - size_t getString(char* str, size_t maxLen); - - /* Setters */ - - /** Check whether there is space left in list. - * @return true if there is space left, false otherwise - */ - bool isSpace(); - - /** Put uint8_t value. - * @param value uint8_t value - * @return true on success, false if there is not enough space in buffer - */ - bool putUInt8(uint8_t value); - - /** Put uint32_t value. - * @param value uint32_t value - * @return true on success, false if there is not enough space in buffer - */ - bool putUInt32(uint32_t value); - - /** Put array. - * @param buf pointer to buffer's start - * @param len number of bytes to copy - * @return number of copied bytes - */ - size_t putArray(uint8_t* buf, size_t len); - - /** Put string. - * @param str pointer to null-terminated string's start - * @return number of copied bytes - */ - size_t putString(char* str); - -protected: - TLVList(); - - void wrap(tlv_list* payload); - -private: - tlv_list* m_tlvList; - - TLVType m_type; - - union - { - uint8_t m_uint8; - uint32_t m_uint32; - uint8_t* m_array; - char* m_str; - }; - - union - { - size_t m_arrayLen; - size_t m_strLen; - }; - - bool m_space; - - friend class NdefCallback; -}; - - -#endif /* TLVLIST_H_ */ +/* + TLVList.h + Copyright (c) Donatien Garnier 2012 + donatien.garnier@appnearme.com + http://www.appnearme.com/ +*/ + +/** \file TLVList.h +* List of Type/Length/Values items +*/ + +#ifndef TLVLIST_H_ +#define TLVLIST_H_ + +#include <cstdint> //For uint_*t +#include <cstring> //For size_t + +using std::uint8_t; +using std::uint16_t; +using std::uint32_t; +using std::size_t; + +typedef struct __tlv_list tlv_list; + +/** A simple container +* List of Type/Length/Values items +*/ +class TLVList +{ +public: + + //getNext... + //get() + //put() + + + //typedef tlv_type TLVType; + /** Type of a TLV item + * + */ + enum TLVType + { + UINT8, //!< Unsigned char (byte) + UINT32, //!< Unsigned int + UINT8_ARRAY, ///< Byte array + STRING, //!<String + NONE, //!<End of packet + UNKNOWN //!< Unknown type + }; + + /* Getters */ + + /** Iterate to next item. + * @return type if next item exists, NONE otherwise + */ + TLVType getNext(); + + /** Get uint8_t value. + * If the current item's type is uint32_t, the value will be masked with 0xFF. + * @return uint8_t value OR 0 if the type is incompatible + */ + uint8_t getUInt8(); + + /** Get uint32_t value. + * If the current item's type is uint8_t, the value will be casted to uint32_t. + * @return uint32_t value OR 0 if the type is incompatible + */ + uint32_t getUInt32(); + + /** Get array length. + * @return bytes array length + */ + size_t getArrayLength(); + + /** Get array. + * @param buf pointer to buffer's start + * @param maxLen maximum number of bytes to copy + * @return number of copied bytes + */ + size_t getArray(uint8_t* buf, size_t maxLen); + + /** Get string length. + * @return string length + */ + size_t getStringLength(); + + /** Get string. + * Copy string to buffer (including null-terminating char). + * @param str pointer to string's start + * @param maxLen maximum number of chars to copy (not including null-terminating char) + * @return number of copied chars + */ + size_t getString(char* str, size_t maxLen); + + /* Setters */ + + /** Check whether there is space left in list. + * @return true if there is space left, false otherwise + */ + bool isSpace(); + + /** Put uint8_t value. + * @param value uint8_t value + * @return true on success, false if there is not enough space in buffer + */ + bool putUInt8(uint8_t value); + + /** Put uint32_t value. + * @param value uint32_t value + * @return true on success, false if there is not enough space in buffer + */ + bool putUInt32(uint32_t value); + + /** Put array. + * @param buf pointer to buffer's start + * @param len number of bytes to copy + * @return number of copied bytes + */ + size_t putArray(uint8_t* buf, size_t len); + + /** Put string. + * @param str pointer to null-terminated string's start + * @return number of copied bytes + */ + size_t putString(char* str); + +protected: + TLVList(); + + void wrap(tlv_list* payload); + +private: + tlv_list* m_tlvList; + + TLVType m_type; + + union + { + uint8_t m_uint8; + uint32_t m_uint32; + uint8_t* m_array; + char* m_str; + }; + + union + { + size_t m_arrayLen; + size_t m_strLen; + }; + + bool m_space; + + friend class NdefCallback; +}; + + +#endif /* TLVLIST_H_ */