Roy Want / Mbed OS beaconCompileReadyFork
Committer:
roywant
Date:
Mon Sep 19 00:59:11 2016 +0000
Revision:
0:ed0152b5c495
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
roywant 0:ed0152b5c495 1 /* mbed Microcontroller Library
roywant 0:ed0152b5c495 2 * Copyright (c) 2006-2015 ARM Limited
roywant 0:ed0152b5c495 3 *
roywant 0:ed0152b5c495 4 * Licensed under the Apache License, Version 2.0 (the "License");
roywant 0:ed0152b5c495 5 * you may not use this file except in compliance with the License.
roywant 0:ed0152b5c495 6 * You may obtain a copy of the License at
roywant 0:ed0152b5c495 7 *
roywant 0:ed0152b5c495 8 * http://www.apache.org/licenses/LICENSE-2.0
roywant 0:ed0152b5c495 9 *
roywant 0:ed0152b5c495 10 * Unless required by applicable law or agreed to in writing, software
roywant 0:ed0152b5c495 11 * distributed under the License is distributed on an "AS IS" BASIS,
roywant 0:ed0152b5c495 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
roywant 0:ed0152b5c495 13 * See the License for the specific language governing permissions and
roywant 0:ed0152b5c495 14 * limitations under the License.
roywant 0:ed0152b5c495 15 */
roywant 0:ed0152b5c495 16
roywant 0:ed0152b5c495 17 #include "UIDFrame.h"
roywant 0:ed0152b5c495 18
roywant 0:ed0152b5c495 19 UIDFrame::UIDFrame(void) {
roywant 0:ed0152b5c495 20 }
roywant 0:ed0152b5c495 21
roywant 0:ed0152b5c495 22 void UIDFrame::clearFrame(uint8_t* frame) {
roywant 0:ed0152b5c495 23 frame[FRAME_LEN_OFFSET] = 0; // Set frame length to zero to clear it
roywant 0:ed0152b5c495 24 }
roywant 0:ed0152b5c495 25
roywant 0:ed0152b5c495 26 void UIDFrame::setData(uint8_t *rawFrame, int8_t advTxPower, const uint8_t* uidData) {
roywant 0:ed0152b5c495 27 size_t index = 0;
roywant 0:ed0152b5c495 28 rawFrame[index++] = UID_HEADER_LEN + UID_LENGTH; // UID length + overhead of four bytes below
roywant 0:ed0152b5c495 29 rawFrame[index++] = EDDYSTONE_UUID[0]; // LSB 16-bit Eddystone UUID (little endian)
roywant 0:ed0152b5c495 30 rawFrame[index++] = EDDYSTONE_UUID[1]; // MSB
roywant 0:ed0152b5c495 31 rawFrame[index++] = FRAME_TYPE_UID; // 1B Type
roywant 0:ed0152b5c495 32 rawFrame[index++] = advTxPower; // 1B Power @ 0meter
roywant 0:ed0152b5c495 33
roywant 0:ed0152b5c495 34 memcpy(rawFrame + index, uidData, UID_LENGTH); // UID = 10B NamespaceID + 6B InstanceID
roywant 0:ed0152b5c495 35 }
roywant 0:ed0152b5c495 36
roywant 0:ed0152b5c495 37 uint8_t* UIDFrame::getData(uint8_t* rawFrame) {
roywant 0:ed0152b5c495 38 return &(rawFrame[UID_DATA_OFFSET]);
roywant 0:ed0152b5c495 39 }
roywant 0:ed0152b5c495 40
roywant 0:ed0152b5c495 41 uint8_t UIDFrame::getDataLength(uint8_t* rawFrame)
roywant 0:ed0152b5c495 42 {
roywant 0:ed0152b5c495 43 return rawFrame[FRAME_LEN_OFFSET] - EDDYSTONE_UUID_LEN;
roywant 0:ed0152b5c495 44 }
roywant 0:ed0152b5c495 45
roywant 0:ed0152b5c495 46 uint8_t* UIDFrame::getAdvFrame(uint8_t* rawFrame)
roywant 0:ed0152b5c495 47 {
roywant 0:ed0152b5c495 48 return &(rawFrame[ADV_FRAME_OFFSET]);
roywant 0:ed0152b5c495 49 }
roywant 0:ed0152b5c495 50
roywant 0:ed0152b5c495 51 uint8_t UIDFrame::getAdvFrameLength(uint8_t* rawFrame)
roywant 0:ed0152b5c495 52 {
roywant 0:ed0152b5c495 53 return rawFrame[FRAME_LEN_OFFSET];
roywant 0:ed0152b5c495 54 }
roywant 0:ed0152b5c495 55
roywant 0:ed0152b5c495 56 uint8_t* UIDFrame::getUid(uint8_t* rawFrame)
roywant 0:ed0152b5c495 57 {
roywant 0:ed0152b5c495 58 return &(rawFrame[UID_VALUE_OFFSET]);
roywant 0:ed0152b5c495 59 }
roywant 0:ed0152b5c495 60
roywant 0:ed0152b5c495 61 uint8_t UIDFrame::getUidLength(uint8_t* rawFrame)
roywant 0:ed0152b5c495 62 {
roywant 0:ed0152b5c495 63 return rawFrame[FRAME_LEN_OFFSET] - UID_HEADER_LEN;
roywant 0:ed0152b5c495 64 }
roywant 0:ed0152b5c495 65
roywant 0:ed0152b5c495 66 void UIDFrame::setAdvTxPower(uint8_t* rawFrame, int8_t advTxPower)
roywant 0:ed0152b5c495 67 {
roywant 0:ed0152b5c495 68 rawFrame[UID_TXPOWER_OFFSET] = advTxPower;
roywant 0:ed0152b5c495 69 }