aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Chataing <henrichataing@google.com>2024-03-20 11:29:18 -0700
committerhchataing <104974782+hchataing@users.noreply.github.com>2024-03-27 14:28:24 -0700
commit45c2327092a065d4e8c675e14e62dfbfe99fd47c (patch)
tree4d0da38c531baf2eb60225f07d84436b3f767dfb
parent0e22b87562e0848046fe81dbec558dd792e6903b (diff)
downloadpica-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.rs11
-rw-r--r--src/uci_packets.pdl22
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) {