diff --git a/test/bau/CMakeLists.txt b/test/bau/CMakeLists.txt index 969ffb3c2..07fdc9d5e 100644 --- a/test/bau/CMakeLists.txt +++ b/test/bau/CMakeLists.txt @@ -8,7 +8,7 @@ set (BTSTACK_ROOT ${CMAKE_SOURCE_DIR}/../../) find_package(PkgConfig REQUIRED) # CppuTest -pkg_check_modules(CPPUTEST REQUIRED CppuTest) +pkg_check_modules(CPPUTEST REQUIRED cpputest) include_directories(${CPPUTEST_INCLUDE_DIRS}) link_directories(${CPPUTEST_LIBRARY_DIRS}) link_libraries(${CPPUTEST_LIBRARIES}) @@ -36,6 +36,7 @@ foreach(TARGET_FILE ${TARGETS_CPP}) ${BTSTACK_ROOT}/src/btstack_util.c ${BTSTACK_ROOT}/src/hci_dump.c ${BTSTACK_ROOT}/src/le-audio/broadcast_audio_uri_builder.c + ${BTSTACK_ROOT}/src/btstack_base64_encoder.c ) endforeach(TARGET_FILE) diff --git a/test/bau/bau_encoder_test.cpp b/test/bau/bau_encoder_test.cpp index 2b8284c4e..e6df511d1 100644 --- a/test/bau/bau_encoder_test.cpp +++ b/test/bau/bau_encoder_test.cpp @@ -3,43 +3,88 @@ #include #include +#include "CppUTest/TestHarness.h" +#include "CppUTest/CommandLineTestRunner.h" + #include "le-audio/broadcast_audio_uri_builder.h" #include "bluetooth.h" #include "btstack_util.h" #include "bluetooth_company_id.h" -int main(int argc, const char ** argv){ - (void) argc; - (void) argv; +TEST_GROUP(URIBuilderTestGroup) { +}; + +int main(int argc, const char ** argv){ + return CommandLineTestRunner::RunAllTests(argc, argv); +} + +TEST(URIBuilderTestGroup, Example03) { + static const char *expected_uri = "BLUETOOTH:UUID:184F;BN:Um9iaW7igJlzIFRW;AT:0;AD:AABBCC012345;BC:RmlsbUZsaWNzQTE=;SM:BARkZXUCBgE=;;"; + char uri_buffer[256]; + broadcast_audio_uri_builder_t uri; + broadcast_audio_uri_builder_init(&uri, uri_buffer, sizeof(uri_buffer)); + broadcast_audio_uri_builder_append_broadcast_name(&uri, "Robin’s TV"); + broadcast_audio_uri_builder_append_advertiser_address_type(&uri, BD_ADDR_TYPE_LE_PUBLIC); + broadcast_audio_uri_builder_append_advertiser_address(&uri, (uint8_t*)"\xAA\xBB\xCC\x01\x23\x45"); + broadcast_audio_uri_builder_append_broadcast_code_as_string(&uri, "FilmFlicsA1"); + broadcast_audio_uri_builder_sg_metadata_begin(&uri); + broadcast_audio_uri_builder_sg_metadata_append_ltv(&uri, 3, 4, (uint8_t*)"deu"); + broadcast_audio_uri_builder_sg_metadata_append_ltv(&uri, 1, 6, (uint8_t*)"\x01"); + broadcast_audio_uri_builder_sg_metadata_end(&uri); + broadcast_audio_uri_builder_finalize(&uri); + STRCMP_EQUAL(expected_uri, uri_buffer); +} + +TEST(URIBuilderTestGroup, Example02) { + static const char *expected_uri = "BLUETOOTH:UUID:184F;BN:SG9ja2V5;SQ:1;AT:0;AD:AABBCC001122;AS:1;BI:DE51E9;PI:FFFF;NS:1;BS:1;;"; + char uri_buffer[256]; + broadcast_audio_uri_builder_t uri; + broadcast_audio_uri_builder_init(&uri, uri_buffer, sizeof(uri_buffer)); + broadcast_audio_uri_builder_append_broadcast_name(&uri, "Hockey"); + broadcast_audio_uri_builder_append_standard_quality(&uri, true); + broadcast_audio_uri_builder_append_advertiser_address_type(&uri, BD_ADDR_TYPE_LE_PUBLIC); + broadcast_audio_uri_builder_append_advertiser_address(&uri, (uint8_t*)"\xAA\xBB\xCC\x00\x11\x22"); + broadcast_audio_uri_builder_append_advertising_sid(&uri, 1); + broadcast_audio_uri_builder_append_broadcast_id(&uri, 0xDE51E9); + broadcast_audio_uri_builder_append_pa_interval(&uri, 0xFFFF); + broadcast_audio_uri_builder_append_num_subgroups(&uri, 1); + broadcast_audio_uri_builder_append_bis_sync(&uri, 1); + broadcast_audio_uri_builder_finalize(&uri); + STRCMP_EQUAL( expected_uri, uri_buffer ); +} + +TEST(URIBuilderTestGroup, Example01) { + static const char *expected_uri = "BLUETOOTH:UUID:184F;BN:QnJvYWRjYXN0IE5hbWU=;AT:0;AD:112233445566;BI:123456;BC:zMzMzMzMzMzMzMzMzMzMzA==;SQ:1;HQ:0;VS:SUQ6MzQ1NjtkYXRhMTtkYXRhMg==;AS:1;PI:1000;NS:1;BS:1;NB:1;SM:;;"; bd_addr_t adv_addr; sscanf_bd_addr("11:22:33:44:55:66", adv_addr); uint8_t broadcast_code[16]; memset(broadcast_code, 0xcc, sizeof(broadcast_code)); broadcast_audio_uri_builder_t builder; - uint8_t uri[256]; + char uri[256]; memset(uri, 0, sizeof(uri)); broadcast_audio_uri_builder_init(&builder, uri, sizeof(uri)); - broadcast_audio_uri_builder_append_string(&builder, "BLUETOOTH:UUID:184F;"); // broadcast_audio_uri_builder_append_broadcast_name(&builder, "Broadcast Name"); broadcast_audio_uri_builder_append_advertiser_address_type(&builder, BD_ADDR_TYPE_LE_PUBLIC); broadcast_audio_uri_builder_append_advertiser_address(&builder, adv_addr); broadcast_audio_uri_builder_append_broadcast_id(&builder, 0x123456); - broadcast_audio_uri_builder_append_broadcast_code(&builder, broadcast_code); + broadcast_audio_uri_builder_append_broadcast_code_as_bytes(&builder, broadcast_code); broadcast_audio_uri_builder_append_standard_quality(&builder, true); broadcast_audio_uri_builder_append_high_quality(&builder, false); - broadcast_audio_uri_builder_append_vendor_specific(&builder, BLUETOOTH_COMPANY_ID_BLUEKITCHEN_GMBH, NULL, 0); + static const char *atext = "data1;data2"; + broadcast_audio_uri_builder_append_vendor_specific(&builder, 0x3456, (uint8_t*)atext, strlen(atext)); // broadcast_audio_uri_builder_append_advertising_sid(&builder, 0x01); broadcast_audio_uri_builder_append_pa_interval(&builder, 0x1000); broadcast_audio_uri_builder_append_num_subgroups(&builder, 1); broadcast_audio_uri_builder_append_bis_sync(&builder, 1); broadcast_audio_uri_builder_append_sg_number_of_bises(&builder, 1); - broadcast_audio_uri_builder_append_sg_metadata(&builder, NULL, 0); + broadcast_audio_uri_builder_sg_metadata_begin(&builder); + broadcast_audio_uri_builder_sg_metadata_end(&builder); broadcast_audio_uri_builder_append_public_broadcast_announcement_metadata(&builder, NULL, 0); // - broadcast_audio_uri_builder_append_string(&builder, ";"); - puts((const char*)uri); -} \ No newline at end of file + broadcast_audio_uri_builder_finalize(&builder); + STRCMP_EQUAL( expected_uri, uri ); +}