diff options
author | Henri Chataing <henrichataing@google.com> | 2024-03-20 11:24:48 -0700 |
---|---|---|
committer | hchataing <104974782+hchataing@users.noreply.github.com> | 2024-03-27 14:28:24 -0700 |
commit | 0e22b87562e0848046fe81dbec558dd792e6903b (patch) | |
tree | 72859915a93af9f2fed503aabf6d722aa98ca751 | |
parent | 0bc8f45c9a0a501287b0b1b6fac8c70e6e30603c (diff) | |
download | pica-0e22b87562e0848046fe81dbec558dd792e6903b.tar.gz |
Sync definitions for UCI status codes with UCI 2.0
-rw-r--r-- | src/device.rs | 30 | ||||
-rw-r--r-- | src/uci_packets.pdl | 35 |
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 |