diff options
author | Henri Chataing <henrichataing@google.com> | 2024-03-20 11:29:18 -0700 |
---|---|---|
committer | hchataing <104974782+hchataing@users.noreply.github.com> | 2024-03-27 14:28:24 -0700 |
commit | 45c2327092a065d4e8c675e14e62dfbfe99fd47c (patch) | |
tree | 4d0da38c531baf2eb60225f07d84436b3f767dfb | |
parent | 0e22b87562e0848046fe81dbec558dd792e6903b (diff) | |
download | pica-45c2327092a065d4e8c675e14e62dfbfe99fd47c.tar.gz |
Sync definitions for UCI Multicast Update Status with UCI 2.0
All definitions after ERROR_SUB_SESSION_KEY_NOT_FOUND
were offset by 1
-rw-r--r-- | src/device.rs | 11 | ||||
-rw-r--r-- | src/uci_packets.pdl | 22 |
2 files changed, 17 insertions, 16 deletions
diff --git a/src/device.rs b/src/device.rs index d304be7..449ec7b 100644 --- a/src/device.rs +++ b/src/device.rs @@ -628,11 +628,11 @@ impl Device { | UpdateMulticastListAction::AddControleeWithShortSubSessionKey | UpdateMulticastListAction::AddControleeWithExtendedSubSessionKey => { new_controlees.iter().for_each(|controlee| { - let mut update_status = MulticastUpdateStatusCode::StatusOkMulticastListUpdate; + let mut update_status = MulticastUpdateStatus::OkMulticastListUpdate; if !dst_addresses.contains(&controlee.short_address) { if dst_addresses.len() == MAX_NUMBER_OF_CONTROLEES { status = uci::Status::ErrorMulticastListFull; - update_status = MulticastUpdateStatusCode::StatusErrorMulticastListFull; + update_status = MulticastUpdateStatus::ErrorMulticastListFull; } else if (action == UpdateMulticastListAction::AddControleeWithShortSubSessionKey || action @@ -645,8 +645,7 @@ impl Device { // with Status set to STATUS_ERROR_SUB_SESSION_KEY_NOT_APPLICABLE for each // Controlee in the Controlee List. status = uci::Status::Failed; - update_status = - MulticastUpdateStatusCode::StatusErrorSubSessionKeyNotApplicable; + update_status = MulticastUpdateStatus::ErrorSubSessionKeyNotApplicable; } else { dst_addresses.push(controlee.short_address); }; @@ -666,10 +665,10 @@ impl Device { let pica_tx = self.pica_tx.clone(); let address = controlee.short_address; let attempt_count = session.app_config.in_band_termination_attempt_count; - let mut update_status = MulticastUpdateStatusCode::StatusOkMulticastListUpdate; + let mut update_status = MulticastUpdateStatus::OkMulticastListUpdate; if !dst_addresses.contains(&address) { status = uci::Status::Failed; - update_status = MulticastUpdateStatusCode::StatusErrorKeyFetchFail; + update_status = MulticastUpdateStatus::ErrorKeyFetchFail; } else { dst_addresses.retain(|value| *value != address); // If IN_BAND_TERMINATION_ATTEMPT_COUNT is not equal to 0x00, then the diff --git a/src/uci_packets.pdl b/src/uci_packets.pdl index e4403cb..06fd9b0 100644 --- a/src/uci_packets.pdl +++ b/src/uci_packets.pdl @@ -585,15 +585,17 @@ enum ReasonCode : 8 { VENDOR_SPECIFIC_REASON_CODE_2 = 0xFF, } -enum MulticastUpdateStatusCode : 8 { - STATUS_OK_MULTICAST_LIST_UPDATE = 0x00, - STATUS_ERROR_MULTICAST_LIST_FULL = 0x01, - STATUS_ERROR_KEY_FETCH_FAIL = 0x02, - STATUS_ERROR_SUB_SESSION_ID_NOT_FOUND = 0x03, - STATUS_ERROR_SUB_SESSION_KEY_NOT_FOUND = 0x05, - STATUS_ERROR_SUB_SESSION_KEY_NOT_APPLICABLE = 0x06, - STATUS_ERROR_SESSION_KEY_NOT_FOUND = 0x07, - STATUS_ERROR_ADDRESS_ALREADY_PRESENT = 0x08, +/// [UCI] Table 40: Multicast list update status codes +enum MulticastUpdateStatus : 8 { + OK_MULTICAST_LIST_UPDATE = 0x00, + ERROR_MULTICAST_LIST_FULL = 0x01, + ERROR_KEY_FETCH_FAIL = 0x02, + ERROR_SUB_SESSION_ID_NOT_FOUND = 0x03, + ERROR_SUB_SESSION_KEY_NOT_FOUND = 0x04, + ERROR_SUB_SESSION_KEY_NOT_APPLICABLE = 0x05, + ERROR_SESSION_KEY_NOT_FOUND = 0x06, + ERROR_ADDRESS_NOT_FOUND = 0x07, + ERROR_ADDRESS_ALREADY_PRESENT = 0x08, } enum MacAddressIndicator : 8 { @@ -1075,7 +1077,7 @@ test SessionUpdateControllerMulticastListRsp { struct ControleeStatus { mac_address: 8[2], subsession_id: 32, - status: MulticastUpdateStatusCode, + status: MulticastUpdateStatus, } packet SessionUpdateControllerMulticastListNtf : SessionConfigPacket (mt = NOTIFICATION, oid = UPDATE_CONTROLLER_MULTICAST_LIST) { |