uwb(hal): Add device capability TLV types

Also, rename UwbVendorSessionSetAppConfigCmdParams to a more generic
UwbVendorSessionAppConfigTlvTypes because it used in SET_APP_CONFIG &
GET_APP_CONFIG cmds.

Bug: 208678993
Test: Compiles
Change-Id: Iaad3788eee1948feb369b5f8fb4076c2f2479d10
diff --git a/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl b/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorCapabilityTlvTypes.aidl
similarity index 65%
copy from uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl
copy to uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorCapabilityTlvTypes.aidl
index 0d53431..dd673e2 100644
--- a/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl
+++ b/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorCapabilityTlvTypes.aidl
@@ -33,14 +33,32 @@
 
 package android.hardware.uwb.fira_android;
 @Backing(type="int") @VintfStability
-enum UwbVendorSessionSetAppConfigCmdParams {
-  CCC_HOP_MODE_KEY = 160,
-  CCC_UWB_TIME0 = 161,
-  CCC_RANGING_PROTOCOL_VER = 163,
-  CCC_UWB_CONFIG_ID = 164,
-  CCC_PULSESHAPE_COMBO = 165,
-  CCC_URSK_TTL = 166,
-  NB_OF_RANGE_MEASUREMENTS = 227,
-  NB_OF_AZIMUTH_MEASUREMENTS = 228,
-  NB_OF_ELEVATION_MEASUREMENTS = 229,
+enum UwbVendorCapabilityTlvTypes {
+  SUPPORTED_CHANNELS = 0,
+  SUPPORTED_AOA_MODES = 1,
+  SUPPORTED_DEVICE_ROLES = 2,
+  SUPPORTS_BLOCK_STRIDING = 3,
+  SUPPORTS_NON_DEFERRED_MODE = 4,
+  SUPPORTS_ADAPTIVE_PAYLOAD_POWER = 5,
+  INITIATION_TIME_MS = 6,
+  SUPPORTED_MAC_FCS_CRC_TYPES = 7,
+  SUPPORTED_MULTI_NODE_MODES = 8,
+  SUPPORTED_PREAMBLE_MODES = 9,
+  SUPPORTED_PRF_MODES = 10,
+  SUPPORTED_RANGING_ROUND_USAGE_MODES = 11,
+  SUPPORTED_RFRAME_MODES = 12,
+  SUPPORTED_SFD_IDS = 13,
+  SUPPORTED_STS_MODES = 14,
+  SUPPORTED_STS_SEGEMENTS = 15,
+  SUPPORTED_BPRF_PHR_DATA_RATES = 16,
+  SUPPORTED_PSDU_DATA_RATES = 17,
+  CCC_SUPPORTED_VERSIONS = 160,
+  CCC_SUPPORTED_UWB_CONFIGS = 161,
+  CCC_SUPPORTED_PULSE_SHAPE_COMBOS = 162,
+  CCC_SUPPORTED_RAN_MULTIPLIER = 163,
+  CCC_SUPPORTED_CHAPS_PER_SLOT = 164,
+  CCC_SUPPORTED_SYNC_CODES = 165,
+  CCC_SUPPORTED_CHANNELS = 166,
+  CCC_SUPPORTED_HOPPING_SEQUENCES = 167,
+  CCC_SUPPORTED_HOPPING_CONFIG_MODES = 168,
 }
diff --git a/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl b/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionAppConfigTlvTypes.aidl
similarity index 97%
rename from uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl
rename to uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionAppConfigTlvTypes.aidl
index 0d53431..d35728f 100644
--- a/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl
+++ b/uwb/aidl/aidl_api/android.hardware.uwb.fira_android/current/android/hardware/uwb/fira_android/UwbVendorSessionAppConfigTlvTypes.aidl
@@ -33,7 +33,7 @@
 
 package android.hardware.uwb.fira_android;
 @Backing(type="int") @VintfStability
-enum UwbVendorSessionSetAppConfigCmdParams {
+enum UwbVendorSessionAppConfigTlvTypes {
   CCC_HOP_MODE_KEY = 160,
   CCC_UWB_TIME0 = 161,
   CCC_RANGING_PROTOCOL_VER = 163,
diff --git a/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorCapabilityTlvTypes.aidl b/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorCapabilityTlvTypes.aidl
new file mode 100644
index 0000000..6f3c1bb
--- /dev/null
+++ b/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorCapabilityTlvTypes.aidl
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.uwb.fira_android;
+
+/**
+ * Android specific capability params expected in UCI command:
+ * GID: 0000b (UWB Core Group)
+ * OID: 000011b (CORE_GET_CAPS_INFO_CMD)
+ * Values expected for each type should correspond to values used in the FIRA UCI specification.
+ *
+ * For ex, If the device supports responder and initiator device roles. Use this TLV to
+ * indicate that: * {SUPPORTED_DEVICE_ROLES, 2, [0x0 // responder, 0x1 // initiator]}}
+ */
+@VintfStability
+@Backing(type="int")
+enum UwbVendorCapabilityTlvTypes {
+    /** byte array with list of supported channels */
+    SUPPORTED_CHANNELS = 0x0,
+    /**
+     * int bitmask of supported AOA modes
+     * Values:
+     *  HAS_AZIMUTH_SUPPORT = 1,
+     *  HAS_ELEVATION_SUPPORT = (1 << 1)
+     *  HAS_FOM_SUPPORT = (1 << 2)
+     *  HAS_FULL_AZIMUTH_SUPPORT = (1 << 3)
+     */
+    SUPPORTED_AOA_MODES = 0x1,
+    /**
+     * int bitmask of supported device roles
+     * Values:
+     *   HAS_CONTROLEE_INITIATOR_SUPPORT = 1
+     *   HAS_CONTROLEE_RESPONDER_SUPPORT = (1 << 1)
+     *   HAS_CONTROLLER_INITIATOR_SUPPORT = (1 << 2)
+     *   HAS_CONTROLLER_RESPONDER_SUPPORT= (1 << 3)
+     */
+    SUPPORTED_DEVICE_ROLES = 0x2,
+    /** byte value of 1 to indicate support for block striding */
+    SUPPORTS_BLOCK_STRIDING = 0x3,
+    /** byte value of 1 to indicate support for non deferred mode */
+    SUPPORTS_NON_DEFERRED_MODE = 0x4,
+    /** byte value of 1 to indicate support for adaptive payload power */
+    SUPPORTS_ADAPTIVE_PAYLOAD_POWER = 0x5,
+    /** Int value for indicating initiation time */
+    INITIATION_TIME_MS = 0x6,
+    /**
+     * int bitmask of supported mac fcs crc types
+     * Values:
+     *  HAS_CRC_16_SUPPORT = 1
+     *  HAS_CRC_32_SUPPORT = (1 << 1)
+     */
+    SUPPORTED_MAC_FCS_CRC_TYPES = 0x7,
+    /**
+     * int bitmask of supported multi node modes
+     * Values:
+     *  HAS_UNICAST_SUPPORT = 1
+     *  HAS_ONE_TO_MANY_SUPPORT = (1 << 1)
+     *  HAS_MANY_TO_MANY_SUPPORT = (1 << 2)
+     */
+    SUPPORTED_MULTI_NODE_MODES = 0x8,
+    /**
+     * int bitmask of supported preamble modes
+     * Values:
+     *  HAS_32_SYMBOLS_SUPPORT = 1
+     *  HAS_64_SYMBOLS_SUPPORT = (1 << 1)
+     */
+    SUPPORTED_PREAMBLE_MODES = 0x9,
+    /**
+     * int bitmask of supported prf modes
+     * Values:
+     *  HAS_BPRF_SUPPORT = 1
+     *  HAS_HPRF_SUPPORT = (1 << 1)
+     */
+    SUPPORTED_PRF_MODES = 0xA,
+    /**
+     * int bitmask of supported ranging round usage modes
+     * Values:
+     *  HAS_DS_TWR_SUPPORT = 1
+     *  HAS_SS_TWR_SUPPORT = (1 << 1)
+     */
+    SUPPORTED_RANGING_ROUND_USAGE_MODES = 0xB,
+    /**
+     * int bitmask of supported rframe modes
+     * Values:
+     *  HAS_SP0_RFRAME_SUPPORT = 1
+     *  HAS_SP1_RFRAME_SUPPORT = (1 << 1),
+     *  HAS_SP3_RFRAME_SUPPORT = (1 << 3)
+     */
+    SUPPORTED_RFRAME_MODES = 0xC,
+    /**
+     * int bitmask of supported sfd ids
+     * Values:
+     *  HAS_SFD0_SUPPORT = 1
+     *  HAS_SFD1_SUPPORT = (1 << 1)
+     *  HAS_SFD2_SUPPORT = (1 << 2)
+     *  HAS_SFD3_SUPPORT = (1 << 3)
+     *  HAS_SFD4_SUPPORT = (1 << 4)
+     */
+    SUPPORTED_SFD_IDS = 0xD,
+    /**
+     * int bitmask of supported sts modes
+     * Values:
+     *  HAS_STATIC_STS_SUPPORT = 1
+     *  HAS_DYNAMIC_STS_SUPPORT = (1 << 1)
+     *  HAS_DYNAMIC_STS_INDIVIDUAL_CONTROLEE_KEY_SUPPORT = (1 << 2)
+     */
+    SUPPORTED_STS_MODES = 0xE,
+    /**
+     * int bitmask of supported sts segments
+     * Values:
+     *  HAS_0_SEGMENT_SUPPORT = 1
+     *  HAS_1_SEGMENT_SUPPORT = (1 << 1)
+     *  HAS_2_SEGMENT_SUPPORT = (1 << 2)
+     */
+    SUPPORTED_STS_SEGEMENTS = 0xF,
+    /**
+     * int bitmask of supported bprf phr data rates
+     * Values:
+     *  HAS_6M81_SUPPORT = 1
+     *  HAS_850K_SUPPORT = (1 << 1)
+     */
+    SUPPORTED_BPRF_PHR_DATA_RATES = 0x10,
+    /**
+     * int bitmask of supported psdu data rates
+     * Values:
+     *  HAS_6M81_SUPPORT = 1
+     *  HAS_7M80_SUPPORT = (1 << 1)
+     *  HAS_27M2_SUPPORT = (1 << 2)
+     *  HAS_31M2_SUPPORT = (1 << 3)
+     */
+    SUPPORTED_PSDU_DATA_RATES = 0x11,
+
+    /*********************************************
+     * CCC specific
+     ********************************************/
+
+    /**
+     * 2 byte tuple {major_version (1 byte), minor_version (1 byte)} array with list of supported
+     * CCC versions
+     */
+    CCC_SUPPORTED_VERSIONS = 0xA0,
+    /**
+     * byte array with a list of supported UWB configs
+     * Values:
+     *  UWB_CONFIG_0 = 0
+     *  UWB_CONFIG_1 = 1
+     */
+    CCC_SUPPORTED_UWB_CONFIGS = 0xA1,
+    /**
+     * 1 byte tuple {initiator_tx (4 bits), responder_tx (4 bits)} array with list of supported
+     * pulse shape combos
+     * Values:
+     *  PULSE_SHAPE_SYMMETRICAL_ROOT_RAISED_COSINE = 1
+     *  PULSE_SHAPE_PRECURSOR_FREE = 2
+     *  PULSE_SHAPE_PRECURSOR_FREE_SPECIAL = 3
+     */
+    /**  */
+    CCC_SUPPORTED_PULSE_SHAPE_COMBOS = 0xA2,
+    /** Int value for indicating supported ran multiplier */
+    CCC_SUPPORTED_RAN_MULTIPLIER = 0xA3,
+    /**
+     * byte array with a list of supported chaps per slot
+     * Values:
+     *  CHAPS_PER_SLOT_3 = 3
+     *  CHAPS_PER_SLOT_4 = 4
+     *  CHAPS_PER_SLOT_6 = 6
+     *  CHAPS_PER_SLOT_8 = 8
+     *  CHAPS_PER_SLOT_9 = 9
+     *  CHAPS_PER_SLOT_12 = 12
+     *  CHAPS_PER_SLOT_24 = 24
+     */
+    CCC_SUPPORTED_CHAPS_PER_SLOT = 0xA4,
+    /**
+     * byte array with a list of supported sync codes
+     * Values: 1 - 32
+     */
+    CCC_SUPPORTED_SYNC_CODES = 0xA5,
+    /** byte array with list of supported channels */
+    CCC_SUPPORTED_CHANNELS = 0xA6,
+    /**
+     * byte array with a list of supported hopping sequences
+     * Values:
+        HOPPING_SEQUENCE_DEFAULT = 0
+        HOPPING_SEQUENCE_AES = 1
+     */
+    CCC_SUPPORTED_HOPPING_SEQUENCES = 0xA7,
+    /**
+     * byte array with a list of supported hopping config modes
+     * Values:
+     *  HOPPING_CONFIG_MODE_NONE = 0
+     *  HOPPING_CONFIG_MODE_CONTINUOUS = 1
+     *  HOPPING_CONFIG_MODE_ADAPTIVE = 2
+     */
+    CCC_SUPPORTED_HOPPING_CONFIG_MODES = 0xA8,
+}
diff --git a/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl b/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorSessionAppConfigTlvTypes.aidl
similarity index 92%
rename from uwb/aidl/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl
rename to uwb/aidl/android/hardware/uwb/fira_android/UwbVendorSessionAppConfigTlvTypes.aidl
index eb1f5ac..b770ee0 100644
--- a/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorSessionSetAppConfigCmdParams.aidl
+++ b/uwb/aidl/android/hardware/uwb/fira_android/UwbVendorSessionAppConfigTlvTypes.aidl
@@ -17,16 +17,17 @@
 package android.hardware.uwb.fira_android;
 
 /**
- * Android specific vendor app params set in UCI command:
+ * Android specific vendor app params set/expected in UCI command:
  * GID: 0001b (UWB Session config Group)
  * OID: 000011b (SESSION_SET_APP_CONFIG_CMD)
+ * OID: 000100b (SESSION_GET_APP_CONFIG_CMD)
  *
  * Note: Refer to Table 34 of the UCI specification for the other params
  * expected in this command.
  */
 @VintfStability
 @Backing(type="int")
-enum UwbVendorSessionSetAppConfigCmdParams {
+enum UwbVendorSessionAppConfigTlvTypes {
     /** CCC params for ranging start */
 
     /**