aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Chataing <henrichataing@google.com>2024-03-20 11:24:48 -0700
committerhchataing <104974782+hchataing@users.noreply.github.com>2024-03-27 14:28:24 -0700
commit0e22b87562e0848046fe81dbec558dd792e6903b (patch)
tree72859915a93af9f2fed503aabf6d722aa98ca751
parent0bc8f45c9a0a501287b0b1b6fac8c70e6e30603c (diff)
downloadpica-0e22b87562e0848046fe81dbec558dd792e6903b.tar.gz
Sync definitions for UCI status codes with UCI 2.0
-rw-r--r--src/device.rs30
-rw-r--r--src/uci_packets.pdl35
2 files changed, 28 insertions, 37 deletions
diff --git a/src/device.rs b/src/device.rs
index 390a29a..d304be7 100644
--- a/src/device.rs
+++ b/src/device.rs
@@ -313,13 +313,13 @@ impl Device {
log::debug!(" session_type={:?}", session_type);
let status = if self.sessions.len() >= MAX_SESSION {
- uci::Status::MaxSessionsExceeded
+ uci::Status::ErrorMaxSessionsExceeded
} else {
match self.sessions.insert(
session_id,
Session::new(session_id, session_type, self.handle, self.tx.clone()),
) {
- Some(_) => uci::Status::SessionDuplicate,
+ Some(_) => uci::Status::ErrorSessionDuplicate,
None => {
// Should not fail
self.session_mut(session_id).unwrap().init();
@@ -347,7 +347,7 @@ impl Device {
self.sessions.remove(&session_id);
uci::Status::Ok
}
- None => uci::Status::SessionNotExist,
+ None => uci::Status::ErrorSessionNotExist,
};
SessionDeinitRspBuilder { status }.build()
}
@@ -374,7 +374,7 @@ impl Device {
let Some(session) = self.sessions.get_mut(&session_handle) else {
return SessionSetAppConfigRspBuilder {
cfg_status: Vec::new(),
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
}
.build();
};
@@ -392,7 +392,7 @@ impl Device {
.any(|cfg| IMMUTABLE_PARAMETERS.contains(&cfg.cfg_id))
{
return SessionSetAppConfigRspBuilder {
- status: uci::Status::SessionActive,
+ status: uci::Status::ErrorSessionActive,
cfg_status: vec![],
}
.build();
@@ -479,7 +479,7 @@ impl Device {
let Some(session) = self.sessions.get(&session_handle) else {
return SessionGetAppConfigRspBuilder {
tlvs: vec![],
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
}
.build();
};
@@ -522,7 +522,7 @@ impl Device {
let Some(session) = self.sessions.get(&session_handle) else {
return SessionGetStateRspBuilder {
session_state: SessionState::SessionStateInit,
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
}
.build();
};
@@ -548,7 +548,7 @@ impl Device {
let Some(session) = self.sessions.get_mut(&session_handle) else {
return SessionUpdateControllerMulticastListRspBuilder {
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
}
.build();
};
@@ -631,7 +631,7 @@ impl Device {
let mut update_status = MulticastUpdateStatusCode::StatusOkMulticastListUpdate;
if !dst_addresses.contains(&controlee.short_address) {
if dst_addresses.len() == MAX_NUMBER_OF_CONTROLEES {
- status = uci::Status::MulticastListFull;
+ status = uci::Status::ErrorMulticastListFull;
update_status = MulticastUpdateStatusCode::StatusErrorMulticastListFull;
} else if (action
== UpdateMulticastListAction::AddControleeWithShortSubSessionKey
@@ -668,7 +668,7 @@ impl Device {
let attempt_count = session.app_config.in_band_termination_attempt_count;
let mut update_status = MulticastUpdateStatusCode::StatusOkMulticastListUpdate;
if !dst_addresses.contains(&address) {
- status = uci::Status::AddressNotFound;
+ status = uci::Status::Failed;
update_status = MulticastUpdateStatusCode::StatusErrorKeyFetchFail;
} else {
dst_addresses.retain(|value| *value != address);
@@ -732,14 +732,14 @@ impl Device {
let Some(session) = self.sessions.get_mut(&session_id) else {
return SessionStartRspBuilder {
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
}
.build();
};
if session.state != SessionState::SessionStateIdle {
return SessionStartRspBuilder {
- status: uci::Status::SessionNotConfigured,
+ status: uci::Status::ErrorSessionNotConfigured,
}
.build();
}
@@ -781,14 +781,14 @@ impl Device {
let Some(session) = self.sessions.get_mut(&session_id) else {
return SessionStopRspBuilder {
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
}
.build();
};
if session.state != SessionState::SessionStateActive {
return SessionStopRspBuilder {
- status: uci::Status::SessionActive,
+ status: uci::Status::ErrorSessionActive,
}
.build();
}
@@ -824,7 +824,7 @@ impl Device {
let Some(session) = self.sessions.get(&session_id) else {
return SessionGetRangingCountRspBuilder {
- status: uci::Status::SessionNotExist,
+ status: uci::Status::ErrorSessionNotExist,
count: 0,
}
.build();
diff --git a/src/uci_packets.pdl b/src/uci_packets.pdl
index 7d1fc2e..e4403cb 100644
--- a/src/uci_packets.pdl
+++ b/src/uci_packets.pdl
@@ -84,6 +84,7 @@ enum AndroidOpcodeId : 6 {
FIRA_RANGE_DIAGNOSTICS = 0x02,
}
+/// [UCI] 8.5 Status Codes
enum Status : 8 {
// Generic Status Codes
OK = 0x00,
@@ -92,28 +93,24 @@ enum Status : 8 {
SYNTAX_ERROR = 0x03,
INVALID_PARAM = 0x04,
INVALID_RANGE = 0x05,
- INVALID_MSG_SIZE = 0x06,
+ INVALID_MESSAGE_SIZE = 0x06,
UNKNOWN_GID = 0x07,
UNKNOWN_OID = 0x08,
READ_ONLY = 0x09,
- COMMAND_RETRY = 0x0A,
+ UCI_MESSAGE_RETRY = 0x0A,
UNKNOWN = 0x0B,
NOT_APPLICABLE = 0x0C,
- RFU_STATUS_CODE_RANGE_1 = 0x0D..0x10,
// UWB Session Specific Status Codes
- SESSION_NOT_EXIST = 0x11,
- SESSION_DUPLICATE = 0x12,
- SESSION_ACTIVE = 0x13,
- MAX_SESSIONS_EXCEEDED = 0x14,
- SESSION_NOT_CONFIGURED = 0x15,
- ACTIVE_SESSIONS_ONGOING = 0x16,
- MULTICAST_LIST_FULL = 0x17,
- ADDRESS_NOT_FOUND = 0x18,
- ADDRESS_ALREADY_PRESENT = 0x19,
+ ERROR_SESSION_NOT_EXIST = 0x11,
+ ERROR_SESSION_DUPLICATE = 0x12,
+ ERROR_SESSION_ACTIVE = 0x13,
+ ERROR_MAX_SESSIONS_EXCEEDED = 0x14,
+ ERROR_SESSION_NOT_CONFIGURED = 0x15,
+ ERROR_ACTIVE_SESSIONS_ONGOING = 0x16,
+ ERROR_MULTICAST_LIST_FULL = 0x17,
ERROR_UWB_INITIATION_TIME_TOO_OLD = 0x1A,
OK_NEGATIVE_DISTANCE_REPORT = 0x1B,
- RFU_STATUS_CODE_RANGE_2 = 0x1C..0x1F,
// UWB Ranging Session Specific Status Codes
RANGING_TX_FAILED = 0x20,
@@ -127,23 +124,17 @@ enum Status : 8 {
ERROR_ROUND_INDEX_NOT_ACTIVATED = 0x28,
ERROR_NUMBER_OF_ACTIVE_RANGING_ROUNDS_EXCEEDED = 0x29,
ERROR_DL_TDOA_DEVICE_ADDRESS_NOT_MATCHING_IN_REPLY_TIME_LIST = 0x2A,
- RFU_STATUS_CODE_RANGE_3 = 0x2B..0x2F,
-
- // UWB Data Session Specific Status Codes
- DATA_MAX_TX_PSDU_SIZE_EXCEEDED = 0x30,
- DATA_RX_CRC_ERROR = 0x31,
- RFU_STATUS_CODE_RANGE_4 = 0x32..0x4F,
// Vendor Specific Status Codes
- VENDOR_SPECIFIC_STATUS_CODE_RANGE_1 = 0x50..0xFE {
+ VENDOR_SPECIFIC = 0x50..0xFF {
ERROR_CCC_SE_BUSY = 0x50,
ERROR_CCC_LIFECYCLE = 0x51,
ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT = 0x52,
REGULATION_UWB_OFF = 0x53,
},
- // For internal usage, we will use 0xFF as default.
- VENDOR_SPECIFIC_STATUS_CODE_2 = 0xFF,
+ // All others reserved for future use
+ RFU = ..,
}
// This needs a separate StatusCode as the Status code values in the DATA_RCV packet have