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!

Committer:
AppNearMe
Date:
Tue Jan 15 15:34:39 2013 +0000
Revision:
13:6f98851e025b
Parent:
11:5be631376e5b
renamed rtos.h to platform_rtos.h to prevent insludes mess

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AppNearMe 11:5be631376e5b 1 /*
AppNearMe 11:5be631376e5b 2 NdefCallback.h
AppNearMe 11:5be631376e5b 3 Copyright (c) Donatien Garnier 2012
AppNearMe 11:5be631376e5b 4 donatien.garnier@appnearme.com
AppNearMe 11:5be631376e5b 5 http://www.appnearme.com/
AppNearMe 11:5be631376e5b 6 */
AppNearMe 11:5be631376e5b 7
AppNearMe 11:5be631376e5b 8
AppNearMe 11:5be631376e5b 9 #ifndef NDEFCALLBACK_H_
AppNearMe 11:5be631376e5b 10 #define NDEFCALLBACK_H_
AppNearMe 11:5be631376e5b 11
AppNearMe 11:5be631376e5b 12 #include "TLVList.h"
AppNearMe 11:5be631376e5b 13
AppNearMe 11:5be631376e5b 14 #include "munfc/core/fwk.h"
AppNearMe 11:5be631376e5b 15 #include "munfc/ndef/appnearme_ndef.h"
AppNearMe 11:5be631376e5b 16
AppNearMe 11:5be631376e5b 17 class NdefCallback
AppNearMe 11:5be631376e5b 18 {
AppNearMe 11:5be631376e5b 19 protected:
AppNearMe 11:5be631376e5b 20 NdefCallback(); //Callable by MuNFC
AppNearMe 11:5be631376e5b 21
AppNearMe 11:5be631376e5b 22 void init(void (*fn)(appnearme_ndef_callback, void*));
AppNearMe 11:5be631376e5b 23
AppNearMe 11:5be631376e5b 24 void attach(void (*fn)(TLVList*, void*), void* arg);
AppNearMe 11:5be631376e5b 25
AppNearMe 11:5be631376e5b 26 template <class T>
AppNearMe 11:5be631376e5b 27 void attach(T* inst, void (T::*member)(TLVList*))
AppNearMe 11:5be631376e5b 28 {
AppNearMe 11:5be631376e5b 29 m_fn = NULL;
AppNearMe 11:5be631376e5b 30 m_inst = inst;
AppNearMe 11:5be631376e5b 31 memcpy(m_pMember, (char*)&member, sizeof(member));
AppNearMe 11:5be631376e5b 32 m_caller = &NdefCallback::memberCaller<T>;
AppNearMe 11:5be631376e5b 33 }
AppNearMe 11:5be631376e5b 34
AppNearMe 11:5be631376e5b 35 private:
AppNearMe 11:5be631376e5b 36 void callback(tlv_list* payload);
AppNearMe 11:5be631376e5b 37
AppNearMe 11:5be631376e5b 38 //Data
AppNearMe 11:5be631376e5b 39 TLVList m_tlvList;
AppNearMe 11:5be631376e5b 40
AppNearMe 11:5be631376e5b 41 //Function
AppNearMe 11:5be631376e5b 42 void(*m_fn)(TLVList*, void*);
AppNearMe 11:5be631376e5b 43 void* m_arg;
AppNearMe 11:5be631376e5b 44
AppNearMe 11:5be631376e5b 45 //Member of object instance
AppNearMe 11:5be631376e5b 46 void* m_inst;
AppNearMe 11:5be631376e5b 47 char m_pMember[16];
AppNearMe 11:5be631376e5b 48 void (*m_caller)(NdefCallback*, TLVList*);
AppNearMe 11:5be631376e5b 49
AppNearMe 11:5be631376e5b 50 template <class T>
AppNearMe 11:5be631376e5b 51 static inline void memberCaller(NdefCallback* p, TLVList* tlvList)
AppNearMe 11:5be631376e5b 52 {
AppNearMe 11:5be631376e5b 53 T* inst = (T*) (p->m_inst);
AppNearMe 11:5be631376e5b 54 void (T::*member)(TLVList*);
AppNearMe 11:5be631376e5b 55 memcpy(&member, p->m_pMember, sizeof(member));
AppNearMe 11:5be631376e5b 56 (inst->*member)(tlvList);
AppNearMe 11:5be631376e5b 57 }
AppNearMe 11:5be631376e5b 58
AppNearMe 11:5be631376e5b 59 static void staticCallback(tlv_list* payload, void* param);
AppNearMe 11:5be631376e5b 60
AppNearMe 11:5be631376e5b 61 friend class MuNFC;
AppNearMe 11:5be631376e5b 62 };
AppNearMe 11:5be631376e5b 63
AppNearMe 11:5be631376e5b 64
AppNearMe 11:5be631376e5b 65 #endif /* NDEFCALLBACK_H_ */