ver:init

Committer:
iv123
Date:
Sun Jun 18 16:10:28 2017 +0000
Revision:
0:88b85febcb45
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iv123 0:88b85febcb45 1 /* mbed Microcontroller Library
iv123 0:88b85febcb45 2 * Copyright (c) 2006-2013 ARM Limited
iv123 0:88b85febcb45 3 *
iv123 0:88b85febcb45 4 * Licensed under the Apache License, Version 2.0 (the "License");
iv123 0:88b85febcb45 5 * you may not use this file except in compliance with the License.
iv123 0:88b85febcb45 6 * You may obtain a copy of the License at
iv123 0:88b85febcb45 7 *
iv123 0:88b85febcb45 8 * http://www.apache.org/licenses/LICENSE-2.0
iv123 0:88b85febcb45 9 *
iv123 0:88b85febcb45 10 * Unless required by applicable law or agreed to in writing, software
iv123 0:88b85febcb45 11 * distributed under the License is distributed on an "AS IS" BASIS,
iv123 0:88b85febcb45 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
iv123 0:88b85febcb45 13 * See the License for the specific language governing permissions and
iv123 0:88b85febcb45 14 * limitations under the License.
iv123 0:88b85febcb45 15 */
iv123 0:88b85febcb45 16
iv123 0:88b85febcb45 17 #include <ble_payload.h>
iv123 0:88b85febcb45 18
iv123 0:88b85febcb45 19 Payload::Payload() {
iv123 0:88b85febcb45 20 stringLength = 0;
iv123 0:88b85febcb45 21 payloadUnitCount = 0;
iv123 0:88b85febcb45 22 payload = NULL;
iv123 0:88b85febcb45 23 }
iv123 0:88b85febcb45 24
iv123 0:88b85febcb45 25 Payload::Payload(const uint8_t *tokenString, uint8_t string_ength) {
iv123 0:88b85febcb45 26 // initialize private data members
iv123 0:88b85febcb45 27 stringLength = string_ength;
iv123 0:88b85febcb45 28 payloadUnitCount = 0;
iv123 0:88b85febcb45 29 payload = NULL;
iv123 0:88b85febcb45 30
iv123 0:88b85febcb45 31 int index = 0;
iv123 0:88b85febcb45 32 while( index!=stringLength) {
iv123 0:88b85febcb45 33 int len=tokenString[index];
iv123 0:88b85febcb45 34 index=index+1+len;
iv123 0:88b85febcb45 35 payloadUnitCount++;
iv123 0:88b85febcb45 36 }
iv123 0:88b85febcb45 37
iv123 0:88b85febcb45 38 UnitPayload *obj = new UnitPayload[payloadUnitCount];
iv123 0:88b85febcb45 39 int i=0;
iv123 0:88b85febcb45 40 int c=0;
iv123 0:88b85febcb45 41 int j,k;
iv123 0:88b85febcb45 42
iv123 0:88b85febcb45 43 while(i<payloadUnitCount)
iv123 0:88b85febcb45 44 {
iv123 0:88b85febcb45 45 obj[i].length=tokenString[c];
iv123 0:88b85febcb45 46 obj[i].id=tokenString[c+1];
iv123 0:88b85febcb45 47
iv123 0:88b85febcb45 48 obj[i].data = new uint8_t[obj[i].length];
iv123 0:88b85febcb45 49 for(j=c+2,k=0;(j<(c+obj[i].length+1))&&(k<obj[i].length-1);j++,k++)
iv123 0:88b85febcb45 50 {
iv123 0:88b85febcb45 51 obj[i].data[k]=tokenString[j];
iv123 0:88b85febcb45 52
iv123 0:88b85febcb45 53 }
iv123 0:88b85febcb45 54
iv123 0:88b85febcb45 55 c=c+obj[i].length+1;
iv123 0:88b85febcb45 56 i++;
iv123 0:88b85febcb45 57
iv123 0:88b85febcb45 58 }
iv123 0:88b85febcb45 59 payload = obj;
iv123 0:88b85febcb45 60 }
iv123 0:88b85febcb45 61
iv123 0:88b85febcb45 62 uint8_t Payload::getPayloadUnitCount() {
iv123 0:88b85febcb45 63 return payloadUnitCount;
iv123 0:88b85febcb45 64 }
iv123 0:88b85febcb45 65
iv123 0:88b85febcb45 66 uint8_t Payload::getIDAtIndex(int index) {
iv123 0:88b85febcb45 67 return payload[index].get_id();
iv123 0:88b85febcb45 68 }
iv123 0:88b85febcb45 69
iv123 0:88b85febcb45 70 uint8_t Payload::getLengthAtIndex(int index) {
iv123 0:88b85febcb45 71 return payload[index].get_length();
iv123 0:88b85febcb45 72 }
iv123 0:88b85febcb45 73
iv123 0:88b85febcb45 74 uint8_t* Payload::getDataAtIndex(int index) {
iv123 0:88b85febcb45 75 return payload[index].get_data();
iv123 0:88b85febcb45 76 }
iv123 0:88b85febcb45 77
iv123 0:88b85febcb45 78 int8_t Payload::getInt8AtIndex(int index) {
iv123 0:88b85febcb45 79 uint8_t* str = payload[index].get_data();
iv123 0:88b85febcb45 80 int8_t value = (int8_t)str[0];
iv123 0:88b85febcb45 81 return value;
iv123 0:88b85febcb45 82 }
iv123 0:88b85febcb45 83
iv123 0:88b85febcb45 84 uint16_t Payload::getUint16AtIndex(int index) {
iv123 0:88b85febcb45 85 uint16_t* str = (uint16_t*)payload[index].get_data();
iv123 0:88b85febcb45 86 uint16_t value = str[0];
iv123 0:88b85febcb45 87 return value;
iv123 0:88b85febcb45 88 }
iv123 0:88b85febcb45 89
iv123 0:88b85febcb45 90 uint8_t* Payload::getSerializedAdDataAtIndex(int index) {
iv123 0:88b85febcb45 91 uint8_t length = payload[index].get_length();
iv123 0:88b85febcb45 92 uint8_t* data = payload[index].get_data();
iv123 0:88b85febcb45 93 uint8_t id = payload[index].get_id();
iv123 0:88b85febcb45 94 uint8_t *serializedAdData = new uint8_t[length];
iv123 0:88b85febcb45 95
iv123 0:88b85febcb45 96 serializedAdData[0] = id;
iv123 0:88b85febcb45 97 for(int i=0; i<length-1; i++) {
iv123 0:88b85febcb45 98 serializedAdData[i+1] = data[i];
iv123 0:88b85febcb45 99 }
iv123 0:88b85febcb45 100 return serializedAdData;
iv123 0:88b85febcb45 101 }
iv123 0:88b85febcb45 102
iv123 0:88b85febcb45 103 Payload::~Payload() {
iv123 0:88b85febcb45 104 int i = 0;
iv123 0:88b85febcb45 105
iv123 0:88b85febcb45 106 if(payload) {
iv123 0:88b85febcb45 107 while(i<payloadUnitCount) {
iv123 0:88b85febcb45 108 if(payload->data) {
iv123 0:88b85febcb45 109 delete[] payload->data;
iv123 0:88b85febcb45 110 payload->data = NULL;
iv123 0:88b85febcb45 111 }
iv123 0:88b85febcb45 112 }
iv123 0:88b85febcb45 113 delete[] payload;
iv123 0:88b85febcb45 114 payload = NULL;
iv123 0:88b85febcb45 115 }
iv123 0:88b85febcb45 116
iv123 0:88b85febcb45 117 }
iv123 0:88b85febcb45 118