Run on TY51822r3 board with ACC sensor (LIS3DH or BMC050)

Dependencies:   BLE_API LIS3DH mbed nRF51822 BMC050 nRF51_LowPwr nRF51_Vdd

Fork of BLE_EddystoneBeacon_Service by Bluetooth Low Energy

Committer:
kenjiArai
Date:
Sat Jun 11 01:51:59 2016 +0000
Revision:
37:ea459e6c6a35
Parent:
34:f6d4a699a1ea
Added low power mode (use nRF51_LowPwr library) for reduce Idle Current

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andresag 34:f6d4a699a1ea 1 /* mbed Microcontroller Library
andresag 34:f6d4a699a1ea 2 * Copyright (c) 2006-2015 ARM Limited
andresag 34:f6d4a699a1ea 3 *
andresag 34:f6d4a699a1ea 4 * Licensed under the Apache License, Version 2.0 (the "License");
andresag 34:f6d4a699a1ea 5 * you may not use this file except in compliance with the License.
andresag 34:f6d4a699a1ea 6 * You may obtain a copy of the License at
andresag 34:f6d4a699a1ea 7 *
andresag 34:f6d4a699a1ea 8 * http://www.apache.org/licenses/LICENSE-2.0
andresag 34:f6d4a699a1ea 9 *
andresag 34:f6d4a699a1ea 10 * Unless required by applicable law or agreed to in writing, software
andresag 34:f6d4a699a1ea 11 * distributed under the License is distributed on an "AS IS" BASIS,
andresag 34:f6d4a699a1ea 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
andresag 34:f6d4a699a1ea 13 * See the License for the specific language governing permissions and
andresag 34:f6d4a699a1ea 14 * limitations under the License.
andresag 34:f6d4a699a1ea 15 */
andresag 34:f6d4a699a1ea 16
andresag 34:f6d4a699a1ea 17 #include "UIDFrame.h"
andresag 34:f6d4a699a1ea 18
andresag 34:f6d4a699a1ea 19 UIDFrame::UIDFrame(void)
andresag 34:f6d4a699a1ea 20 {
andresag 34:f6d4a699a1ea 21 memset(uidNamespaceID, 0, sizeof(UIDNamespaceID_t));
andresag 34:f6d4a699a1ea 22 memset(uidInstanceID, 0, sizeof(UIDInstanceID_t));
andresag 34:f6d4a699a1ea 23 }
andresag 34:f6d4a699a1ea 24
andresag 34:f6d4a699a1ea 25 UIDFrame::UIDFrame(const UIDNamespaceID_t uidNamespaceIDIn, const UIDInstanceID_t uidInstanceIDIn)
andresag 34:f6d4a699a1ea 26 {
andresag 34:f6d4a699a1ea 27 memcpy(uidNamespaceID, uidNamespaceIDIn, sizeof(UIDNamespaceID_t));
andresag 34:f6d4a699a1ea 28 memcpy(uidInstanceID, uidInstanceIDIn, sizeof(UIDInstanceID_t));
andresag 34:f6d4a699a1ea 29 }
andresag 34:f6d4a699a1ea 30
andresag 34:f6d4a699a1ea 31 void UIDFrame::setUIDData(const UIDNamespaceID_t *uidNamespaceIDIn, const UIDInstanceID_t *uidInstanceIDIn)
andresag 34:f6d4a699a1ea 32 {
andresag 34:f6d4a699a1ea 33 memcpy(uidNamespaceID, uidNamespaceIDIn, sizeof(UIDNamespaceID_t));
andresag 34:f6d4a699a1ea 34 memcpy(uidInstanceID, uidInstanceIDIn, sizeof(UIDInstanceID_t));
andresag 34:f6d4a699a1ea 35 }
andresag 34:f6d4a699a1ea 36
andresag 34:f6d4a699a1ea 37 void UIDFrame::constructUIDFrame(uint8_t *rawFrame, int8_t advPowerLevel)
andresag 34:f6d4a699a1ea 38 {
andresag 34:f6d4a699a1ea 39 size_t index = 0;
andresag 34:f6d4a699a1ea 40
andresag 34:f6d4a699a1ea 41 rawFrame[index++] = EDDYSTONE_UUID[0]; // 16-bit Eddystone UUID
andresag 34:f6d4a699a1ea 42 rawFrame[index++] = EDDYSTONE_UUID[1];
andresag 34:f6d4a699a1ea 43 rawFrame[index++] = FRAME_TYPE_UID; // 1B Type
andresag 34:f6d4a699a1ea 44 rawFrame[index++] = advPowerLevel; // 1B Power @ 0meter
andresag 34:f6d4a699a1ea 45
andresag 34:f6d4a699a1ea 46 memcpy(rawFrame + index, uidNamespaceID, sizeof(UIDNamespaceID_t)); // 10B Namespace ID
andresag 34:f6d4a699a1ea 47 index += sizeof(UIDNamespaceID_t);
andresag 34:f6d4a699a1ea 48 memcpy(rawFrame + index, uidInstanceID, sizeof(UIDInstanceID_t)); // 6B Instance ID
andresag 34:f6d4a699a1ea 49 index += sizeof(UIDInstanceID_t);
andresag 34:f6d4a699a1ea 50
andresag 34:f6d4a699a1ea 51 memset(rawFrame + index, 0, 2 * sizeof(uint8_t)); // 2B RFU, which are unused
andresag 34:f6d4a699a1ea 52 }
andresag 34:f6d4a699a1ea 53
andresag 34:f6d4a699a1ea 54 size_t UIDFrame::getRawFrameSize(void) const
andresag 34:f6d4a699a1ea 55 {
andresag 34:f6d4a699a1ea 56 return FRAME_SIZE_UID + EDDYSTONE_UUID_SIZE;
andresag 34:f6d4a699a1ea 57 }
andresag 34:f6d4a699a1ea 58
andresag 34:f6d4a699a1ea 59 uint8_t* UIDFrame::getUIDNamespaceID(void)
andresag 34:f6d4a699a1ea 60 {
andresag 34:f6d4a699a1ea 61 return uidNamespaceID;
andresag 34:f6d4a699a1ea 62 }
andresag 34:f6d4a699a1ea 63
andresag 34:f6d4a699a1ea 64 uint8_t* UIDFrame::getUIDInstanceID(void)
andresag 34:f6d4a699a1ea 65 {
andresag 34:f6d4a699a1ea 66 return uidInstanceID;
andresag 34:f6d4a699a1ea 67 }