Test for peripheral device B, iBeacon

Dependencies:   BLE_API mbed nRF51822

Committer:
jslater8
Date:
Thu Jul 23 10:09:45 2015 +0000
Revision:
0:e492c28cdf42
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jslater8 0:e492c28cdf42 1 /* mbed Microcontroller Library
jslater8 0:e492c28cdf42 2 * Copyright (c) 2006-2015 ARM Limited
jslater8 0:e492c28cdf42 3 *
jslater8 0:e492c28cdf42 4 * Licensed under the Apache License, Version 2.0 (the "License");
jslater8 0:e492c28cdf42 5 * you may not use this file except in compliance with the License.
jslater8 0:e492c28cdf42 6 * You may obtain a copy of the License at
jslater8 0:e492c28cdf42 7 *
jslater8 0:e492c28cdf42 8 * http://www.apache.org/licenses/LICENSE-2.0
jslater8 0:e492c28cdf42 9 *
jslater8 0:e492c28cdf42 10 * Unless required by applicable law or agreed to in writing, software
jslater8 0:e492c28cdf42 11 * distributed under the License is distributed on an "AS IS" BASIS,
jslater8 0:e492c28cdf42 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
jslater8 0:e492c28cdf42 13 * See the License for the specific language governing permissions and
jslater8 0:e492c28cdf42 14 * limitations under the License.
jslater8 0:e492c28cdf42 15 */
jslater8 0:e492c28cdf42 16
jslater8 0:e492c28cdf42 17 #include "mbed.h"
jslater8 0:e492c28cdf42 18 #include "BLE.h"
jslater8 0:e492c28cdf42 19 #define DUMP_ADV_DATA 0
jslater8 0:e492c28cdf42 20
jslater8 0:e492c28cdf42 21 #define BLE_CHECK(X) (X == BLE_ERROR_NONE) ? (printf("{{success}}\r\n")) : printf("{{failure}} %s at line %u\r\n", #X, __LINE__);
jslater8 0:e492c28cdf42 22 #define BLE_EQUAL(X,Y) ((X)==(Y)) ? (printf("{{sucess}}\n")) : printf("{{failure}}\n");
jslater8 0:e492c28cdf42 23
jslater8 0:e492c28cdf42 24 BLE ble;
jslater8 0:e492c28cdf42 25 uint8_t address[6];
jslater8 0:e492c28cdf42 26 DigitalOut myled(p21);
jslater8 0:e492c28cdf42 27 Ticker tick;
jslater8 0:e492c28cdf42 28
jslater8 0:e492c28cdf42 29
jslater8 0:e492c28cdf42 30
jslater8 0:e492c28cdf42 31 void advertisementCallback(const Gap::AdvertisementCallbackParams_t *params) {
jslater8 0:e492c28cdf42 32 for (int i = 0; i < 5; i++){
jslater8 0:e492c28cdf42 33 if(address[i] != params->peerAddr[i]){
jslater8 0:e492c28cdf42 34 return;
jslater8 0:e492c28cdf42 35 }
jslater8 0:e492c28cdf42 36 }
jslater8 0:e492c28cdf42 37 printf("ScanResp: %u, Data: %d\r\n", params->isScanResponse, *(params->advertisingData + params->advertisingDataLen -1));
jslater8 0:e492c28cdf42 38 // printf("Adv peerAddr: [%02x %02x %02x %02x %02x %02x] rssi %d, ScanResp: %u, AdvType: %u, Data: %d\r\n",
jslater8 0:e492c28cdf42 39 // params->peerAddr[5], params->peerAddr[4], params->peerAddr[3], params->peerAddr[2], params->peerAddr[1], params->peerAddr[0],
jslater8 0:e492c28cdf42 40 // params->rssi, params->isScanResponse, params->type, *(params->advertisingData + params->advertisingDataLen -1));
jslater8 0:e492c28cdf42 41
jslater8 0:e492c28cdf42 42 // printf("Adv peerAddr: [%d %d %d %d %d %d] rssi %d, ScanResp: %u, AdvType: %u\r\n",
jslater8 0:e492c28cdf42 43 // params->peerAddr[5], params->peerAddr[4], params->peerAddr[3], params->peerAddr[2], params->peerAddr[1], params->peerAddr[0],
jslater8 0:e492c28cdf42 44 // params->rssi, params->isScanResponse, params->type);
jslater8 0:e492c28cdf42 45
jslater8 0:e492c28cdf42 46 #if DUMP_ADV_DATA
jslater8 0:e492c28cdf42 47 for (unsigned index = 0; index < params->advertisingDataLen; index++) {
jslater8 0:e492c28cdf42 48 printf("%02x ", params->advertisingData[index]);
jslater8 0:e492c28cdf42 49 }
jslater8 0:e492c28cdf42 50 printf("\r\n");
jslater8 0:e492c28cdf42 51 #endif /* DUMP_ADV_DATA */
jslater8 0:e492c28cdf42 52 }
jslater8 0:e492c28cdf42 53
jslater8 0:e492c28cdf42 54 void blink(void){
jslater8 0:e492c28cdf42 55 myled = !myled;
jslater8 0:e492c28cdf42 56 }
jslater8 0:e492c28cdf42 57
jslater8 0:e492c28cdf42 58 int main(void)
jslater8 0:e492c28cdf42 59 {
jslater8 0:e492c28cdf42 60 myled = 1;
jslater8 0:e492c28cdf42 61 printf("{{success}}" "\n" "{{end}}" "\n");
jslater8 0:e492c28cdf42 62 tick.attach(blink,1);
jslater8 0:e492c28cdf42 63 for (int i = 0; i < 6; i++){
jslater8 0:e492c28cdf42 64 scanf("%hhu",&address[i]);
jslater8 0:e492c28cdf42 65 }
jslater8 0:e492c28cdf42 66
jslater8 0:e492c28cdf42 67 BLE_CHECK(ble.init());
jslater8 0:e492c28cdf42 68
jslater8 0:e492c28cdf42 69 BLE_CHECK(ble.gap().setScanParams(500 /* scan interval */, 200 /* scan window */, 0, true));
jslater8 0:e492c28cdf42 70 BLE_CHECK(ble.gap().startScan(advertisementCallback));
jslater8 0:e492c28cdf42 71
jslater8 0:e492c28cdf42 72
jslater8 0:e492c28cdf42 73 }