Joshua Slater / BLE_API_Changed

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Thu Jul 02 09:06:11 2015 +0100
Revision:
715:6d415ac147aa
Parent:
714:a6130aaa0fd9
Synchronized with git rev 69726547
Author: Rohit Grover
Release 0.3.9
=============

A minor patch to fix a build error introduced by the previous
release. This has to do with certain declarations being made members
of class UUID.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 714:a6130aaa0fd9 1 /* mbed Microcontroller Library
rgrover1 714:a6130aaa0fd9 2 * Copyright (c) 2006-2015 ARM Limited
rgrover1 714:a6130aaa0fd9 3 *
rgrover1 714:a6130aaa0fd9 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 714:a6130aaa0fd9 5 * you may not use this file except in compliance with the License.
rgrover1 714:a6130aaa0fd9 6 * You may obtain a copy of the License at
rgrover1 714:a6130aaa0fd9 7 *
rgrover1 714:a6130aaa0fd9 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 714:a6130aaa0fd9 9 *
rgrover1 714:a6130aaa0fd9 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 714:a6130aaa0fd9 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 714:a6130aaa0fd9 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 714:a6130aaa0fd9 13 * See the License for the specific language governing permissions and
rgrover1 714:a6130aaa0fd9 14 * limitations under the License.
rgrover1 714:a6130aaa0fd9 15 */
rgrover1 714:a6130aaa0fd9 16 #ifndef __BLE_IBEACON_SERVICE_H__
rgrover1 714:a6130aaa0fd9 17 #define __BLE_IBEACON_SERVICE_H__
rgrover1 714:a6130aaa0fd9 18
rgrover1 714:a6130aaa0fd9 19 #include "core_cmInstr.h"
rgrover1 714:a6130aaa0fd9 20 #include "BLEDevice.h"
rgrover1 714:a6130aaa0fd9 21
rgrover1 714:a6130aaa0fd9 22 /**
rgrover1 714:a6130aaa0fd9 23 * @class iBeaconService
rgrover1 714:a6130aaa0fd9 24 * @brief iBeacon Service. This service sets up a device to broadcast advertising packets to mimic an iBeacon<br>
rgrover1 714:a6130aaa0fd9 25 */
rgrover1 714:a6130aaa0fd9 26
rgrover1 714:a6130aaa0fd9 27 class iBeaconService
rgrover1 714:a6130aaa0fd9 28 {
rgrover1 714:a6130aaa0fd9 29 public:
rgrover1 714:a6130aaa0fd9 30 typedef const uint8_t LocationUUID_t[16];
rgrover1 714:a6130aaa0fd9 31
rgrover1 714:a6130aaa0fd9 32 union Payload {
rgrover1 714:a6130aaa0fd9 33 uint8_t raw[25];
rgrover1 714:a6130aaa0fd9 34 struct {
rgrover1 714:a6130aaa0fd9 35 uint16_t companyID;
rgrover1 714:a6130aaa0fd9 36 uint8_t ID;
rgrover1 714:a6130aaa0fd9 37 uint8_t len;
rgrover1 714:a6130aaa0fd9 38 uint8_t proximityUUID[16];
rgrover1 714:a6130aaa0fd9 39 uint16_t majorNumber;
rgrover1 714:a6130aaa0fd9 40 uint16_t minorNumber;
rgrover1 714:a6130aaa0fd9 41 uint8_t txPower;
rgrover1 714:a6130aaa0fd9 42 };
rgrover1 714:a6130aaa0fd9 43
rgrover1 714:a6130aaa0fd9 44 Payload(LocationUUID_t uuid, uint16_t majNum, uint16_t minNum, uint8_t transmitPower, uint16_t companyIDIn) :
rgrover1 714:a6130aaa0fd9 45 companyID(companyIDIn), ID(0x02), len(0x15), majorNumber(__REV16(majNum)), minorNumber(__REV16(minNum)), txPower(transmitPower)
rgrover1 714:a6130aaa0fd9 46 {
rgrover1 714:a6130aaa0fd9 47 memcpy(proximityUUID, uuid, sizeof(LocationUUID_t));
rgrover1 714:a6130aaa0fd9 48 }
rgrover1 714:a6130aaa0fd9 49 };
rgrover1 714:a6130aaa0fd9 50
rgrover1 714:a6130aaa0fd9 51 public:
rgrover1 714:a6130aaa0fd9 52 iBeaconService(BLEDevice &_ble,
rgrover1 714:a6130aaa0fd9 53 LocationUUID_t uuid,
rgrover1 714:a6130aaa0fd9 54 uint16_t majNum,
rgrover1 714:a6130aaa0fd9 55 uint16_t minNum,
rgrover1 714:a6130aaa0fd9 56 uint8_t txP = 0xC8,
rgrover1 714:a6130aaa0fd9 57 uint16_t compID = 0x004C) :
rgrover1 714:a6130aaa0fd9 58 ble(_ble), data(uuid, majNum, minNum, txP, compID)
rgrover1 714:a6130aaa0fd9 59 {
rgrover1 714:a6130aaa0fd9 60 // Generate the 0x020106 part of the iBeacon Prefix
rgrover1 714:a6130aaa0fd9 61 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE );
rgrover1 714:a6130aaa0fd9 62 // Generate the 0x1AFF part of the iBeacon Prefix
rgrover1 714:a6130aaa0fd9 63 ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, data.raw, sizeof(data.raw));
rgrover1 714:a6130aaa0fd9 64
rgrover1 714:a6130aaa0fd9 65 // Set advertising type
rgrover1 714:a6130aaa0fd9 66 ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
rgrover1 714:a6130aaa0fd9 67 }
rgrover1 714:a6130aaa0fd9 68
rgrover1 714:a6130aaa0fd9 69 private:
rgrover1 714:a6130aaa0fd9 70 BLEDevice &ble;
rgrover1 714:a6130aaa0fd9 71 Payload data;
rgrover1 714:a6130aaa0fd9 72 };
rgrover1 714:a6130aaa0fd9 73
rgrover1 714:a6130aaa0fd9 74 #endif //__BLE_IBEACON_SERVICE_H__