Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed BLE_API nRF51822
Revision 8:adf882069ec4, committed 2019-04-29
- Comitter:
- jzabins2
- Date:
- Mon Apr 29 06:23:03 2019 +0000
- Parent:
- 7:435abd25362e
- Commit message:
- Receiver measuring average time to receive five messages
Changed in this revision
| receiver_main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/receiver_main.cpp Fri Apr 26 20:55:18 2019 +0000
+++ b/receiver_main.cpp Mon Apr 29 06:23:03 2019 +0000
@@ -1,10 +1,6 @@
#include "mbed.h"
#include "ble/BLE.h"
-#include <string>
-
-using namespace std;
-
-Serial pc(USBTX, USBRX);
+#include <time.h>
#define LED_RED p21
#define LED_GREEN p22
@@ -14,16 +10,15 @@
#define NUM_UNIQUE_PACKETS 5
+Serial pc(USBTX, USBRX);
+
DigitalOut redLed(LED_RED);
DigitalOut blueLed(LED_BLUE);
const uint8_t TRANSMITTER_MAC_ADDRESS = 0xF34F887FED4E;
-
-const static char DEVICE_NAME[] = "Receiver";
+//const static char DEVICE_NAME[] = "Receiver";
volatile bool received[NUM_UNIQUE_PACKETS];
-int latestSeqNum;
-
struct Data {
uint32_t seqNum;
};
@@ -32,6 +27,11 @@
void scanCallback(const Gap::AdvertisementCallbackParams_t *params)
{
+ static int numMeas;
+ static double avgMeas;
+
+ static clock_t clock1, clock2;
+
if (*(params->peerAddr) == (uint8_t) TRANSMITTER_MAC_ADDRESS) {
// BREDR_NOT_SUPPORTED = 0x04
@@ -41,22 +41,41 @@
// Data received: 02 ff (MANUFACTURER_SPECIFIC_DATA) 0 (Sequence Number)
+ // Turn off the blue led
+ blueLed = 1;
+
const uint8_t * data = params->advertisingData;
int seqNum = (int)data[2];
received[seqNum] = true;
- pc.printf("Seq num: %d\n", seqNum);
+ // pc.printf("Received packet with seq num: %d\n", seqNum);
bool done = true;
for(int i=0; i<NUM_UNIQUE_PACKETS; i++) {
- if(received[i] == false) {
- done = false;
- break;
- }
+ done = done && received[i];
}
if(done == true) {
+ // Set the blue LED
blueLed = 0;
+
+ clock2 = clock1;
+ clock1 = clock();
+
+ // Print the time
+ if (clock2 != 0) {
+ double timeUsed = ((double) (clock1 - clock2)) / CLOCKS_PER_SEC;
+ printf("Time to get full set: %f\n", timeUsed);
+
+ avgMeas = ((float)numMeas * avgMeas + timeUsed) / (numMeas + 1);
+ numMeas++;
+ pc.printf("Average time: %f seconds\n", avgMeas);
+ }
+
+ // Reset the bool array
+ for (int i=0; i<NUM_UNIQUE_PACKETS; i++) {
+ received[i] = false;
+ }
}
}
return;
@@ -77,13 +96,12 @@
/* Set up scanning prodedure */
localBle.gap().setScanParams(GapScanningParams::SCAN_INTERVAL_MAX, GapScanningParams::SCAN_WINDOW_MAX, 0, false);
- latestSeqNum = 0;
localBle.gap().startScan(scanCallback);
for(int i=0; i<NUM_UNIQUE_PACKETS; i++) {
received[i] = false;
}
-
+
pc.printf("Init Completed\n");
}
