summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/app/res/values-fi/strings.xml2
-rw-r--r--android/app/res/values-ne/strings.xml4
-rw-r--r--android/app/src/com/android/bluetooth/Utils.java32
-rw-r--r--android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java13
-rw-r--r--flags/security.aconfig11
-rw-r--r--framework/Android.bp1
-rw-r--r--service/src/com/android/server/bluetooth/BtPermissionUtils.java4
-rw-r--r--system/bta/le_audio/audio_hal_client/audio_hal_client.h8
-rw-r--r--system/bta/le_audio/audio_hal_client/audio_hal_client_test.cc14
-rw-r--r--system/bta/le_audio/audio_hal_client/audio_sink_hal_client.cc6
-rw-r--r--system/bta/le_audio/audio_hal_client/audio_source_hal_client.cc8
-rw-r--r--system/bta/le_audio/broadcaster/broadcaster.cc5
-rw-r--r--system/bta/le_audio/broadcaster/broadcaster_test.cc6
-rw-r--r--system/bta/le_audio/client.cc22
-rw-r--r--system/bta/le_audio/le_audio_client_test.cc10
-rw-r--r--system/bta/le_audio/le_audio_utils.cc19
-rw-r--r--system/bta/le_audio/le_audio_utils.h4
-rw-r--r--system/stack/gatt/att_protocol.cc3
-rw-r--r--system/stack/srvc/srvc_eng.cc4
19 files changed, 103 insertions, 73 deletions
diff --git a/android/app/res/values-fi/strings.xml b/android/app/res/values-fi/strings.xml
index 110df13623..2ce26a0d2a 100644
--- a/android/app/res/values-fi/strings.xml
+++ b/android/app/res/values-fi/strings.xml
@@ -31,7 +31,7 @@
<string name="bt_enable_line1" msgid="8429910585843481489">"Jos haluat käyttää Bluetooth-palveluita, ota Bluetooth käyttöön."</string>
<string name="bt_enable_line2" msgid="1466367120348920892">"Otetaanko Bluetooth käyttöön nyt?"</string>
<string name="bt_enable_cancel" msgid="6770180540581977614">"Peru"</string>
- <string name="bt_enable_ok" msgid="4224374055813566166">"Ota käyttöön"</string>
+ <string name="bt_enable_ok" msgid="4224374055813566166">"Laita päälle"</string>
<string name="incoming_file_confirm_title" msgid="938251186275547290">"Tiedostonsiirto"</string>
<string name="incoming_file_confirm_content" msgid="6573502088511901157">"Hyväksytäänkö saapuva tiedosto?"</string>
<string name="incoming_file_confirm_cancel" msgid="9205906062663982692">"Hylkää"</string>
diff --git a/android/app/res/values-ne/strings.xml b/android/app/res/values-ne/strings.xml
index ab17805530..a0275e75db 100644
--- a/android/app/res/values-ne/strings.xml
+++ b/android/app/res/values-ne/strings.xml
@@ -125,11 +125,11 @@
<string name="bluetooth_map_settings_title" msgid="4226030082708590023">"ब्लुटुथ सन्देश साझेदारी सेटिङहरू"</string>
<string name="bluetooth_map_settings_no_account_slots_left" msgid="755024228476065757">"खाता चयन गर्न सक्दैन। ० स्लटहरू बाँकी"</string>
<string name="bluetooth_connected" msgid="5687474377090799447">"ब्लुटुथ सम्बन्धी अडियो यन्त्रलाई जडान गरियो"</string>
- <string name="bluetooth_disconnected" msgid="6841396291728343534">"ब्लुटुथ सम्बन्धी अडियो यन्त्रलाई विच्छेद गरियो"</string>
+ <string name="bluetooth_disconnected" msgid="6841396291728343534">"ब्लुटुथ सम्बन्धी अडियो यन्त्रलाई डिस्कनेक्ट गरियो"</string>
<string name="a2dp_sink_mbs_label" msgid="6035366346569127155">"ब्लुटुथको अडियो"</string>
<string name="bluetooth_opp_file_limit_exceeded" msgid="6612109860149473930">"४ जि.बि. भन्दा ठूला फाइलहरूलाई स्थानान्तरण गर्न सकिँदैन"</string>
<string name="bluetooth_connect_action" msgid="2319449093046720209">"ब्लुटुथमा कनेक्ट गर्नुहोस्"</string>
- <string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"हवाइजहाज मोडमा ब्लुटुथ अन राखियोस्"</string>
+ <string name="bluetooth_enabled_apm_title" msgid="6914461147844949044">"हवाइजहाज मोडमा ब्लुटुथ अन राख्नुहोस्"</string>
<string name="bluetooth_enabled_apm_message" msgid="6168686193308136881">"तपाईंले ब्लुटुथ अन राखिराख्नुभयो भने तपाईंले आफ्नो डिभाइस अर्को पटक हवाइजहाज मोडमा लैजाँदा तपाईंको डिभाइसले ब्लुटुथ अन राख्नु पर्ने कुरा याद गर्छ"</string>
<string name="bluetooth_stays_on_title" msgid="39720820955212918">"ब्लुटुथ अन रहन्छ"</string>
<string name="bluetooth_stays_on_message" msgid="3669663452593157737">"तपाईंको डिभाइस अर्को पटक हवाइजहाज मोडमा लैजाँदा तपाईंको फोनले ब्लुटुथ अन राख्नु पर्ने कुरा याद गर्छ। तपाईं ब्लुटुथ अन भइनरहोस् भन्ने चाहनुहुन्छ भने ब्लुटुथ अफ गर्नुहोस्।"</string>
diff --git a/android/app/src/com/android/bluetooth/Utils.java b/android/app/src/com/android/bluetooth/Utils.java
index dcaf72ffc9..316fbcb747 100644
--- a/android/app/src/com/android/bluetooth/Utils.java
+++ b/android/app/src/com/android/bluetooth/Utils.java
@@ -617,10 +617,10 @@ public final class Utils {
}
// STOPSHIP(b/188391719): enable this security enforcement
// attributionSource.enforceCallingUid();
- AttributionSource currentAttribution = new AttributionSource
- .Builder(context.getAttributionSource())
- .setNext(attributionSource)
- .build();
+ AttributionSource currentAttribution =
+ new AttributionSource.Builder(context.getAttributionSource())
+ .setNext(Objects.requireNonNull(attributionSource))
+ .build();
PermissionManager pm = context.getSystemService(PermissionManager.class);
if (pm == null) {
return false;
@@ -892,10 +892,10 @@ public final class Utils {
Log.e(TAG, "Permission denial: Location is off.");
return false;
}
- AttributionSource currentAttribution = new AttributionSource
- .Builder(context.getAttributionSource())
- .setNext(attributionSource)
- .build();
+ AttributionSource currentAttribution =
+ new AttributionSource.Builder(context.getAttributionSource())
+ .setNext(Objects.requireNonNull(attributionSource))
+ .build();
// STOPSHIP(b/188391719): enable this security enforcement
// attributionSource.enforceCallingUid();
PermissionManager pm = context.getSystemService(PermissionManager.class);
@@ -926,10 +926,10 @@ public final class Utils {
return false;
}
- final AttributionSource currentAttribution = new AttributionSource
- .Builder(context.getAttributionSource())
- .setNext(attributionSource)
- .build();
+ final AttributionSource currentAttribution =
+ new AttributionSource.Builder(context.getAttributionSource())
+ .setNext(Objects.requireNonNull(attributionSource))
+ .build();
// STOPSHIP(b/188391719): enable this security enforcement
// attributionSource.enforceCallingUid();
PermissionManager pm = context.getSystemService(PermissionManager.class);
@@ -964,10 +964,10 @@ public final class Utils {
return false;
}
- AttributionSource currentAttribution = new AttributionSource
- .Builder(context.getAttributionSource())
- .setNext(attributionSource)
- .build();
+ AttributionSource currentAttribution =
+ new AttributionSource.Builder(context.getAttributionSource())
+ .setNext(Objects.requireNonNull(attributionSource))
+ .build();
// STOPSHIP(b/188391719): enable this security enforcement
// attributionSource.enforceCallingUid();
PermissionManager pm = context.getSystemService(PermissionManager.class);
diff --git a/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java b/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java
index b4d73bc5c1..2b3d17ee13 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/UtilsTest.java
@@ -120,10 +120,12 @@ public class UtilsTest {
boolean enabledStatus = locationManager.isLocationEnabledForUser(userHandle);
locationManager.setLocationEnabledForUser(false, userHandle);
- assertThat(Utils.checkCallerHasCoarseLocation(context, null, userHandle)).isFalse();
+ assertThat(Utils.checkCallerHasCoarseLocation(
+ context, context.getAttributionSource(), userHandle))
+ .isFalse();
locationManager.setLocationEnabledForUser(true, userHandle);
- Utils.checkCallerHasCoarseLocation(context, null, userHandle);
+ Utils.checkCallerHasCoarseLocation(context, context.getAttributionSource(), userHandle);
if (!enabledStatus) {
locationManager.setLocationEnabledForUser(false, userHandle);
}
@@ -137,10 +139,13 @@ public class UtilsTest {
boolean enabledStatus = locationManager.isLocationEnabledForUser(userHandle);
locationManager.setLocationEnabledForUser(false, userHandle);
- assertThat(Utils.checkCallerHasCoarseOrFineLocation(context, null, userHandle)).isFalse();
+ assertThat(Utils.checkCallerHasCoarseOrFineLocation(
+ context, context.getAttributionSource(), userHandle))
+ .isFalse();
locationManager.setLocationEnabledForUser(true, userHandle);
- Utils.checkCallerHasCoarseOrFineLocation(context, null, userHandle);
+ Utils.checkCallerHasCoarseOrFineLocation(
+ context, context.getAttributionSource(), userHandle);
if (!enabledStatus) {
locationManager.setLocationEnabledForUser(false, userHandle);
}
diff --git a/flags/security.aconfig b/flags/security.aconfig
index c90cbe4ca2..f09cd2a201 100644
--- a/flags/security.aconfig
+++ b/flags/security.aconfig
@@ -42,3 +42,14 @@ flag {
description: "Fix the passkey entry bypassing bug in SMP"
bug: "321300737"
}
+
+flag {
+ name: "bta_av_setconfig_rej_type_confusion"
+ namespace: "bluetooth"
+ description: "Use stream control block for bta_av_setconfig_rej instead of a possibly incorrect union type"
+ bug: "341754333"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
diff --git a/framework/Android.bp b/framework/Android.bp
index 5d1ede6731..dcaaf0e733 100644
--- a/framework/Android.bp
+++ b/framework/Android.bp
@@ -67,7 +67,6 @@ java_sdk_library {
impl_library_visibility: [
"//external/sl4a/Common",
- "//frameworks/opt/wear",
"//packages/modules/Bluetooth/android/app/tests/unit",
"//packages/modules/Bluetooth/android/pandora/server",
"//packages/modules/Bluetooth/framework/tests/bumble",
diff --git a/service/src/com/android/server/bluetooth/BtPermissionUtils.java b/service/src/com/android/server/bluetooth/BtPermissionUtils.java
index c68f25b65f..b3ba3b013d 100644
--- a/service/src/com/android/server/bluetooth/BtPermissionUtils.java
+++ b/service/src/com/android/server/bluetooth/BtPermissionUtils.java
@@ -86,7 +86,9 @@ class BtPermissionUtils {
String message) {
final String permission = BLUETOOTH_CONNECT;
AttributionSource currentSource =
- new AttributionSource.Builder(ctx.getAttributionSource()).setNext(source).build();
+ new AttributionSource.Builder(ctx.getAttributionSource())
+ .setNext(Objects.requireNonNull(source))
+ .build();
final int result =
permissionManager.checkPermissionForDataDeliveryFromDataSource(
permission, currentSource, message);
diff --git a/system/bta/le_audio/audio_hal_client/audio_hal_client.h b/system/bta/le_audio/audio_hal_client/audio_hal_client.h
index 9d9ffa5bab..e1462b5442 100644
--- a/system/bta/le_audio/audio_hal_client/audio_hal_client.h
+++ b/system/bta/le_audio/audio_hal_client/audio_hal_client.h
@@ -103,7 +103,8 @@ class LeAudioSinkAudioHalClient {
virtual ~Callbacks() = default;
virtual void OnAudioSuspend(void) = 0;
virtual void OnAudioResume(void) = 0;
- virtual void OnAudioMetadataUpdate(sink_metadata_v7 sink_metadata) = 0;
+ virtual void OnAudioMetadataUpdate(
+ const std::vector<struct record_track_metadata_v7> sink_metadata) = 0;
base::WeakPtrFactory<Callbacks> weak_factory_{this};
};
@@ -143,8 +144,9 @@ class LeAudioSourceAudioHalClient {
virtual void OnAudioDataReady(const std::vector<uint8_t>& data) = 0;
virtual void OnAudioSuspend(void) = 0;
virtual void OnAudioResume(void) = 0;
- virtual void OnAudioMetadataUpdate(source_metadata_v7 source_metadata,
- DsaMode dsa_mode) = 0;
+ virtual void OnAudioMetadataUpdate(
+ const std::vector<struct playback_track_metadata_v7> source_metadata,
+ DsaMode dsa_mode) = 0;
base::WeakPtrFactory<Callbacks> weak_factory_{this};
};
diff --git a/system/bta/le_audio/audio_hal_client/audio_hal_client_test.cc b/system/bta/le_audio/audio_hal_client/audio_hal_client_test.cc
index 134e1c1c54..a66b629d65 100644
--- a/system/bta/le_audio/audio_hal_client/audio_hal_client_test.cc
+++ b/system/bta/le_audio/audio_hal_client/audio_hal_client_test.cc
@@ -223,9 +223,11 @@ class MockLeAudioClientAudioSinkEventReceiver
(override));
MOCK_METHOD((void), OnAudioSuspend, (), (override));
MOCK_METHOD((void), OnAudioResume, (), (override));
- MOCK_METHOD((void), OnAudioMetadataUpdate,
- (source_metadata_v7 source_metadata, DsaMode dsa_mode),
- (override));
+ MOCK_METHOD(
+ (void), OnAudioMetadataUpdate,
+ (const std::vector<struct playback_track_metadata_v7> source_metadata,
+ DsaMode dsa_mode),
+ (override));
};
class MockAudioHalClientEventReceiver
@@ -233,8 +235,10 @@ class MockAudioHalClientEventReceiver
public:
MOCK_METHOD((void), OnAudioSuspend, (), (override));
MOCK_METHOD((void), OnAudioResume, (), (override));
- MOCK_METHOD((void), OnAudioMetadataUpdate, (sink_metadata_v7 sink_metadata),
- (override));
+ MOCK_METHOD(
+ (void), OnAudioMetadataUpdate,
+ (const std::vector<struct record_track_metadata_v7> sink_metadata),
+ (override));
};
class LeAudioClientAudioTest : public ::testing::Test {
diff --git a/system/bta/le_audio/audio_hal_client/audio_sink_hal_client.cc b/system/bta/le_audio/audio_hal_client/audio_sink_hal_client.cc
index 4a81a223d3..b69cc0d86a 100644
--- a/system/bta/le_audio/audio_hal_client/audio_sink_hal_client.cc
+++ b/system/bta/le_audio/audio_hal_client/audio_sink_hal_client.cc
@@ -167,11 +167,15 @@ bool SinkImpl::OnMetadataUpdateReq(const sink_metadata_v7_t& sink_metadata) {
return false;
}
+ std::vector<struct record_track_metadata_v7> metadata(
+ sink_metadata.tracks, sink_metadata.tracks + sink_metadata.track_count);
+
bt_status_t status = do_in_main_thread(
FROM_HERE,
base::BindOnce(
&LeAudioSinkAudioHalClient::Callbacks::OnAudioMetadataUpdate,
- audioSinkCallbacks_->weak_factory_.GetWeakPtr(), sink_metadata));
+ audioSinkCallbacks_->weak_factory_.GetWeakPtr(),
+ std::move(metadata)));
if (status == BT_STATUS_SUCCESS) {
return true;
}
diff --git a/system/bta/le_audio/audio_hal_client/audio_source_hal_client.cc b/system/bta/le_audio/audio_hal_client/audio_source_hal_client.cc
index 6470edb6dd..68c93116b1 100644
--- a/system/bta/le_audio/audio_hal_client/audio_source_hal_client.cc
+++ b/system/bta/le_audio/audio_hal_client/audio_source_hal_client.cc
@@ -310,12 +310,16 @@ bool SourceImpl::OnMetadataUpdateReq(
return false;
}
+ std::vector<struct playback_track_metadata_v7> metadata(
+ source_metadata.tracks,
+ source_metadata.tracks + source_metadata.track_count);
+
bt_status_t status = do_in_main_thread(
FROM_HERE,
base::BindOnce(
&LeAudioSourceAudioHalClient::Callbacks::OnAudioMetadataUpdate,
- audioSourceCallbacks_->weak_factory_.GetWeakPtr(), source_metadata,
- dsa_mode));
+ audioSourceCallbacks_->weak_factory_.GetWeakPtr(),
+ std::move(metadata), dsa_mode));
if (status == BT_STATUS_SUCCESS) {
return true;
}
diff --git a/system/bta/le_audio/broadcaster/broadcaster.cc b/system/bta/le_audio/broadcaster/broadcaster.cc
index c6c17c4b4c..f3b08388ee 100644
--- a/system/bta/le_audio/broadcaster/broadcaster.cc
+++ b/system/bta/le_audio/broadcaster/broadcaster.cc
@@ -1249,8 +1249,9 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks {
instance->le_audio_source_hal_client_->ConfirmStreamingRequest();
}
- virtual void OnAudioMetadataUpdate(source_metadata_v7 source_metadata,
- DsaMode dsa_mode) override {
+ virtual void OnAudioMetadataUpdate(
+ const std::vector<struct playback_track_metadata_v7> source_metadata,
+ DsaMode dsa_mode) override {
log::info("");
if (!instance) return;
diff --git a/system/bta/le_audio/broadcaster/broadcaster_test.cc b/system/bta/le_audio/broadcaster/broadcaster_test.cc
index b5962aecdf..8630ed0b16 100644
--- a/system/bta/le_audio/broadcaster/broadcaster_test.cc
+++ b/system/bta/le_audio/broadcaster/broadcaster_test.cc
@@ -828,10 +828,8 @@ TEST_F(BroadcasterTest, UpdateMetadataFromAudioTrackMetadata) {
tracks_vec.push_back(desc_track);
}
- const source_metadata_v7_t source_metadata = {
- .track_count = tracks_vec.size(), .tracks = tracks_vec.data()};
-
- audio_receiver->OnAudioMetadataUpdate(source_metadata, DsaMode::DISABLED);
+ audio_receiver->OnAudioMetadataUpdate(std::move(tracks_vec),
+ DsaMode::DISABLED);
// Verify ccid
ASSERT_NE(ccid_list.size(), 0u);
diff --git a/system/bta/le_audio/client.cc b/system/bta/le_audio/client.cc
index 5792ba3228..918bcad423 100644
--- a/system/bta/le_audio/client.cc
+++ b/system/bta/le_audio/client.cc
@@ -4665,8 +4665,9 @@ class LeAudioClientImpl : public LeAudioClient {
return true;
}
- void OnLocalAudioSourceMetadataUpdate(source_metadata_v7 source_metadata,
- DsaMode dsa_mode) {
+ void OnLocalAudioSourceMetadataUpdate(
+ const std::vector<struct playback_track_metadata_v7>& source_metadata,
+ DsaMode dsa_mode) {
if (active_group_id_ == bluetooth::groups::kGroupUnknown) {
log::warn(", cannot start streaming if no active group set");
return;
@@ -4818,7 +4819,8 @@ class LeAudioClientImpl : public LeAudioClient {
ToString(contexts_pair.sink), ToString(contexts_pair.source));
}
- void OnLocalAudioSinkMetadataUpdate(sink_metadata_v7 sink_metadata) {
+ void OnLocalAudioSinkMetadataUpdate(
+ const std::vector<record_track_metadata_v7>& sink_metadata) {
if (active_group_id_ == bluetooth::groups::kGroupUnknown) {
log::warn(", cannot start streaming if no active group set");
return;
@@ -6184,11 +6186,11 @@ class SourceCallbacksImpl : public LeAudioSourceAudioHalClient::Callbacks {
if (instance) instance->OnLocalAudioSourceResume();
}
- void OnAudioMetadataUpdate(source_metadata_v7 source_metadata,
- DsaMode dsa_mode) override {
+ void OnAudioMetadataUpdate(
+ std::vector<struct playback_track_metadata_v7> source_metadata,
+ DsaMode dsa_mode) override {
if (instance)
- instance->OnLocalAudioSourceMetadataUpdate(std::move(source_metadata),
- dsa_mode);
+ instance->OnLocalAudioSourceMetadataUpdate(source_metadata, dsa_mode);
}
};
@@ -6201,9 +6203,9 @@ class SinkCallbacksImpl : public LeAudioSinkAudioHalClient::Callbacks {
if (instance) instance->OnLocalAudioSinkResume();
}
- void OnAudioMetadataUpdate(sink_metadata_v7 sink_metadata) override {
- if (instance)
- instance->OnLocalAudioSinkMetadataUpdate(std::move(sink_metadata));
+ void OnAudioMetadataUpdate(
+ std::vector<record_track_metadata_v7> sink_metadata) override {
+ if (instance) instance->OnLocalAudioSinkMetadataUpdate(sink_metadata);
}
};
diff --git a/system/bta/le_audio/le_audio_client_test.cc b/system/bta/le_audio/le_audio_client_test.cc
index 69f3d069e9..0261e4cc31 100644
--- a/system/bta/le_audio/le_audio_client_test.cc
+++ b/system/bta/le_audio/le_audio_client_test.cc
@@ -1982,9 +1982,6 @@ class UnicastTestNoInit : public Test {
tracks_vec.push_back(desc_track);
}
- const source_metadata_v7_t source_metadata = {
- .track_count = tracks_vec.size(), .tracks = tracks_vec.data()};
-
ASSERT_NE(nullptr, mock_le_audio_source_hal_client_);
/* Local Source may reconfigure once the metadata is updated */
if (reconfigure_existing_stream) {
@@ -2005,7 +2002,7 @@ class UnicastTestNoInit : public Test {
}
ASSERT_NE(unicast_source_hal_cb_, nullptr);
- unicast_source_hal_cb_->OnAudioMetadataUpdate(source_metadata,
+ unicast_source_hal_cb_->OnAudioMetadataUpdate(std::move(tracks_vec),
DsaMode::DISABLED);
}
@@ -2046,11 +2043,8 @@ class UnicastTestNoInit : public Test {
tracks_vec.push_back(desc_track);
}
- const sink_metadata_v7_t sink_metadata = {.track_count = tracks_vec.size(),
- .tracks = tracks_vec.data()};
-
ASSERT_NE(nullptr, unicast_sink_hal_cb_);
- unicast_sink_hal_cb_->OnAudioMetadataUpdate(sink_metadata);
+ unicast_sink_hal_cb_->OnAudioMetadataUpdate(std::move(tracks_vec));
}
void LocalAudioSourceSuspend(void) {
diff --git a/system/bta/le_audio/le_audio_utils.cc b/system/bta/le_audio/le_audio_utils.cc
index 7f9f40004a..2e30615ade 100644
--- a/system/bta/le_audio/le_audio_utils.cc
+++ b/system/bta/le_audio/le_audio_utils.cc
@@ -181,19 +181,18 @@ static bool isMetadataTagPresent(const char* tags, const char* tag) {
}
AudioContexts GetAudioContextsFromSourceMetadata(
- const source_metadata_v7& source_metadata) {
+ const std::vector<struct playback_track_metadata_v7>& source_metadata) {
AudioContexts track_contexts;
- for (size_t i = 0; i < source_metadata.track_count; i++) {
- auto track = source_metadata.tracks[i].base;
+ for (const auto& entry : source_metadata) {
+ auto track = entry.base;
if (track.content_type == 0 && track.usage == 0) continue;
log::info("usage={}({}), content_type={}({}), gain={:f}, tag:{}",
usageToString(track.usage), track.usage,
- contentTypeToString(track.content_type), track.content_type,
- track.gain, source_metadata.tracks[i].tags);
+ contentTypeToString(track.content_type),
+ track.content_type, track.gain, entry.tags);
- if (isMetadataTagPresent(source_metadata.tracks[i].tags,
- "VX_AOSP_SAMPLESOUND")) {
+ if (isMetadataTagPresent(entry.tags, "VX_AOSP_SAMPLESOUND")) {
track_contexts.set(LeAudioContextType::SOUNDEFFECTS);
} else {
track_contexts.set(
@@ -204,11 +203,11 @@ AudioContexts GetAudioContextsFromSourceMetadata(
}
AudioContexts GetAudioContextsFromSinkMetadata(
- const sink_metadata_v7& sink_metadata) {
+ const std::vector<struct record_track_metadata_v7>& sink_metadata) {
AudioContexts all_track_contexts;
- for (size_t i = 0; i < sink_metadata.track_count; i++) {
- auto track = sink_metadata.tracks[i].base;
+ for (const auto& entry : sink_metadata) {
+ auto track = entry.base;
if (track.source == AUDIO_SOURCE_INVALID) continue;
LeAudioContextType track_context;
diff --git a/system/bta/le_audio/le_audio_utils.h b/system/bta/le_audio/le_audio_utils.h
index 6e6c2ee521..cfd3dcc9be 100644
--- a/system/bta/le_audio/le_audio_utils.h
+++ b/system/bta/le_audio/le_audio_utils.h
@@ -35,9 +35,9 @@ namespace utils {
types::LeAudioContextType AudioContentToLeAudioContext(
audio_content_type_t content_type, audio_usage_t usage);
types::AudioContexts GetAudioContextsFromSourceMetadata(
- const source_metadata_v7& source_metadata);
+ const std::vector<struct playback_track_metadata_v7>& source_metadata);
types::AudioContexts GetAudioContextsFromSinkMetadata(
- const sink_metadata_v7& sink_metadata);
+ const std::vector<struct record_track_metadata_v7>& sink_metadata);
/* Helpers to get btle_audio_codec_config_t for Java */
bluetooth::le_audio::btle_audio_codec_index_t
diff --git a/system/stack/gatt/att_protocol.cc b/system/stack/gatt/att_protocol.cc
index 82f92593c3..719dce54ad 100644
--- a/system/stack/gatt/att_protocol.cc
+++ b/system/stack/gatt/att_protocol.cc
@@ -206,7 +206,8 @@ static BT_HDR* attp_build_read_by_type_value_cmd(
static BT_HDR* attp_build_read_multi_cmd(uint8_t op_code, uint16_t payload_size,
uint16_t num_handle,
uint16_t* p_handle) {
- uint8_t *p, i = 0;
+ uint8_t* p;
+ uint16_t i = 0;
BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR) + num_handle * 2 + 1 +
L2CAP_MIN_OFFSET);
diff --git a/system/stack/srvc/srvc_eng.cc b/system/stack/srvc/srvc_eng.cc
index 6b64d1a741..dbf30ff8b1 100644
--- a/system/stack/srvc/srvc_eng.cc
+++ b/system/stack/srvc/srvc_eng.cc
@@ -237,6 +237,10 @@ static void srvc_eng_s_request_cback(uint16_t conn_id, uint32_t trans_id,
tGATTS_RSP rsp_msg;
uint8_t act = SRVC_ACT_IGNORE;
uint8_t clcb_idx = srvc_eng_find_clcb_idx_by_conn_id(conn_id);
+ if (clcb_idx == SRVC_MAX_APPS) {
+ log::error("Can't find clcb, id:{}", conn_id);
+ return;
+ }
log::verbose("srvc_eng_s_request_cback : recv type (0x{:02x})", type);