NFC Mood Lamp Demo Code

Dependencies:   AppNearMe_MuNFC_PN532 mbed-rtos mbed

Committer:
AppNearMe
Date:
Thu Apr 25 13:04:12 2013 +0000
Revision:
1:6a6124cd2f26
Parent:
0:7a876f6f78a5
Libraries update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AppNearMe 0:7a876f6f78a5 1 #include "mbed.h"
AppNearMe 0:7a876f6f78a5 2
AppNearMe 0:7a876f6f78a5 3 #include "MuNFC.h"
AppNearMe 0:7a876f6f78a5 4
AppNearMe 0:7a876f6f78a5 5 DigitalOut led_alive(LED1);
AppNearMe 0:7a876f6f78a5 6 DigitalOut led_progress(LED2);
AppNearMe 0:7a876f6f78a5 7 DigitalOut led_ok(LED3);
AppNearMe 0:7a876f6f78a5 8 DigitalOut led_failed(LED4);
AppNearMe 0:7a876f6f78a5 9
AppNearMe 0:7a876f6f78a5 10 PwmOut red(p26);
AppNearMe 0:7a876f6f78a5 11 PwmOut green(p24);
AppNearMe 0:7a876f6f78a5 12 PwmOut blue(p25);
AppNearMe 0:7a876f6f78a5 13
AppNearMe 0:7a876f6f78a5 14 MuNFC nfc("00000001aZSe2vF5", 1, p11, p12, p13, p19, p18);
AppNearMe 0:7a876f6f78a5 15
AppNearMe 0:7a876f6f78a5 16 #define DEFAULT_PACKET 1
AppNearMe 0:7a876f6f78a5 17
AppNearMe 0:7a876f6f78a5 18 uint8_t r;
AppNearMe 0:7a876f6f78a5 19 uint8_t g;
AppNearMe 0:7a876f6f78a5 20 uint8_t b;
AppNearMe 0:7a876f6f78a5 21
AppNearMe 0:7a876f6f78a5 22 //Encode callback
AppNearMe 0:7a876f6f78a5 23 void encode_cb(TLVList* tlv, void *)
AppNearMe 0:7a876f6f78a5 24 {
AppNearMe 0:7a876f6f78a5 25 tlv->putUInt8( DEFAULT_PACKET); //First uint8_t is packet type
AppNearMe 0:7a876f6f78a5 26 tlv->putUInt8(r);
AppNearMe 0:7a876f6f78a5 27 tlv->putUInt8(g);
AppNearMe 0:7a876f6f78a5 28 tlv->putUInt8(b);
AppNearMe 0:7a876f6f78a5 29 }
AppNearMe 0:7a876f6f78a5 30
AppNearMe 0:7a876f6f78a5 31 //Decode callback
AppNearMe 0:7a876f6f78a5 32 void decode_cb(TLVList* tlv, void *)
AppNearMe 0:7a876f6f78a5 33 {
AppNearMe 0:7a876f6f78a5 34 if(tlv->getNext() != UINT8)
AppNearMe 0:7a876f6f78a5 35 {
AppNearMe 0:7a876f6f78a5 36 return;
AppNearMe 0:7a876f6f78a5 37 }
AppNearMe 0:7a876f6f78a5 38 if(tlv->getUInt8() == DEFAULT_PACKET) //First uint8_t is packet type
AppNearMe 0:7a876f6f78a5 39 {
AppNearMe 0:7a876f6f78a5 40 if(tlv->getNext() != UINT8)
AppNearMe 0:7a876f6f78a5 41 {
AppNearMe 0:7a876f6f78a5 42 return;
AppNearMe 0:7a876f6f78a5 43 }
AppNearMe 0:7a876f6f78a5 44 r=tlv->getUInt8();
AppNearMe 0:7a876f6f78a5 45 if(tlv->getNext() != UINT8)
AppNearMe 0:7a876f6f78a5 46 {
AppNearMe 0:7a876f6f78a5 47 return;
AppNearMe 0:7a876f6f78a5 48 }
AppNearMe 0:7a876f6f78a5 49 g=tlv->getUInt8();
AppNearMe 0:7a876f6f78a5 50 if(tlv->getNext() != UINT8)
AppNearMe 0:7a876f6f78a5 51 {
AppNearMe 0:7a876f6f78a5 52 return;
AppNearMe 0:7a876f6f78a5 53 }
AppNearMe 0:7a876f6f78a5 54 b=tlv->getUInt8();
AppNearMe 0:7a876f6f78a5 55 }
AppNearMe 0:7a876f6f78a5 56 /////////////////////////
AppNearMe 0:7a876f6f78a5 57 //SET RGB LEDS PWM HERE//
AppNearMe 0:7a876f6f78a5 58 /////////////////////////
AppNearMe 0:7a876f6f78a5 59 red = pow((float)r, 2.0f) / (255.0*255.0);
AppNearMe 0:7a876f6f78a5 60 green = pow((float)g, 2.0f) / (255.0*255.0);
AppNearMe 0:7a876f6f78a5 61 blue = pow((float)b, 2.0f) / (255.0*255.0);
AppNearMe 0:7a876f6f78a5 62
AppNearMe 0:7a876f6f78a5 63 }
AppNearMe 0:7a876f6f78a5 64
AppNearMe 0:7a876f6f78a5 65 //NFC event
AppNearMe 0:7a876f6f78a5 66 void event_cb(NFCEvent event, void*)
AppNearMe 0:7a876f6f78a5 67 {
AppNearMe 0:7a876f6f78a5 68 switch(event)
AppNearMe 0:7a876f6f78a5 69 {
AppNearMe 0:7a876f6f78a5 70 case NFC_TRANSACTION_STARTED:
AppNearMe 0:7a876f6f78a5 71 led_progress=1;
AppNearMe 0:7a876f6f78a5 72 led_ok=0;
AppNearMe 0:7a876f6f78a5 73 led_failed=0;
AppNearMe 0:7a876f6f78a5 74 break;
AppNearMe 0:7a876f6f78a5 75 case NFC_TRANSACTION_SUCCESSFUL:
AppNearMe 0:7a876f6f78a5 76 led_progress=0;
AppNearMe 0:7a876f6f78a5 77 led_ok=1;
AppNearMe 0:7a876f6f78a5 78 led_failed=0;
AppNearMe 0:7a876f6f78a5 79 break;
AppNearMe 0:7a876f6f78a5 80 case NFC_TRANSACTION_FAILED:
AppNearMe 0:7a876f6f78a5 81 led_progress=0;
AppNearMe 0:7a876f6f78a5 82 led_ok=0;
AppNearMe 0:7a876f6f78a5 83 led_failed=1;
AppNearMe 0:7a876f6f78a5 84 break;
AppNearMe 0:7a876f6f78a5 85 }
AppNearMe 0:7a876f6f78a5 86 }
AppNearMe 0:7a876f6f78a5 87
AppNearMe 0:7a876f6f78a5 88 int main() {
AppNearMe 0:7a876f6f78a5 89 r=g=b=0;
AppNearMe 0:7a876f6f78a5 90
AppNearMe 0:7a876f6f78a5 91 nfc.encode(encode_cb, NULL);
AppNearMe 0:7a876f6f78a5 92 nfc.decode(decode_cb, NULL);
AppNearMe 0:7a876f6f78a5 93 nfc.event(event_cb, NULL);
AppNearMe 0:7a876f6f78a5 94
AppNearMe 0:7a876f6f78a5 95 printf("Hello");
AppNearMe 0:7a876f6f78a5 96
AppNearMe 0:7a876f6f78a5 97 bool ret = nfc.init();
AppNearMe 0:7a876f6f78a5 98 if(ret)
AppNearMe 0:7a876f6f78a5 99 {
AppNearMe 0:7a876f6f78a5 100 printf("AppNearMe/MuNFC stack initialized\n");
AppNearMe 0:7a876f6f78a5 101
AppNearMe 0:7a876f6f78a5 102 }
AppNearMe 0:7a876f6f78a5 103 else
AppNearMe 0:7a876f6f78a5 104 {
AppNearMe 0:7a876f6f78a5 105 printf("Could not initialize stack\n");
AppNearMe 0:7a876f6f78a5 106 }
AppNearMe 0:7a876f6f78a5 107
AppNearMe 0:7a876f6f78a5 108 nfc.run();
AppNearMe 0:7a876f6f78a5 109
AppNearMe 0:7a876f6f78a5 110 while(1) {
AppNearMe 0:7a876f6f78a5 111 led_alive = 1;
AppNearMe 0:7a876f6f78a5 112 wait(0.2);
AppNearMe 0:7a876f6f78a5 113 led_alive = 0;
AppNearMe 0:7a876f6f78a5 114 wait(0.2);
AppNearMe 0:7a876f6f78a5 115 }
AppNearMe 0:7a876f6f78a5 116 }