Merge "Add UCI version as part of SpecificationInfo" into main
diff --git a/service/java/com/android/server/uwb/UwbServiceCore.java b/service/java/com/android/server/uwb/UwbServiceCore.java
index 2f6fa73..cc92126 100644
--- a/service/java/com/android/server/uwb/UwbServiceCore.java
+++ b/service/java/com/android/server/uwb/UwbServiceCore.java
@@ -609,6 +609,8 @@
                             specificationParams.second.getFiraSpecificationParams())
                             .setBackgroundRangingSupport(mUwbInjector.getDeviceConfigFacade()
                                     .isBackgroundRangingEnabled())
+                            .setUciVersionSupported(getCachedDeviceInfoResponse(
+                                    mUwbInjector.getMultichipData().getDefaultChipId()).mUciVersion)
                             .build();
             specificationParams.second.setFiraSpecificationParams(firaSpecificationParams);
         }
diff --git a/service/support_lib/src/com/google/uwb/support/fira/FiraSpecificationParams.java b/service/support_lib/src/com/google/uwb/support/fira/FiraSpecificationParams.java
index d4754b4..8b6d9c6 100644
--- a/service/support_lib/src/com/google/uwb/support/fira/FiraSpecificationParams.java
+++ b/service/support_lib/src/com/google/uwb/support/fira/FiraSpecificationParams.java
@@ -113,6 +113,8 @@
 
     private final boolean mHasPsduLengthSupport;
 
+    private final int mUciVersion;
+
     private static final String KEY_MIN_PHY_VERSION = "min_phy_version";
     private static final String KEY_MAX_PHY_VERSION = "max_phy_version";
     private static final String KEY_MIN_MAC_VERSION = "min_mac_version";
@@ -165,6 +167,8 @@
 
     public static final String KEY_PSDU_LENGTH_SUPPORT = "psdu_length_support";
 
+    public static final String KEY_UCI_VERSION = "uci_version";
+
     public static final int DEFAULT_MAX_RANGING_SESSIONS_NUMBER = 5;
 
     private FiraSpecificationParams(
@@ -201,7 +205,8 @@
             EnumSet<RangeDataNtfConfigCapabilityFlag> rangeDataNtfConfigCapabilities,
             int deviceType, boolean suspendRangingSupport, int sessionKeyLength,
             int dtTagMaxActiveRr, boolean hasBackgroundRangingSupport,
-            boolean hasDtTagBlockSkippingSupport, boolean hasPsduLengthSupport) {
+            boolean hasDtTagBlockSkippingSupport, boolean hasPsduLengthSupport,
+            int uciVersion) {
         mMinPhyVersionSupported = minPhyVersionSupported;
         mMaxPhyVersionSupported = maxPhyVersionSupported;
         mMinMacVersionSupported = minMacVersionSupported;
@@ -240,6 +245,7 @@
         mHasBackgroundRangingSupport = hasBackgroundRangingSupport;
         mHasDtTagBlockSkippingSupport = hasDtTagBlockSkippingSupport;
         mHasPsduLengthSupport = hasPsduLengthSupport;
+        mUciVersion = uciVersion;
     }
 
     @Override
@@ -401,6 +407,10 @@
         return mHasPsduLengthSupport;
     }
 
+    public int getUciVersionSupported() {
+        return mUciVersion;
+    }
+
     private static int[] toIntArray(List<Integer> data) {
         int[] res = new int[data.size()];
         for (int i = 0; i < data.size(); i++) {
@@ -456,6 +466,7 @@
         bundle.putBoolean(KEY_BACKGROUND_RANGING_SUPPORT, mHasBackgroundRangingSupport);
         bundle.putBoolean(KEY_DT_TAG_BLOCK_SKIPPING_SUPPORT, mHasDtTagBlockSkippingSupport);
         bundle.putBoolean(KEY_PSDU_LENGTH_SUPPORT, mHasPsduLengthSupport);
+        bundle.putInt(KEY_UCI_VERSION, mUciVersion);
         return bundle;
     }
 
@@ -491,6 +502,7 @@
         builder.setBackgroundRangingSupport(bundle.getBoolean(KEY_BACKGROUND_RANGING_SUPPORT));
         builder.setDtTagBlockSkippingSupport(bundle.getBoolean(KEY_DT_TAG_BLOCK_SKIPPING_SUPPORT));
         builder.setPsduLengthSupport(bundle.getBoolean(KEY_PSDU_LENGTH_SUPPORT));
+        builder.setUciVersionSupported(bundle.getInt(KEY_UCI_VERSION, 1));
         return builder;
     }
 
@@ -628,6 +640,8 @@
 
         private int mMaxRangingSessionNumber = DEFAULT_MAX_RANGING_SESSIONS_NUMBER;
 
+        private int mUciVersion = 1;
+
         // Unicast support is mandatory
         private EnumSet<MultiNodeCapabilityFlag> mMultiNodeCapabilities =
                 EnumSet.of(MultiNodeCapabilityFlag.HAS_UNICAST_SUPPORT);
@@ -925,6 +939,12 @@
             return this;
         }
 
+        public FiraSpecificationParams.Builder setUciVersionSupported(
+                int uciVersion) {
+            mUciVersion = uciVersion;
+            return this;
+        }
+
         public Builder() {}
 
         public Builder(@NonNull FiraSpecificationParams params) {
@@ -1007,7 +1027,8 @@
                     mDtTagMaxActiveRr,
                     mHasBackgroundRangingSupport,
                     mHasDtTagBlockSkippingSupport,
-                    mHasPsduLengthSupport);
+                    mHasPsduLengthSupport,
+                    mUciVersion);
         }
     }
 }