Значения полезной нагрузки MBED BLE - PullRequest
0 голосов
/ 07 августа 2020

Я работаю над 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>

...