PDU header improvements
This commit is contained in:
@@ -38,6 +38,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- PUS version raw representation is `u4` now.
|
- PUS version raw representation is `u4` now.
|
||||||
- SC time reference status representation is `u4` now.
|
- SC time reference status representation is `u4` now.
|
||||||
- Renamed `ptype` to `packet_type`
|
- Renamed `ptype` to `packet_type`
|
||||||
|
- Renamed `PduHeader::new_no_file_data` to `PduHeader::new_for_file_directive`
|
||||||
|
- Renamd `FinishedPduCreator::new_generic` to `new` and `new_default` to `new_no_error`
|
||||||
|
|
||||||
## Removed
|
## Removed
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
cfdp::{ConditionCode, CrcFlag, Direction, TransactionStatus},
|
cfdp::{pdu::CommonPduConfig, ConditionCode, CrcFlag, Direction, TransactionStatus},
|
||||||
ByteConversionError,
|
ByteConversionError,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_basic() {
|
fn test_basic() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new(
|
let ack_pdu = AckPdu::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
FileDirectiveType::FinishedPdu,
|
FileDirectiveType::FinishedPdu,
|
||||||
@@ -264,7 +264,7 @@ mod tests {
|
|||||||
transaction_status: TransactionStatus,
|
transaction_status: TransactionStatus,
|
||||||
) {
|
) {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new_for_finished_pdu(pdu_header, condition_code, transaction_status);
|
let ack_pdu = AckPdu::new_for_finished_pdu(pdu_header, condition_code, transaction_status);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let res = ack_pdu.write_to_bytes(&mut buf);
|
let res = ack_pdu.write_to_bytes(&mut buf);
|
||||||
@@ -289,7 +289,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_serialization_too_small() {
|
fn test_serialization_too_small() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new(
|
let ack_pdu = AckPdu::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
FileDirectiveType::FinishedPdu,
|
FileDirectiveType::FinishedPdu,
|
||||||
@@ -316,7 +316,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_invalid_directive_code_of_acked_pdu() {
|
fn test_invalid_directive_code_of_acked_pdu() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
AckPdu::new(
|
AckPdu::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
@@ -332,7 +332,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_deserialization() {
|
fn test_deserialization() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new_for_finished_pdu(
|
let ack_pdu = AckPdu::new_for_finished_pdu(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NoError,
|
ConditionCode::NoError,
|
||||||
@@ -347,7 +347,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_with_crc() {
|
fn test_with_crc() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new_for_finished_pdu(
|
let ack_pdu = AckPdu::new_for_finished_pdu(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NoError,
|
ConditionCode::NoError,
|
||||||
@@ -364,7 +364,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_for_eof_pdu() {
|
fn test_for_eof_pdu() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new_for_eof_pdu(
|
let ack_pdu = AckPdu::new_for_eof_pdu(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NoError,
|
ConditionCode::NoError,
|
||||||
@@ -381,7 +381,7 @@ mod tests {
|
|||||||
#[cfg(feature = "serde")]
|
#[cfg(feature = "serde")]
|
||||||
fn test_ack_pdu_serialization() {
|
fn test_ack_pdu_serialization() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let ack_pdu = AckPdu::new_for_eof_pdu(
|
let ack_pdu = AckPdu::new_for_eof_pdu(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NoError,
|
ConditionCode::NoError,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::cfdp::pdu::{
|
use crate::cfdp::pdu::{
|
||||||
add_pdu_crc, generic_length_checks_pdu_deserialization, read_fss_field, write_fss_field,
|
add_pdu_crc, generic_length_checks_pdu_deserialization, read_fss_field, write_fss_field,
|
||||||
FileDirectiveType, PduError, PduHeader,
|
CommonPduConfig, FileDirectiveType, PduError, PduHeader,
|
||||||
};
|
};
|
||||||
use crate::cfdp::tlv::{EntityIdTlv, WritableTlv};
|
use crate::cfdp::tlv::{EntityIdTlv, WritableTlv};
|
||||||
use crate::cfdp::{ConditionCode, CrcFlag, Direction, LargeFileFlag};
|
use crate::cfdp::{ConditionCode, CrcFlag, Direction, LargeFileFlag};
|
||||||
@@ -235,7 +235,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_basic() {
|
fn test_basic() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
assert_eq!(eof_pdu.len_written(), pdu_header.header_len() + 2 + 4 + 4);
|
assert_eq!(eof_pdu.len_written(), pdu_header.header_len() + 2 + 4 + 4);
|
||||||
verify_state_no_error_no_crc(&eof_pdu, LargeFileFlag::Normal);
|
verify_state_no_error_no_crc(&eof_pdu, LargeFileFlag::Normal);
|
||||||
@@ -244,7 +244,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_serialization() {
|
fn test_serialization() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let res = eof_pdu.write_to_bytes(&mut buf);
|
let res = eof_pdu.write_to_bytes(&mut buf);
|
||||||
@@ -276,7 +276,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_deserialization() {
|
fn test_deserialization() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
eof_pdu.write_to_bytes(&mut buf).unwrap();
|
eof_pdu.write_to_bytes(&mut buf).unwrap();
|
||||||
@@ -291,7 +291,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_write_to_vec() {
|
fn test_write_to_vec() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let written = eof_pdu.write_to_bytes(&mut buf).unwrap();
|
let written = eof_pdu.write_to_bytes(&mut buf).unwrap();
|
||||||
@@ -302,7 +302,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_with_crc() {
|
fn test_with_crc() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let written = eof_pdu.write_to_bytes(&mut buf).unwrap();
|
let written = eof_pdu.write_to_bytes(&mut buf).unwrap();
|
||||||
@@ -322,7 +322,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_with_large_file_flag() {
|
fn test_with_large_file_flag() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
verify_state_no_error_no_crc(&eof_pdu, LargeFileFlag::Large);
|
verify_state_no_error_no_crc(&eof_pdu, LargeFileFlag::Large);
|
||||||
assert_eq!(eof_pdu.len_written(), pdu_header.header_len() + 2 + 8 + 4);
|
assert_eq!(eof_pdu.len_written(), pdu_header.header_len() + 2 + 8 + 4);
|
||||||
@@ -332,14 +332,14 @@ mod tests {
|
|||||||
#[cfg(feature = "serde")]
|
#[cfg(feature = "serde")]
|
||||||
fn test_eof_serde() {
|
fn test_eof_serde() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||||
generic_serde_test(eof_pdu);
|
generic_serde_test(eof_pdu);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generic_test_with_fault_location_and_error(crc: CrcFlag) {
|
fn generic_test_with_fault_location_and_error(crc: CrcFlag) {
|
||||||
let pdu_conf = common_pdu_conf(crc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(crc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let eof_pdu = EofPdu::new(
|
let eof_pdu = EofPdu::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::FileChecksumFailure,
|
ConditionCode::FileChecksumFailure,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use crate::cfdp::pdu::{
|
use crate::cfdp::pdu::{
|
||||||
add_pdu_crc, generic_length_checks_pdu_deserialization, FileDirectiveType, PduError, PduHeader,
|
add_pdu_crc, generic_length_checks_pdu_deserialization, CommonPduConfig, FileDirectiveType,
|
||||||
|
PduError, PduHeader,
|
||||||
};
|
};
|
||||||
use crate::cfdp::tlv::{
|
use crate::cfdp::tlv::{
|
||||||
EntityIdTlv, FilestoreResponseTlv, GenericTlv, Tlv, TlvType, TlvTypeField, WritableTlv,
|
EntityIdTlv, FilestoreResponseTlv, GenericTlv, Tlv, TlvType, TlvTypeField, WritableTlv,
|
||||||
@@ -50,12 +51,12 @@ pub struct FinishedPduCreator<'fs_responses> {
|
|||||||
|
|
||||||
impl<'fs_responses> FinishedPduCreator<'fs_responses> {
|
impl<'fs_responses> FinishedPduCreator<'fs_responses> {
|
||||||
/// Default finished PDU: No error (no fault location field) and no filestore responses.
|
/// Default finished PDU: No error (no fault location field) and no filestore responses.
|
||||||
pub fn new_default(
|
pub fn new_no_error(
|
||||||
pdu_header: PduHeader,
|
pdu_header: PduHeader,
|
||||||
delivery_code: DeliveryCode,
|
delivery_code: DeliveryCode,
|
||||||
file_status: FileStatus,
|
file_status: FileStatus,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self::new_generic(
|
Self::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NoError,
|
ConditionCode::NoError,
|
||||||
delivery_code,
|
delivery_code,
|
||||||
@@ -72,7 +73,7 @@ impl<'fs_responses> FinishedPduCreator<'fs_responses> {
|
|||||||
file_status: FileStatus,
|
file_status: FileStatus,
|
||||||
fault_location: EntityIdTlv,
|
fault_location: EntityIdTlv,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self::new_generic(
|
Self::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
condition_code,
|
condition_code,
|
||||||
delivery_code,
|
delivery_code,
|
||||||
@@ -82,7 +83,7 @@ impl<'fs_responses> FinishedPduCreator<'fs_responses> {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_generic(
|
pub fn new(
|
||||||
mut pdu_header: PduHeader,
|
mut pdu_header: PduHeader,
|
||||||
condition_code: ConditionCode,
|
condition_code: ConditionCode,
|
||||||
delivery_code: DeliveryCode,
|
delivery_code: DeliveryCode,
|
||||||
@@ -440,8 +441,8 @@ mod tests {
|
|||||||
delivery_code: DeliveryCode,
|
delivery_code: DeliveryCode,
|
||||||
file_status: FileStatus,
|
file_status: FileStatus,
|
||||||
) -> FinishedPduCreator<'static> {
|
) -> FinishedPduCreator<'static> {
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_conf(crc_flag, fss), 0);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_conf(crc_flag, fss), 0);
|
||||||
FinishedPduCreator::new_default(pdu_header, delivery_code, file_status)
|
FinishedPduCreator::new_no_error(pdu_header, delivery_code, file_status)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -611,8 +612,10 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_with_fault_location() {
|
fn test_with_fault_location() {
|
||||||
let pdu_header =
|
let pdu_header = PduHeader::new_for_file_directive(
|
||||||
PduHeader::new_no_file_data(common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal), 0);
|
common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal),
|
||||||
|
0,
|
||||||
|
);
|
||||||
let finished_pdu = FinishedPduCreator::new_with_error(
|
let finished_pdu = FinishedPduCreator::new_with_error(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NakLimitReached,
|
ConditionCode::NakLimitReached,
|
||||||
@@ -633,8 +636,10 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_deserialization_with_fault_location() {
|
fn test_deserialization_with_fault_location() {
|
||||||
let pdu_header =
|
let pdu_header = PduHeader::new_for_file_directive(
|
||||||
PduHeader::new_no_file_data(common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal), 0);
|
common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal),
|
||||||
|
0,
|
||||||
|
);
|
||||||
let entity_id_tlv = EntityIdTlv::new(TEST_DEST_ID.into());
|
let entity_id_tlv = EntityIdTlv::new(TEST_DEST_ID.into());
|
||||||
let finished_pdu = FinishedPduCreator::new_with_error(
|
let finished_pdu = FinishedPduCreator::new_with_error(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
@@ -669,9 +674,11 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
let fs_responses = &[fs_response_0, fs_response_1];
|
let fs_responses = &[fs_response_0, fs_response_1];
|
||||||
|
|
||||||
let pdu_header =
|
let pdu_header = PduHeader::new_for_file_directive(
|
||||||
PduHeader::new_no_file_data(common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal), 0);
|
common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal),
|
||||||
let finished_pdu = FinishedPduCreator::new_generic(
|
0,
|
||||||
|
);
|
||||||
|
let finished_pdu = FinishedPduCreator::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NakLimitReached,
|
ConditionCode::NakLimitReached,
|
||||||
DeliveryCode::Incomplete,
|
DeliveryCode::Incomplete,
|
||||||
@@ -704,9 +711,11 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
let fs_responses = &[fs_response_0, fs_response_1];
|
let fs_responses = &[fs_response_0, fs_response_1];
|
||||||
|
|
||||||
let pdu_header =
|
let pdu_header = PduHeader::new_for_file_directive(
|
||||||
PduHeader::new_no_file_data(common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal), 0);
|
common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal),
|
||||||
let finished_pdu = FinishedPduCreator::new_generic(
|
0,
|
||||||
|
);
|
||||||
|
let finished_pdu = FinishedPduCreator::new(
|
||||||
pdu_header,
|
pdu_header,
|
||||||
ConditionCode::NakLimitReached,
|
ConditionCode::NakLimitReached,
|
||||||
DeliveryCode::Incomplete,
|
DeliveryCode::Incomplete,
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ pub mod tests {
|
|||||||
Lv<'static>,
|
Lv<'static>,
|
||||||
MetadataPduCreator<'static, 'static, '_>,
|
MetadataPduCreator<'static, 'static, '_>,
|
||||||
) {
|
) {
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_conf(crc_flag, fss), 0);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_conf(crc_flag, fss), 0);
|
||||||
let metadata_params = MetadataGenericParams::new(closure_requested, checksum_type, 0x1010);
|
let metadata_params = MetadataGenericParams::new(closure_requested, checksum_type, 0x1010);
|
||||||
let src_filename = Lv::new_from_str(SRC_FILENAME).expect("Generating string LV failed");
|
let src_filename = Lv::new_from_str(SRC_FILENAME).expect("Generating string LV failed");
|
||||||
let dest_filename =
|
let dest_filename =
|
||||||
|
|||||||
@@ -350,8 +350,9 @@ impl PduHeader {
|
|||||||
SegmentationControl::NoRecordBoundaryPreservation,
|
SegmentationControl::NoRecordBoundaryPreservation,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_no_file_data(pdu_conf: CommonPduConfig, pdu_datafield_len: u16) -> Self {
|
pub fn new_for_file_directive(pdu_conf: CommonPduConfig, pdu_datafield_len: u16) -> Self {
|
||||||
Self::new_generic(
|
Self::new_generic(
|
||||||
PduType::FileDirective,
|
PduType::FileDirective,
|
||||||
pdu_conf,
|
pdu_conf,
|
||||||
@@ -361,6 +362,17 @@ impl PduHeader {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn from_pdu_conf_for_file_directive(pdu_conf: CommonPduConfig) -> Self {
|
||||||
|
Self::new_generic(
|
||||||
|
PduType::FileDirective,
|
||||||
|
pdu_conf,
|
||||||
|
0,
|
||||||
|
SegmentMetadataFlag::NotPresent,
|
||||||
|
SegmentationControl::NoRecordBoundaryPreservation,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_generic(
|
pub fn new_generic(
|
||||||
pdu_type: PduType,
|
pdu_type: PduType,
|
||||||
@@ -746,7 +758,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
assert_eq!(pdu_header.pdu_type(), PduType::FileDirective);
|
assert_eq!(pdu_header.pdu_type(), PduType::FileDirective);
|
||||||
let common_conf_ref = pdu_header.common_pdu_conf();
|
let common_conf_ref = pdu_header.common_pdu_conf();
|
||||||
assert_eq!(*common_conf_ref, common_pdu_cfg);
|
assert_eq!(*common_conf_ref, common_pdu_cfg);
|
||||||
@@ -812,7 +824,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
let mut buf: [u8; 7] = [0; 7];
|
let mut buf: [u8; 7] = [0; 7];
|
||||||
let res = pdu_header.write_to_bytes(&mut buf);
|
let res = pdu_header.write_to_bytes(&mut buf);
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
@@ -829,7 +841,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
let mut buf: [u8; 7] = [0; 7];
|
let mut buf: [u8; 7] = [0; 7];
|
||||||
let res = pdu_header.write_to_bytes(&mut buf);
|
let res = pdu_header.write_to_bytes(&mut buf);
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
@@ -902,7 +914,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
let mut buf: [u8; 7] = [0; 7];
|
let mut buf: [u8; 7] = [0; 7];
|
||||||
let res = pdu_header.write_to_bytes(&mut buf);
|
let res = pdu_header.write_to_bytes(&mut buf);
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
@@ -947,7 +959,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
let mut buf: [u8; 7] = [0; 7];
|
let mut buf: [u8; 7] = [0; 7];
|
||||||
let res = pdu_header.write_to_bytes(&mut buf);
|
let res = pdu_header.write_to_bytes(&mut buf);
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
@@ -1030,7 +1042,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
let mut buf: [u8; 7] = [0; 7];
|
let mut buf: [u8; 7] = [0; 7];
|
||||||
let res = pdu_header.write_to_bytes(&mut buf);
|
let res = pdu_header.write_to_bytes(&mut buf);
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
@@ -1054,7 +1066,7 @@ mod tests {
|
|||||||
let transaction_id = UnsignedByteFieldU8::new(3);
|
let transaction_id = UnsignedByteFieldU8::new(3);
|
||||||
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
let common_pdu_cfg = CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_id)
|
||||||
.expect("common config creation failed");
|
.expect("common config creation failed");
|
||||||
let pdu_header = PduHeader::new_no_file_data(common_pdu_cfg, 5);
|
let pdu_header = PduHeader::new_for_file_directive(common_pdu_cfg, 5);
|
||||||
let mut buf: [u8; 7] = [0; 7];
|
let mut buf: [u8; 7] = [0; 7];
|
||||||
let res = pdu_header.write_to_bytes(&mut buf);
|
let res = pdu_header.write_to_bytes(&mut buf);
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
@@ -1086,4 +1098,12 @@ mod tests {
|
|||||||
let common_pdu_cfg_1 = common_pdu_cfg_0;
|
let common_pdu_cfg_1 = common_pdu_cfg_0;
|
||||||
assert_eq!(common_pdu_cfg_0, common_pdu_cfg_1);
|
assert_eq!(common_pdu_cfg_0, common_pdu_cfg_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ctor_from_pdu_conf() {
|
||||||
|
assert_eq!(
|
||||||
|
PduHeader::from_pdu_conf_for_file_directive(CommonPduConfig::default()),
|
||||||
|
PduHeader::new_for_file_directive(CommonPduConfig::default(), 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -752,7 +752,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_basic_creator() {
|
fn test_basic_creator() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 0, 0)
|
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 0, 0)
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
assert_eq!(nak_pdu.start_of_scope(), 0);
|
assert_eq!(nak_pdu.start_of_scope(), 0);
|
||||||
@@ -765,7 +765,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_serialization_empty() {
|
fn test_serialization_empty() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
assert_eq!(nak_pdu.start_of_scope(), 100);
|
assert_eq!(nak_pdu.start_of_scope(), 100);
|
||||||
@@ -793,7 +793,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_serialization_two_segments() {
|
fn test_serialization_two_segments() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu =
|
let nak_pdu =
|
||||||
NakPduCreator::new_normal_file_size(pdu_header, 100, 300, &[(0, 0), (32, 64)])
|
NakPduCreator::new_normal_file_size(pdu_header, 100, 300, &[(0, 0), (32, 64)])
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
@@ -836,7 +836,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_deserialization_empty() {
|
fn test_deserialization_empty() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
@@ -851,7 +851,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_deserialization_large_segments() {
|
fn test_deserialization_large_segments() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu =
|
let nak_pdu =
|
||||||
NakPduCreator::new_large_file_size(pdu_header, 100, 300, &[(50, 100), (200, 300)])
|
NakPduCreator::new_large_file_size(pdu_header, 100, 300, &[(50, 100), (200, 300)])
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
@@ -888,7 +888,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_deserialization_normal_segments() {
|
fn test_deserialization_normal_segments() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu =
|
let nak_pdu =
|
||||||
NakPduCreator::new_normal_file_size(pdu_header, 100, 300, &[(50, 100), (200, 300)])
|
NakPduCreator::new_normal_file_size(pdu_header, 100, 300, &[(50, 100), (200, 300)])
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
@@ -925,7 +925,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_empty_is_empty() {
|
fn test_empty_is_empty() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu_0 = NakPduCreator::new_normal_file_size(pdu_header, 100, 300, &[])
|
let nak_pdu_0 = NakPduCreator::new_normal_file_size(pdu_header, 100, 300, &[])
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
let nak_pdu_1 = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
let nak_pdu_1 = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
||||||
@@ -938,7 +938,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_new_generic_invalid_input() {
|
fn test_new_generic_invalid_input() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let u32_list = SegmentRequests::U32Pairs(&[(0, 50), (50, 100)]);
|
let u32_list = SegmentRequests::U32Pairs(&[(0, 50), (50, 100)]);
|
||||||
//let error = NakPduCreator::new_generic(pdu_header, 100, 300, Some(u32_list));
|
//let error = NakPduCreator::new_generic(pdu_header, 100, 300, Some(u32_list));
|
||||||
let error = NakPduCreator::new(
|
let error = NakPduCreator::new(
|
||||||
@@ -958,7 +958,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_target_buf_too_small() {
|
fn test_target_buf_too_small() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 100, 300)
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
assert_eq!(nak_pdu.start_of_scope(), 100);
|
assert_eq!(nak_pdu.start_of_scope(), 100);
|
||||||
@@ -982,7 +982,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_with_crc() {
|
fn test_with_crc() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 0, 0)
|
let nak_pdu = NakPduCreator::new_no_segment_requests(pdu_header, 0, 0)
|
||||||
.expect("creating NAK PDU creator failed");
|
.expect("creating NAK PDU creator failed");
|
||||||
let mut nak_vec = nak_pdu.to_vec().expect("writing NAK to vector failed");
|
let mut nak_vec = nak_pdu.to_vec().expect("writing NAK to vector failed");
|
||||||
@@ -1005,7 +1005,7 @@ mod tests {
|
|||||||
fn test_with_reserved_lost_segment_buf_no_segments_normal_file_0() {
|
fn test_with_reserved_lost_segment_buf_no_segments_normal_file_0() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
||||||
assert_eq!(nak_pdu.len_written(), pdu_header.header_len() + 9);
|
assert_eq!(nak_pdu.len_written(), pdu_header.header_len() + 9);
|
||||||
@@ -1032,7 +1032,7 @@ mod tests {
|
|||||||
fn test_with_reserved_lost_segment_buf_no_segments_normal_file_1() {
|
fn test_with_reserved_lost_segment_buf_no_segments_normal_file_1() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Normal);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
||||||
assert!(nak_pdu.segment_request_buffer().is_empty());
|
assert!(nak_pdu.segment_request_buffer().is_empty());
|
||||||
@@ -1061,7 +1061,7 @@ mod tests {
|
|||||||
fn test_with_reserved_lost_segment_buf_no_segments_large_file_0() {
|
fn test_with_reserved_lost_segment_buf_no_segments_large_file_0() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
||||||
assert_eq!(nak_pdu.len_written(), pdu_header.header_len() + 1 + 16);
|
assert_eq!(nak_pdu.len_written(), pdu_header.header_len() + 1 + 16);
|
||||||
@@ -1088,7 +1088,7 @@ mod tests {
|
|||||||
fn test_with_reserved_lost_segment_buf_invalid_scope() {
|
fn test_with_reserved_lost_segment_buf_invalid_scope() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 2).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 2).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@@ -1103,7 +1103,7 @@ mod tests {
|
|||||||
fn test_with_reserved_lost_segment_buf_no_segments_large_file_1() {
|
fn test_with_reserved_lost_segment_buf_no_segments_large_file_1() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, 0).unwrap();
|
||||||
assert!(nak_pdu.segment_request_buffer().is_empty());
|
assert!(nak_pdu.segment_request_buffer().is_empty());
|
||||||
@@ -1134,7 +1134,7 @@ mod tests {
|
|||||||
let num_segments = 2;
|
let num_segments = 2;
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, num_segments).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, num_segments).unwrap();
|
||||||
nak_pdu
|
nak_pdu
|
||||||
@@ -1187,7 +1187,7 @@ mod tests {
|
|||||||
let num_segments = 2;
|
let num_segments = 2;
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
||||||
let mut buf: [u8; 128] = [0; 128];
|
let mut buf: [u8; 128] = [0; 128];
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
let mut nak_pdu =
|
let mut nak_pdu =
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, num_segments).unwrap();
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf, pdu_header, num_segments).unwrap();
|
||||||
nak_pdu
|
nak_pdu
|
||||||
@@ -1242,7 +1242,7 @@ mod tests {
|
|||||||
fn test_reserved_lost_segment_finish_buf_too_small() {
|
fn test_reserved_lost_segment_finish_buf_too_small() {
|
||||||
let mut buf: [u8; 64] = [0; 64];
|
let mut buf: [u8; 64] = [0; 64];
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf[0..10], pdu_header, 0).unwrap_err(),
|
NakPduCreatorWithReservedSeqReqsBuf::new(&mut buf[0..10], pdu_header, 0).unwrap_err(),
|
||||||
ByteConversionError::ToSliceTooSmall {
|
ByteConversionError::ToSliceTooSmall {
|
||||||
@@ -1255,7 +1255,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_max_segment_req_calculator() {
|
fn test_max_segment_req_calculator() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
|
|
||||||
// 7 byte header, 1 byte directive, 8 bytes start and end of segment, leaves 48 bytes for
|
// 7 byte header, 1 byte directive, 8 bytes start and end of segment, leaves 48 bytes for
|
||||||
// 6 segment requests (8 bytes each)
|
// 6 segment requests (8 bytes each)
|
||||||
@@ -1291,7 +1291,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_max_segment_req_calculator_large_file() {
|
fn test_max_segment_req_calculator_large_file() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Large);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
|
|
||||||
// 7 byte header, 1 byte directive, 16 bytes start and end of segment, leaves 48 bytes for
|
// 7 byte header, 1 byte directive, 16 bytes start and end of segment, leaves 48 bytes for
|
||||||
// 3 large segment requests (16 bytes each)
|
// 3 large segment requests (16 bytes each)
|
||||||
@@ -1327,7 +1327,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_max_segment_req_calculator_large_file_with_crc() {
|
fn test_max_segment_req_calculator_large_file_with_crc() {
|
||||||
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Large);
|
let pdu_conf = common_pdu_conf(CrcFlag::WithCrc, LargeFileFlag::Large);
|
||||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
let pdu_header = PduHeader::new_for_file_directive(pdu_conf, 0);
|
||||||
|
|
||||||
// 7 byte header, 1 byte directive, 16 bytes start and end of segment, leaves 48 bytes for
|
// 7 byte header, 1 byte directive, 16 bytes start and end of segment, leaves 48 bytes for
|
||||||
// 3 large segment requests (16 bytes each)
|
// 3 large segment requests (16 bytes each)
|
||||||
|
|||||||
Reference in New Issue
Block a user