interrupt handling

Dependencies:  

Revision:
13:16a5b43ac874
Parent:
11:d5e8f47880f1
--- a/main.cpp	Fri Apr 10 23:16:44 2015 +0000
+++ b/main.cpp	Thu Apr 30 23:30:55 2015 +0000
@@ -1,18 +1,18 @@
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
     Filename:       main.cpp
-    Description:    Interface nRF51-DK eval board to TRF7970 eval board 
-                    to test the suitability of the TRF7970 NFC chip 
+    Description:    Interface nRF51-DK eval board to TRF7970 eval board
+                    to test the suitability of the TRF7970 NFC chip
                     for use in Gymtrack products.
                     The nRF51-DK board has an nRF51422 MCU.
     Copyright (C)   2015 Gymtrack, Inc.
     Author:         Ron Clough
     Date:           2015-02-26
-    
+
     Changes:
     Rev     Date        Who     Details
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     0.0     2015-02-26  RWC     Original version.
-    
+
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 #include    "mbed.h"
@@ -22,73 +22,137 @@
 #include "BLEDevice.h"
 #include "HeartRateService.h"
 #include "DeviceInformationService.h"
-SPI         spi(p25, p28, p29); // MOSI, MISO, SCLK
-           // Slave Select (SS)
-Serial      pc(USBTX, USBRX);   // Serial communication over USB with PC
-DigitalOut  heartbeatLED(LED4); // "Heartbeat" LED
-DigitalOut  debug2LED(LED2);    // "Debug2" LED
-DigitalOut  ISO15693LED(LED3);  // "Detected ISO15693 tag" LED
-DigitalOut  debug1LED(LED1);    // "Debug1" LED
+#include "GT_Timer.h"
+#include "CompareTime.h"
+SPI         spi(p7, p8, p3); // MOSI, MISO, SCLK
+// Slave Select (SS)
+#define BLED_PIN p17
+#define RLED_PIN p19
+#define GLED_PIN p18
+DigitalOut BLED(BLED_PIN);
+DigitalOut RLED(RLED_PIN);
+DigitalOut GLED(GLED_PIN);
+
+Serial      pc(p24, p25);   // Serial communication over USB with PC
+//DigitalOut  heartbeatLED(LED4); // "Heartbeat" LED
+//DigitalOut  debug2LED(LED2);    // "Debug2" LED
+//DigitalOut  ISO15693LED(LED3);  // "Detected ISO15693 tag" LED
+//DigitalOut  debug1LED(LED1);    // "Debug1" LED
 extern DigitalOut  EN;           // Control EN pin on TRF7970
 extern DigitalOut  EN2;        // Control EN2 pin on TRF7970
-extern DigitalOut  CS; 
-
+extern DigitalOut  CS;
+extern DigitalOut AO_7970;
+extern DigitalOut MOD_7970;
 //DigitalInOut  ook_ask(p6);      // Control ASK/OOK pin on TRF7970
 //DigitalOut  mod(p5);            // Control MOD pin on TRF7970
-InterruptIn     readerInt(p7); 
-DigitalOut  testPin(p1);
+InterruptIn     readerInt(p28);
+//DigitalOut  testPin(p1);
 BLEDevice  ble;
 extern uint8_t     buf[300];
 uint8_t noBytes=0;
-extern uint8_t    turnRFOn[2]; 
-extern uint8_t    testcommand[2]; 
+extern uint8_t    turnRFOn[2];
+extern uint8_t    testcommand[2];
 extern uint8_t     found;
-
+extern int nfc;
 bool tagFound=0;
 //uint8_t     WAIT=0;
-
+int next_reading_tag=0;
 int main()
-{testPin=0;
-pc.baud(115200);
+{
+    //testPin=0;
+    pc.baud(115200);
+    AO_7970= 0;
+    MOD_7970=0;
 //=============================================================ble test
- ble.init();
-// ble.onDisconnection(disconnectionCallback);
- //
-//    /* Setup advertising. */
-    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
-//  //  ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
-    ble.accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_HEART_RATE_SENSOR);
-//   // ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
-    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
-    ble.setAdvertisingInterval(1000);
-    ble.startAdvertising();
+// ble.init();
+//// ble.onDisconnection(disconnectionCallback);
+// //
+////    /* Setup advertising. */
+//    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
+////  //  ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
+//    ble.accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_HEART_RATE_SENSOR);
+////   // ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
+//    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+//    ble.setAdvertisingInterval(1000);
+//    ble.startAdvertising();
 //===============================================================*/
 
-readerInt.rise(&handlerNFC);
-CS=1;
-SpiInit(); //spi=1Mhz
-PowerUpNFC();
-NFCInit();
-RegisterReInitNFC();
-RegistersReadNFC();
-PowerDownNFC();                      //SleepNFC() //StandByNFC()
+    readerInt.rise(&handlerNFC);
+    CS=1;
+    SpiInit(); //spi=1Mhz
+    PowerUpNFC();
+    NFCInit();
+    RegisterReInitNFC();
+    RegistersReadNFC();
+//PowerDownNFC();                      //SleepNFC() //StandByNFC()
 //SleepNFC();
+    BLED=0;
+    /** Print the text
+            *
+            * @groups PollNFC
+            *
+            *   1 on success,
+            *   0 on serial error
+            */
+
+    while(1) {
+      //  PowerUpNFC();
+     // NFCInit();
+//        RegisterReInitNFC();
+        
+
+        while(tagFound==0) {
+          //  printf("tag nt found \r\n");
+            //BLED=1;
+//testcommand[0] = 0x17;
+//trf797xDirectCommand(testcommand);
+//testcommand[0] = 0x18;
+//trf797xDirectCommand(testcommand);
+//wait_ms(5);
+//testcommand[0] = RSSI_LEVELS;            //Read RSSI levels and oscillator status(0x0F/0x4F)
+//trf797xReadSingle(testcommand, 1);
+//printf("RSSI:%X \r\n", testcommand[0]);
+//tagFound=PollNFC();
 
-while(1)
-{ 
-tagFound=PollNFC();
+            tagFound=PollNFC();
+           // RegisterReInitNFC();
+//wait_ms(5);
+            //int tag= CompareTime( gt_read_ms(),next_reading_tag,50);
+//
+//            if (tag<0) {
+//                ;
+//            } else {
+//                    RLED=1;
+//                    wait_ms(5);
+//                    RLED=0;
+//                next_reading_tag = gt_read_ms();
+             //   printf("time out : no tag \r\n");
+//                break;
+//
+//            }
+        }
+//
+        if(tagFound==1) {nfc=0;
+            //printf("read single block:");
+            BLED=1;
+            for(uint8_t i=0; i<noBytes; i++)
+                printf("%X ", buf[i]);
+            printf("\r\n");
+            printf("tag found \r\n");
+            BLED=0;
+            tagFound=0;
+//////
+//////// //break;
+        } //else {
+//            printf("tag nt found \r\n");
+//        }
+//////
 
-if(tagFound==1)
-{//printf("read single block:");
- for(uint8_t i=0; i<noBytes; i++)
- printf("%X ", buf[i]);
- printf("\r\n");
- printf("tag found \r\n");
- break;
- }
- else wait(1);
-} 
- 
+        
+       PowerDownNFC();
+     //   wait(2);
+    }
+
 }