summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBhautik Ardeshana <bhautik.ardeshana@nxp.com>2023-06-27 21:21:03 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-06-27 21:21:03 +0000
commit843273989e7c48f5bdfadb2acc3a3ea9d7f4cc3e (patch)
treeb65ff8bf7a4b8976e91d96ce1b4ceab2061ab5eb
parent5e0c22c688cb60ff6190414a8fa356337143e250 (diff)
parent5dd0d35218440a1ab391f566cc95cbc233ccbe8e (diff)
downloaduwb-843273989e7c48f5bdfadb2acc3a3ea9d7f4cc3e.tar.gz
CR490 Implementation: add tx_count to the DATA_TRANSFER_STATUS_NTF am: 5dd0d35218
Original change: https://android-review.googlesource.com/c/platform/external/uwb/+/2606776 Change-Id: Idf8a56785aca06bb62e4af38cfeb2a7d510b7475 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--src/rust/uwb_core/src/session/session_manager.rs1
-rw-r--r--src/rust/uwb_core/src/uci/notification.rs3
-rw-r--r--src/rust/uwb_core/src/uci/uci_manager.rs9
-rw-r--r--src/rust/uwb_uci_packets/uci_packets.pdl7
4 files changed, 17 insertions, 3 deletions
diff --git a/src/rust/uwb_core/src/session/session_manager.rs b/src/rust/uwb_core/src/session/session_manager.rs
index 104d3f3..e49dd9c 100644
--- a/src/rust/uwb_core/src/session/session_manager.rs
+++ b/src/rust/uwb_core/src/session/session_manager.rs
@@ -376,6 +376,7 @@ impl<T: UciManager> SessionManagerActor<T> {
session_token,
uci_sequence_number: _,
status: _,
+ tx_count: _,
} => {
match self.active_sessions.get(&session_token) {
Some(_) => {
diff --git a/src/rust/uwb_core/src/uci/notification.rs b/src/rust/uwb_core/src/uci/notification.rs
index 2e955f6..eab8233 100644
--- a/src/rust/uwb_core/src/uci/notification.rs
+++ b/src/rust/uwb_core/src/uci/notification.rs
@@ -85,6 +85,8 @@ pub enum SessionNotification {
uci_sequence_number: u8,
/// Data Transfer Status Code
status: DataTransferNtfStatusCode,
+ /// Transmission count
+ tx_count: u8,
},
}
@@ -271,6 +273,7 @@ impl TryFrom<uwb_uci_packets::SessionControlNotification> for SessionNotificatio
session_token: evt.get_session_token(),
uci_sequence_number: evt.get_uci_sequence_number(),
status: evt.get_status(),
+ tx_count: evt.get_tx_count(),
})
}
_ => {
diff --git a/src/rust/uwb_core/src/uci/uci_manager.rs b/src/rust/uwb_core/src/uci/uci_manager.rs
index f2563eb..24c0737 100644
--- a/src/rust/uwb_core/src/uci/uci_manager.rs
+++ b/src/rust/uwb_core/src/uci/uci_manager.rs
@@ -1179,6 +1179,7 @@ impl<T: UciHal, U: UciLogger> UciManagerActor<T, U> {
session_token: _,
uci_sequence_number: _,
status: _,
+ tx_count: _,
} => {
// Reset the UciDataSnd Retryer since we received a DataTransferStatusNtf.
let _ = self.uci_data_snd_retryer.take();
@@ -1233,10 +1234,12 @@ impl<T: UciHal, U: UciLogger> UciManagerActor<T, U> {
session_token,
uci_sequence_number,
status,
+ tx_count,
} => Ok(SessionNotification::DataTransferStatus {
session_token: self.get_session_id(&session_token).await?,
uci_sequence_number,
status,
+ tx_count,
}),
SessionNotification::DataCredit { session_token, credit_availability } => {
Ok(SessionNotification::DataCredit {
@@ -2760,6 +2763,7 @@ mod tests {
0x01, 0x02, 0x03, // AppData
];
let status = DataTransferNtfStatusCode::UciDataTransferStatusRepetitionOk;
+ let tx_count = 0x00;
let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_active(
|mut hal| async move {
@@ -2776,6 +2780,7 @@ mod tests {
// TODO(b/282230468): Remove the u16-to-u8 conversion once spec is updated.
uci_sequence_number: uci_sequence_number.try_into().unwrap(),
status,
+ tx_count,
},
));
hal.expected_send_packet(data_packet_snd, ntfs, Ok(()));
@@ -2819,6 +2824,7 @@ mod tests {
];
let mut expected_data_snd_payload_fragment_2 = Vec::new();
let status = DataTransferNtfStatusCode::UciDataTransferStatusRepetitionOk;
+ let tx_count = 0x00;
// Setup the app data for both the Tx data packet and expected packet fragments.
let app_data_len_fragment_1 = 255 - expected_data_snd_payload_fragment_1.len();
@@ -2865,6 +2871,7 @@ mod tests {
// TODO(b/282230468): Remove the u16-to-u8 conversion once spec is updated.
uci_sequence_number: uci_sequence_number.try_into().unwrap(),
status,
+ tx_count,
},
));
hal.expected_send_packet(data_packet_snd_fragment_2, ntfs, Ok(()));
@@ -2892,6 +2899,7 @@ mod tests {
let oid = 0x0;
let session_id = 0x5;
let session_token = 0x5;
+ let tx_count = 0x01;
let dest_mac_address = vec![0xa0, 0xb0, 0xc0, 0xd0, 0xa1, 0xb1, 0xc1, 0xd1];
let uci_sequence_number: u16 = 0xa;
let app_data = vec![0x01, 0x02, 0x03];
@@ -2927,6 +2935,7 @@ mod tests {
// TODO(b/282230468): Remove the u16-to-u8 conversion once spec is updated.
uci_sequence_number: uci_sequence_number.try_into().unwrap(),
status,
+ tx_count,
},
));
hal.expected_send_packet(data_packet_snd, ntfs, Ok(()));
diff --git a/src/rust/uwb_uci_packets/uci_packets.pdl b/src/rust/uwb_uci_packets/uci_packets.pdl
index cca8612..12bdb6c 100644
--- a/src/rust/uwb_uci_packets/uci_packets.pdl
+++ b/src/rust/uwb_uci_packets/uci_packets.pdl
@@ -248,7 +248,8 @@ enum AppConfigTlvType : 8 {
RFU_APP_CFG_TLV_TYPE_RANGE_1 = 0x3D..0x44,
SESSION_KEY = 0x45,
SUBSESSION_KEY = 0x46,
- RFU_APP_CFG_TLV_TYPE_RANGE_2 = 0x47..0x9F,
+ SESSION_DATA_TRANSFER_STATUS_NTF_CONFIG = 0x47,
+ RFU_APP_CFG_TLV_TYPE_RANGE_2 = 0x48..0x9F,
VENDOR_SPECIFIC_APP_CFG_TLV_TYPE_RANGE_1 = 0xA0..0xDF {
// CCC specific
@@ -974,11 +975,11 @@ packet DataTransferStatusNtf : SessionControlNotification (opcode = 0x05) { // S
session_token: 32, // Session ID or Session Handle (based on UWBS version)
uci_sequence_number: 8,
status: DataTransferNtfStatusCode,
- // TODO(b/269779288): Add the tx_count field for implementing the DATA_REPETITION added in CR490.
+ tx_count: 8,
}
test DataTransferStatusNtf {
- "\x62\x05\x00\x06\x00\x00\x00\x00\x00\x00\x01\x01\x00",
+ "\x62\x05\x00\x06\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00",
}
packet SessionQueryMaxDataSizeCmd : SessionConfigCommand (opcode = 0xB) { //QUERY_MAX_DATA_SIZE