Joshua Slater / BLE_API_Changed

Fork of BLE_API by Bluetooth Low Energy

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