Merge "[uwb](hal) Add radar support" am: a0920e2e62

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2644416

Change-Id: Ie1300cd74d9d074237a2a58721f399a21cb29c3f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jin Chen
2023-06-29 20:23:05 +00:00
committed by Automerger Merge Worker
18 changed files with 317 additions and 59 deletions

View File

@@ -34,23 +34,24 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability @Backing(type="int") @VintfStability
enum UwbVendorCapabilityTlvTypes { enum UwbVendorCapabilityTlvTypes {
SUPPORTED_POWER_STATS_QUERY = 192, SUPPORTED_POWER_STATS_QUERY = 0xC0,
CCC_SUPPORTED_CHAPS_PER_SLOT = 160, CCC_SUPPORTED_CHAPS_PER_SLOT = 0xA0,
CCC_SUPPORTED_SYNC_CODES = 161, CCC_SUPPORTED_SYNC_CODES = 0xA1,
CCC_SUPPORTED_HOPPING_CONFIG_MODES_AND_SEQUENCES = 162, CCC_SUPPORTED_HOPPING_CONFIG_MODES_AND_SEQUENCES = 0xA2,
CCC_SUPPORTED_CHANNELS = 163, CCC_SUPPORTED_CHANNELS = 0xA3,
CCC_SUPPORTED_VERSIONS = 164, CCC_SUPPORTED_VERSIONS = 0xA4,
CCC_SUPPORTED_UWB_CONFIGS = 165, CCC_SUPPORTED_UWB_CONFIGS = 0xA5,
CCC_SUPPORTED_PULSE_SHAPE_COMBOS = 166, CCC_SUPPORTED_PULSE_SHAPE_COMBOS = 0xA6,
CCC_SUPPORTED_RAN_MULTIPLIER = 167, CCC_SUPPORTED_RAN_MULTIPLIER = 0xA7,
CCC_SUPPORTED_MAX_RANGING_SESSION_NUMBER = 168, CCC_SUPPORTED_MAX_RANGING_SESSION_NUMBER = 0xA8,
CCC_SUPPORTED_MIN_UWB_INITIATION_TIME_MS = 169, CCC_SUPPORTED_MIN_UWB_INITIATION_TIME_MS = 0xA9,
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING = 227, RADAR_SUPPORT = 0xB0,
SUPPORTED_MIN_RANGING_INTERVAL_MS = 228, SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING = 0xE3,
SUPPORTED_RANGE_DATA_NTF_CONFIG = 229, SUPPORTED_MIN_RANGING_INTERVAL_MS = 0xE4,
SUPPORTED_RSSI_REPORTING = 230, SUPPORTED_RANGE_DATA_NTF_CONFIG = 0xE5,
SUPPORTED_DIAGNOSTICS = 231, SUPPORTED_RSSI_REPORTING = 0xE6,
SUPPORTED_MIN_SLOT_DURATION_RSTU = 232, SUPPORTED_DIAGNOSTICS = 0xE7,
SUPPORTED_MAX_RANGING_SESSION_NUMBER = 233, SUPPORTED_MIN_SLOT_DURATION_RSTU = 0xE8,
SUPPORTED_CHANNELS_AOA = 234, SUPPORTED_MAX_RANGING_SESSION_NUMBER = 0xE9,
SUPPORTED_CHANNELS_AOA = 0xEA,
} }

View File

@@ -40,17 +40,19 @@ enum UwbVendorCapabilityTlvValues {
PULSE_SHAPE_PRECURSOR_FREE = 1, PULSE_SHAPE_PRECURSOR_FREE = 1,
PULSE_SHAPE_PRECURSOR_FREE_SPECIAL = 2, PULSE_SHAPE_PRECURSOR_FREE_SPECIAL = 2,
CHAPS_PER_SLOT_3 = 1, CHAPS_PER_SLOT_3 = 1,
CHAPS_PER_SLOT_4 = 2, CHAPS_PER_SLOT_4 = (1 << 1) /* 2 */,
CHAPS_PER_SLOT_6 = 4, CHAPS_PER_SLOT_6 = (1 << 2) /* 4 */,
CHAPS_PER_SLOT_8 = 8, CHAPS_PER_SLOT_8 = (1 << 3) /* 8 */,
CHAPS_PER_SLOT_9 = 16, CHAPS_PER_SLOT_9 = (1 << 4) /* 16 */,
CHAPS_PER_SLOT_12 = 32, CHAPS_PER_SLOT_12 = (1 << 5) /* 32 */,
CHAPS_PER_SLOT_24 = 64, CHAPS_PER_SLOT_24 = (1 << 6) /* 64 */,
HOPPING_SEQUENCE_DEFAULT = 16, HOPPING_SEQUENCE_DEFAULT = (1 << 4) /* 16 */,
HOPPING_SEQUENCE_AES = 8, HOPPING_SEQUENCE_AES = (1 << 3) /* 8 */,
HOPPING_CONFIG_MODE_NONE = 128, HOPPING_CONFIG_MODE_NONE = (1 << 7) /* 128 */,
HOPPING_CONFIG_MODE_CONTINUOUS = 64, HOPPING_CONFIG_MODE_CONTINUOUS = (1 << 6) /* 64 */,
HOPPING_CONFIG_MODE_ADAPTIVE = 32, HOPPING_CONFIG_MODE_ADAPTIVE = (1 << 5) /* 32 */,
CCC_CHANNEL_5 = 1, CCC_CHANNEL_5 = 1,
CCC_CHANNEL_9 = 2, CCC_CHANNEL_9 = (1 << 1) /* 2 */,
RADAR_NOT_SUPPORTED = 0,
RADAR_SWEEP_SAMPLES_SUPPORTED = 1,
} }

View File

@@ -34,7 +34,10 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="byte") @VintfStability @Backing(type="byte") @VintfStability
enum UwbVendorGidAndroidOids { enum UwbVendorGidAndroidOids {
ANDROID_GET_POWER_STATS = 0, ANDROID_GET_POWER_STATS = 0x0,
ANDROID_SET_COUNTRY_CODE = 1, ANDROID_SET_COUNTRY_CODE = 0x1,
ANDROID_RANGE_DIAGNOSTICS = 2, ANDROID_RANGE_DIAGNOSTICS = 0x2,
RADAR_SET_APP_CONFIG = 0x11,
RADAR_GET_APP_CONFIG = 0x12,
RADAR_DATA_NTF = 0x13,
} }

View File

@@ -34,5 +34,5 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="byte") @VintfStability @Backing(type="byte") @VintfStability
enum UwbVendorGids { enum UwbVendorGids {
ANDROID = 12, ANDROID = 0xC,
} }

View File

@@ -0,0 +1,49 @@
/*
* Copyright (C) 2023 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.
*/
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
// two cases:
// 1). this is a frozen version file - do not edit this in any case.
// 2). this is a 'current' file. If you make a backwards compatible change to
// the interface (from the latest frozen version), the build system will
// prompt you to update this file with `m <name>-update-api`.
//
// You must not make a backward incompatible change to any AIDL file built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability
enum UwbVendorRadarAppConfigTlvTypes {
RADAR_TIMING_PARAMS = 0x0,
SAMPLES_PER_SWEEP = 0x1,
RADAR_CHANNEL_NUMBER = 0x2,
SWEEP_OFFSET = 0x3,
RADAR_RFRAME_CONFIG = 0x4,
RADAR_PREAMBLE_DURATION = 0x5,
RADAR_PREAMBLE_CODE_INDEX = 0x6,
RADAR_SESSION_PRIORITY = 0x7,
BITS_PER_SAMPLE = 0x8,
RADAR_PRF_MODE = 0x9,
NUMBER_OF_BURSTS = 0xA,
RADAR_DATA_TYPE = 0xB,
}

View File

@@ -0,0 +1,38 @@
/*
* Copyright (C) 2023 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.
*/
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
// two cases:
// 1). this is a frozen version file - do not edit this in any case.
// 2). this is a 'current' file. If you make a backwards compatible change to
// the interface (from the latest frozen version), the build system will
// prompt you to update this file with `m <name>-update-api`.
//
// You must not make a backward incompatible change to any AIDL file built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability
enum UwbVendorRadarAppConfigTlvValues {
RADAR_DATA_TYPE_RADAR_SWEEP_SAMPLES = 0x0,
}

View File

@@ -34,7 +34,7 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability @Backing(type="int") @VintfStability
enum UwbVendorReasonCodes { enum UwbVendorReasonCodes {
REASON_ERROR_INVALID_CHANNEL_WITH_AOA = 128, REASON_ERROR_INVALID_CHANNEL_WITH_AOA = 0x80,
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT = 129, REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT = 0x81,
REASON_REGULATION_UWB_OFF = 130, REASON_REGULATION_UWB_OFF = 0x82,
} }

View File

@@ -34,16 +34,16 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability @Backing(type="int") @VintfStability
enum UwbVendorSessionAppConfigTlvTypes { enum UwbVendorSessionAppConfigTlvTypes {
CCC_HOP_MODE_KEY = 160, CCC_HOP_MODE_KEY = 0xA0,
CCC_UWB_TIME0 = 161, CCC_UWB_TIME0 = 0xA1,
CCC_RANGING_PROTOCOL_VER = 163, CCC_RANGING_PROTOCOL_VER = 0xA3,
CCC_UWB_CONFIG_ID = 164, CCC_UWB_CONFIG_ID = 0xA4,
CCC_PULSESHAPE_COMBO = 165, CCC_PULSESHAPE_COMBO = 0xA5,
CCC_URSK_TTL = 166, CCC_URSK_TTL = 0xA6,
CCC_LAST_INDEX_USED = 168, CCC_LAST_INDEX_USED = 0xA8,
NB_OF_RANGE_MEASUREMENTS = 227, NB_OF_RANGE_MEASUREMENTS = 0xE3,
NB_OF_AZIMUTH_MEASUREMENTS = 228, NB_OF_AZIMUTH_MEASUREMENTS = 0xE4,
NB_OF_ELEVATION_MEASUREMENTS = 229, NB_OF_ELEVATION_MEASUREMENTS = 0xE5,
ENABLE_DIAGNOSTICS = 232, ENABLE_DIAGNOSTICS = 0xE8,
DIAGRAMS_FRAME_REPORTS_FIELDS = 233, DIAGRAMS_FRAME_REPORTS_FIELDS = 0xE9,
} }

View File

@@ -34,5 +34,5 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability @Backing(type="int") @VintfStability
enum UwbVendorSessionAppConfigTlvValues { enum UwbVendorSessionAppConfigTlvValues {
AOA_RESULT_REQ_ANTENNA_INTERLEAVING = 240, AOA_RESULT_REQ_ANTENNA_INTERLEAVING = 0xF0,
} }

View File

@@ -34,5 +34,6 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="int") @VintfStability @Backing(type="int") @VintfStability
enum UwbVendorSessionInitSessionType { enum UwbVendorSessionInitSessionType {
CCC = 160, CCC = 0xA0,
RADAR = 0xA1,
} }

View File

@@ -34,8 +34,8 @@
package android.hardware.uwb.fira_android; package android.hardware.uwb.fira_android;
@Backing(type="byte") @VintfStability @Backing(type="byte") @VintfStability
enum UwbVendorStatusCodes { enum UwbVendorStatusCodes {
STATUS_ERROR_CCC_SE_BUSY = 80, STATUS_ERROR_CCC_SE_BUSY = 0x50,
STATUS_ERROR_CCC_LIFECYCLE = 81, STATUS_ERROR_CCC_LIFECYCLE = 0x51,
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT = 82, STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT = 0x52,
STATUS_REGULATION_UWB_OFF = 83, STATUS_REGULATION_UWB_OFF = 0x53,
} }

View File

@@ -10,6 +10,3 @@ These include:
All other interactions sent/received over the HAL interface is expected to All other interactions sent/received over the HAL interface is expected to
comply with the UCI specification that can be found [here]( comply with the UCI specification that can be found [here](
https://groups.firaconsortium.org/wg/Technical/document/folder/127). https://groups.firaconsortium.org/wg/Technical/document/folder/127).
TODO([b/196004116](b/196004116)): Link to the published specification.

View File

@@ -149,6 +149,16 @@ enum UwbVendorCapabilityTlvTypes {
*/ */
CCC_SUPPORTED_MIN_UWB_INITIATION_TIME_MS = 0xA9, CCC_SUPPORTED_MIN_UWB_INITIATION_TIME_MS = 0xA9,
/*********************************************
* RADAR specific
********************************************/
/**
* 1 byte bitmask to indicate the supported Radar data types.
* Each "1" in this bitmap corresponds to a specific radar data type where:
* 0x01 = "Radar Sweep Samples",
*/
RADAR_SUPPORT = 0xB0,
/********************************************* /*********************************************
* FIRA specific * FIRA specific
********************************************/ ********************************************/

View File

@@ -51,4 +51,10 @@ enum UwbVendorCapabilityTlvValues {
CCC_CHANNEL_5 = 1, CCC_CHANNEL_5 = 1,
CCC_CHANNEL_9 = 1 << 1, CCC_CHANNEL_9 = 1 << 1,
/*********************************************
* RADAR specific
********************************************/
RADAR_NOT_SUPPORTED = 0,
RADAR_SWEEP_SAMPLES_SUPPORTED = 1,
} }

View File

@@ -37,4 +37,15 @@ enum UwbVendorGidAndroidOids {
// Supported only if the UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS set // Supported only if the UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS set
// to 1. // to 1.
ANDROID_RANGE_DIAGNOSTICS = 0x2, ANDROID_RANGE_DIAGNOSTICS = 0x2,
/*********************************************
* Range 0x10 - 0x1F reserved for RADAR specific
* Supported only if the UwbVendorCapabilityTlvTypes.RADAR_SUPPORT is not 0x00.
********************************************/
// Used to set application configurations for radar session.
RADAR_SET_APP_CONFIG = 0x11,
// Used to get application configurations for radar session.
RADAR_GET_APP_CONFIG = 0x12,
// Used to report radar data for certain radar data types.
RADAR_DATA_NTF = 0x13,
} }

View File

@@ -0,0 +1,110 @@
/*
* Copyright (C) 2023 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 radar app params set/expected in UCI command:
* GID: 1100b (Android specific Group)
* OID: 010001b (RADAR_SET_APP_CONFIG_CMD)
* OID: 010010b (RADAR_GET_APP_CONFIG_CMD)
*/
@VintfStability
@Backing(type="int")
enum UwbVendorRadarAppConfigTlvTypes {
/**
* 7 byte data
* Radar frame timing parameters:
* Octet [3:0] - BURST_PERIOD
* Duration between the start of two consecutive Radar bursts in ms.
* Octet [5:4] - SWEEP_PERIOD
* Duration between the start times of two consecutive Radar sweeps in
* RSTU.
* Octet [6] - SWEEPS_PER_BURST
* Number of Radar sweeps within the Radar burst.
*/
RADAR_TIMING_PARAMS = 0x0,
/**
* 1 byte data
* The number of samples captured for each radar sweep. (default = 64)
*/
SAMPLES_PER_SWEEP = 0x1,
/**
* 1 byte data
* Same as in FiRa UCI Session App Config.
* (default = 9)
*/
RADAR_CHANNEL_NUMBER = 0x2,
/**
* 2 byte data
* Defines the start offset with respect to 0cm distance to limit the sweep
* range. Signed value and unit in samples.
* (default = 0)
*/
SWEEP_OFFSET = 0x3,
/**
* 1 byte data
* Same as in FiRa UCI Session App Config.
* (default = 0x0)
*/
RADAR_RFRAME_CONFIG = 0x4,
/**
* 1 byte data
* Same as in FiRa UCI Session App Config, but extended to 0xA.
* (default = 0x2 : 128 symbols)
*/
RADAR_PREAMBLE_DURATION = 0x5,
/**
* 1 byte data
* Same as in FiRa UCI Session App Config, but extended to 127.
* (default = 25)
*/
RADAR_PREAMBLE_CODE_INDEX = 0x6,
/**
* 1 byte data
* Same as in FiRa UCI Session App Config.
* (default = 50)
*/
RADAR_SESSION_PRIORITY = 0x7,
/**
* 1 byte data
* Bits per sample in the radar sweep.
* 0x00 = 32 bits per sample (default)
* 0x01 = 48 bits per sample
* 0x02 = 64 bits per sample
*/
BITS_PER_SAMPLE = 0x8,
/**
* 1 byte data
* Same as in FiRa UCI Session App Config.
* (default = 0x1)
*/
RADAR_PRF_MODE = 0x9,
/**
* 2 byte data
* Maximum number of Radar bursts to be executed in the session. The
* session is stopped and moved to SESSION_STATE_IDLE Session State when
* configured radar bursts are elapsed.
* 0x00 = Unlimited (default)
*/
NUMBER_OF_BURSTS = 0xA,
/**
* 2 byte data
* Type of radar data to be reported.
* 0x00: Radar Sweep Samples. Reported in RADAR_DATA_NTF. (default)
*/
RADAR_DATA_TYPE = 0xB,
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2023 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 radar app config values set/expected in UCI command:
* GID: 1100b (Android specific Group)
* OID: 010001b (RADAR_SET_APP_CONFIG_CMD)
* OID: 010010b (RADAR_GET_APP_CONFIG_CMD)
*/
@VintfStability
@Backing(type="int")
enum UwbVendorRadarAppConfigTlvValues {
RADAR_DATA_TYPE_RADAR_SWEEP_SAMPLES = 0x0,
}

View File

@@ -29,4 +29,5 @@ package android.hardware.uwb.fira_android;
enum UwbVendorSessionInitSessionType { enum UwbVendorSessionInitSessionType {
/** Added in vendor version 0. */ /** Added in vendor version 0. */
CCC = 0xA0, CCC = 0xA0,
RADAR = 0xA1,
} }