Loading OWNERS +5 −5 Original line number Diff line number Diff line # Project owners girardier@google.com muhammadfalam@google.com sattiraju@google.com siyuanh@google.com sungsoo@google.com girardier@google.com #{LAST_RESORT_SUGGESTION} muhammadfalam@google.com #{LAST_RESORT_SUGGESTION} sattiraju@google.com #{LAST_RESORT_SUGGESTION} siyuanh@google.com #{LAST_RESORT_SUGGESTION} sungsoo@google.com #{LAST_RESORT_SUGGESTION} # Per-file ownership Loading PREUPLOAD.cfg +5 −0 Original line number Diff line number Diff line Loading @@ -5,11 +5,13 @@ ignore_merged_commits = true clang_format = true rustfmt = true bpfmt = true ktfmt = true [Builtin Hooks Options] rustfmt = --config-path=rustfmt.toml # Only turn on clang-format check for C and C++ headers and sources clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp,hpp ktfmt = --kotlinlang-style [Hook Scripts] checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT} Loading @@ -20,3 +22,6 @@ checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPL service/ aosp_first = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} ${PREUPLOAD_FILES} yapf_hook = ./system/tools/scripts/yapf_checker.py [Tool Paths] ktfmt = ${REPO_ROOT}/packages/modules/Bluetooth/tools/ktfmt android/app/Android.bp +10 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,7 @@ android_app { srcs: [ ":statslog-bluetooth-java-gen", ":statslog-bt-restricted-java-gen", "src/**/*.java", ], aaptflags: [ Loading Loading @@ -262,6 +263,15 @@ genrule { out: ["com/android/bluetooth/BluetoothStatsLog.java"], } genrule { name: "statslog-bt-restricted-java-gen", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen) --java $(out) --module bt_restricted" + " --javaPackage com.android.bluetooth --javaClass BtRestrictedStatsLog" + " --minApiLevel 34", out: ["com/android/bluetooth/BtRestrictedStatsLog.java"], } android_app_certificate { name: "com.android.bluetooth.certificate", certificate: "certs/com.android.bluetooth", Loading android/app/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ <intent-filter> <action android:name="android.media.browse.MediaBrowserService"/> </intent-filter> <meta-data android:name="androidx.car.app.launchable" android:value="true" /> </service> <provider android:process="@string/process" android:name="com.android.bluetooth.avrcpcontroller.AvrcpCoverArtProvider" Loading android/app/jni/com_android_bluetooth_gatt.cpp +28 −10 Original line number Diff line number Diff line Loading @@ -1786,6 +1786,8 @@ static void gattClientScanFilterAddNative(JNIEnv* env, jobject object, jfieldID orgFid = env->GetFieldID(entryClazz, "org_id", "I"); jfieldID TDSFlagsFid = env->GetFieldID(entryClazz, "tds_flags", "I"); jfieldID TDSFlagsMaskFid = env->GetFieldID(entryClazz, "tds_flags_mask", "I"); jfieldID metaDataTypeFid = env->GetFieldID(entryClazz, "meta_data_type", "I"); jfieldID metaDataFid = env->GetFieldID(entryClazz, "meta_data", "[B"); for (int i = 0; i < numFilters; ++i) { ApcfCommand curr{}; Loading Loading @@ -1881,6 +1883,19 @@ static void gattClientScanFilterAddNative(JNIEnv* env, jobject object, curr.org_id = env->GetIntField(current.get(), orgFid); curr.tds_flags = env->GetIntField(current.get(), TDSFlagsFid); curr.tds_flags_mask = env->GetIntField(current.get(), TDSFlagsMaskFid); curr.meta_data_type = env->GetIntField(current.get(), metaDataTypeFid); ScopedLocalRef<jbyteArray> meta_data( env, (jbyteArray)env->GetObjectField(current.get(), metaDataFid)); if (meta_data.get() != NULL) { jbyte* data_array = env->GetByteArrayElements(meta_data.get(), 0); int data_len = env->GetArrayLength(meta_data.get()); if (data_array && data_len) { curr.meta_data = std::vector<uint8_t>(data_array, data_array + data_len); env->ReleaseByteArrayElements(meta_data.get(), data_array, JNI_ABORT); } } native_filters.push_back(curr); } Loading Loading @@ -2329,11 +2344,19 @@ static PeriodicAdvertisingParameters parsePeriodicParams(JNIEnv* env, return p; } static void ble_advertising_set_started_cb(int reg_id, uint8_t advertiser_id, static void ble_advertising_set_started_cb(int reg_id, int server_if, uint8_t advertiser_id, int8_t tx_power, uint8_t status) { std::shared_lock<std::shared_mutex> lock(callbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid() || !mAdvertiseCallbacksObj) return; // tie advertiser ID to server_if, once the advertisement has started if (status == 0 /* AdvertisingCallback::AdvertisingStatus::SUCCESS */ && server_if != 0) { bluetooth::gatt::associate_server_with_advertiser(server_if, advertiser_id); } sCallbackEnv->CallVoidMethod(mAdvertiseCallbacksObj, method_onAdvertisingSetStarted, reg_id, advertiser_id, tx_power, status); Loading Loading @@ -2376,15 +2399,10 @@ static void startAdvertisingSetNative( periodic_data_data, periodic_data_data + periodic_data_len); env->ReleaseByteArrayElements(periodic_data, periodic_data_data, JNI_ABORT); auto advertiser_id = sGattIf->advertiser->StartAdvertisingSet( reg_id, base::Bind(&ble_advertising_set_started_cb, reg_id), params, data_vec, scan_resp_vec, periodicParams, periodic_data_vec, duration, maxExtAdvEvents, base::Bind(ble_advertising_set_timeout_cb)); // tie advertiser ID to server_if if (server_if != 0) { bluetooth::gatt::associate_server_with_advertiser(server_if, advertiser_id); } sGattIf->advertiser->StartAdvertisingSet( reg_id, base::Bind(&ble_advertising_set_started_cb, reg_id, server_if), params, data_vec, scan_resp_vec, periodicParams, periodic_data_vec, duration, maxExtAdvEvents, base::Bind(ble_advertising_set_timeout_cb)); } static void stopAdvertisingSetNative(JNIEnv* env, jobject object, Loading Loading
OWNERS +5 −5 Original line number Diff line number Diff line # Project owners girardier@google.com muhammadfalam@google.com sattiraju@google.com siyuanh@google.com sungsoo@google.com girardier@google.com #{LAST_RESORT_SUGGESTION} muhammadfalam@google.com #{LAST_RESORT_SUGGESTION} sattiraju@google.com #{LAST_RESORT_SUGGESTION} siyuanh@google.com #{LAST_RESORT_SUGGESTION} sungsoo@google.com #{LAST_RESORT_SUGGESTION} # Per-file ownership Loading
PREUPLOAD.cfg +5 −0 Original line number Diff line number Diff line Loading @@ -5,11 +5,13 @@ ignore_merged_commits = true clang_format = true rustfmt = true bpfmt = true ktfmt = true [Builtin Hooks Options] rustfmt = --config-path=rustfmt.toml # Only turn on clang-format check for C and C++ headers and sources clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp,hpp ktfmt = --kotlinlang-style [Hook Scripts] checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT} Loading @@ -20,3 +22,6 @@ checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPL service/ aosp_first = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} ${PREUPLOAD_FILES} yapf_hook = ./system/tools/scripts/yapf_checker.py [Tool Paths] ktfmt = ${REPO_ROOT}/packages/modules/Bluetooth/tools/ktfmt
android/app/Android.bp +10 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,7 @@ android_app { srcs: [ ":statslog-bluetooth-java-gen", ":statslog-bt-restricted-java-gen", "src/**/*.java", ], aaptflags: [ Loading Loading @@ -262,6 +263,15 @@ genrule { out: ["com/android/bluetooth/BluetoothStatsLog.java"], } genrule { name: "statslog-bt-restricted-java-gen", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen) --java $(out) --module bt_restricted" + " --javaPackage com.android.bluetooth --javaClass BtRestrictedStatsLog" + " --minApiLevel 34", out: ["com/android/bluetooth/BtRestrictedStatsLog.java"], } android_app_certificate { name: "com.android.bluetooth.certificate", certificate: "certs/com.android.bluetooth", Loading
android/app/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ <intent-filter> <action android:name="android.media.browse.MediaBrowserService"/> </intent-filter> <meta-data android:name="androidx.car.app.launchable" android:value="true" /> </service> <provider android:process="@string/process" android:name="com.android.bluetooth.avrcpcontroller.AvrcpCoverArtProvider" Loading
android/app/jni/com_android_bluetooth_gatt.cpp +28 −10 Original line number Diff line number Diff line Loading @@ -1786,6 +1786,8 @@ static void gattClientScanFilterAddNative(JNIEnv* env, jobject object, jfieldID orgFid = env->GetFieldID(entryClazz, "org_id", "I"); jfieldID TDSFlagsFid = env->GetFieldID(entryClazz, "tds_flags", "I"); jfieldID TDSFlagsMaskFid = env->GetFieldID(entryClazz, "tds_flags_mask", "I"); jfieldID metaDataTypeFid = env->GetFieldID(entryClazz, "meta_data_type", "I"); jfieldID metaDataFid = env->GetFieldID(entryClazz, "meta_data", "[B"); for (int i = 0; i < numFilters; ++i) { ApcfCommand curr{}; Loading Loading @@ -1881,6 +1883,19 @@ static void gattClientScanFilterAddNative(JNIEnv* env, jobject object, curr.org_id = env->GetIntField(current.get(), orgFid); curr.tds_flags = env->GetIntField(current.get(), TDSFlagsFid); curr.tds_flags_mask = env->GetIntField(current.get(), TDSFlagsMaskFid); curr.meta_data_type = env->GetIntField(current.get(), metaDataTypeFid); ScopedLocalRef<jbyteArray> meta_data( env, (jbyteArray)env->GetObjectField(current.get(), metaDataFid)); if (meta_data.get() != NULL) { jbyte* data_array = env->GetByteArrayElements(meta_data.get(), 0); int data_len = env->GetArrayLength(meta_data.get()); if (data_array && data_len) { curr.meta_data = std::vector<uint8_t>(data_array, data_array + data_len); env->ReleaseByteArrayElements(meta_data.get(), data_array, JNI_ABORT); } } native_filters.push_back(curr); } Loading Loading @@ -2329,11 +2344,19 @@ static PeriodicAdvertisingParameters parsePeriodicParams(JNIEnv* env, return p; } static void ble_advertising_set_started_cb(int reg_id, uint8_t advertiser_id, static void ble_advertising_set_started_cb(int reg_id, int server_if, uint8_t advertiser_id, int8_t tx_power, uint8_t status) { std::shared_lock<std::shared_mutex> lock(callbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid() || !mAdvertiseCallbacksObj) return; // tie advertiser ID to server_if, once the advertisement has started if (status == 0 /* AdvertisingCallback::AdvertisingStatus::SUCCESS */ && server_if != 0) { bluetooth::gatt::associate_server_with_advertiser(server_if, advertiser_id); } sCallbackEnv->CallVoidMethod(mAdvertiseCallbacksObj, method_onAdvertisingSetStarted, reg_id, advertiser_id, tx_power, status); Loading Loading @@ -2376,15 +2399,10 @@ static void startAdvertisingSetNative( periodic_data_data, periodic_data_data + periodic_data_len); env->ReleaseByteArrayElements(periodic_data, periodic_data_data, JNI_ABORT); auto advertiser_id = sGattIf->advertiser->StartAdvertisingSet( reg_id, base::Bind(&ble_advertising_set_started_cb, reg_id), params, data_vec, scan_resp_vec, periodicParams, periodic_data_vec, duration, maxExtAdvEvents, base::Bind(ble_advertising_set_timeout_cb)); // tie advertiser ID to server_if if (server_if != 0) { bluetooth::gatt::associate_server_with_advertiser(server_if, advertiser_id); } sGattIf->advertiser->StartAdvertisingSet( reg_id, base::Bind(&ble_advertising_set_started_cb, reg_id, server_if), params, data_vec, scan_resp_vec, periodicParams, periodic_data_vec, duration, maxExtAdvEvents, base::Bind(ble_advertising_set_timeout_cb)); } static void stopAdvertisingSetNative(JNIEnv* env, jobject object, Loading