Merge "Fix Tx Power in Advertising and RSSI in Scan Result" into tm-mainline-prod
diff --git a/nearby/service/java/com/android/server/nearby/provider/BleBroadcastProvider.java b/nearby/service/java/com/android/server/nearby/provider/BleBroadcastProvider.java
index 8537872..2b9fdb9 100644
--- a/nearby/service/java/com/android/server/nearby/provider/BleBroadcastProvider.java
+++ b/nearby/service/java/com/android/server/nearby/provider/BleBroadcastProvider.java
@@ -158,6 +158,7 @@
         return new AdvertisingSetParameters.Builder()
                 .setInterval(AdvertisingSetParameters.INTERVAL_MEDIUM)
                 .setTxPowerLevel(AdvertisingSetParameters.TX_POWER_MEDIUM)
+                .setIncludeTxPower(true)
                 .setConnectable(true)
                 .build();
     }
diff --git a/nearby/service/java/com/android/server/nearby/provider/BleDiscoveryProvider.java b/nearby/service/java/com/android/server/nearby/provider/BleDiscoveryProvider.java
index 0d92e63..d828ef9 100644
--- a/nearby/service/java/com/android/server/nearby/provider/BleDiscoveryProvider.java
+++ b/nearby/service/java/com/android/server/nearby/provider/BleDiscoveryProvider.java
@@ -96,7 +96,8 @@
                             } else {
                                 byte[] presenceData = serviceDataMap.get(PRESENCE_UUID);
                                 if (presenceData != null) {
-                                    setPresenceDevice(presenceData, builder);
+                                    setPresenceDevice(presenceData, builder, deviceName,
+                                            scanResult.getRssi());
                                 }
                             }
                         }
@@ -115,7 +116,8 @@
         mInjector = injector;
     }
 
-    private static PresenceDevice getPresenceDevice(ExtendedAdvertisement advertisement) {
+    private static PresenceDevice getPresenceDevice(ExtendedAdvertisement advertisement,
+            String deviceName, int rssi) {
         // TODO(238458326): After implementing encryption, use real data.
         byte[] secretIdBytes = new byte[0];
         PresenceDevice.Builder builder =
@@ -124,7 +126,9 @@
                         advertisement.getSalt(),
                         secretIdBytes,
                         advertisement.getIdentity())
-                        .addMedium(NearbyDevice.Medium.BLE);
+                        .addMedium(NearbyDevice.Medium.BLE)
+                        .setName(deviceName)
+                        .setRssi(rssi);
         for (int i : advertisement.getActions()) {
             builder.addExtendedProperty(new DataElement(DataElement.DataType.ACTION,
                     new byte[]{(byte) i}));
@@ -247,7 +251,8 @@
         return mScanCallback;
     }
 
-    private void setPresenceDevice(byte[] data, NearbyDeviceParcelable.Builder builder) {
+    private void setPresenceDevice(byte[] data, NearbyDeviceParcelable.Builder builder,
+            String deviceName, int rssi) {
         for (android.nearby.ScanFilter scanFilter : mScanFilters) {
             if (scanFilter instanceof PresenceScanFilter) {
                 // Iterate all possible authenticity key and identity combinations to decrypt
@@ -262,7 +267,8 @@
                     if (CryptorImpIdentityV1.getInstance().verify(
                             advertisement.getIdentity(),
                             credential.getEncryptedMetadataKeyTag())) {
-                        builder.setPresenceDevice(getPresenceDevice(advertisement));
+                        builder.setPresenceDevice(getPresenceDevice(advertisement, deviceName,
+                                rssi));
                         builder.setEncryptionKeyTag(credential.getEncryptedMetadataKeyTag());
                         return;
                     }