LEER TAG
Dependents: NFC_HTM_READ EMULAR_TAGS Escribir_tag NFC_HTM_READ-WRITE
emulatetag.h@1:a549ef8b142a, 2015-04-24 (annotated)
- Committer:
- mauroar211
- Date:
- Fri Apr 24 19:02:44 2015 +0000
- Revision:
- 1:a549ef8b142a
- Parent:
- 0:b805b487fbef
SE RESTAURARON LOS ARCHIVO DE LA LIBRER?A;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mauroar211 | 0:b805b487fbef | 1 | /**************************************************************************/ |
mauroar211 | 0:b805b487fbef | 2 | /*! |
mauroar211 | 0:b805b487fbef | 3 | @file emulatetag.h |
mauroar211 | 0:b805b487fbef | 4 | @author Armin Wieser |
mauroar211 | 0:b805b487fbef | 5 | @license BSD |
mauroar211 | 0:b805b487fbef | 6 | |
mauroar211 | 0:b805b487fbef | 7 | Implemented using NFC forum documents & library of libnfc |
mauroar211 | 0:b805b487fbef | 8 | */ |
mauroar211 | 0:b805b487fbef | 9 | /**************************************************************************/ |
mauroar211 | 0:b805b487fbef | 10 | |
mauroar211 | 0:b805b487fbef | 11 | |
mauroar211 | 0:b805b487fbef | 12 | #ifndef __EMULATETAG_H__ |
mauroar211 | 0:b805b487fbef | 13 | #define __EMULATETAG_H__ |
mauroar211 | 0:b805b487fbef | 14 | |
mauroar211 | 0:b805b487fbef | 15 | #include "PN532.h" |
mauroar211 | 0:b805b487fbef | 16 | |
mauroar211 | 0:b805b487fbef | 17 | #define NDEF_MAX_LENGTH 128 // altough ndef can handle up to 0xfffe in size, arduino cannot. |
mauroar211 | 0:b805b487fbef | 18 | typedef enum {COMMAND_COMPLETE, TAG_NOT_FOUND, FUNCTION_NOT_SUPPORTED, MEMORY_FAILURE, END_OF_FILE_BEFORE_REACHED_LE_BYTES} responseCommand; |
mauroar211 | 0:b805b487fbef | 19 | |
mauroar211 | 0:b805b487fbef | 20 | class EmulateTag{ |
mauroar211 | 0:b805b487fbef | 21 | |
mauroar211 | 0:b805b487fbef | 22 | public: |
mauroar211 | 0:b805b487fbef | 23 | EmulateTag(PN532Interface &interface) : pn532(interface), uidPtr(0), tagWrittenByInitiator(false) { } |
mauroar211 | 0:b805b487fbef | 24 | |
mauroar211 | 0:b805b487fbef | 25 | bool init(); |
mauroar211 | 0:b805b487fbef | 26 | |
mauroar211 | 0:b805b487fbef | 27 | bool emulate(const uint16_t tgInitAsTargetTimeout = 0); |
mauroar211 | 0:b805b487fbef | 28 | |
mauroar211 | 0:b805b487fbef | 29 | /* |
mauroar211 | 0:b805b487fbef | 30 | * @param uid pointer to byte array of length 3 (uid is 4 bytes - first byte is fixed) or zero for uid |
mauroar211 | 0:b805b487fbef | 31 | */ |
mauroar211 | 0:b805b487fbef | 32 | void setUid(uint8_t* uid = 0); |
mauroar211 | 0:b805b487fbef | 33 | |
mauroar211 | 0:b805b487fbef | 34 | void setNdefFile(const uint8_t* ndef, const int16_t ndefLength); |
mauroar211 | 0:b805b487fbef | 35 | |
mauroar211 | 0:b805b487fbef | 36 | void getContent(uint8_t** buf, uint16_t* length){ |
mauroar211 | 0:b805b487fbef | 37 | *buf = ndef_file + 2; // first 2 bytes = length |
mauroar211 | 0:b805b487fbef | 38 | *length = (ndef_file[1] << 8) + ndef_file[0]; |
mauroar211 | 0:b805b487fbef | 39 | } |
mauroar211 | 0:b805b487fbef | 40 | |
mauroar211 | 0:b805b487fbef | 41 | bool writeOccured(){ |
mauroar211 | 0:b805b487fbef | 42 | return tagWrittenByInitiator; |
mauroar211 | 0:b805b487fbef | 43 | } |
mauroar211 | 0:b805b487fbef | 44 | |
mauroar211 | 0:b805b487fbef | 45 | private: |
mauroar211 | 0:b805b487fbef | 46 | PN532 pn532; |
mauroar211 | 0:b805b487fbef | 47 | uint8_t ndef_file[NDEF_MAX_LENGTH]; |
mauroar211 | 0:b805b487fbef | 48 | uint8_t* uidPtr; |
mauroar211 | 0:b805b487fbef | 49 | void setResponse(responseCommand cmd, uint8_t* buf, uint8_t* sendlen, uint8_t sendlenOffset =0); |
mauroar211 | 0:b805b487fbef | 50 | bool tagWrittenByInitiator; |
mauroar211 | 0:b805b487fbef | 51 | }; |
mauroar211 | 0:b805b487fbef | 52 | |
mauroar211 | 0:b805b487fbef | 53 | #endif |