Я работаю над BLE-сканером. В основном я ищу устройство iBeacon с типом 0x4 c и размером полезной нагрузки 30. Однако, когда я запускаю mbed, происходит сбой после вывода нескольких строк печати. Этот код очень удачный. он получает ошибку индекса вне пределов (что понятно). Как поймать ошибку и пропустить ее?
void Scanner::onAdvertisingReport(const AdvertisingReportEvent &event)
{
printf("Looking for Devices\r\n");
AdvertisingDataParser adv_data(event.getPayload());
while(adv_data.hasNext())
{
if (event.getPayload().size() == 30 and event.getPayload()[5] == 0x4c)
{
beacon_found = true;
while(beacon_found)
{
printf("Found Beacon!\r\n");
::print_address(event.getPeerAddress());
printf("RSSI : %d\r\n",event.getRssi());
printf("PL: %d\r\n",event.getPayload().size());
printf("Major Value: %d\r\n",event.getPayload()[26]);
printf("Minor Value: %d\r\n",event.getPayload()[27]);
break;
}
beacon_found = false;
break;
}
else
{
printf("Couldnt find beacon!\r\n");
break;
}
}
adv_data.next();
}
Ошибка: Статус ошибки: 0x80FF0140 код 324 модуль 255 Ошибка утверждения: 0 <= index && index <_size в Span.h </p>