![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
aidanReceiver
Dependencies: mbed BLE_API nRF51822
receiver_main.cpp@2:89b8aef35194, 2019-04-17 (annotated)
- Committer:
- jzabins2
- Date:
- Wed Apr 17 20:35:33 2019 +0000
- Revision:
- 2:89b8aef35194
- Parent:
- 1:3ad5b46f9abc
- Child:
- 3:ca23d318cb12
Latest receiver code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aidanjabb | 0:50406b29435a | 1 | #include "mbed.h" |
aidanjabb | 0:50406b29435a | 2 | #include "ble/BLE.h" |
jzabins2 | 2:89b8aef35194 | 3 | |
aidanjabb | 0:50406b29435a | 4 | #define LED_RED p21 |
aidanjabb | 0:50406b29435a | 5 | #define LED_GREEN p22 |
aidanjabb | 0:50406b29435a | 6 | #define LED_BLUE p23 |
aidanjabb | 0:50406b29435a | 7 | #define BUTTON_PIN p17 |
aidanjabb | 0:50406b29435a | 8 | #define BATTERY_PIN p1 |
jzabins2 | 2:89b8aef35194 | 9 | |
aidanjabb | 0:50406b29435a | 10 | DigitalOut led1(LED_RED); |
aidanjabb | 0:50406b29435a | 11 | DigitalOut blueLed(LED_BLUE); |
jzabins2 | 2:89b8aef35194 | 12 | |
aidanjabb | 0:50406b29435a | 13 | const static char DEVICE_NAME[] = "Joe-Aidan"; |
aidanjabb | 1:3ad5b46f9abc | 14 | |
jzabins2 | 2:89b8aef35194 | 15 | struct Data { |
jzabins2 | 2:89b8aef35194 | 16 | uint32_t seqNum; |
jzabins2 | 2:89b8aef35194 | 17 | }; |
aidanjabb | 1:3ad5b46f9abc | 18 | |
aidanjabb | 0:50406b29435a | 19 | // void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) |
jzabins2 | 2:89b8aef35194 | 20 | |
aidanjabb | 0:50406b29435a | 21 | void scanCallback(const Gap::AdvertisementCallbackParams_t *params) |
aidanjabb | 0:50406b29435a | 22 | { |
aidanjabb | 0:50406b29435a | 23 | if (*(params->Gap::AdvertisementCallbackParams_t::peerAddr) == (std::uint8_t)0xF34F887FED4E) { |
aidanjabb | 0:50406b29435a | 24 | char * buf = (char*) params->advertisingData; |
aidanjabb | 0:50406b29435a | 25 | |
aidanjabb | 0:50406b29435a | 26 | if (buf[0] == GapAdvertisingData::COMPLETE_LOCAL_NAME) { |
aidanjabb | 0:50406b29435a | 27 | blueLed = 0; |
aidanjabb | 0:50406b29435a | 28 | } |
aidanjabb | 0:50406b29435a | 29 | |
aidanjabb | 0:50406b29435a | 30 | /* |
aidanjabb | 0:50406b29435a | 31 | for (int i=0; i < params->advertisingDataLen; i++) { |
aidanjabb | 0:50406b29435a | 32 | if ( i >= params->advertisingDataLen-2 && buf[i] == 'n' ) { |
aidanjabb | 0:50406b29435a | 33 | blueLed = 0; |
aidanjabb | 0:50406b29435a | 34 | } |
aidanjabb | 0:50406b29435a | 35 | } |
aidanjabb | 0:50406b29435a | 36 | */ |
aidanjabb | 0:50406b29435a | 37 | |
aidanjabb | 0:50406b29435a | 38 | led1 = 0; |
aidanjabb | 0:50406b29435a | 39 | } |
aidanjabb | 0:50406b29435a | 40 | |
aidanjabb | 0:50406b29435a | 41 | // ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); |
jzabins2 | 2:89b8aef35194 | 42 | |
aidanjabb | 0:50406b29435a | 43 | return; |
aidanjabb | 0:50406b29435a | 44 | } |
jzabins2 | 2:89b8aef35194 | 45 | |
jzabins2 | 2:89b8aef35194 | 46 | |
aidanjabb | 0:50406b29435a | 47 | void bleInitComplete(BLE::InitializationCompleteCallbackContext *params) |
aidanjabb | 0:50406b29435a | 48 | { |
aidanjabb | 0:50406b29435a | 49 | BLE &ble = params->ble; |
aidanjabb | 0:50406b29435a | 50 | ble_error_t error = params->error; |
jzabins2 | 2:89b8aef35194 | 51 | |
aidanjabb | 0:50406b29435a | 52 | if (error != BLE_ERROR_NONE) { |
aidanjabb | 0:50406b29435a | 53 | return; |
aidanjabb | 0:50406b29435a | 54 | } |
aidanjabb | 0:50406b29435a | 55 | |
aidanjabb | 0:50406b29435a | 56 | led1 = 1; |
aidanjabb | 0:50406b29435a | 57 | blueLed = 1; |
jzabins2 | 2:89b8aef35194 | 58 | |
aidanjabb | 0:50406b29435a | 59 | |
aidanjabb | 0:50406b29435a | 60 | /* Set up scanning prodedure */ |
aidanjabb | 0:50406b29435a | 61 | ble.gap().setScanParams(GapScanningParams::SCAN_INTERVAL_MAX, GapScanningParams::SCAN_WINDOW_MAX, 0, false); |
aidanjabb | 0:50406b29435a | 62 | ble.gap().startScan(scanCallback); |
aidanjabb | 0:50406b29435a | 63 | } |
jzabins2 | 2:89b8aef35194 | 64 | |
jzabins2 | 2:89b8aef35194 | 65 | |
aidanjabb | 0:50406b29435a | 66 | int main(void) |
aidanjabb | 0:50406b29435a | 67 | { |
aidanjabb | 0:50406b29435a | 68 | BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); |
aidanjabb | 0:50406b29435a | 69 | ble.init(bleInitComplete); |
aidanjabb | 0:50406b29435a | 70 | |
aidanjabb | 0:50406b29435a | 71 | /* SpinWait for initialization to complete. This is necessary because the |
aidanjabb | 0:50406b29435a | 72 | * BLE object is used in the main loop below. */ |
aidanjabb | 0:50406b29435a | 73 | while (ble.hasInitialized() == false) { /* spin loop */ } |
aidanjabb | 0:50406b29435a | 74 | |
aidanjabb | 0:50406b29435a | 75 | while (1) { |
aidanjabb | 0:50406b29435a | 76 | ble.waitForEvent(); // low power wait for event |
aidanjabb | 0:50406b29435a | 77 | } |
jzabins2 | 2:89b8aef35194 | 78 | } |