2323
2424BLEAdvertisingData::BLEAdvertisingData () :
2525 _dataLength(0 ),
26+ _rawData(NULL ),
2627 _rawDataLength(0 ),
2728 _advertisedServiceUuid(NULL ),
2829 _manufacturerData(NULL ),
@@ -162,12 +163,22 @@ bool BLEAdvertisingData::setLocalName(const char *localName)
162163
163164bool BLEAdvertisingData::setRawData (const uint8_t * data, int length)
164165{
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;
169168 }
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 ;
171182}
172183
173184bool BLEAdvertisingData::setFlags (uint8_t flags)
@@ -186,6 +197,10 @@ bool BLEAdvertisingData::updateData()
186197 bool success = true ;
187198 // Reset data
188199 _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+ }
189204 // Try to add flags into the current advertising packet
190205 if (_hasFlags) {
191206 success &= addFlags (_flags);
@@ -210,10 +225,6 @@ bool BLEAdvertisingData::updateData()
210225 if (_localName) {
211226 success &= addLocalName (_localName);
212227 }
213- // Try to add Raw data
214- if (_rawDataLength) {
215- success &= addRawData (_rawData, _rawDataLength);
216- }
217228 return success;
218229}
219230
0 commit comments