From 1041da4bfc8baf5b6f0f34ce43ed36b8f5efcbc3 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Mon, 13 Nov 2023 15:27:53 +0100 Subject: [PATCH] a2dp: support SDP record without service name and/or provider --- src/classic/a2dp.c | 12 ++++++++---- src/classic/a2dp_sink.h | 4 ++-- src/classic/a2dp_source.h | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/classic/a2dp.c b/src/classic/a2dp.c index aed794546..1811a2f8c 100644 --- a/src/classic/a2dp.c +++ b/src/classic/a2dp.c @@ -145,12 +145,16 @@ void a2dp_create_sdp_record(uint8_t * service, uint32_t service_record_handle, // 0x0100 "Service Name" - de_add_number(service, DE_UINT, DE_SIZE_16, 0x0100); - de_add_data(service, DE_STRING, (uint16_t) strlen(service_name), (uint8_t *) service_name); + if (strlen(service_name) > 0){ + de_add_number(service, DE_UINT, DE_SIZE_16, 0x0100); + de_add_data(service, DE_STRING, (uint16_t) strlen(service_name), (uint8_t *) service_name); + } // 0x0100 "Provider Name" - de_add_number(service, DE_UINT, DE_SIZE_16, 0x0102); - de_add_data(service, DE_STRING, (uint16_t)strlen(service_provider_name), (uint8_t *) service_provider_name); + if (strlen(service_provider_name) > 0) { + de_add_number(service, DE_UINT, DE_SIZE_16, 0x0102); + de_add_data(service, DE_STRING, (uint16_t) strlen(service_provider_name), (uint8_t *) service_provider_name); + } // 0x0311 "Supported Features" de_add_number(service, DE_UINT, DE_SIZE_16, 0x0311); diff --git a/src/classic/a2dp_sink.h b/src/classic/a2dp_sink.h index 28bb02509..647b9a524 100644 --- a/src/classic/a2dp_sink.h +++ b/src/classic/a2dp_sink.h @@ -59,8 +59,8 @@ extern "C" { * @param service * @param service_record_handle * @param supported_features 16-bit bitmap, see AVDTP_SINK_SF_* values in avdtp.h - * @param service_name - * @param service_provider_name + * @param service_name or NULL for default value. Provide "" (empty string) to skip attribute + * @param service_provider_name or NULL for default value. Provide "" (empty string) to skip attribute */ void a2dp_sink_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint16_t supported_features, const char * service_name, const char * service_provider_name); diff --git a/src/classic/a2dp_source.h b/src/classic/a2dp_source.h index 35ecba29a..48a023315 100644 --- a/src/classic/a2dp_source.h +++ b/src/classic/a2dp_source.h @@ -59,8 +59,8 @@ extern "C" { * @param service * @param service_record_handle * @param supported_features 16-bit bitmap, see AVDTP_SOURCE_SF_* values in avdtp.h - * @param service_name - * @param service_provider_name + * @param service_name or NULL for default value. Provide "" (empty string) to skip attribute + * @param service_provider_name or NULL for default value. Provide "" (empty string) to skip attribute */ void a2dp_source_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint16_t supported_features, const char * service_name, const char * service_provider_name);