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/NdefCallback.h
- Revision:
- 0:480387549d89
- Child:
- 3:0b949b2d3b55
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PN532/NdefCallback.h Thu Jul 26 09:12:27 2012 +0000 @@ -0,0 +1,64 @@ +/* + NdefCallback.h + Copyright (c) Donatien Garnier 2012 + donatien.garnier@appnearme.com + http://www.appnearme.com/ +*/ + + +#ifndef NDEFCALLBACK_H_ +#define NDEFCALLBACK_H_ + +#include "TLVList.h" + +#include "munfc/core/fwk.h" +#include "munfc/ndef/appnearme_ndef.h" + +class NdefCallback +{ +protected: + NdefCallback(); //Callable by MuNFC + + void init(void (*fn)(appnearme_ndef_callback, void*)); + + void attach(void (*fn)(TLVList*, void*), void* arg); + + template <class T> + void attach(T* inst, void (T::*member)(TLVList*)) + { + m_fn = NULL; + m_inst = inst; + m_member = member; + m_caller = &NdefCallback::memberCaller<T>; + } + +private: + void callback(tlv_list* payload); + + //Data + TLVList m_tlvList; + + //Function + void(*m_fn)(TLVList*, void*); + void* m_arg; + + //Member of object instance + void* m_inst; + void* m_member; + void* (*m_caller)(TLVList*); + + template <class T> + static inline void memberCaller(TLVList* tlvList) + { + T* inst = (T*) m_inst; + void (T::*member)(TLVList*) = m_member; + inst->member(tlvList); + } + + static void staticCallback(tlv_list* payload, void* param); + + friend class MuNFC; +}; + + +#endif /* NDEFCALLBACK_H_ */