23
23
24
24
BLEAdvertisingData::BLEAdvertisingData () :
25
25
_dataLength(0 ),
26
+ _rawData(NULL ),
26
27
_rawDataLength(0 ),
27
28
_advertisedServiceUuid(NULL ),
28
29
_manufacturerData(NULL ),
@@ -162,12 +163,22 @@ bool BLEAdvertisingData::setLocalName(const char *localName)
162
163
163
164
bool BLEAdvertisingData::setRawData (const uint8_t * data, int length)
164
165
{
165
- bool success = updateRemainingLength (length);
166
- if (success) {
167
- _rawData = data;
168
- _rawDataLength = length;
166
+ if (length > MAX_AD_DATA_LENGTH) {
167
+ length = MAX_AD_DATA_LENGTH;
169
168
}
170
- return success;
169
+ _rawData = data;
170
+ _rawDataLength = length;
171
+ return true ;
172
+ }
173
+
174
+ bool BLEAdvertisingData::setRawData (const BLEAdvertisingRawData& rawData)
175
+ {
176
+ _rawData = rawData.data ;
177
+ _rawDataLength = rawData.length ;
178
+ if (_rawDataLength > MAX_AD_DATA_LENGTH) {
179
+ _rawDataLength = MAX_AD_DATA_LENGTH;
180
+ }
181
+ return true ;
171
182
}
172
183
173
184
bool BLEAdvertisingData::setFlags (uint8_t flags)
@@ -186,6 +197,10 @@ bool BLEAdvertisingData::updateData()
186
197
bool success = true ;
187
198
// Reset data
188
199
_dataLength = 0 ;
200
+ // If rawData is present, then only rawData is inserted in the advertising packet
201
+ if (_rawData && _rawDataLength) {
202
+ return addRawData (_rawData, _rawDataLength);
203
+ }
189
204
// Try to add flags into the current advertising packet
190
205
if (_hasFlags) {
191
206
success &= addFlags (_flags);
@@ -210,10 +225,6 @@ bool BLEAdvertisingData::updateData()
210
225
if (_localName) {
211
226
success &= addLocalName (_localName);
212
227
}
213
- // Try to add Raw data
214
- if (_rawDataLength) {
215
- success &= addRawData (_rawData, _rawDataLength);
216
- }
217
228
return success;
218
229
}
219
230
0 commit comments