aidanReceiver

Dependencies:   mbed BLE_API nRF51822

Revision:
7:435abd25362e
Parent:
6:55c87c9bc90e
Child:
8:adf882069ec4
--- a/receiver_main.cpp	Fri Apr 19 07:07:21 2019 +0000
+++ b/receiver_main.cpp	Fri Apr 26 20:55:18 2019 +0000
@@ -12,12 +12,15 @@
 #define BUTTON_PIN  p17
 #define BATTERY_PIN p1
 
+#define NUM_UNIQUE_PACKETS 5
+
 DigitalOut redLed(LED_RED);
 DigitalOut blueLed(LED_BLUE);
 
 const uint8_t TRANSMITTER_MAC_ADDRESS = 0xF34F887FED4E;
 
 const static char DEVICE_NAME[] = "Receiver";
+volatile bool received[NUM_UNIQUE_PACKETS];
 
 int latestSeqNum;
 
@@ -40,22 +43,21 @@
         
         const uint8_t * data = params->advertisingData;
         
-        //only print when new packet received!
-        if (latestSeqNum < (int)data[2]) {
-            pc.printf("%d bytes data received from transmitter\n", params->advertisingDataLen);
-            
-            for (int i = 0; i < params->advertisingDataLen; i++) {
-                if ( i >= params->advertisingDataLen-2 && data[i] == 'n' ) {
-                   blueLed = 0;
-                }
-                pc.printf("%x ", data[i]);
+        int seqNum = (int)data[2];
+        received[seqNum] = true;
+        pc.printf("Seq num: %d\n", seqNum);
+        
+        bool done = true;
+        for(int i=0; i<NUM_UNIQUE_PACKETS; i++) {
+            if(received[i] == false) {
+                done = false;
+                break;
             }
-            pc.printf("Seq num: %d", (int)data[2]);
-            pc.printf("\n");
-            latestSeqNum = (int)data[2];
         }
         
-        redLed = 0;
+        if(done == true) {
+            blueLed = 0;
+        }
     }
     return;
 }
@@ -78,6 +80,10 @@
     latestSeqNum = 0;
     localBle.gap().startScan(scanCallback);
     
+    for(int i=0; i<NUM_UNIQUE_PACKETS; i++) {
+        received[i] = false;
+    }
+    
     pc.printf("Init Completed\n");
 }
 
@@ -93,6 +99,8 @@
         pc.printf("Intiailizing BLE\n");
     }
     
+    pc.printf("We are done initializing\n");
+    
     while (1) {
         ble.waitForEvent(); // low power wait for event
     }