diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 00000000..b889c771 --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,45 @@ +name: Unit Tests + +on: + pull_request: + paths: + - ".github/workflows/unit-tests.yml" + - 'extras/test/**' + - 'src/**' + + push: + paths: + - ".github/workflows/unit-tests.yml" + - 'extras/test/**' + - 'src/**' + +jobs: + test: + name: Run unit tests + runs-on: ubuntu-latest + + env: + COVERAGE_DATA_PATH: extras/coverage-data/coverage.info + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - uses: arduino/cpp-test-action@main + with: + runtime-paths: | + - extras/test/build/bin/TEST_TARGET_UUID + - extras/test/build/bin/TEST_TARGET_DISC_DEVICE + - extras/test/build/bin/TEST_TARGET_ADVERTISING_DATA + coverage-exclude-paths: | + - '*/extras/test/*' + - '/usr/*' + coverage-data-path: ${{ env.COVERAGE_DATA_PATH }} + + - name: Upload coverage report to Codecov + uses: codecov/codecov-action@v1 + with: + file: "${{ env.COVERAGE_DATA_PATH }}" + fail_ci_if_error: true + + diff --git a/extras/test/src/test_advertising_data/test_advertising_data.cpp b/extras/test/src/test_advertising_data/test_advertising_data.cpp index 67fa1d25..5c4902d8 100644 --- a/extras/test/src/test_advertising_data/test_advertising_data.cpp +++ b/extras/test/src/test_advertising_data/test_advertising_data.cpp @@ -30,8 +30,8 @@ TEST_CASE("Test flags override", "[ArduinoBLE::BLEAdvertisingData]") // Mocking advertisement packet BLEAdvertisingData advData; // Expected results - uint8_t defaultData[] = {0x02, BLEFieldFlags, 0x06}; - uint8_t goldenFlags[] = {0x02, 0x01, BLEFlagsBREDRNotSupported}; + const uint8_t defaultData[] = {0x02, BLEFieldFlags, 0x06}; + const uint8_t goldenFlags[] = {0x02, 0x01, BLEFlagsBREDRNotSupported}; WHEN("Default options for flags") { @@ -74,9 +74,9 @@ TEST_CASE("Set default flags in an already full advertising data packet", "[Ardu const uint8_t manufacturerData[24] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; - uint8_t defaultFlags[3] = {0x02, 0x01, 0x06}; + const uint8_t defaultFlags[3] = {0x02, 0x01, 0x06}; - uint8_t goldenData[31] = { + const uint8_t goldenData[31] = { (sizeof(manufacturerData) + 1), BLEFieldManufacturerData, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ((uint8_t)(strlen(name) + 1)), BLEFieldCompleteLocalName, 't', 'e', 's' @@ -109,22 +109,36 @@ TEST_CASE("BLE overwrite a full internal advertising data with an external built BLE.setLocalName("test"); BLE.setAdvertisedServiceUuid("1818"); BLE.advertise(); - //WARN("data length: " << BLE.getAdvertisingData().dataLength()); - verify = (BLE.getAdvertisingData().dataLength() == (3 + (2+2))); - REQUIRE(verify); - verify = (BLE.getScanResponseData().dataLength() == (4+2)); - REQUIRE(verify); + THEN("Check that BLE advertising data has been set") + { + verify = (BLE.getAdvertisingData().dataLength() == (3 + (2+2))); + REQUIRE(verify); + } + + THEN("Check that BLE scan response data has been set") + { + verify = (BLE.getScanResponseData().dataLength() == (4+2)); + REQUIRE(verify); + } + + // Copy external empty adv data into advertising data BLE.setAdvertisingData(advData); BLE.advertise(); - //WARN(BLE.getAdvertisingData().dataLength()); - verify = (BLE.getAdvertisingData().dataLength() == 3); - REQUIRE(verify); + THEN("BLE advertising data should be erased") + { + verify = (BLE.getAdvertisingData().dataLength() == 3); + REQUIRE(verify); + } + // Copy external empty adv data into scan response data BLE.setScanResponseData(advData); BLE.advertise(); - verify = (BLE.getScanResponseData().dataLength() == 0); - REQUIRE(verify); + THEN("BLE scan response data should be erased") + { + verify = (BLE.getScanResponseData().dataLength() == 0); + REQUIRE(verify); + } } // Clear BLE advertising data @@ -139,21 +153,27 @@ TEST_CASE("BLE test raw data", "[ArduinoBLE::BLEAdvertisingData]") WHEN("Set too large raw data") { - uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 }; - advData.setRawData(data, sizeof(data)); - REQUIRE(!retVal); + retVal = advData.setRawData(data, sizeof(data)); + THEN("Set raw data should return false. The parameter should not be set") + { + REQUIRE(!retVal); + } advData.clear(); } WHEN("Set correct raw data") { - uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; retVal = advData.setRawData(data, sizeof(data)); - REQUIRE(retVal); + THEN("Set raw data should return true. The parameter should be correctly set") + { + REQUIRE(retVal); + } advData.updateData(); REQUIRE( 0 == memcmp(data, advData.data(), sizeof(data)) ); advData.clear(); @@ -161,7 +181,7 @@ TEST_CASE("BLE test raw data", "[ArduinoBLE::BLEAdvertisingData]") WHEN("Hide other parameters by setting raw data") { - uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; advData.setLocalName("test"); advData.setRawData(data, sizeof(data)); diff --git a/extras/test/src/test_advertising_data/test_local_name.cpp b/extras/test/src/test_advertising_data/test_local_name.cpp index 947224cc..a0b4e19d 100644 --- a/extras/test/src/test_advertising_data/test_local_name.cpp +++ b/extras/test/src/test_advertising_data/test_local_name.cpp @@ -35,8 +35,15 @@ TEST_CASE("Test local name setting", "[ArduinoBLE::BLEAdvertisingData]") { const char* name = "test"; retVal = advData.setLocalName(name); - REQUIRE(retVal); - REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) ); + THEN("Set local name should return true. The name parameter should be correctly set") + { + REQUIRE(retVal); + } + + THEN("Check the exact number of bytes occupied by the name just set") + { + REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) ); + } oldRemainingLength = advData.remainingLength(); advData.updateData(); @@ -47,30 +54,36 @@ TEST_CASE("Test local name setting", "[ArduinoBLE::BLEAdvertisingData]") { const char* name = "way too long local name (len 32)"; retVal = advData.setLocalName(name); - REQUIRE(!retVal); - REQUIRE( oldRemainingLength == advData.remainingLength() ); - advData.updateData(); - REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); + THEN("Set local name should return false. The name parameter should not be set") + { + REQUIRE(!retVal); + REQUIRE( oldRemainingLength == advData.remainingLength() ); + advData.updateData(); + REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); + } } WHEN("Overwrite local name with a name as long as max data length") { const char* name = "local name with full length "; retVal = advData.setLocalName(name); - REQUIRE(retVal); - REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) ); - oldRemainingLength = advData.remainingLength(); + THEN("The name parameter should be correctly overwritten. The remaining length should be 0") + { + REQUIRE(retVal); + REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) ); + oldRemainingLength = advData.remainingLength(); - advData.updateData(); - REQUIRE(advData.dataLength() == (strlen(name) + 2)); - // advData should be full now - REQUIRE( 0 == advData.remainingLength() ); - REQUIRE( 0 == advData.availableForWrite() ); + advData.updateData(); + REQUIRE(advData.dataLength() == (strlen(name) + 2)); + // advData should be full now + REQUIRE( 0 == advData.remainingLength() ); + REQUIRE( 0 == advData.availableForWrite() ); + } } WHEN("Check consistency when setting the external advertising data") { - auto goldenData = advData.data(); + const auto goldenData = advData.data(); BLE.setAdvertisingData(advData); BLE.advertise(); REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) ); diff --git a/extras/test/src/test_advertising_data/test_manufacturer.cpp b/extras/test/src/test_advertising_data/test_manufacturer.cpp index 39f7e955..7c23d26c 100644 --- a/extras/test/src/test_advertising_data/test_manufacturer.cpp +++ b/extras/test/src/test_advertising_data/test_manufacturer.cpp @@ -29,7 +29,7 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") { BLEAdvertisingData advData; int oldRemainingLength = advData.remainingLength(); - uint16_t companyId = 0x1100; + const uint16_t companyId = 0x1100; bool retVal; WHEN("Set correct manufacturer data without id") @@ -38,8 +38,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t goldenData[] = {(sizeof(data) + 1), BLEFieldManufacturerData, 0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; retVal = advData.setManufacturerData(data, sizeof(data)); - REQUIRE(retVal); - REQUIRE( (sizeof(data) + 2) == (oldRemainingLength - advData.remainingLength()) ); + THEN("Check that the manufacturer data has been correctly set") + { + REQUIRE(retVal); + REQUIRE( (sizeof(data) + 2) == (oldRemainingLength - advData.remainingLength()) ); + } oldRemainingLength = advData.remainingLength(); advData.updateData(); @@ -53,8 +56,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t goldenData[] = {(sizeof(data) + sizeof(companyId) + 1), BLEFieldManufacturerData, 0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; retVal = advData.setManufacturerData(companyId, data, sizeof(data)); - REQUIRE(retVal); - REQUIRE( (sizeof(data) + sizeof(companyId) + 2) == (oldRemainingLength - advData.remainingLength()) ); + THEN("Check that the manufacturer data has been correctly set") + { + REQUIRE(retVal); + REQUIRE( (sizeof(data) + sizeof(companyId) + 2) == (oldRemainingLength - advData.remainingLength()) ); + } oldRemainingLength = advData.remainingLength(); advData.updateData(); @@ -68,8 +74,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}; retVal = advData.setManufacturerData(companyId, data, sizeof(data)); - REQUIRE(!retVal); - REQUIRE( oldRemainingLength == advData.remainingLength() ); + THEN("Manufacturer data was too long, check that it has not been set") + { + REQUIRE(!retVal); + REQUIRE( oldRemainingLength == advData.remainingLength() ); + } advData.updateData(); REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); } @@ -80,8 +89,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}; retVal = advData.setManufacturerData(data, sizeof(data)); - REQUIRE(!retVal); - REQUIRE( oldRemainingLength == advData.remainingLength() ); + THEN("Manufacturer data was too long, check that it has not been set") + { + REQUIRE(!retVal); + REQUIRE( oldRemainingLength == advData.remainingLength() ); + } advData.updateData(); REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); } @@ -93,13 +105,19 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28}; - retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId)); - REQUIRE(retVal); - retVal = advData.setManufacturerData(data, sizeof(data)); - REQUIRE(retVal); - REQUIRE( 0 == advData.remainingLength() ); - advData.updateData(); - REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH) ); + THEN("Check that first insertion of manufacturer data given id is correctly done") + { + retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId)); + REQUIRE(retVal); + } + THEN("Check that the insertion of manufacturer data without after one with id is correctly done") + { + retVal = advData.setManufacturerData(data, sizeof(data)); + REQUIRE(retVal); + REQUIRE( 0 == advData.remainingLength() ); + advData.updateData(); + REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH) ); + } } WHEN("Set manufacturer data given id after setting manufacturer data without id") @@ -110,10 +128,16 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}; const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28}; - retVal = advData.setManufacturerData(data, sizeof(data)); - REQUIRE(retVal); - retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId)); - REQUIRE(!retVal); + THEN("Check that first insertion of manufacturer data WITHOUT id is correctly done") + { + retVal = advData.setManufacturerData(data, sizeof(data)); + REQUIRE(retVal); + } + THEN("Check that the insertion of manufacturer data given id after one without id is correctly done") + { + retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId)); + REQUIRE(!retVal); + } } WHEN("Overwrite manufacturer data with one as long as max data length") @@ -124,17 +148,20 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]") 0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; retVal = advData.setManufacturerData(companyId, data, sizeof(data)); - REQUIRE(retVal); - - advData.updateData(); - REQUIRE( 0 == advData.remainingLength() ); - REQUIRE( 0 == advData.availableForWrite() ); - REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) ); + THEN("Manufacturer data should be set correctly") + { + REQUIRE(retVal); + + advData.updateData(); + REQUIRE( 0 == advData.remainingLength() ); + REQUIRE( 0 == advData.availableForWrite() ); + REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) ); + } } WHEN("Check consistency when setting the external advertising data") { - auto goldenData = advData.data(); + const auto goldenData = advData.data(); BLE.setAdvertisingData(advData); BLE.advertise(); REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) ); diff --git a/extras/test/src/test_advertising_data/test_service.cpp b/extras/test/src/test_advertising_data/test_service.cpp index 5c212c1f..66b1689f 100644 --- a/extras/test/src/test_advertising_data/test_service.cpp +++ b/extras/test/src/test_advertising_data/test_service.cpp @@ -50,12 +50,13 @@ TEST_CASE("Test advertised service id setting", "[ArduinoBLE::BLEAdvertisingData const char* service = "00112233445566770011223344556677"; advData.setLocalName(name); oldRemainingLength = advData.remainingLength(); - retVal = advData.setAdvertisedServiceUuid(service); - REQUIRE(!retVal); - - REQUIRE( oldRemainingLength == advData.remainingLength() ); - advData.updateData(); - REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); + THEN("Check that the too long parameter has not been set") + { + REQUIRE(!advData.setAdvertisedServiceUuid(service)); + REQUIRE( oldRemainingLength == advData.remainingLength() ); + advData.updateData(); + REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); + } } WHEN("Fill to maximum an advertising packet with a service id") @@ -64,8 +65,7 @@ TEST_CASE("Test advertised service id setting", "[ArduinoBLE::BLEAdvertisingData const char* name = "11 char str"; const char* service = "00112233445566770011223344556677"; advData.setLocalName(name); - retVal = advData.setAdvertisedServiceUuid(service); - REQUIRE(retVal); + REQUIRE(advData.setAdvertisedServiceUuid(service)); advData.updateData(); REQUIRE(advData.dataLength() == (MAX_AD_DATA_LENGTH)); @@ -76,7 +76,7 @@ TEST_CASE("Test advertised service id setting", "[ArduinoBLE::BLEAdvertisingData WHEN("Check consistency when setting the external advertising data") { - auto goldenData = advData.data(); + const auto goldenData = advData.data(); BLE.setAdvertisingData(advData); BLE.advertise(); REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) ); @@ -91,7 +91,7 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]") { BLEAdvertisingData advData; int oldRemainingLength = advData.remainingLength(); - uint16_t uuid = 0x1100; + const uint16_t uuid = 0x1100; bool retVal; WHEN("Set correct service data") @@ -100,14 +100,20 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t goldenData[] = {(sizeof(data) + sizeof(uuid) + 1), BLEFieldServiceData, 0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; retVal = advData.setAdvertisedServiceData(uuid, data, sizeof(data)); - REQUIRE(retVal); - REQUIRE( (sizeof(data) + 2 + sizeof(uuid)) == (oldRemainingLength - advData.remainingLength()) ); + THEN("Correctly set parameter") + { + REQUIRE(retVal); + REQUIRE( (sizeof(data) + 2 + sizeof(uuid)) == (oldRemainingLength - advData.remainingLength()) ); + } oldRemainingLength = advData.remainingLength(); advData.updateData(); - REQUIRE(advData.dataLength() == (sizeof(data) + 2 + sizeof(uuid))); - REQUIRE(advData.dataLength() == sizeof(goldenData)); - REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) ); + THEN("Check parameter analyzing advertising raw data") + { + REQUIRE(advData.dataLength() == (sizeof(data) + 2 + sizeof(uuid))); + REQUIRE(advData.dataLength() == sizeof(goldenData)); + REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) ); + } } WHEN("Set too long service data") @@ -116,7 +122,10 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}; retVal = advData.setAdvertisedServiceData(uuid, data, sizeof(data)); - REQUIRE(!retVal); + THEN("Check that the too long parameter has not been set") + { + REQUIRE(!retVal); + } REQUIRE( oldRemainingLength == advData.remainingLength() ); advData.updateData(); REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) ); @@ -127,17 +136,23 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]") const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; retVal = advData.setAdvertisedServiceData(uuid, data, sizeof(data)); - REQUIRE(retVal); + THEN("Check correctly set parameter") + { + REQUIRE(retVal); + } advData.updateData(); // advData should be full now - REQUIRE( 0 == advData.remainingLength() ); - REQUIRE( 0 == advData.availableForWrite() ); + THEN("advData should be full now") + { + REQUIRE( 0 == advData.remainingLength() ); + REQUIRE( 0 == advData.availableForWrite() ); + } } WHEN("Check consistency when setting the external advertising data") { - auto goldenData = advData.data(); + const auto goldenData = advData.data(); BLE.setAdvertisingData(advData); BLE.advertise(); REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) ); diff --git a/extras/test/src/test_uuid/test_uuid.cpp b/extras/test/src/test_uuid/test_uuid.cpp index 13b655e6..1832c741 100644 --- a/extras/test/src/test_uuid/test_uuid.cpp +++ b/extras/test/src/test_uuid/test_uuid.cpp @@ -47,6 +47,6 @@ TEST_CASE("BLE uuid test", "[ArduinoBLE::BLEUuid]") REQUIRE(verify); // print the uuid - WARN("test: " << testUuid << ", golden: " << goldenUuid); + //WARN("test: " << testUuid << ", golden: " << goldenUuid); } } \ No newline at end of file diff --git a/src/BLEAdvertisingData.cpp b/src/BLEAdvertisingData.cpp index 50063913..d528bdfa 100644 --- a/src/BLEAdvertisingData.cpp +++ b/src/BLEAdvertisingData.cpp @@ -186,7 +186,7 @@ bool BLEAdvertisingData::setLocalName(const char *localName) bool BLEAdvertisingData::setRawData(const uint8_t* data, int length) { if (length > MAX_AD_DATA_LENGTH) { - length = MAX_AD_DATA_LENGTH; + return false; } _rawData = data; _rawDataLength = length; @@ -195,11 +195,11 @@ bool BLEAdvertisingData::setRawData(const uint8_t* data, int length) bool BLEAdvertisingData::setRawData(const BLEAdvertisingRawData& rawData) { + if (rawData.length > MAX_AD_DATA_LENGTH) { + return false; + } _rawData = rawData.data; _rawDataLength = rawData.length; - if (_rawDataLength > MAX_AD_DATA_LENGTH) { - _rawDataLength = MAX_AD_DATA_LENGTH; - } return true; }