gjhn

Dependents:   BLE_GENERALE

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
Wolfgang Betz
Date:
Wed Oct 07 08:39:04 2015 +0200
Revision:
132:51056160fa4a
Child:
144:bdf5e8432131
Andrea's version as of mail from 10/06/2015 05:56 PM

From: Andrea PALMIERI <andrea.palmieri@st.com>
To: Wolfgang BETZ <wolfgang.betz@st.com>, Rohit Grover <rohit.grover@arm.com>,
Antonio VILEI <antonio.vilei@st.com>, Mihail Stoyanov
<Mihail.Stoyanov@arm.com>
CC: Nicola CAPOVILLA <nicola.capovilla@st.com>, Silvio Lucio OLIVA
<silvio.oliva@st.com>, "jonathan.austin@arm.com" <jonathan.austin@arm.com>
Content-Class: urn:content-classes:message
Date: Tue, 6 Oct 2015 17:56:34 +0200
Subject: RE: Arduino Compatibility of X-NUCLEO-IDB04A1

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 132:51056160fa4a 17 #include "mbed.h"
Wolfgang Betz 132:51056160fa4a 18
Wolfgang Betz 132:51056160fa4a 19 #ifndef __PAYLOAD_H__
Wolfgang Betz 132:51056160fa4a 20 #define __PAYLOAD_H__
Wolfgang Betz 132:51056160fa4a 21
Wolfgang Betz 132:51056160fa4a 22 class UnitPayload
Wolfgang Betz 132:51056160fa4a 23 {
Wolfgang Betz 132:51056160fa4a 24 public:
Wolfgang Betz 132:51056160fa4a 25 uint8_t length;
Wolfgang Betz 132:51056160fa4a 26 uint8_t id;
Wolfgang Betz 132:51056160fa4a 27 uint8_t *data;
Wolfgang Betz 132:51056160fa4a 28 uint8_t *idptr;
Wolfgang Betz 132:51056160fa4a 29
Wolfgang Betz 132:51056160fa4a 30
Wolfgang Betz 132:51056160fa4a 31
Wolfgang Betz 132:51056160fa4a 32 void set_length(uint8_t l) {
Wolfgang Betz 132:51056160fa4a 33 length=l;
Wolfgang Betz 132:51056160fa4a 34 }
Wolfgang Betz 132:51056160fa4a 35
Wolfgang Betz 132:51056160fa4a 36 void set_id(uint8_t i) {
Wolfgang Betz 132:51056160fa4a 37 id=i;
Wolfgang Betz 132:51056160fa4a 38 }
Wolfgang Betz 132:51056160fa4a 39
Wolfgang Betz 132:51056160fa4a 40 void set_data(uint8_t* data1) {
Wolfgang Betz 132:51056160fa4a 41 for(int j=0;j<length;j++)
Wolfgang Betz 132:51056160fa4a 42 {
Wolfgang Betz 132:51056160fa4a 43 data[j]=data1[j];
Wolfgang Betz 132:51056160fa4a 44 }
Wolfgang Betz 132:51056160fa4a 45 }
Wolfgang Betz 132:51056160fa4a 46
Wolfgang Betz 132:51056160fa4a 47 uint8_t get_length() {
Wolfgang Betz 132:51056160fa4a 48 return length;
Wolfgang Betz 132:51056160fa4a 49 }
Wolfgang Betz 132:51056160fa4a 50
Wolfgang Betz 132:51056160fa4a 51 uint8_t get_id() {
Wolfgang Betz 132:51056160fa4a 52 return id;
Wolfgang Betz 132:51056160fa4a 53 }
Wolfgang Betz 132:51056160fa4a 54
Wolfgang Betz 132:51056160fa4a 55 uint8_t* get_data() {
Wolfgang Betz 132:51056160fa4a 56 return data;
Wolfgang Betz 132:51056160fa4a 57 }
Wolfgang Betz 132:51056160fa4a 58
Wolfgang Betz 132:51056160fa4a 59 };
Wolfgang Betz 132:51056160fa4a 60
Wolfgang Betz 132:51056160fa4a 61 class Payload {
Wolfgang Betz 132:51056160fa4a 62 UnitPayload *payload;
Wolfgang Betz 132:51056160fa4a 63 int stringLength;
Wolfgang Betz 132:51056160fa4a 64 int payloadUnitCount;
Wolfgang Betz 132:51056160fa4a 65
Wolfgang Betz 132:51056160fa4a 66 public:
Wolfgang Betz 132:51056160fa4a 67 Payload(const uint8_t *tokenString, uint8_t string_ength);
Wolfgang Betz 132:51056160fa4a 68 Payload();
Wolfgang Betz 132:51056160fa4a 69 uint8_t getPayloadUnitCount();
Wolfgang Betz 132:51056160fa4a 70
Wolfgang Betz 132:51056160fa4a 71 uint8_t getIDAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 72 uint8_t getLengthAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 73 uint8_t* getDataAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 74 int8_t getInt8AtIndex(int index);
Wolfgang Betz 132:51056160fa4a 75 uint16_t getUint16AtIndex(int index);
Wolfgang Betz 132:51056160fa4a 76 uint8_t* getSerializedAdDataAtIndex(int index);
Wolfgang Betz 132:51056160fa4a 77 };
Wolfgang Betz 132:51056160fa4a 78
Wolfgang Betz 132:51056160fa4a 79
Wolfgang Betz 132:51056160fa4a 80 class PayloadUnit {
Wolfgang Betz 132:51056160fa4a 81 private:
Wolfgang Betz 132:51056160fa4a 82 uint8_t* lenPtr;
Wolfgang Betz 132:51056160fa4a 83 uint8_t* adTypePtr;
Wolfgang Betz 132:51056160fa4a 84 uint8_t* dataPtr;
Wolfgang Betz 132:51056160fa4a 85
Wolfgang Betz 132:51056160fa4a 86 public:
Wolfgang Betz 132:51056160fa4a 87 PayloadUnit() {
Wolfgang Betz 132:51056160fa4a 88 lenPtr = NULL;
Wolfgang Betz 132:51056160fa4a 89 adTypePtr = NULL;
Wolfgang Betz 132:51056160fa4a 90 dataPtr = NULL;
Wolfgang Betz 132:51056160fa4a 91 }
Wolfgang Betz 132:51056160fa4a 92
Wolfgang Betz 132:51056160fa4a 93 PayloadUnit(uint8_t *len, uint8_t *adType, uint8_t* data) {
Wolfgang Betz 132:51056160fa4a 94 lenPtr = len;
Wolfgang Betz 132:51056160fa4a 95 adTypePtr = adType;
Wolfgang Betz 132:51056160fa4a 96 dataPtr = data;
Wolfgang Betz 132:51056160fa4a 97 }
Wolfgang Betz 132:51056160fa4a 98
Wolfgang Betz 132:51056160fa4a 99 void setLenPtr(uint8_t *len) {
Wolfgang Betz 132:51056160fa4a 100 lenPtr = len;
Wolfgang Betz 132:51056160fa4a 101 }
Wolfgang Betz 132:51056160fa4a 102
Wolfgang Betz 132:51056160fa4a 103 void setAdTypePtr(uint8_t *adType) {
Wolfgang Betz 132:51056160fa4a 104 adTypePtr = adType;
Wolfgang Betz 132:51056160fa4a 105 }
Wolfgang Betz 132:51056160fa4a 106
Wolfgang Betz 132:51056160fa4a 107 void setDataPtr(uint8_t *data) {
Wolfgang Betz 132:51056160fa4a 108 dataPtr = data;
Wolfgang Betz 132:51056160fa4a 109 }
Wolfgang Betz 132:51056160fa4a 110
Wolfgang Betz 132:51056160fa4a 111 uint8_t* getLenPtr() {
Wolfgang Betz 132:51056160fa4a 112 return lenPtr;
Wolfgang Betz 132:51056160fa4a 113 }
Wolfgang Betz 132:51056160fa4a 114
Wolfgang Betz 132:51056160fa4a 115 uint8_t* getAdTypePtr() {
Wolfgang Betz 132:51056160fa4a 116 return adTypePtr;
Wolfgang Betz 132:51056160fa4a 117 }
Wolfgang Betz 132:51056160fa4a 118
Wolfgang Betz 132:51056160fa4a 119 uint8_t* getDataPtr() {
Wolfgang Betz 132:51056160fa4a 120 return dataPtr;
Wolfgang Betz 132:51056160fa4a 121 }
Wolfgang Betz 132:51056160fa4a 122
Wolfgang Betz 132:51056160fa4a 123 void printDataAsHex() {
Wolfgang Betz 132:51056160fa4a 124 int i = 0;
Wolfgang Betz 132:51056160fa4a 125 printf("AdData=");
Wolfgang Betz 132:51056160fa4a 126 for(i=0; i<*lenPtr-1; i++) {
Wolfgang Betz 132:51056160fa4a 127 printf("0x%x ", dataPtr[i]);
Wolfgang Betz 132:51056160fa4a 128 }
Wolfgang Betz 132:51056160fa4a 129 printf("\n");
Wolfgang Betz 132:51056160fa4a 130 }
Wolfgang Betz 132:51056160fa4a 131
Wolfgang Betz 132:51056160fa4a 132 void printDataAsString() {
Wolfgang Betz 132:51056160fa4a 133 int i = 0;
Wolfgang Betz 132:51056160fa4a 134 printf("AdData=");
Wolfgang Betz 132:51056160fa4a 135 for(i=0; i<*lenPtr; i++) {
Wolfgang Betz 132:51056160fa4a 136 printf("%c", dataPtr[i]);
Wolfgang Betz 132:51056160fa4a 137 }
Wolfgang Betz 132:51056160fa4a 138 printf("\n");
Wolfgang Betz 132:51056160fa4a 139 }
Wolfgang Betz 132:51056160fa4a 140
Wolfgang Betz 132:51056160fa4a 141 };
Wolfgang Betz 132:51056160fa4a 142
Wolfgang Betz 132:51056160fa4a 143 class PayloadPtr {
Wolfgang Betz 132:51056160fa4a 144 private:
Wolfgang Betz 132:51056160fa4a 145 PayloadUnit *unit;
Wolfgang Betz 132:51056160fa4a 146 int payloadUnitCount;
Wolfgang Betz 132:51056160fa4a 147 public:
Wolfgang Betz 132:51056160fa4a 148 PayloadPtr(const uint8_t *tokenString, uint8_t string_ength) {
Wolfgang Betz 132:51056160fa4a 149 // initialize private data members
Wolfgang Betz 132:51056160fa4a 150 int stringLength = string_ength;
Wolfgang Betz 132:51056160fa4a 151 payloadUnitCount = 0;
Wolfgang Betz 132:51056160fa4a 152
Wolfgang Betz 132:51056160fa4a 153 int index = 0;
Wolfgang Betz 132:51056160fa4a 154 while(index!=stringLength) {
Wolfgang Betz 132:51056160fa4a 155 int len=tokenString[index];
Wolfgang Betz 132:51056160fa4a 156 index=index+1+len;
Wolfgang Betz 132:51056160fa4a 157 payloadUnitCount++;
Wolfgang Betz 132:51056160fa4a 158 }
Wolfgang Betz 132:51056160fa4a 159
Wolfgang Betz 132:51056160fa4a 160 // allocate memory to unit
Wolfgang Betz 132:51056160fa4a 161 unit = new PayloadUnit[payloadUnitCount];
Wolfgang Betz 132:51056160fa4a 162 int i = 0;
Wolfgang Betz 132:51056160fa4a 163 int nextUnitOffset = 0;
Wolfgang Betz 132:51056160fa4a 164
Wolfgang Betz 132:51056160fa4a 165 while(i<payloadUnitCount) {
Wolfgang Betz 132:51056160fa4a 166 unit[i].setLenPtr((uint8_t *)tokenString+nextUnitOffset);
Wolfgang Betz 132:51056160fa4a 167 unit[i].setAdTypePtr((uint8_t *)tokenString+nextUnitOffset+1);
Wolfgang Betz 132:51056160fa4a 168 unit[i].setDataPtr((uint8_t *)tokenString+nextUnitOffset+2);
Wolfgang Betz 132:51056160fa4a 169
Wolfgang Betz 132:51056160fa4a 170 nextUnitOffset += *unit[i].getLenPtr()+1;
Wolfgang Betz 132:51056160fa4a 171 i++;
Wolfgang Betz 132:51056160fa4a 172
Wolfgang Betz 132:51056160fa4a 173 }
Wolfgang Betz 132:51056160fa4a 174 }
Wolfgang Betz 132:51056160fa4a 175
Wolfgang Betz 132:51056160fa4a 176 PayloadUnit getUnitAtIndex(int index) {
Wolfgang Betz 132:51056160fa4a 177 return unit[index];
Wolfgang Betz 132:51056160fa4a 178 }
Wolfgang Betz 132:51056160fa4a 179
Wolfgang Betz 132:51056160fa4a 180 int getPayloadUnitCount() { return payloadUnitCount; }
Wolfgang Betz 132:51056160fa4a 181
Wolfgang Betz 132:51056160fa4a 182
Wolfgang Betz 132:51056160fa4a 183 };
Wolfgang Betz 132:51056160fa4a 184
Wolfgang Betz 132:51056160fa4a 185 #endif // __PAYLOAD_H__