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/EventCallback.h@11:5be631376e5b, 2012-11-07 (annotated)
- Committer:
- AppNearMe
- Date:
- Wed Nov 07 18:19:09 2012 +0000
- Revision:
- 11:5be631376e5b
Updated library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AppNearMe | 11:5be631376e5b | 1 | /* |
AppNearMe | 11:5be631376e5b | 2 | EventCallback.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 EVENTCALLBACK_H_ |
AppNearMe | 11:5be631376e5b | 10 | #define EVENTCALLBACK_H_ |
AppNearMe | 11:5be631376e5b | 11 | |
AppNearMe | 11:5be631376e5b | 12 | #include "NFCEvent.h" |
AppNearMe | 11:5be631376e5b | 13 | |
AppNearMe | 11:5be631376e5b | 14 | #include "munfc/core/fwk.h" |
AppNearMe | 11:5be631376e5b | 15 | #include "munfc/event/transaction_event.h" |
AppNearMe | 11:5be631376e5b | 16 | |
AppNearMe | 11:5be631376e5b | 17 | class EventCallback |
AppNearMe | 11:5be631376e5b | 18 | { |
AppNearMe | 11:5be631376e5b | 19 | protected: |
AppNearMe | 11:5be631376e5b | 20 | EventCallback(); |
AppNearMe | 11:5be631376e5b | 21 | |
AppNearMe | 11:5be631376e5b | 22 | void init( void (*fn)(transaction_event_callback, void*) ); //Callable by MuNFC |
AppNearMe | 11:5be631376e5b | 23 | |
AppNearMe | 11:5be631376e5b | 24 | void attach(void (*fn)(NFCEvent, 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)(NFCEvent)) |
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 = &EventCallback::memberCaller<T>; |
AppNearMe | 11:5be631376e5b | 33 | } |
AppNearMe | 11:5be631376e5b | 34 | |
AppNearMe | 11:5be631376e5b | 35 | |
AppNearMe | 11:5be631376e5b | 36 | private: |
AppNearMe | 11:5be631376e5b | 37 | void callback(transaction_event event, transaction_type type); |
AppNearMe | 11:5be631376e5b | 38 | |
AppNearMe | 11:5be631376e5b | 39 | //Function |
AppNearMe | 11:5be631376e5b | 40 | void(*m_fn)(NFCEvent, void*); |
AppNearMe | 11:5be631376e5b | 41 | void* m_arg; |
AppNearMe | 11:5be631376e5b | 42 | |
AppNearMe | 11:5be631376e5b | 43 | |
AppNearMe | 11:5be631376e5b | 44 | //Member of object instance |
AppNearMe | 11:5be631376e5b | 45 | void* m_inst; |
AppNearMe | 11:5be631376e5b | 46 | char m_pMember[16]; |
AppNearMe | 11:5be631376e5b | 47 | void (*m_caller)(EventCallback*, NFCEvent); |
AppNearMe | 11:5be631376e5b | 48 | |
AppNearMe | 11:5be631376e5b | 49 | template <class T> |
AppNearMe | 11:5be631376e5b | 50 | static inline void memberCaller(EventCallback* p, NFCEvent event) |
AppNearMe | 11:5be631376e5b | 51 | { |
AppNearMe | 11:5be631376e5b | 52 | T* inst = (T*) p->m_inst; |
AppNearMe | 11:5be631376e5b | 53 | void (T::*member)(NFCEvent); |
AppNearMe | 11:5be631376e5b | 54 | memcpy(&member, p->m_pMember, sizeof(member)); |
AppNearMe | 11:5be631376e5b | 55 | (inst->*member)(event); |
AppNearMe | 11:5be631376e5b | 56 | } |
AppNearMe | 11:5be631376e5b | 57 | |
AppNearMe | 11:5be631376e5b | 58 | static void staticCallback(transaction_event event, transaction_type type, void* param); |
AppNearMe | 11:5be631376e5b | 59 | |
AppNearMe | 11:5be631376e5b | 60 | friend class MuNFC; |
AppNearMe | 11:5be631376e5b | 61 | }; |
AppNearMe | 11:5be631376e5b | 62 | |
AppNearMe | 11:5be631376e5b | 63 | |
AppNearMe | 11:5be631376e5b | 64 | |
AppNearMe | 11:5be631376e5b | 65 | #endif /* EVENTCALLBACK_H_ */ |