Robotique FIP / Mbed 2 deprecated FIP_REV1

Dependencies:   HC_SR04_Ultrasonic_Library Servo mbed

Fork of FIP_REV1 by Robotique FIP

Committer:
julientiron
Date:
Tue May 19 17:46:51 2015 +0000
Revision:
2:b5166e24c7a6
Parent:
0:3d641e170a74
?a marche BLE+capteur de distance;

Who changed what in which revision?

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