AppNearMe Official / NFCMoodLamp

Dependencies:   AppNearMe_MuNFC_PN532 mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 #include "MuNFC.h"
00004 
00005 DigitalOut led_alive(LED1);
00006 DigitalOut led_progress(LED2);
00007 DigitalOut led_ok(LED3);
00008 DigitalOut led_failed(LED4);
00009 
00010 PwmOut red(p26);
00011 PwmOut green(p24);
00012 PwmOut blue(p25);
00013 
00014 MuNFC nfc("00000001aZSe2vF5", 1, p11, p12, p13, p19, p18);
00015 
00016 #define DEFAULT_PACKET 1
00017 
00018 uint8_t r;
00019 uint8_t g;
00020 uint8_t b;
00021 
00022 //Encode callback
00023 void encode_cb(TLVList* tlv, void *)
00024 {
00025   tlv->putUInt8( DEFAULT_PACKET); //First uint8_t is packet type
00026   tlv->putUInt8(r);
00027   tlv->putUInt8(g);
00028   tlv->putUInt8(b);
00029 }
00030 
00031 //Decode callback
00032 void decode_cb(TLVList* tlv, void *)
00033 {
00034   if(tlv->getNext() != UINT8)
00035   {
00036     return;
00037   }
00038   if(tlv->getUInt8() == DEFAULT_PACKET) //First uint8_t is packet type
00039   { 
00040     if(tlv->getNext() != UINT8)
00041     {
00042       return;
00043     }
00044     r=tlv->getUInt8();
00045     if(tlv->getNext() != UINT8)
00046     {
00047       return;
00048     }
00049     g=tlv->getUInt8();
00050     if(tlv->getNext() != UINT8)
00051     {
00052       return;
00053     }
00054     b=tlv->getUInt8();
00055   }
00056      /////////////////////////
00057      //SET RGB LEDS PWM HERE//
00058      /////////////////////////
00059      red = pow((float)r, 2.0f) / (255.0*255.0);
00060      green = pow((float)g, 2.0f) / (255.0*255.0);
00061      blue = pow((float)b, 2.0f) / (255.0*255.0);
00062 
00063 }
00064 
00065 //NFC event
00066 void event_cb(NFCEvent event, void*)
00067 {
00068     switch(event)
00069     {
00070     case NFC_TRANSACTION_STARTED:
00071         led_progress=1;
00072         led_ok=0;
00073         led_failed=0;
00074     break;
00075     case NFC_TRANSACTION_SUCCESSFUL:
00076         led_progress=0;
00077         led_ok=1;
00078         led_failed=0;
00079     break;
00080     case NFC_TRANSACTION_FAILED:
00081         led_progress=0;
00082         led_ok=0;
00083         led_failed=1;
00084     break;    
00085     }
00086 }
00087 
00088 int main() {
00089     r=g=b=0;
00090     
00091     nfc.encode(encode_cb, NULL);
00092     nfc.decode(decode_cb, NULL);
00093     nfc.event(event_cb, NULL);
00094     
00095     printf("Hello");
00096     
00097     bool ret = nfc.init();
00098     if(ret)
00099     {
00100       printf("AppNearMe/MuNFC stack initialized\n");
00101       
00102     }
00103     else
00104     {
00105       printf("Could not initialize stack\n");
00106     }
00107     
00108     nfc.run();
00109     
00110     while(1) {
00111         led_alive = 1;
00112         wait(0.2);
00113         led_alive = 0;
00114         wait(0.2);
00115     }
00116 }