Using nRF51 as Line Beacon
Dependencies: BLE_API mbed nRF51822
Fork of BLE_GAP_Example by
main.cpp@4:d602b1c3aef4, 2015-03-10 (annotated)
- Committer:
- mbedAustin
- Date:
- Tue Mar 10 20:32:37 2015 +0000
- Revision:
- 4:d602b1c3aef4
- Parent:
- 3:e9646631084f
- Child:
- 5:fff16d283dcf
made device connectable instead of non-connectable, this is to allow iOS devices to connect and display the advertising info, because no iOS app will just show the advertising data, they have to connect... grrr....
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedAustin | 1:0692bee84264 | 1 | |
mbedAustin | 1:0692bee84264 | 2 | // Headers necessary for mbed and BLE device mode |
mbedAustin | 0:5375be4301ed | 3 | #include "mbed.h" |
mbedAustin | 0:5375be4301ed | 4 | #include "BLEDevice.h" |
mbedAustin | 0:5375be4301ed | 5 | |
mbedAustin | 1:0692bee84264 | 6 | // BLE object |
mbedAustin | 1:0692bee84264 | 7 | BLEDevice ble; |
mbedAustin | 0:5375be4301ed | 8 | |
mbedAustin | 1:0692bee84264 | 9 | /** |
mbedAustin | 1:0692bee84264 | 10 | You have up to 26 bytes of advertising data to use. |
mbedAustin | 1:0692bee84264 | 11 | Make up your own encoding for these 26bytes, send it across |
mbedAustin | 1:0692bee84264 | 12 | and decode it using the evothings app. |
mbedAustin | 1:0692bee84264 | 13 | */ |
mbedAustin | 4:d602b1c3aef4 | 14 | //const static uint8_t AdvData[] = {"ChangeThisData"}; // example of character data |
mbedAustin | 4:d602b1c3aef4 | 15 | const static uint8_t AdvData[] = {0x01,0x02,0x03,0x04,0x05}; // example of hex data |
mbedAustin | 1:0692bee84264 | 16 | |
mbedAustin | 1:0692bee84264 | 17 | // main program |
mbedAustin | 1:0692bee84264 | 18 | int main(void) |
mbedAustin | 0:5375be4301ed | 19 | { |
mbedAustin | 1:0692bee84264 | 20 | // Initialize BLE baselayer, always do this first! |
mbedAustin | 1:0692bee84264 | 21 | ble.init(); |
mbedAustin | 1:0692bee84264 | 22 | |
mbedAustin | 1:0692bee84264 | 23 | // Sacrifice 3B of 31B to Advertising Flags |
mbedAustin | 1:0692bee84264 | 24 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE ); |
mbedAustin | 4:d602b1c3aef4 | 25 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
mbedAustin | 1:0692bee84264 | 26 | |
mbedAustin | 1:0692bee84264 | 27 | // Sacrifice 2B of 31B to AdvType overhead, rest goes to AdvData array you define |
mbedAustin | 1:0692bee84264 | 28 | ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, AdvData, sizeof(AdvData)); |
mbedAustin | 1:0692bee84264 | 29 | |
mbedAustin | 1:0692bee84264 | 30 | // Set advertising interval. Longer interval = longer battery life |
mbedAustin | 1:0692bee84264 | 31 | ble.setAdvertisingInterval(160); // 100ms; in multiples of 0.625ms. |
mbedAustin | 1:0692bee84264 | 32 | ble.startAdvertising(); |
mbedAustin | 1:0692bee84264 | 33 | |
mbedAustin | 1:0692bee84264 | 34 | // Infinite loop waiting for BLE events |
mbedAustin | 1:0692bee84264 | 35 | for (;;) { |
mbedAustin | 1:0692bee84264 | 36 | ble.waitForEvent(); // this saves battery |
mbedAustin | 1:0692bee84264 | 37 | } |
mbedAustin | 1:0692bee84264 | 38 | } |