gjhn

Dependents:   BLE_GENERALE

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
Wolfgang Betz
Date:
Thu Nov 12 14:24:15 2015 +0100
Revision:
175:925e455f5e45
Parent:
144:bdf5e8432131
Child:
180:b2a22cb6c87c
Child:
236:2a73f3a97452
Substitute printf's with PRINTF's

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wolfgang Betz 132:51056160fa4a 1 /* mbed Microcontroller Library
Wolfgang Betz 132:51056160fa4a 2 * Copyright (c) 2006-2013 ARM Limited
Wolfgang Betz 132:51056160fa4a 3 *
Wolfgang Betz 132:51056160fa4a 4 * Licensed under the Apache License, Version 2.0 (the "License");
Wolfgang Betz 132:51056160fa4a 5 * you may not use this file except in compliance with the License.
Wolfgang Betz 132:51056160fa4a 6 * You may obtain a copy of the License at
Wolfgang Betz 132:51056160fa4a 7 *
Wolfgang Betz 132:51056160fa4a 8 * http://www.apache.org/licenses/LICENSE-2.0
Wolfgang Betz 132:51056160fa4a 9 *
Wolfgang Betz 132:51056160fa4a 10 * Unless required by applicable law or agreed to in writing, software
Wolfgang Betz 132:51056160fa4a 11 * distributed under the License is distributed on an "AS IS" BASIS,
Wolfgang Betz 132:51056160fa4a 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Wolfgang Betz 132:51056160fa4a 13 * See the License for the specific language governing permissions and
Wolfgang Betz 132:51056160fa4a 14 * limitations under the License.
Wolfgang Betz 132:51056160fa4a 15 */
Wolfgang Betz 132:51056160fa4a 16
Wolfgang Betz 144:bdf5e8432131 17 #include "mbed-drivers/mbed.h"
Wolfgang Betz 175:925e455f5e45 18 #include "debug.h"
Wolfgang Betz 132:51056160fa4a 19
Wolfgang Betz 132:51056160fa4a 20 #ifndef __PAYLOAD_H__
Wolfgang Betz 132:51056160fa4a 21 #define __PAYLOAD_H__
Wolfgang Betz 132:51056160fa4a 22
Wolfgang Betz 132:51056160fa4a 23 class UnitPayload
Wolfgang Betz 132:51056160fa4a 24 {
Wolfgang Betz 132:51056160fa4a 25 public:
Wolfgang Betz 132:51056160fa4a 26 uint8_t length;
Wolfgang Betz 132:51056160fa4a 27 uint8_t id;
Wolfgang Betz 132:51056160fa4a 28 uint8_t *data;
Wolfgang Betz 132:51056160fa4a 29 uint8_t *idptr;
Wolfgang Betz 132:51056160fa4a 30
Wolfgang Betz 132:51056160fa4a 31
Wolfgang Betz 132:51056160fa4a 32
Wolfgang Betz 132:51056160fa4a 33 void set_length(uint8_t l) {
Wolfgang Betz 132:51056160fa4a 34 length=l;
Wolfgang Betz 132:51056160fa4a 35 }
Wolfgang Betz 132:51056160fa4a 36
Wolfgang Betz 132:51056160fa4a 37 void set_id(uint8_t i) {
Wolfgang Betz 132:51056160fa4a 38 id=i;
Wolfgang Betz 132:51056160fa4a 39 }
Wolfgang Betz 132:51056160fa4a 40
Wolfgang Betz 132:51056160fa4a 41 void set_data(uint8_t* data1) {
Wolfgang Betz 132:51056160fa4a 42 for(int j=0;j<length;j++)
Wolfgang Betz 132:51056160fa4a 43 {
Wolfgang Betz 132:51056160fa4a 44 data[j]=data1[j];
Wolfgang Betz 132:51056160fa4a 45 }
Wolfgang Betz 132:51056160fa4a 46 }
Wolfgang Betz 132:51056160fa4a 47
Wolfgang Betz 132:51056160fa4a 48 uint8_t get_length() {
Wolfgang Betz 132:51056160fa4a 49 return length;
Wolfgang Betz 132:51056160fa4a 50 }
Wolfgang Betz 132:51056160fa4a 51
Wolfgang Betz 132:51056160fa4a 52 uint8_t get_id() {
Wolfgang Betz 132:51056160fa4a 53 return id;
Wolfgang Betz 132:51056160fa4a 54 }
Wolfgang Betz 132:51056160fa4a 55
Wolfgang Betz 132:51056160fa4a 56 uint8_t* get_data() {
Wolfgang Betz 132:51056160fa4a 57 return data;
Wolfgang Betz 132:51056160fa4a 58 }
Wolfgang Betz 132:51056160fa4a 59
Wolfgang Betz 132:51056160fa4a 60 };
Wolfgang Betz 132:51056160fa4a 61
Wolfgang Betz 132:51056160fa4a 62 class Payload {
Wolfgang Betz 132:51056160fa4a 63 UnitPayload *payload;
Wolfgang Betz 132:51056160fa4a 64 int stringLength;
Wolfgang Betz 132:51056160fa4a 65 int payloadUnitCount;
Wolfgang Betz 132:51056160fa4a 66
Wolfgang Betz 132:51056160fa4a 67 public:
Wolfgang Betz 132:51056160fa4a 68 Payload(const uint8_t *tokenString, uint8_t string_ength);
Wolfgang Betz 132:51056160fa4a 69 Payload();
Wolfgang Betz 132:51056160fa4a 70 uint8_t getPayloadUnitCount();
Wolfgang Betz 132:51056160fa4a 71
Wolfgang Betz 132:51056160fa4a 72 uint8_t getIDAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 73 uint8_t getLengthAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 74 uint8_t* getDataAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 75 int8_t getInt8AtIndex(int index);
Wolfgang Betz 132:51056160fa4a 76 uint16_t getUint16AtIndex(int index);
Wolfgang Betz 132:51056160fa4a 77 uint8_t* getSerializedAdDataAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 78 };
Wolfgang Betz 132:51056160fa4a 79
Wolfgang Betz 132:51056160fa4a 80
Wolfgang Betz 132:51056160fa4a 81 class PayloadUnit {
Wolfgang Betz 132:51056160fa4a 82 private:
Wolfgang Betz 132:51056160fa4a 83 uint8_t* lenPtr;
Wolfgang Betz 132:51056160fa4a 84 uint8_t* adTypePtr;
Wolfgang Betz 132:51056160fa4a 85 uint8_t* dataPtr;
Wolfgang Betz 132:51056160fa4a 86
Wolfgang Betz 132:51056160fa4a 87 public:
Wolfgang Betz 132:51056160fa4a 88 PayloadUnit() {
Wolfgang Betz 132:51056160fa4a 89 lenPtr = NULL;
Wolfgang Betz 132:51056160fa4a 90 adTypePtr = NULL;
Wolfgang Betz 132:51056160fa4a 91 dataPtr = NULL;
Wolfgang Betz 132:51056160fa4a 92 }
Wolfgang Betz 132:51056160fa4a 93
Wolfgang Betz 132:51056160fa4a 94 PayloadUnit(uint8_t *len, uint8_t *adType, uint8_t* data) {
Wolfgang Betz 132:51056160fa4a 95 lenPtr = len;
Wolfgang Betz 132:51056160fa4a 96 adTypePtr = adType;
Wolfgang Betz 132:51056160fa4a 97 dataPtr = data;
Wolfgang Betz 132:51056160fa4a 98 }
Wolfgang Betz 132:51056160fa4a 99
Wolfgang Betz 132:51056160fa4a 100 void setLenPtr(uint8_t *len) {
Wolfgang Betz 132:51056160fa4a 101 lenPtr = len;
Wolfgang Betz 132:51056160fa4a 102 }
Wolfgang Betz 132:51056160fa4a 103
Wolfgang Betz 132:51056160fa4a 104 void setAdTypePtr(uint8_t *adType) {
Wolfgang Betz 132:51056160fa4a 105 adTypePtr = adType;
Wolfgang Betz 132:51056160fa4a 106 }
Wolfgang Betz 132:51056160fa4a 107
Wolfgang Betz 132:51056160fa4a 108 void setDataPtr(uint8_t *data) {
Wolfgang Betz 132:51056160fa4a 109 dataPtr = data;
Wolfgang Betz 132:51056160fa4a 110 }
Wolfgang Betz 132:51056160fa4a 111
Wolfgang Betz 132:51056160fa4a 112 uint8_t* getLenPtr() {
Wolfgang Betz 132:51056160fa4a 113 return lenPtr;
Wolfgang Betz 132:51056160fa4a 114 }
Wolfgang Betz 132:51056160fa4a 115
Wolfgang Betz 132:51056160fa4a 116 uint8_t* getAdTypePtr() {
Wolfgang Betz 132:51056160fa4a 117 return adTypePtr;
Wolfgang Betz 132:51056160fa4a 118 }
Wolfgang Betz 132:51056160fa4a 119
Wolfgang Betz 132:51056160fa4a 120 uint8_t* getDataPtr() {
Wolfgang Betz 132:51056160fa4a 121 return dataPtr;
Wolfgang Betz 132:51056160fa4a 122 }
Wolfgang Betz 132:51056160fa4a 123
Wolfgang Betz 132:51056160fa4a 124 void printDataAsHex() {
Wolfgang Betz 132:51056160fa4a 125 int i = 0;
Wolfgang Betz 175:925e455f5e45 126 PRINTF("AdData=");
Wolfgang Betz 132:51056160fa4a 127 for(i=0; i<*lenPtr-1; i++) {
Wolfgang Betz 175:925e455f5e45 128 PRINTF("0x%x ", dataPtr[i]);
Wolfgang Betz 132:51056160fa4a 129 }
Wolfgang Betz 175:925e455f5e45 130 PRINTF("\n");
Wolfgang Betz 132:51056160fa4a 131 }
Wolfgang Betz 132:51056160fa4a 132
Wolfgang Betz 132:51056160fa4a 133 void printDataAsString() {
Wolfgang Betz 132:51056160fa4a 134 int i = 0;
Wolfgang Betz 175:925e455f5e45 135 PRINTF("AdData=");
Wolfgang Betz 132:51056160fa4a 136 for(i=0; i<*lenPtr; i++) {
Wolfgang Betz 175:925e455f5e45 137 PRINTF("%c", dataPtr[i]);
Wolfgang Betz 132:51056160fa4a 138 }
Wolfgang Betz 175:925e455f5e45 139 PRINTF("\n");
Wolfgang Betz 132:51056160fa4a 140 }
Wolfgang Betz 132:51056160fa4a 141
Wolfgang Betz 132:51056160fa4a 142 };
Wolfgang Betz 132:51056160fa4a 143
Wolfgang Betz 132:51056160fa4a 144 class PayloadPtr {
Wolfgang Betz 132:51056160fa4a 145 private:
Wolfgang Betz 132:51056160fa4a 146 PayloadUnit *unit;
Wolfgang Betz 132:51056160fa4a 147 int payloadUnitCount;
Wolfgang Betz 132:51056160fa4a 148 public:
Wolfgang Betz 132:51056160fa4a 149 PayloadPtr(const uint8_t *tokenString, uint8_t string_ength) {
Wolfgang Betz 132:51056160fa4a 150 // initialize private data members
Wolfgang Betz 132:51056160fa4a 151 int stringLength = string_ength;
Wolfgang Betz 132:51056160fa4a 152 payloadUnitCount = 0;
Wolfgang Betz 132:51056160fa4a 153
Wolfgang Betz 132:51056160fa4a 154 int index = 0;
Wolfgang Betz 132:51056160fa4a 155 while(index!=stringLength) {
Wolfgang Betz 132:51056160fa4a 156 int len=tokenString[index];
Wolfgang Betz 132:51056160fa4a 157 index=index+1+len;
Wolfgang Betz 132:51056160fa4a 158 payloadUnitCount++;
Wolfgang Betz 132:51056160fa4a 159 }
Wolfgang Betz 132:51056160fa4a 160
Wolfgang Betz 132:51056160fa4a 161 // allocate memory to unit
Wolfgang Betz 132:51056160fa4a 162 unit = new PayloadUnit[payloadUnitCount];
Wolfgang Betz 132:51056160fa4a 163 int i = 0;
Wolfgang Betz 132:51056160fa4a 164 int nextUnitOffset = 0;
Wolfgang Betz 132:51056160fa4a 165
Wolfgang Betz 132:51056160fa4a 166 while(i<payloadUnitCount) {
Wolfgang Betz 132:51056160fa4a 167 unit[i].setLenPtr((uint8_t *)tokenString+nextUnitOffset);
Wolfgang Betz 132:51056160fa4a 168 unit[i].setAdTypePtr((uint8_t *)tokenString+nextUnitOffset+1);
Wolfgang Betz 132:51056160fa4a 169 unit[i].setDataPtr((uint8_t *)tokenString+nextUnitOffset+2);
Wolfgang Betz 132:51056160fa4a 170
Wolfgang Betz 132:51056160fa4a 171 nextUnitOffset += *unit[i].getLenPtr()+1;
Wolfgang Betz 132:51056160fa4a 172 i++;
Wolfgang Betz 132:51056160fa4a 173
Wolfgang Betz 132:51056160fa4a 174 }
Wolfgang Betz 132:51056160fa4a 175 }
Wolfgang Betz 132:51056160fa4a 176
Wolfgang Betz 132:51056160fa4a 177 PayloadUnit getUnitAtIndex(int index) {
Wolfgang Betz 132:51056160fa4a 178 return unit[index];
Wolfgang Betz 132:51056160fa4a 179 }
Wolfgang Betz 132:51056160fa4a 180
Wolfgang Betz 132:51056160fa4a 181 int getPayloadUnitCount() { return payloadUnitCount; }
Wolfgang Betz 132:51056160fa4a 182
Wolfgang Betz 132:51056160fa4a 183
Wolfgang Betz 132:51056160fa4a 184 };
Wolfgang Betz 132:51056160fa4a 185
Wolfgang Betz 132:51056160fa4a 186 #endif // __PAYLOAD_H__