Utility library to read and write Ndef messages from/to a Type4 NFC tag
Dependents: NFC M2M_2016_STM32 MyongjiElec_capstone1 IDW01M1_Cloud_IBM ... more
Fork of NDefLib by
NDEF NFC library
This library provides an abstract API to create NDEF formatted messages and records and to read/write them from/to a Type4 NFC Tag.
Implementations
At the moment, the NDEF API is implemented by X_NUCLEO_NFC01A1 and X_NUCLEO_NFC02A1 Dynamic NFC Tag libraries respectively driving the X-NUCLEO-NFC01A1 and X-NUCLEO-NFC02A1 boards.
RecordType/RecordURI.h@21:72c86cbd49be, 2017-08-21 (annotated)
- Committer:
- giovannivisentini
- Date:
- Mon Aug 21 12:02:31 2017 +0000
- Revision:
- 21:72c86cbd49be
- Parent:
- 19:13d84b136a62
change on_message_write callback; the message parameter was unused and it pointed to an invalid object
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
giovannivisentini | 6:739e3211749d | 1 | /** |
giovannivisentini | 6:739e3211749d | 2 | ****************************************************************************** |
giovannivisentini | 6:739e3211749d | 3 | * @file RecordURI.h |
giovannivisentini | 8:473f6e0b03df | 4 | * @author ST / Central Labs |
giovannivisentini | 19:13d84b136a62 | 5 | * @version V2.0.0 |
giovannivisentini | 19:13d84b136a62 | 6 | * @date 28 Apr 2017 |
giovannivisentini | 12:ed4d9b8d1410 | 7 | * @brief {@link Record} that contains an URI address |
giovannivisentini | 6:739e3211749d | 8 | ****************************************************************************** |
giovannivisentini | 6:739e3211749d | 9 | * @attention |
giovannivisentini | 6:739e3211749d | 10 | * |
giovannivisentini | 6:739e3211749d | 11 | * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> |
giovannivisentini | 1:a0eeb478a45a | 12 | * |
giovannivisentini | 6:739e3211749d | 13 | * Redistribution and use in source and binary forms, with or without modification, |
giovannivisentini | 6:739e3211749d | 14 | * are permitted provided that the following conditions are met: |
giovannivisentini | 6:739e3211749d | 15 | * 1. Redistributions of source code must retain the above copyright notice, |
giovannivisentini | 6:739e3211749d | 16 | * this list of conditions and the following disclaimer. |
giovannivisentini | 6:739e3211749d | 17 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
giovannivisentini | 6:739e3211749d | 18 | * this list of conditions and the following disclaimer in the documentation |
giovannivisentini | 6:739e3211749d | 19 | * and/or other materials provided with the distribution. |
giovannivisentini | 6:739e3211749d | 20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
giovannivisentini | 6:739e3211749d | 21 | * may be used to endorse or promote products derived from this software |
giovannivisentini | 6:739e3211749d | 22 | * without specific prior written permission. |
giovannivisentini | 6:739e3211749d | 23 | * |
giovannivisentini | 6:739e3211749d | 24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
giovannivisentini | 6:739e3211749d | 25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
giovannivisentini | 6:739e3211749d | 26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
giovannivisentini | 6:739e3211749d | 27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
giovannivisentini | 6:739e3211749d | 28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
giovannivisentini | 6:739e3211749d | 29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
giovannivisentini | 6:739e3211749d | 30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
giovannivisentini | 6:739e3211749d | 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
giovannivisentini | 6:739e3211749d | 32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
giovannivisentini | 6:739e3211749d | 33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
giovannivisentini | 6:739e3211749d | 34 | * |
giovannivisentini | 6:739e3211749d | 35 | ****************************************************************************** |
giovannivisentini | 1:a0eeb478a45a | 36 | */ |
giovannivisentini | 1:a0eeb478a45a | 37 | |
giovannivisentini | 1:a0eeb478a45a | 38 | #ifndef NDEFLIB_RECORDTYPE_RECORDURI_H_ |
giovannivisentini | 1:a0eeb478a45a | 39 | #define NDEFLIB_RECORDTYPE_RECORDURI_H_ |
giovannivisentini | 1:a0eeb478a45a | 40 | #include <map> |
giovannivisentini | 1:a0eeb478a45a | 41 | #include <string> |
giovannivisentini | 1:a0eeb478a45a | 42 | #include <NDefLib/Record.h> |
giovannivisentini | 1:a0eeb478a45a | 43 | |
giovannivisentini | 1:a0eeb478a45a | 44 | namespace NDefLib { |
giovannivisentini | 1:a0eeb478a45a | 45 | |
giovannivisentini | 4:eaf6c49a86e4 | 46 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 47 | * {@link Record} that contains an URI address. |
giovannivisentini | 4:eaf6c49a86e4 | 48 | */ |
giovannivisentini | 1:a0eeb478a45a | 49 | class RecordURI: public Record { |
giovannivisentini | 1:a0eeb478a45a | 50 | |
giovannivisentini | 1:a0eeb478a45a | 51 | public: |
giovannivisentini | 1:a0eeb478a45a | 52 | |
giovannivisentini | 4:eaf6c49a86e4 | 53 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 54 | * Load a record URI from a buffer. |
giovannivisentini | 12:ed4d9b8d1410 | 55 | * @param header Record header. |
giovannivisentini | 12:ed4d9b8d1410 | 56 | * @param buffer Buffer to read the tag playload from. |
giovannivisentini | 4:eaf6c49a86e4 | 57 | * @return record or NULL if it was not possible build it |
giovannivisentini | 12:ed4d9b8d1410 | 58 | * @par User is in charge of freeing the pointer returned by this function. |
giovannivisentini | 4:eaf6c49a86e4 | 59 | */ |
giovannivisentini | 4:eaf6c49a86e4 | 60 | static RecordURI* parse(const RecordHeader &header, |
giovannivisentini | 1:a0eeb478a45a | 61 | const uint8_t *buffer); |
giovannivisentini | 1:a0eeb478a45a | 62 | |
giovannivisentini | 4:eaf6c49a86e4 | 63 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 64 | * If you want encode an know URI you can use this define to |
giovannivisentini | 12:ed4d9b8d1410 | 65 | * avoid to encode the URI type as string |
giovannivisentini | 4:eaf6c49a86e4 | 66 | */ |
giovannivisentini | 1:a0eeb478a45a | 67 | typedef enum { |
giovannivisentini | 4:eaf6c49a86e4 | 68 | UNKNOWN = 0X00, //!< UNKNOWN |
giovannivisentini | 4:eaf6c49a86e4 | 69 | HTTP_WWW = 0X01, //!< HTTP_WWW |
giovannivisentini | 4:eaf6c49a86e4 | 70 | HTTPS_WWW = 0X02, //!< HTTPS_WWW |
giovannivisentini | 4:eaf6c49a86e4 | 71 | HTTP = 0X03, //!< HTTP |
giovannivisentini | 4:eaf6c49a86e4 | 72 | HTTPS = 0X04, //!< HTTPS |
giovannivisentini | 4:eaf6c49a86e4 | 73 | TEL = 0x05, //!< TEL |
giovannivisentini | 4:eaf6c49a86e4 | 74 | MAIL = 0X06, //!< MAIL |
giovannivisentini | 4:eaf6c49a86e4 | 75 | FTP_ANONIMUS = 0X07,//!< FTP_ANONIMUS |
giovannivisentini | 4:eaf6c49a86e4 | 76 | FTP_FTP = 0X08, //!< FTP_FTP |
giovannivisentini | 4:eaf6c49a86e4 | 77 | FTPS = 0X09, //!< FTPS |
giovannivisentini | 4:eaf6c49a86e4 | 78 | SFTP = 0X0A, //!< SFTP |
giovannivisentini | 4:eaf6c49a86e4 | 79 | SMB = 0X0B, //!< SMB |
giovannivisentini | 4:eaf6c49a86e4 | 80 | NFS = 0X0C, //!< NFS |
giovannivisentini | 4:eaf6c49a86e4 | 81 | FTP = 0X0d, //!< FTP |
giovannivisentini | 4:eaf6c49a86e4 | 82 | DAV = 0X0E, //!< DAV |
giovannivisentini | 4:eaf6c49a86e4 | 83 | NEWS = 0X0F, //!< NEWS |
giovannivisentini | 4:eaf6c49a86e4 | 84 | TELNET = 0X10, //!< TELNET |
giovannivisentini | 4:eaf6c49a86e4 | 85 | IMAP = 0X11, //!< IMAP |
giovannivisentini | 4:eaf6c49a86e4 | 86 | RTSP = 0X12, //!< RTSP |
giovannivisentini | 4:eaf6c49a86e4 | 87 | URN = 0X13, //!< URN |
giovannivisentini | 4:eaf6c49a86e4 | 88 | POP = 0X14, //!< POP |
giovannivisentini | 4:eaf6c49a86e4 | 89 | SIP = 0X15, //!< SIP |
giovannivisentini | 4:eaf6c49a86e4 | 90 | SIPS = 0X016, //!< SIPS |
giovannivisentini | 4:eaf6c49a86e4 | 91 | TFTP = 0X017, //!< TFTP |
giovannivisentini | 4:eaf6c49a86e4 | 92 | BTSPP = 0x018, //!< BTSPP |
giovannivisentini | 4:eaf6c49a86e4 | 93 | BTL2CAP = 0x019, //!< BTL2CAP |
giovannivisentini | 4:eaf6c49a86e4 | 94 | BTGOEP = 0X01A, //!< BTGOEP |
giovannivisentini | 4:eaf6c49a86e4 | 95 | TCPOBEX = 0X1B, //!< TCPOBEX |
giovannivisentini | 4:eaf6c49a86e4 | 96 | IRDAOBEX = 0X1C, //!< IRDAOBEX |
giovannivisentini | 4:eaf6c49a86e4 | 97 | FILE = 0X1D, //!< FILE |
giovannivisentini | 4:eaf6c49a86e4 | 98 | URN_EPC_ID = 0X1E, //!< URN_EPC_ID |
giovannivisentini | 4:eaf6c49a86e4 | 99 | URN_EPC_TAG = 0X1F, //!< URN_EPC_TAG |
giovannivisentini | 4:eaf6c49a86e4 | 100 | URN_EPC_PAT = 0X20, //!< URN_EPC_PAT |
giovannivisentini | 4:eaf6c49a86e4 | 101 | URN_EPC_RAW = 0X21, //!< URN_EPC_RAW |
giovannivisentini | 4:eaf6c49a86e4 | 102 | URN_EPC = 0X22, //!< URN_EPC |
giovannivisentini | 4:eaf6c49a86e4 | 103 | URN_NFC = 0X23 //!< URN_NFC |
giovannivisentini | 1:a0eeb478a45a | 104 | } knowUriId_t; |
giovannivisentini | 1:a0eeb478a45a | 105 | |
giovannivisentini | 4:eaf6c49a86e4 | 106 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 107 | * Build RecordUri with a defined URI type. |
giovannivisentini | 12:ed4d9b8d1410 | 108 | * @param URIId URI type. |
giovannivisentini | 12:ed4d9b8d1410 | 109 | * @param URIContent URI content. |
giovannivisentini | 12:ed4d9b8d1410 | 110 | * @par The URI prefix is removed. |
giovannivisentini | 12:ed4d9b8d1410 | 111 | * @par The string is copied inside the class. |
giovannivisentini | 4:eaf6c49a86e4 | 112 | */ |
giovannivisentini | 12:ed4d9b8d1410 | 113 | explicit RecordURI(knowUriId_t URIId, const std::string &URIContent=""); |
giovannivisentini | 1:a0eeb478a45a | 114 | |
giovannivisentini | 4:eaf6c49a86e4 | 115 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 116 | * Build a custom URI type. |
giovannivisentini | 12:ed4d9b8d1410 | 117 | * @param URIType string with the URI type. |
giovannivisentini | 12:ed4d9b8d1410 | 118 | * @param URIContent URI content. |
giovannivisentini | 4:eaf6c49a86e4 | 119 | */ |
giovannivisentini | 12:ed4d9b8d1410 | 120 | explicit RecordURI(const std::string &URIType, const std::string &URIContent=""); |
giovannivisentini | 1:a0eeb478a45a | 121 | |
giovannivisentini | 9:689c1f56f359 | 122 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 123 | * Get the record type. |
giovannivisentini | 9:689c1f56f359 | 124 | * @return TYPE_URI |
giovannivisentini | 9:689c1f56f359 | 125 | */ |
giovannivisentini | 19:13d84b136a62 | 126 | virtual RecordType_t get_type() const { |
giovannivisentini | 1:a0eeb478a45a | 127 | return TYPE_URI; |
giovannivisentini | 4:eaf6c49a86e4 | 128 | } //getType |
giovannivisentini | 1:a0eeb478a45a | 129 | |
giovannivisentini | 9:689c1f56f359 | 130 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 131 | * Returns the URI type. |
giovannivisentini | 13:dbf3a61d70b3 | 132 | * @return URI type inside this record, UNKNOWN if unknown |
giovannivisentini | 9:689c1f56f359 | 133 | */ |
giovannivisentini | 19:13d84b136a62 | 134 | knowUriId_t get_uri_id() const { |
giovannivisentini | 1:a0eeb478a45a | 135 | return mUriTypeId; |
giovannivisentini | 1:a0eeb478a45a | 136 | } |
giovannivisentini | 1:a0eeb478a45a | 137 | |
giovannivisentini | 19:13d84b136a62 | 138 | virtual uint16_t get_byte_length() { |
giovannivisentini | 19:13d84b136a62 | 139 | update_content_and_header(); |
giovannivisentini | 19:13d84b136a62 | 140 | return mRecordHeader.get_record_length(); |
giovannivisentini | 4:eaf6c49a86e4 | 141 | } |
giovannivisentini | 4:eaf6c49a86e4 | 142 | |
giovannivisentini | 9:689c1f56f359 | 143 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 144 | * Returns the URI content. |
giovannivisentini | 12:ed4d9b8d1410 | 145 | * @return URI content |
giovannivisentini | 9:689c1f56f359 | 146 | */ |
giovannivisentini | 19:13d84b136a62 | 147 | std::string& get_content() { |
giovannivisentini | 19:13d84b136a62 | 148 | update_content_and_header(); |
giovannivisentini | 1:a0eeb478a45a | 149 | return mContent; |
giovannivisentini | 1:a0eeb478a45a | 150 | } |
giovannivisentini | 1:a0eeb478a45a | 151 | |
giovannivisentini | 9:689c1f56f359 | 152 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 153 | * Change the URI content. |
giovannivisentini | 12:ed4d9b8d1410 | 154 | * @param URI new URI content. |
giovannivisentini | 9:689c1f56f359 | 155 | */ |
giovannivisentini | 19:13d84b136a62 | 156 | void set_content(const std::string &URI){ |
giovannivisentini | 4:eaf6c49a86e4 | 157 | if(mUriTypeId!=UNKNOWN) |
giovannivisentini | 19:13d84b136a62 | 158 | store_removeing_prefix(sKnowUriPrefix[mUriTypeId],URI); |
giovannivisentini | 4:eaf6c49a86e4 | 159 | else |
giovannivisentini | 12:ed4d9b8d1410 | 160 | mContent=URI; |
giovannivisentini | 19:13d84b136a62 | 161 | update_content_and_header(); |
giovannivisentini | 4:eaf6c49a86e4 | 162 | } |
giovannivisentini | 4:eaf6c49a86e4 | 163 | |
giovannivisentini | 9:689c1f56f359 | 164 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 165 | * If the URI type Id is {@code UNKNOWN} this return the user |
giovannivisentini | 12:ed4d9b8d1410 | 166 | * URI type. |
giovannivisentini | 12:ed4d9b8d1410 | 167 | * @return URI type set by the user or an empyt string |
giovannivisentini | 9:689c1f56f359 | 168 | */ |
giovannivisentini | 19:13d84b136a62 | 169 | const std::string& get_uri_type() const { |
giovannivisentini | 1:a0eeb478a45a | 170 | return mTypeString; |
giovannivisentini | 1:a0eeb478a45a | 171 | } |
giovannivisentini | 1:a0eeb478a45a | 172 | |
giovannivisentini | 7:1ebd6049fa57 | 173 | bool operator==(const RecordURI &other) const { |
giovannivisentini | 7:1ebd6049fa57 | 174 | return (mUriTypeId==other.mUriTypeId) && |
giovannivisentini | 7:1ebd6049fa57 | 175 | (mTypeString==other.mTypeString) && |
giovannivisentini | 7:1ebd6049fa57 | 176 | (mContent==other.mContent); |
giovannivisentini | 7:1ebd6049fa57 | 177 | } |
giovannivisentini | 7:1ebd6049fa57 | 178 | |
giovannivisentini | 13:dbf3a61d70b3 | 179 | virtual uint16_t write(uint8_t *buffer); |
giovannivisentini | 4:eaf6c49a86e4 | 180 | virtual ~RecordURI() { |
giovannivisentini | 4:eaf6c49a86e4 | 181 | }; |
giovannivisentini | 1:a0eeb478a45a | 182 | |
giovannivisentini | 1:a0eeb478a45a | 183 | protected: |
giovannivisentini | 4:eaf6c49a86e4 | 184 | |
giovannivisentini | 4:eaf6c49a86e4 | 185 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 186 | * Record id to write to be recognizable as an URI record. |
giovannivisentini | 4:eaf6c49a86e4 | 187 | */ |
giovannivisentini | 1:a0eeb478a45a | 188 | static const uint8_t sNDEFUriIdCode; |
giovannivisentini | 1:a0eeb478a45a | 189 | |
giovannivisentini | 4:eaf6c49a86e4 | 190 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 191 | * A subclass must implement this function to store the tag content and update the mContent |
giovannivisentini | 12:ed4d9b8d1410 | 192 | * variable accordingly. |
giovannivisentini | 12:ed4d9b8d1410 | 193 | * @par You should not call this function directly but use updateContentAndHeader that keeps the |
giovannivisentini | 12:ed4d9b8d1410 | 194 | * header information in sync with the content. |
giovannivisentini | 4:eaf6c49a86e4 | 195 | */ |
giovannivisentini | 19:13d84b136a62 | 196 | virtual void update_content(){}; |
giovannivisentini | 4:eaf6c49a86e4 | 197 | |
giovannivisentini | 4:eaf6c49a86e4 | 198 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 199 | * Update the tag content and update the header with the new content size. |
giovannivisentini | 7:1ebd6049fa57 | 200 | */ |
giovannivisentini | 19:13d84b136a62 | 201 | void update_content_and_header(){ |
giovannivisentini | 19:13d84b136a62 | 202 | update_content(); |
giovannivisentini | 19:13d84b136a62 | 203 | update_record_header(); |
giovannivisentini | 7:1ebd6049fa57 | 204 | } |
giovannivisentini | 7:1ebd6049fa57 | 205 | |
giovannivisentini | 7:1ebd6049fa57 | 206 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 207 | * The subclass must store in this variable the content to write to the tag. |
giovannivisentini | 12:ed4d9b8d1410 | 208 | * This class will ask to update the content throught the updateContent callback. |
giovannivisentini | 4:eaf6c49a86e4 | 209 | */ |
giovannivisentini | 4:eaf6c49a86e4 | 210 | std::string mContent; |
giovannivisentini | 4:eaf6c49a86e4 | 211 | |
giovannivisentini | 1:a0eeb478a45a | 212 | private: |
giovannivisentini | 1:a0eeb478a45a | 213 | |
giovannivisentini | 4:eaf6c49a86e4 | 214 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 215 | * Set the record header flags. |
giovannivisentini | 4:eaf6c49a86e4 | 216 | */ |
giovannivisentini | 19:13d84b136a62 | 217 | void set_record_header(); |
giovannivisentini | 1:a0eeb478a45a | 218 | |
giovannivisentini | 4:eaf6c49a86e4 | 219 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 220 | * Set the correct size of the payload. |
giovannivisentini | 4:eaf6c49a86e4 | 221 | */ |
giovannivisentini | 19:13d84b136a62 | 222 | void update_record_header(){ |
giovannivisentini | 12:ed4d9b8d1410 | 223 | //+1 = size of the URITypeId |
giovannivisentini | 19:13d84b136a62 | 224 | mRecordHeader.set_payload_length(1 + mTypeString.size() + mContent.size()); |
giovannivisentini | 4:eaf6c49a86e4 | 225 | } |
giovannivisentini | 4:eaf6c49a86e4 | 226 | |
giovannivisentini | 19:13d84b136a62 | 227 | void store_removeing_prefix(const std::string &prefix,const std::string &content){ |
giovannivisentini | 4:eaf6c49a86e4 | 228 | //check that the content doens't contain the prefix |
giovannivisentini | 4:eaf6c49a86e4 | 229 | if (content.compare(0, prefix.size(), prefix) == 0) { |
giovannivisentini | 4:eaf6c49a86e4 | 230 | mContent = std::string(content, prefix.size()); |
giovannivisentini | 4:eaf6c49a86e4 | 231 | } else |
giovannivisentini | 4:eaf6c49a86e4 | 232 | mContent = content; |
giovannivisentini | 4:eaf6c49a86e4 | 233 | } |
giovannivisentini | 4:eaf6c49a86e4 | 234 | |
giovannivisentini | 4:eaf6c49a86e4 | 235 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 236 | * URI type used by this record |
giovannivisentini | 4:eaf6c49a86e4 | 237 | */ |
giovannivisentini | 1:a0eeb478a45a | 238 | const knowUriId_t mUriTypeId; |
giovannivisentini | 4:eaf6c49a86e4 | 239 | |
giovannivisentini | 4:eaf6c49a86e4 | 240 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 241 | * In case of unknown URI type, it stores the used defined URI type. |
giovannivisentini | 4:eaf6c49a86e4 | 242 | */ |
giovannivisentini | 1:a0eeb478a45a | 243 | const std::string mTypeString; |
giovannivisentini | 1:a0eeb478a45a | 244 | |
giovannivisentini | 1:a0eeb478a45a | 245 | |
giovannivisentini | 4:eaf6c49a86e4 | 246 | /** |
giovannivisentini | 12:ed4d9b8d1410 | 247 | * Array of known prefix of known URI type |
giovannivisentini | 4:eaf6c49a86e4 | 248 | */ |
giovannivisentini | 1:a0eeb478a45a | 249 | static const std::string sKnowUriPrefix[]; |
giovannivisentini | 1:a0eeb478a45a | 250 | }; |
giovannivisentini | 1:a0eeb478a45a | 251 | |
giovannivisentini | 1:a0eeb478a45a | 252 | } /* namespace NDefLib */ |
giovannivisentini | 1:a0eeb478a45a | 253 | |
giovannivisentini | 1:a0eeb478a45a | 254 | #endif /* NDEFLIB_RECORDTYPE_RECORDURI_H_ */ |