![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
aidanReceiver
Dependencies: mbed BLE_API nRF51822
Diff: receiver_main.cpp
- 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 }