@@ -79,27 +79,24 @@ class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
7979 return ;
8080 }
8181
82- uint8_t *payLoad = advertisedDevice-> getPayload () ;
82+ BLEUUID eddyUUID = ( uint16_t ) 0xfeaa ;
8383
84- BLEUUID checkUrlUUID = (uint16_t )0xfeaa ;
85-
86- if (advertisedDevice->getServiceUUID ().equals (checkUrlUUID))
84+ if (advertisedDevice->getServiceUUID ().equals (eddyUUID))
8785 {
88- if (payLoad[11 ] == 0x10 )
86+ std::string serviceData = advertisedDevice->getServiceData (eddyUUID);
87+ if (serviceData[0 ] == 0x10 )
8988 {
9089 Serial.println (" Found an EddystoneURL beacon!" );
9190 BLEEddystoneURL foundEddyURL = BLEEddystoneURL ();
92- std::string eddyContent ((char *)&payLoad[11 ]); // incomplete EddystoneURL struct!
9391
94- foundEddyURL.setData (eddyContent );
92+ foundEddyURL.setData (serviceData );
9593 std::string bareURL = foundEddyURL.getURL ();
9694 if (bareURL[0 ] == 0x00 )
9795 {
98- size_t payLoadLen = advertisedDevice->getPayloadLength ();
9996 Serial.println (" DATA-->" );
100- for (int idx = 0 ; idx < payLoadLen ; idx++)
97+ for (int idx = 0 ; idx < serviceData. length () ; idx++)
10198 {
102- Serial.printf (" 0x%08X " , payLoad [idx]);
99+ Serial.printf (" 0x%08X " , serviceData [idx]);
103100 }
104101 Serial.println (" \n Invalid Data" );
105102 return ;
@@ -110,23 +107,15 @@ class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
110107 Serial.printf (" TX power %d\n " , foundEddyURL.getPower ());
111108 Serial.println (" \n " );
112109 }
113- else if (payLoad[ 11 ] == 0x20 )
110+ else if (serviceData[ 0 ] == 0x20 )
114111 {
115112 Serial.println (" Found an EddystoneTLM beacon!" );
116113 BLEEddystoneTLM foundEddyURL = BLEEddystoneTLM ();
117- std::string eddyContent ((char *)&payLoad[11 ]); // incomplete EddystoneURL struct!
118-
119- eddyContent = " 01234567890123" ;
120-
121- for (int idx = 0 ; idx < 14 ; idx++)
122- {
123- eddyContent[idx] = payLoad[idx + 11 ];
124- }
114+ foundEddyURL.setData (serviceData);
125115
126- foundEddyURL.setData (eddyContent);
127116 Serial.printf (" Reported battery voltage: %dmV\n " , foundEddyURL.getVolt ());
128117 Serial.printf (" Reported temperature from TLM class: %.2fC\n " , (double )foundEddyURL.getTemp ());
129- int temp = (int )payLoad[ 16 ] + (int )(payLoad[ 15 ] << 8 );
118+ int temp = (int )serviceData[ 5 ] + (int )(serviceData[ 4 ] << 8 );
130119 float calcTemp = temp / 256 .0f ;
131120 Serial.printf (" Reported temperature from data: %.2fC\n " , calcTemp);
132121 Serial.printf (" Reported advertise count: %d\n " , foundEddyURL.getCount ());
0 commit comments