Loading android/app/src/com/android/bluetooth/btservice/AdapterService.java +1 −1 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ import com.android.bluetooth.btservice.storage.MetadataDatabase; import com.android.bluetooth.csip.CsipSetCoordinatorService; import com.android.bluetooth.flags.FeatureFlagsImpl; import com.android.bluetooth.gatt.GattService; import com.android.bluetooth.gatt.ScanManager; import com.android.bluetooth.le_scan.ScanManager; import com.android.bluetooth.hap.HapClientService; import com.android.bluetooth.hearingaid.HearingAidService; import com.android.bluetooth.hfp.HeadsetService; Loading android/app/src/com/android/bluetooth/gatt/AppScanStats.java +26 −25 Original line number Diff line number Diff line Loading @@ -45,18 +45,18 @@ import java.util.Objects; * on a per application basis. * @hide */ /*package*/ class AppScanStats { public class AppScanStats { private static final String TAG = AppScanStats.class.getSimpleName(); static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss"); // Weight is the duty cycle of the scan mode static final int OPPORTUNISTIC_WEIGHT = 0; static final int SCREEN_OFF_LOW_POWER_WEIGHT = 5; static final int LOW_POWER_WEIGHT = 10; static final int AMBIENT_DISCOVERY_WEIGHT = 25; static final int BALANCED_WEIGHT = 25; static final int LOW_LATENCY_WEIGHT = 100; public static final int SCREEN_OFF_LOW_POWER_WEIGHT = 5; public static final int LOW_POWER_WEIGHT = 10; public static final int AMBIENT_DISCOVERY_WEIGHT = 25; public static final int BALANCED_WEIGHT = 25; public static final int LOW_LATENCY_WEIGHT = 100; static final int LARGE_SCAN_TIME_GAP_MS = 24000; Loading Loading @@ -146,7 +146,7 @@ import java.util.Objects; public long stopTime = 0; public int results = 0; AppScanStats(String name, WorkSource source, ContextMap map, GattService service) { public AppScanStats(String name, WorkSource source, ContextMap map, GattService service) { appName = name; mContextMap = map; mGattService = service; Loading Loading @@ -186,7 +186,7 @@ import java.util.Objects; return mOngoingScans.get(scannerId); } synchronized boolean isScanTimeout(int scannerId) { public synchronized boolean isScanTimeout(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null) { return false; Loading @@ -194,7 +194,7 @@ import java.util.Objects; return scan.isTimeout; } synchronized boolean isScanDowngraded(int scannerId) { public synchronized boolean isScanDowngraded(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null) { return false; Loading @@ -202,7 +202,7 @@ import java.util.Objects; return scan.isDowngraded; } synchronized boolean isAutoBatchScan(int scannerId) { public synchronized boolean isAutoBatchScan(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null) { return false; Loading @@ -210,7 +210,7 @@ import java.util.Objects; return scan.isAutoBatchScan; } synchronized void recordScanStart(ScanSettings settings, List<ScanFilter> filters, public synchronized void recordScanStart(ScanSettings settings, List<ScanFilter> filters, boolean isFilterScan, boolean isCallbackScan, int scannerId) { LastScan existingScan = getScanFromScannerId(scannerId); if (existingScan != null) { Loading Loading @@ -374,29 +374,30 @@ import java.util.Objects; } } synchronized void recordScanTimeoutCountMetrics() { public synchronized void recordScanTimeoutCountMetrics() { MetricsLogger.getInstance() .cacheCount(BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_SCAN_TIMEOUT, 1); } synchronized void recordHwFilterNotAvailableCountMetrics() { public synchronized void recordHwFilterNotAvailableCountMetrics() { MetricsLogger.getInstance() .cacheCount(BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_HW_FILTER_NOT_AVAILABLE, 1); } synchronized void recordTrackingHwFilterNotAvailableCountMetrics() { public synchronized void recordTrackingHwFilterNotAvailableCountMetrics() { MetricsLogger.getInstance() .cacheCount( BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_TRACKING_HW_FILTER_NOT_AVAILABLE, 1); } static void initScanRadioState() { public static void initScanRadioState() { synchronized (sLock) { sIsRadioStarted = false; } } static boolean recordScanRadioStart(int scanMode) { public static boolean recordScanRadioStart(int scanMode) { synchronized (sLock) { if (sIsRadioStarted) { return false; Loading @@ -408,7 +409,7 @@ import java.util.Objects; return true; } static boolean recordScanRadioStop() { public static boolean recordScanRadioStop() { synchronized (sLock) { if (!sIsRadioStarted) { return false; Loading Loading @@ -507,7 +508,7 @@ import java.util.Objects; } } static void setScreenState(boolean isScreenOn) { public static void setScreenState(boolean isScreenOn) { synchronized (sLock) { if (sIsScreenOn == isScreenOn) { return; Loading @@ -521,7 +522,7 @@ import java.util.Objects; } } synchronized void recordScanSuspend(int scannerId) { public synchronized void recordScanSuspend(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null || scan.isSuspended) { return; Loading @@ -530,7 +531,7 @@ import java.util.Objects; scan.isSuspended = true; } synchronized void recordScanResume(int scannerId) { public synchronized void recordScanResume(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); long suspendDuration = 0; if (scan == null || !scan.isSuspended) { Loading @@ -543,7 +544,7 @@ import java.util.Objects; mTotalSuspendTime += suspendDuration; } synchronized void setScanTimeout(int scannerId) { public synchronized void setScanTimeout(int scannerId) { if (!isScanning()) { return; } Loading @@ -554,7 +555,7 @@ import java.util.Objects; } } synchronized void setScanDowngrade(int scannerId, boolean isDowngrade) { public synchronized void setScanDowngrade(int scannerId, boolean isDowngrade) { if (!isScanning()) { return; } Loading @@ -565,7 +566,7 @@ import java.util.Objects; } } synchronized void setAutoBatchScan(int scannerId, boolean isBatchScan) { public synchronized void setAutoBatchScan(int scannerId, boolean isBatchScan) { LastScan scan = getScanFromScannerId(scannerId); if (scan != null) { scan.isAutoBatchScan = isBatchScan; Loading @@ -581,7 +582,7 @@ import java.util.Objects; < mAdapterService.getScanQuotaWindowMillis(); } synchronized boolean isScanningTooLong() { public synchronized boolean isScanningTooLong() { if (!isScanning()) { return false; } Loading @@ -589,7 +590,7 @@ import java.util.Objects; >= mAdapterService.getScanTimeoutMillis(); } synchronized boolean hasRecentScan() { public synchronized boolean hasRecentScan() { if (!isScanning() || mLastScans.isEmpty()) { return false; } Loading android/app/src/com/android/bluetooth/gatt/ContextMap.java +1 −1 Original line number Diff line number Diff line Loading @@ -448,7 +448,7 @@ public class ContextMap<C, T> { /** * Get Logging info by application UID */ AppScanStats getAppScanStatsByUid(int uid) { public AppScanStats getAppScanStatsByUid(int uid) { return mAppScanStats.get(uid); } Loading android/app/src/com/android/bluetooth/gatt/GattObjectsFactory.java +2 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.BluetoothAdapterProxy; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.le_scan.ScanManager; /** * Factory class for object initialization to help with unit testing Loading Loading @@ -54,7 +55,7 @@ public class GattObjectsFactory { * * @param objectsFactory a test instance of the GattObjectsFactory */ static void setInstanceForTesting(GattObjectsFactory objectsFactory) { public static void setInstanceForTesting(GattObjectsFactory objectsFactory) { Utils.enforceInstrumentationTestMode(); synchronized (INSTANCE_LOCK) { Log.d(TAG, "setInstanceForTesting(), set to " + objectsFactory); Loading android/app/src/com/android/bluetooth/gatt/GattService.java +5 −4 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.flags.FeatureFlagsImpl; import com.android.bluetooth.flags.Flags; import com.android.bluetooth.le_scan.ScanManager; import com.android.bluetooth.util.NumberUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.modules.utils.SynchronousResultReceiver; Loading Loading @@ -236,9 +237,9 @@ public class GattService extends ProfileService { /** * List of our registered scanners. */ class ScannerMap extends ContextMap<IScannerCallback, PendingIntentInfo> {} public static class ScannerMap extends ContextMap<IScannerCallback, PendingIntentInfo> {} ScannerMap mScannerMap = new ScannerMap(); public ScannerMap mScannerMap = new ScannerMap(); /** * List of our registered advertisers. Loading Loading @@ -3096,7 +3097,7 @@ public class GattService extends ProfileService { } // callback from ScanManager for dispatch of errors apps. void onScanManagerErrorCallback(int scannerId, int errorCode) throws RemoteException { public void onScanManagerErrorCallback(int scannerId, int errorCode) throws RemoteException { ScannerMap.App app = mScannerMap.getById(scannerId); if (app == null || (app.callback == null && app.info == null)) { Log.e(TAG, "App or callback is null"); Loading Loading @@ -3227,7 +3228,7 @@ public class GattService extends ProfileService { } @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN) void unregisterScanner(int scannerId, AttributionSource attributionSource) { public void unregisterScanner(int scannerId, AttributionSource attributionSource) { if (!Utils.checkScanPermissionForDataDelivery( this, attributionSource, "GattService unregisterScanner")) { return; Loading Loading
android/app/src/com/android/bluetooth/btservice/AdapterService.java +1 −1 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ import com.android.bluetooth.btservice.storage.MetadataDatabase; import com.android.bluetooth.csip.CsipSetCoordinatorService; import com.android.bluetooth.flags.FeatureFlagsImpl; import com.android.bluetooth.gatt.GattService; import com.android.bluetooth.gatt.ScanManager; import com.android.bluetooth.le_scan.ScanManager; import com.android.bluetooth.hap.HapClientService; import com.android.bluetooth.hearingaid.HearingAidService; import com.android.bluetooth.hfp.HeadsetService; Loading
android/app/src/com/android/bluetooth/gatt/AppScanStats.java +26 −25 Original line number Diff line number Diff line Loading @@ -45,18 +45,18 @@ import java.util.Objects; * on a per application basis. * @hide */ /*package*/ class AppScanStats { public class AppScanStats { private static final String TAG = AppScanStats.class.getSimpleName(); static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss"); // Weight is the duty cycle of the scan mode static final int OPPORTUNISTIC_WEIGHT = 0; static final int SCREEN_OFF_LOW_POWER_WEIGHT = 5; static final int LOW_POWER_WEIGHT = 10; static final int AMBIENT_DISCOVERY_WEIGHT = 25; static final int BALANCED_WEIGHT = 25; static final int LOW_LATENCY_WEIGHT = 100; public static final int SCREEN_OFF_LOW_POWER_WEIGHT = 5; public static final int LOW_POWER_WEIGHT = 10; public static final int AMBIENT_DISCOVERY_WEIGHT = 25; public static final int BALANCED_WEIGHT = 25; public static final int LOW_LATENCY_WEIGHT = 100; static final int LARGE_SCAN_TIME_GAP_MS = 24000; Loading Loading @@ -146,7 +146,7 @@ import java.util.Objects; public long stopTime = 0; public int results = 0; AppScanStats(String name, WorkSource source, ContextMap map, GattService service) { public AppScanStats(String name, WorkSource source, ContextMap map, GattService service) { appName = name; mContextMap = map; mGattService = service; Loading Loading @@ -186,7 +186,7 @@ import java.util.Objects; return mOngoingScans.get(scannerId); } synchronized boolean isScanTimeout(int scannerId) { public synchronized boolean isScanTimeout(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null) { return false; Loading @@ -194,7 +194,7 @@ import java.util.Objects; return scan.isTimeout; } synchronized boolean isScanDowngraded(int scannerId) { public synchronized boolean isScanDowngraded(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null) { return false; Loading @@ -202,7 +202,7 @@ import java.util.Objects; return scan.isDowngraded; } synchronized boolean isAutoBatchScan(int scannerId) { public synchronized boolean isAutoBatchScan(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null) { return false; Loading @@ -210,7 +210,7 @@ import java.util.Objects; return scan.isAutoBatchScan; } synchronized void recordScanStart(ScanSettings settings, List<ScanFilter> filters, public synchronized void recordScanStart(ScanSettings settings, List<ScanFilter> filters, boolean isFilterScan, boolean isCallbackScan, int scannerId) { LastScan existingScan = getScanFromScannerId(scannerId); if (existingScan != null) { Loading Loading @@ -374,29 +374,30 @@ import java.util.Objects; } } synchronized void recordScanTimeoutCountMetrics() { public synchronized void recordScanTimeoutCountMetrics() { MetricsLogger.getInstance() .cacheCount(BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_SCAN_TIMEOUT, 1); } synchronized void recordHwFilterNotAvailableCountMetrics() { public synchronized void recordHwFilterNotAvailableCountMetrics() { MetricsLogger.getInstance() .cacheCount(BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_HW_FILTER_NOT_AVAILABLE, 1); } synchronized void recordTrackingHwFilterNotAvailableCountMetrics() { public synchronized void recordTrackingHwFilterNotAvailableCountMetrics() { MetricsLogger.getInstance() .cacheCount( BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_TRACKING_HW_FILTER_NOT_AVAILABLE, 1); } static void initScanRadioState() { public static void initScanRadioState() { synchronized (sLock) { sIsRadioStarted = false; } } static boolean recordScanRadioStart(int scanMode) { public static boolean recordScanRadioStart(int scanMode) { synchronized (sLock) { if (sIsRadioStarted) { return false; Loading @@ -408,7 +409,7 @@ import java.util.Objects; return true; } static boolean recordScanRadioStop() { public static boolean recordScanRadioStop() { synchronized (sLock) { if (!sIsRadioStarted) { return false; Loading Loading @@ -507,7 +508,7 @@ import java.util.Objects; } } static void setScreenState(boolean isScreenOn) { public static void setScreenState(boolean isScreenOn) { synchronized (sLock) { if (sIsScreenOn == isScreenOn) { return; Loading @@ -521,7 +522,7 @@ import java.util.Objects; } } synchronized void recordScanSuspend(int scannerId) { public synchronized void recordScanSuspend(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); if (scan == null || scan.isSuspended) { return; Loading @@ -530,7 +531,7 @@ import java.util.Objects; scan.isSuspended = true; } synchronized void recordScanResume(int scannerId) { public synchronized void recordScanResume(int scannerId) { LastScan scan = getScanFromScannerId(scannerId); long suspendDuration = 0; if (scan == null || !scan.isSuspended) { Loading @@ -543,7 +544,7 @@ import java.util.Objects; mTotalSuspendTime += suspendDuration; } synchronized void setScanTimeout(int scannerId) { public synchronized void setScanTimeout(int scannerId) { if (!isScanning()) { return; } Loading @@ -554,7 +555,7 @@ import java.util.Objects; } } synchronized void setScanDowngrade(int scannerId, boolean isDowngrade) { public synchronized void setScanDowngrade(int scannerId, boolean isDowngrade) { if (!isScanning()) { return; } Loading @@ -565,7 +566,7 @@ import java.util.Objects; } } synchronized void setAutoBatchScan(int scannerId, boolean isBatchScan) { public synchronized void setAutoBatchScan(int scannerId, boolean isBatchScan) { LastScan scan = getScanFromScannerId(scannerId); if (scan != null) { scan.isAutoBatchScan = isBatchScan; Loading @@ -581,7 +582,7 @@ import java.util.Objects; < mAdapterService.getScanQuotaWindowMillis(); } synchronized boolean isScanningTooLong() { public synchronized boolean isScanningTooLong() { if (!isScanning()) { return false; } Loading @@ -589,7 +590,7 @@ import java.util.Objects; >= mAdapterService.getScanTimeoutMillis(); } synchronized boolean hasRecentScan() { public synchronized boolean hasRecentScan() { if (!isScanning() || mLastScans.isEmpty()) { return false; } Loading
android/app/src/com/android/bluetooth/gatt/ContextMap.java +1 −1 Original line number Diff line number Diff line Loading @@ -448,7 +448,7 @@ public class ContextMap<C, T> { /** * Get Logging info by application UID */ AppScanStats getAppScanStatsByUid(int uid) { public AppScanStats getAppScanStatsByUid(int uid) { return mAppScanStats.get(uid); } Loading
android/app/src/com/android/bluetooth/gatt/GattObjectsFactory.java +2 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.BluetoothAdapterProxy; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.le_scan.ScanManager; /** * Factory class for object initialization to help with unit testing Loading Loading @@ -54,7 +55,7 @@ public class GattObjectsFactory { * * @param objectsFactory a test instance of the GattObjectsFactory */ static void setInstanceForTesting(GattObjectsFactory objectsFactory) { public static void setInstanceForTesting(GattObjectsFactory objectsFactory) { Utils.enforceInstrumentationTestMode(); synchronized (INSTANCE_LOCK) { Log.d(TAG, "setInstanceForTesting(), set to " + objectsFactory); Loading
android/app/src/com/android/bluetooth/gatt/GattService.java +5 −4 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.flags.FeatureFlagsImpl; import com.android.bluetooth.flags.Flags; import com.android.bluetooth.le_scan.ScanManager; import com.android.bluetooth.util.NumberUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.modules.utils.SynchronousResultReceiver; Loading Loading @@ -236,9 +237,9 @@ public class GattService extends ProfileService { /** * List of our registered scanners. */ class ScannerMap extends ContextMap<IScannerCallback, PendingIntentInfo> {} public static class ScannerMap extends ContextMap<IScannerCallback, PendingIntentInfo> {} ScannerMap mScannerMap = new ScannerMap(); public ScannerMap mScannerMap = new ScannerMap(); /** * List of our registered advertisers. Loading Loading @@ -3096,7 +3097,7 @@ public class GattService extends ProfileService { } // callback from ScanManager for dispatch of errors apps. void onScanManagerErrorCallback(int scannerId, int errorCode) throws RemoteException { public void onScanManagerErrorCallback(int scannerId, int errorCode) throws RemoteException { ScannerMap.App app = mScannerMap.getById(scannerId); if (app == null || (app.callback == null && app.info == null)) { Log.e(TAG, "App or callback is null"); Loading Loading @@ -3227,7 +3228,7 @@ public class GattService extends ProfileService { } @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN) void unregisterScanner(int scannerId, AttributionSource attributionSource) { public void unregisterScanner(int scannerId, AttributionSource attributionSource) { if (!Utils.checkScanPermissionForDataDelivery( this, attributionSource, "GattService unregisterScanner")) { return; Loading