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 Aug 07 21:55:12 2012 +0000
Revision:
3:0b949b2d3b55
Parent:
0:480387549d89
Versioning -> Hg

Who changed what in which revision?

UserRevisionLine numberNew 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_ */