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!
PN532/NdefCallback.h@3:0b949b2d3b55, 2012-08-07 (annotated)
- Committer:
- AppNearMe
- Date:
- Tue Aug 07 21:55:12 2012 +0000
- Revision:
- 3:0b949b2d3b55
- Parent:
- 0:480387549d89
Versioning -> Hg
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AppNearMe | 3:0b949b2d3b55 | 1 | /* |
AppNearMe | 3:0b949b2d3b55 | 2 | NdefCallback.h |
AppNearMe | 3:0b949b2d3b55 | 3 | Copyright (c) Donatien Garnier 2012 |
AppNearMe | 3:0b949b2d3b55 | 4 | donatien.garnier@appnearme.com |
AppNearMe | 3:0b949b2d3b55 | 5 | http://www.appnearme.com/ |
AppNearMe | 3:0b949b2d3b55 | 6 | */ |
AppNearMe | 3:0b949b2d3b55 | 7 | |
AppNearMe | 3:0b949b2d3b55 | 8 | |
AppNearMe | 3:0b949b2d3b55 | 9 | #ifndef NDEFCALLBACK_H_ |
AppNearMe | 3:0b949b2d3b55 | 10 | #define NDEFCALLBACK_H_ |
AppNearMe | 3:0b949b2d3b55 | 11 | |
AppNearMe | 3:0b949b2d3b55 | 12 | #include "TLVList.h" |
AppNearMe | 3:0b949b2d3b55 | 13 | |
AppNearMe | 3:0b949b2d3b55 | 14 | #include "munfc/core/fwk.h" |
AppNearMe | 3:0b949b2d3b55 | 15 | #include "munfc/ndef/appnearme_ndef.h" |
AppNearMe | 3:0b949b2d3b55 | 16 | |
AppNearMe | 3:0b949b2d3b55 | 17 | class NdefCallback |
AppNearMe | 3:0b949b2d3b55 | 18 | { |
AppNearMe | 3:0b949b2d3b55 | 19 | protected: |
AppNearMe | 3:0b949b2d3b55 | 20 | NdefCallback(); //Callable by MuNFC |
AppNearMe | 3:0b949b2d3b55 | 21 | |
AppNearMe | 3:0b949b2d3b55 | 22 | void init(void (*fn)(appnearme_ndef_callback, void*)); |
AppNearMe | 3:0b949b2d3b55 | 23 | |
AppNearMe | 3:0b949b2d3b55 | 24 | void attach(void (*fn)(TLVList*, void*), void* arg); |
AppNearMe | 3:0b949b2d3b55 | 25 | |
AppNearMe | 3:0b949b2d3b55 | 26 | template <class T> |
AppNearMe | 3:0b949b2d3b55 | 27 | void attach(T* inst, void (T::*member)(TLVList*)) |
AppNearMe | 3:0b949b2d3b55 | 28 | { |
AppNearMe | 3:0b949b2d3b55 | 29 | m_fn = NULL; |
AppNearMe | 3:0b949b2d3b55 | 30 | m_inst = inst; |
AppNearMe | 3:0b949b2d3b55 | 31 | m_member = member; |
AppNearMe | 3:0b949b2d3b55 | 32 | m_caller = &NdefCallback::memberCaller<T>; |
AppNearMe | 3:0b949b2d3b55 | 33 | } |
AppNearMe | 3:0b949b2d3b55 | 34 | |
AppNearMe | 3:0b949b2d3b55 | 35 | private: |
AppNearMe | 3:0b949b2d3b55 | 36 | void callback(tlv_list* payload); |
AppNearMe | 3:0b949b2d3b55 | 37 | |
AppNearMe | 3:0b949b2d3b55 | 38 | //Data |
AppNearMe | 3:0b949b2d3b55 | 39 | TLVList m_tlvList; |
AppNearMe | 3:0b949b2d3b55 | 40 | |
AppNearMe | 3:0b949b2d3b55 | 41 | //Function |
AppNearMe | 3:0b949b2d3b55 | 42 | void(*m_fn)(TLVList*, void*); |
AppNearMe | 3:0b949b2d3b55 | 43 | void* m_arg; |
AppNearMe | 3:0b949b2d3b55 | 44 | |
AppNearMe | 3:0b949b2d3b55 | 45 | //Member of object instance |
AppNearMe | 3:0b949b2d3b55 | 46 | void* m_inst; |
AppNearMe | 3:0b949b2d3b55 | 47 | void* m_member; |
AppNearMe | 3:0b949b2d3b55 | 48 | void* (*m_caller)(TLVList*); |
AppNearMe | 3:0b949b2d3b55 | 49 | |
AppNearMe | 3:0b949b2d3b55 | 50 | template <class T> |
AppNearMe | 3:0b949b2d3b55 | 51 | static inline void memberCaller(TLVList* tlvList) |
AppNearMe | 3:0b949b2d3b55 | 52 | { |
AppNearMe | 3:0b949b2d3b55 | 53 | T* inst = (T*) m_inst; |
AppNearMe | 3:0b949b2d3b55 | 54 | void (T::*member)(TLVList*) = m_member; |
AppNearMe | 3:0b949b2d3b55 | 55 | inst->member(tlvList); |
AppNearMe | 3:0b949b2d3b55 | 56 | } |
AppNearMe | 3:0b949b2d3b55 | 57 | |
AppNearMe | 3:0b949b2d3b55 | 58 | static void staticCallback(tlv_list* payload, void* param); |
AppNearMe | 3:0b949b2d3b55 | 59 | |
AppNearMe | 3:0b949b2d3b55 | 60 | friend class MuNFC; |
AppNearMe | 3:0b949b2d3b55 | 61 | }; |
AppNearMe | 3:0b949b2d3b55 | 62 | |
AppNearMe | 3:0b949b2d3b55 | 63 | |
AppNearMe | 3:0b949b2d3b55 | 64 | #endif /* NDEFCALLBACK_H_ */ |