with 2 advertisers
Dependencies: ADXL345_nRF51 BLE_API advertiser_data mbed nRF51822
Fork of BLE_GAP_Acceleration_Observer_2_Advertisers by
main.cpp.orig
- Committer:
- rjoyce
- Date:
- 2015-07-23
- Revision:
- 10:0733d4800ed1
File content as of revision 10:0733d4800ed1:
/* mbed Microcontroller Library * Copyright (c) 2006-2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "mbed.h" #include "BLE.h" BLE ble; typedef union _accleration_data { float f; uint8_t b[4]; } acceleration_data; typedef enum _parse_state { PARSE_SIZE, PARSE_TYPE, PARSE_DATA } ParseState; Serial pc(USBTX, USBRX); void advertisementCallback(const Gap::AdvertisementCallbackParams_t *params) { if (params->peerAddr[5] == 0xe5 && params->peerAddr[4] == 0x4f) { pc.printf("Adv peerAddr: [%02x %02x %02x %02x %02x %02x] rssi %d, ScanResp: %u, AdvType: %u\r\n", params->peerAddr[5], params->peerAddr[4], params->peerAddr[3], params->peerAddr[2], params->peerAddr[1], params->peerAddr[0], params->rssi, params->isScanResponse, params->type); for (unsigned index = 0; index < params->advertisingDataLen; index++) { pc.printf("%02x ", params->advertisingData[index]); } pc.printf("\r\n"); /* Quick and dirty naive way */ /*acceleration_data acceleration; acceleration.f = 4.5; if (params->advertisingDataLen != 6) return; for (unsigned i = 0; i < 4; i++) { acceleration.b[i] = params->advertisingData[i+2]; } pc.printf("Acceleration: %.2f", acceleration.f); pc.printf("\r\n");*/ /* Printing the boolean for being picked up or not*/ bool p = params->advertisingData[2]; pc.printf("Picked up: %p",p); pc.printf("\r\n"); /* unsigned index = 0; uint8_t data_size = 0; unsigned data_index = 0; while (index < params->advertisingDataLen) { data_size = params->advertisingData[index]; data_index = index; // TODO: CHECK for size > dataLen for (index; index < data_index + data_size; index++) { // do something with the data } } */ } } int main(void) { ble.init(); // Set scan to be constant by interval == window ble.gap().setScanParams(500 /* scan interval */, 500 /* scan window */); ble.gap().startScan(advertisementCallback); pc.baud(9600); wait(8); pc.printf("Started scanning...\n\r"); while (true) { ble.waitForEvent(); } }