Merge pull request 'Bump MSRV' (#216) from bump-msrv into main

Reviewed-on: #216
This commit was merged in pull request #216.
This commit is contained in:
muellerr committed 2026-07-14 11:55:11 +02:00
commit 0180918cbb
26 files changed
+145 -145

No files matched your search

+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.83 - uses: dtolnay/rust-toolchain@1.85
- run: cargo check --release - run: cargo check --release
cross-check: cross-check:
+3
View File
@@ -10,6 +10,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
# [v0.18.0] 2026-07-14 # [v0.18.0] 2026-07-14
- Bumped Rust version to 2024
- Bumped MSRV to 1.85
## Changed ## Changed
- Added distinction between `CcsdsPacketReader::user_data` and `CcsdsPacketReader::packet_data`. - Added distinction between `CcsdsPacketReader::user_data` and `CcsdsPacketReader::packet_data`.
Generated
+1 -1
View File
@@ -526,7 +526,7 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
[[package]] [[package]]
name = "spacepackets" name = "spacepackets"
version = "0.17.0" version = "0.18.0"
dependencies = [ dependencies = [
"arbitrary-int", "arbitrary-int",
"bitbybit", "bitbybit",
+3 -3
View File
@@ -1,8 +1,8 @@
[package] [package]
name = "spacepackets" name = "spacepackets"
version = "0.17.0" version = "0.18.0"
edition = "2021" edition = "2024"
rust-version = "1.83" rust-version = "1.85"
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"] authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
description = "Generic implementations for various CCSDS and ECSS packet standards" description = "Generic implementations for various CCSDS and ECSS packet standards"
homepage = "https://egit.irs.uni-stuttgart.de/rust/spacepackets" homepage = "https://egit.irs.uni-stuttgart.de/rust/spacepackets"
+4 -4
View File
@@ -1,12 +1,12 @@
//! # Acknowledgement (ACK) PDU packet implementation. //! # Acknowledgement (ACK) PDU packet implementation.
use crate::{ use crate::{
cfdp::{ConditionCode, CrcFlag, Direction, TransactionStatus},
ByteConversionError, ByteConversionError,
cfdp::{ConditionCode, CrcFlag, Direction, TransactionStatus},
}; };
use super::{ use super::{
add_pdu_crc, generic_length_checks_pdu_deserialization, CfdpPdu, FileDirectiveType, PduError, CfdpPdu, FileDirectiveType, PduError, PduHeader, WritablePduPacket, add_pdu_crc,
PduHeader, WritablePduPacket, generic_length_checks_pdu_deserialization,
}; };
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -228,8 +228,8 @@ impl WritablePduPacket for AckPdu {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::cfdp::{ use crate::cfdp::{
pdu::tests::{common_pdu_conf, verify_raw_header, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID},
LargeFileFlag, PduType, TransmissionMode, LargeFileFlag, PduType, TransmissionMode,
pdu::tests::{TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, common_pdu_conf, verify_raw_header},
}; };
use super::*; use super::*;
+4 -4
View File
@@ -1,11 +1,11 @@
//! # End-of-File (EOF) PDU packet implementation. //! # End-of-File (EOF) PDU packet implementation.
use crate::ByteConversionError;
use crate::cfdp::pdu::{ use crate::cfdp::pdu::{
add_pdu_crc, generic_length_checks_pdu_deserialization, read_fss_field, write_fss_field, FileDirectiveType, PduError, PduHeader, add_pdu_crc, generic_length_checks_pdu_deserialization,
FileDirectiveType, PduError, PduHeader, read_fss_field, write_fss_field,
}; };
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};
use crate::ByteConversionError;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -205,7 +205,7 @@ impl WritablePduPacket for EofPdu {
mod tests { mod tests {
use super::*; use super::*;
use crate::cfdp::pdu::tests::{ use crate::cfdp::pdu::tests::{
common_pdu_conf, verify_raw_header, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, common_pdu_conf, verify_raw_header,
}; };
use crate::cfdp::pdu::{FileDirectiveType, PduHeader}; use crate::cfdp::pdu::{FileDirectiveType, PduHeader};
use crate::cfdp::{ConditionCode, CrcFlag, LargeFileFlag, PduType, TransmissionMode}; use crate::cfdp::{ConditionCode, CrcFlag, LargeFileFlag, PduType, TransmissionMode};
+3 -3
View File
@@ -1,10 +1,10 @@
//! # File Data PDU packet implementation //! # File Data PDU packet implementation
use crate::ByteConversionError;
use crate::cfdp::pdu::{ use crate::cfdp::pdu::{
add_pdu_crc, generic_length_checks_pdu_deserialization, read_fss_field, write_fss_field, PduError, PduHeader, add_pdu_crc, generic_length_checks_pdu_deserialization, read_fss_field,
PduError, PduHeader, write_fss_field,
}; };
use crate::cfdp::{CrcFlag, LargeFileFlag, PduType, SegmentMetadataFlag}; use crate::cfdp::{CrcFlag, LargeFileFlag, PduType, SegmentMetadataFlag};
use crate::ByteConversionError;
use num_enum::{IntoPrimitive, TryFromPrimitive}; use num_enum::{IntoPrimitive, TryFromPrimitive};
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
+3 -3
View File
@@ -1,12 +1,12 @@
//! # Finished PDU packet implementation. //! # Finished PDU packet implementation.
use crate::ByteConversionError;
use crate::cfdp::pdu::{ use crate::cfdp::pdu::{
add_pdu_crc, generic_length_checks_pdu_deserialization, FileDirectiveType, PduError, PduHeader, FileDirectiveType, PduError, PduHeader, add_pdu_crc, generic_length_checks_pdu_deserialization,
}; };
use crate::cfdp::tlv::{ use crate::cfdp::tlv::{
EntityIdTlv, FilestoreResponseTlv, GenericTlv, Tlv, TlvType, TlvTypeField, WritableTlv, EntityIdTlv, FilestoreResponseTlv, GenericTlv, Tlv, TlvType, TlvTypeField, WritableTlv,
}; };
use crate::cfdp::{ConditionCode, CrcFlag, Direction, PduType}; use crate::cfdp::{ConditionCode, CrcFlag, Direction, PduType};
use crate::ByteConversionError;
use num_enum::{IntoPrimitive, TryFromPrimitive}; use num_enum::{IntoPrimitive, TryFromPrimitive};
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -453,7 +453,7 @@ mod tests {
use super::*; use super::*;
use crate::cfdp::lv::Lv; use crate::cfdp::lv::Lv;
use crate::cfdp::pdu::tests::{ use crate::cfdp::pdu::tests::{
common_pdu_conf, verify_raw_header, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, common_pdu_conf, verify_raw_header,
}; };
use crate::cfdp::pdu::{FileDirectiveType, PduHeader}; use crate::cfdp::pdu::{FileDirectiveType, PduHeader};
use crate::cfdp::tlv::FilestoreResponseTlv; use crate::cfdp::tlv::FilestoreResponseTlv;
+6 -6
View File
@@ -1,14 +1,14 @@
//! # Metadata PDU packet implementation. //! # Metadata PDU packet implementation.
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
use super::tlv::TlvOwned; use super::tlv::TlvOwned;
use crate::ByteConversionError;
use crate::cfdp::lv::Lv; use crate::cfdp::lv::Lv;
use crate::cfdp::pdu::{ use crate::cfdp::pdu::{
add_pdu_crc, generic_length_checks_pdu_deserialization, read_fss_field, write_fss_field, FileDirectiveType, PduError, PduHeader, add_pdu_crc, generic_length_checks_pdu_deserialization,
FileDirectiveType, PduError, PduHeader, read_fss_field, write_fss_field,
}; };
use crate::cfdp::tlv::{Tlv, WritableTlv}; use crate::cfdp::tlv::{Tlv, WritableTlv};
use crate::cfdp::{ChecksumType, CrcFlag, Direction, LargeFileFlag, PduType}; use crate::cfdp::{ChecksumType, CrcFlag, Direction, LargeFileFlag, PduType};
use crate::ByteConversionError;
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
use alloc::vec::Vec; use alloc::vec::Vec;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
@@ -418,11 +418,11 @@ mod tests {
use crate::cfdp::lv::Lv; use crate::cfdp::lv::Lv;
use crate::cfdp::pdu::metadata::{ use crate::cfdp::pdu::metadata::{
build_metadata_opts_from_slice, build_metadata_opts_from_vec, MetadataGenericParams, MetadataGenericParams, MetadataPduCreator, MetadataPduReader,
MetadataPduCreator, MetadataPduReader, build_metadata_opts_from_slice, build_metadata_opts_from_vec,
}; };
use crate::cfdp::pdu::tests::{ use crate::cfdp::pdu::tests::{
common_pdu_conf, verify_raw_header, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, common_pdu_conf, verify_raw_header,
}; };
use crate::cfdp::pdu::{CfdpPdu, PduError, WritablePduPacket}; use crate::cfdp::pdu::{CfdpPdu, PduError, WritablePduPacket};
use crate::cfdp::pdu::{FileDirectiveType, PduHeader}; use crate::cfdp::pdu::{FileDirectiveType, PduHeader};
+6 -6
View File
@@ -1,10 +1,10 @@
//! CFDP Packet Data Unit (PDU) support. //! CFDP Packet Data Unit (PDU) support.
use crate::ByteConversionError;
use crate::cfdp::pdu::ack::InvalidAckedDirectiveCodeError; use crate::cfdp::pdu::ack::InvalidAckedDirectiveCodeError;
use crate::cfdp::pdu::nak::InvalidStartOrEndOfScopeError; use crate::cfdp::pdu::nak::InvalidStartOrEndOfScopeError;
use crate::cfdp::*; use crate::cfdp::*;
use crate::crc::CRC_CCITT_FALSE; use crate::crc::CRC_CCITT_FALSE;
use crate::util::{UnsignedByteField, UnsignedByteFieldU8, UnsignedEnum}; use crate::util::{UnsignedByteField, UnsignedByteFieldU8, UnsignedEnum};
use crate::ByteConversionError;
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
use alloc::vec::Vec; use alloc::vec::Vec;
@@ -725,15 +725,15 @@ pub(crate) fn add_pdu_crc(buf: &mut [u8], mut current_idx: usize) -> usize {
mod tests { mod tests {
use alloc::string::ToString; use alloc::string::ToString;
use crate::cfdp::pdu::{CommonPduConfig, PduError, PduHeader, FIXED_HEADER_LEN}; use crate::ByteConversionError;
use crate::cfdp::pdu::{CommonPduConfig, FIXED_HEADER_LEN, PduError, PduHeader};
use crate::cfdp::{ use crate::cfdp::{
CrcFlag, Direction, LargeFileFlag, PduType, SegmentMetadataFlag, SegmentationControl, CFDP_VERSION_2, CrcFlag, Direction, LargeFileFlag, PduType, SegmentMetadataFlag,
TransmissionMode, CFDP_VERSION_2, SegmentationControl, TransmissionMode,
}; };
use crate::util::{ use crate::util::{
UbfU16, UbfU8, UnsignedByteField, UnsignedByteFieldU16, UnsignedByteFieldU8, UnsignedEnum, UbfU8, UbfU16, UnsignedByteField, UnsignedByteFieldU8, UnsignedByteFieldU16, UnsignedEnum,
}; };
use crate::ByteConversionError;
use std::format; use std::format;
pub(crate) const TEST_SRC_ID: UbfU8 = UbfU8::new(5); pub(crate) const TEST_SRC_ID: UbfU8 = UbfU8::new(5);
+4 -4
View File
@@ -1,12 +1,12 @@
//! # NAK PDU packet implementation. //! # NAK PDU packet implementation.
use crate::{ use crate::{
cfdp::{CrcFlag, Direction, LargeFileFlag},
ByteConversionError, ByteConversionError,
cfdp::{CrcFlag, Direction, LargeFileFlag},
}; };
use super::{ use super::{
add_pdu_crc, generic_length_checks_pdu_deserialization, CfdpPdu, FileDirectiveType, PduError, CfdpPdu, FileDirectiveType, PduError, PduHeader, WritablePduPacket, add_pdu_crc,
PduHeader, WritablePduPacket, generic_length_checks_pdu_deserialization,
}; };
/// Invalid start or end of scope value. /// Invalid start or end of scope value.
@@ -761,8 +761,8 @@ mod tests {
use alloc::string::ToString; use alloc::string::ToString;
use crate::cfdp::{ use crate::cfdp::{
pdu::tests::{common_pdu_conf, verify_raw_header, TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID},
PduType, TransmissionMode, PduType, TransmissionMode,
pdu::tests::{TEST_DEST_ID, TEST_SEQ_NUM, TEST_SRC_ID, common_pdu_conf, verify_raw_header},
}; };
use super::*; use super::*;
+7 -7
View File
@@ -1,10 +1,10 @@
//! Generic CFDP type-length-value (TLV) abstraction as specified in CFDP 5.1.9. //! Generic CFDP type-length-value (TLV) abstraction as specified in CFDP 5.1.9.
use crate::cfdp::lv::{
generic_len_check_data_serialization, generic_len_check_deserialization, Lv, MIN_LV_LEN,
};
use crate::cfdp::TlvLvError;
use crate::util::{UnsignedByteField, UnsignedByteFieldError, UnsignedEnum};
use crate::ByteConversionError; use crate::ByteConversionError;
use crate::cfdp::TlvLvError;
use crate::cfdp::lv::{
Lv, MIN_LV_LEN, generic_len_check_data_serialization, generic_len_check_deserialization,
};
use crate::util::{UnsignedByteField, UnsignedByteFieldError, UnsignedEnum};
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
use alloc::vec; use alloc::vec;
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
@@ -1015,10 +1015,10 @@ pub(crate) fn verify_tlv_type(
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::cfdp::TlvLvError;
use crate::cfdp::lv::Lv; use crate::cfdp::lv::Lv;
use crate::cfdp::tlv::{FilestoreActionCode, FilestoreRequestTlv, Tlv, TlvType, TlvTypeField}; use crate::cfdp::tlv::{FilestoreActionCode, FilestoreRequestTlv, Tlv, TlvType, TlvTypeField};
use crate::cfdp::TlvLvError; use crate::util::{UbfU8, UbfU16, UnsignedEnum};
use crate::util::{UbfU16, UbfU8, UnsignedEnum};
use alloc::string::ToString; use alloc::string::ToString;
const TLV_TEST_STR_0: &str = "hello.txt"; const TLV_TEST_STR_0: &str = "hello.txt";
+1 -1
View File
@@ -3,8 +3,8 @@
use super::TlvOwned; use super::TlvOwned;
use super::{GenericTlv, ReadableTlv, Tlv, TlvLvError, TlvType, TlvTypeField, WritableTlv}; use super::{GenericTlv, ReadableTlv, Tlv, TlvLvError, TlvType, TlvTypeField, WritableTlv};
use crate::{ use crate::{
cfdp::{InvalidTlvTypeFieldError, TlvLvDataTooLargeError},
ByteConversionError, ByteConversionError,
cfdp::{InvalidTlvTypeFieldError, TlvLvDataTooLargeError},
}; };
use delegate::delegate; use delegate::delegate;
+2 -2
View File
@@ -4,8 +4,8 @@
//! You can find the PUS telecommand types in the [tc] module and the the PUS telemetry //! You can find the PUS telecommand types in the [tc] module and the the PUS telemetry
//! types inside the [tm] module. //! types inside the [tm] module.
use crate::{ use crate::{
crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE},
ByteConversionError, CcsdsPacket, ByteConversionError, CcsdsPacket,
crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE},
}; };
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
use alloc::vec::Vec; use alloc::vec::Vec;
@@ -529,8 +529,8 @@ impl Default for CreatorConfig {
mod tests { mod tests {
use alloc::string::ToString; use alloc::string::ToString;
use crate::ecss::{EcssEnumU16, EcssEnumU32, EcssEnumU8, UnsignedEnum};
use crate::ByteConversionError; use crate::ByteConversionError;
use crate::ecss::{EcssEnumU8, EcssEnumU16, EcssEnumU32, UnsignedEnum};
use super::*; use super::*;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
+7 -8
View File
@@ -42,15 +42,14 @@
//! assert_eq!(pus_tc_by_builder, pus_tc); //! assert_eq!(pus_tc_by_builder, pus_tc);
//! ``` //! ```
use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE}; use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE};
use crate::ecss::{
crc_from_raw_data, sp_header_impls, user_data_from_raw,
verify_crc16_ccitt_false_from_raw_to_pus_error, PusError, PusPacket, PusVersion,
WritablePusPacket,
};
pub use crate::ecss::{CreatorConfig, MessageTypeId}; pub use crate::ecss::{CreatorConfig, MessageTypeId};
use crate::{ByteConversionError, CcsdsPacket, PacketType, SequenceFlags, CCSDS_HEADER_LEN}; use crate::ecss::{
PusError, PusPacket, PusVersion, WritablePusPacket, crc_from_raw_data, sp_header_impls,
user_data_from_raw, verify_crc16_ccitt_false_from_raw_to_pus_error,
};
use crate::{ByteConversionError, CCSDS_HEADER_LEN, CcsdsPacket, PacketType, SequenceFlags};
use crate::{PacketId, PacketSequenceControl, SpHeader}; use crate::{PacketId, PacketSequenceControl, SpHeader};
use arbitrary_int::{u11, u14, u3, u4}; use arbitrary_int::{u3, u4, u11, u14};
use core::mem::size_of; use core::mem::size_of;
use delegate::delegate; use delegate::delegate;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
@@ -133,7 +132,7 @@ pub mod zc {
use crate::ecss::{MessageTypeId, PusError, PusVersion}; use crate::ecss::{MessageTypeId, PusError, PusVersion};
use arbitrary_int::traits::Integer; use arbitrary_int::traits::Integer;
use arbitrary_int::u4; use arbitrary_int::u4;
use zerocopy::{FromBytes, Immutable, IntoBytes, NetworkEndian, Unaligned, U16}; use zerocopy::{FromBytes, Immutable, IntoBytes, NetworkEndian, U16, Unaligned};
/// PUS TC secondary header. /// PUS TC secondary header.
#[derive(FromBytes, IntoBytes, Immutable, Unaligned)] #[derive(FromBytes, IntoBytes, Immutable, Unaligned)]
+7 -8
View File
@@ -33,17 +33,16 @@
//! assert_eq!(pus_tc.message_subtype_id(), 1); //! assert_eq!(pus_tc.message_subtype_id(), 1);
//! assert_eq!(pus_tc.apid().value(), 0x02); //! assert_eq!(pus_tc.apid().value(), 0x02);
//! ``` //! ```
use crate::SpHeader;
use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE}; use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE};
use crate::ecss::tc::{AckFlags, ACK_ALL}; use crate::ecss::tc::{ACK_ALL, AckFlags};
use crate::ecss::{ use crate::ecss::{
crc_from_raw_data, sp_header_impls, user_data_from_raw, MessageTypeId, PusError, PusPacket, PusVersion, WritablePusPacket, crc_from_raw_data,
verify_crc16_ccitt_false_from_raw_to_pus_error, MessageTypeId, PusError, PusPacket, PusVersion, sp_header_impls, user_data_from_raw, verify_crc16_ccitt_false_from_raw_to_pus_error,
WritablePusPacket,
}; };
use crate::util::{UnsignedByteField, UnsignedEnum}; use crate::util::{UnsignedByteField, UnsignedEnum};
use crate::SpHeader; use crate::{ByteConversionError, CCSDS_HEADER_LEN, CcsdsPacket, PacketType, SequenceFlags};
use crate::{ByteConversionError, CcsdsPacket, PacketType, SequenceFlags, CCSDS_HEADER_LEN}; use arbitrary_int::{u3, u4, u11, u14};
use arbitrary_int::{u11, u14, u3, u4};
use core::mem::size_of; use core::mem::size_of;
use delegate::delegate; use delegate::delegate;
use num_enum::{IntoPrimitive, TryFromPrimitive}; use num_enum::{IntoPrimitive, TryFromPrimitive};
@@ -922,7 +921,7 @@ mod tests {
use super::*; use super::*;
use crate::ecss::{PusError, PusPacket, WritablePusPacket}; use crate::ecss::{PusError, PusPacket, WritablePusPacket};
use crate::util::{UnsignedByteFieldU16, UnsignedByteFieldU8}; use crate::util::{UnsignedByteFieldU8, UnsignedByteFieldU16};
use crate::{ByteConversionError, SpHeader}; use crate::{ByteConversionError, SpHeader};
use crate::{CcsdsPacket, SequenceFlags}; use crate::{CcsdsPacket, SequenceFlags};
use alloc::string::ToString; use alloc::string::ToString;
+11 -12
View File
@@ -51,18 +51,17 @@
//! assert_eq!(pus_tm_by_builder, ping_tm); //! assert_eq!(pus_tm_by_builder, ping_tm);
//! ``` //! ```
use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE}; use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE};
use crate::ecss::{
calc_pus_crc16, crc_from_raw_data, sp_header_impls, user_data_from_raw,
verify_crc16_ccitt_false_from_raw_to_pus_error, PusError, PusPacket, PusVersion,
WritablePusPacket,
};
pub use crate::ecss::{CreatorConfig, MessageTypeId}; pub use crate::ecss::{CreatorConfig, MessageTypeId};
use crate::ecss::{
PusError, PusPacket, PusVersion, WritablePusPacket, calc_pus_crc16, crc_from_raw_data,
sp_header_impls, user_data_from_raw, verify_crc16_ccitt_false_from_raw_to_pus_error,
};
use crate::{ use crate::{
ByteConversionError, CcsdsPacket, PacketId, PacketSequenceControl, PacketType, SequenceFlags, ByteConversionError, CCSDS_HEADER_LEN, CcsdsPacket, MAX_APID, PacketId, PacketSequenceControl,
SpHeader, CCSDS_HEADER_LEN, MAX_APID, PacketType, SequenceFlags, SpHeader,
}; };
use arbitrary_int::traits::Integer; use arbitrary_int::traits::Integer;
use arbitrary_int::{u11, u14, u3, u4}; use arbitrary_int::{u3, u4, u11, u14};
use core::mem::size_of; use core::mem::size_of;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -118,7 +117,7 @@ pub mod zc {
use super::GenericPusTmSecondaryHeader; use super::GenericPusTmSecondaryHeader;
use crate::ecss::{MessageTypeId, PusError, PusVersion}; use crate::ecss::{MessageTypeId, PusError, PusVersion};
use arbitrary_int::{traits::Integer as _, u4}; use arbitrary_int::{traits::Integer as _, u4};
use zerocopy::{FromBytes, Immutable, IntoBytes, NetworkEndian, Unaligned, U16}; use zerocopy::{FromBytes, Immutable, IntoBytes, NetworkEndian, U16, Unaligned};
/// PUS TM secondary header without a timestamp. /// PUS TM secondary header without a timestamp.
#[derive(FromBytes, IntoBytes, Immutable, Unaligned)] #[derive(FromBytes, IntoBytes, Immutable, Unaligned)]
@@ -1490,11 +1489,11 @@ impl GenericPusTmSecondaryHeader for PusTmZeroCopyWriter<'_> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::time::cds::CdsTime; use crate::SpHeader;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use crate::time::CcsdsTimeProvider; use crate::time::CcsdsTimeProvider;
use crate::SpHeader; use crate::time::cds::CdsTime;
use crate::{ecss::PusVersion::PusC, MAX_SEQ_COUNT}; use crate::{MAX_SEQ_COUNT, ecss::PusVersion::PusC};
use alloc::string::ToString; use alloc::string::ToString;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use postcard::{from_bytes, to_allocvec}; use postcard::{from_bytes, to_allocvec};
+7 -7
View File
@@ -50,17 +50,17 @@
use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE}; use crate::crc::{CRC_CCITT_FALSE, CRC_CCITT_FALSE_NO_TABLE};
use crate::ecss::tm::IsPusTelemetry; use crate::ecss::tm::IsPusTelemetry;
use crate::ecss::{ use crate::ecss::{
calc_pus_crc16, crc_from_raw_data, sp_header_impls, user_data_from_raw, CrcType, MessageTypeId, PusError, PusPacket, PusVersion, WritablePusPacket, calc_pus_crc16,
verify_crc16_ccitt_false_from_raw_to_pus_error, CrcType, MessageTypeId, PusError, PusPacket, crc_from_raw_data, sp_header_impls, user_data_from_raw,
PusVersion, WritablePusPacket, verify_crc16_ccitt_false_from_raw_to_pus_error,
}; };
use crate::util::{UnsignedByteField, UnsignedEnum}; use crate::util::{UnsignedByteField, UnsignedEnum};
use crate::{ use crate::{
ByteConversionError, CcsdsPacket, PacketType, SequenceFlags, SpHeader, CCSDS_HEADER_LEN, ByteConversionError, CCSDS_HEADER_LEN, CcsdsPacket, MAX_APID, PacketType, SequenceFlags,
MAX_APID, SpHeader,
}; };
use arbitrary_int::traits::Integer; use arbitrary_int::traits::Integer;
use arbitrary_int::{u11, u14, u3, u4}; use arbitrary_int::{u3, u4, u11, u14};
use core::mem::size_of; use core::mem::size_of;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -1232,8 +1232,8 @@ mod tests {
use super::*; use super::*;
use crate::time::cds::CdsTime; use crate::time::cds::CdsTime;
use crate::{MAX_SEQ_COUNT, SpHeader};
use crate::{ecss::PusVersion::PusA, util::UnsignedByteFieldU16}; use crate::{ecss::PusVersion::PusA, util::UnsignedByteFieldU16};
use crate::{SpHeader, MAX_SEQ_COUNT};
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use postcard::{from_bytes, to_allocvec}; use postcard::{from_bytes, to_allocvec};
+14 -13
View File
@@ -784,7 +784,7 @@ pub mod zc {
use arbitrary_int::traits::Integer; use arbitrary_int::traits::Integer;
use arbitrary_int::u3; use arbitrary_int::u3;
use zerocopy::byteorder::NetworkEndian; use zerocopy::byteorder::NetworkEndian;
use zerocopy::{FromBytes, Immutable, IntoBytes, Unaligned, U16}; use zerocopy::{FromBytes, Immutable, IntoBytes, U16, Unaligned};
/// [zerocopy] space packet header. /// [zerocopy] space packet header.
#[derive(FromBytes, IntoBytes, Immutable, Unaligned, Debug)] #[derive(FromBytes, IntoBytes, Immutable, Unaligned, Debug)]
@@ -1852,11 +1852,11 @@ pub(crate) mod tests {
use std::collections::HashSet; use std::collections::HashSet;
use super::*; use super::*;
use crate::crc::CRC_CCITT_FALSE;
#[allow(unused_imports)] #[allow(unused_imports)]
use crate::ByteConversionError; use crate::ByteConversionError;
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use crate::CcsdsPrimaryHeader; use crate::CcsdsPrimaryHeader;
use crate::crc::CRC_CCITT_FALSE;
use crate::{SequenceFlags, SpHeader}; use crate::{SequenceFlags, SpHeader};
use alloc::vec; use alloc::vec;
use arbitrary_int::{u11, u14}; use arbitrary_int::{u11, u14};
@@ -1865,7 +1865,7 @@ pub(crate) mod tests {
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use postcard::{from_bytes, to_allocvec}; use postcard::{from_bytes, to_allocvec};
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
use serde::{de::DeserializeOwned, Serialize}; use serde::{Serialize, de::DeserializeOwned};
use zerocopy::FromBytes; use zerocopy::FromBytes;
const CONST_SP: SpHeader = SpHeader::new( const CONST_SP: SpHeader = SpHeader::new(
@@ -2223,17 +2223,18 @@ pub(crate) mod tests {
#[test] #[test]
fn test_ccsds_size_function_invalid_size_with_checksum() { fn test_ccsds_size_function_invalid_size_with_checksum() {
// 2 less bytes available because of the checksum. // 2 less bytes available because of the checksum.
assert!(ccsds_packet_len_for_user_data_len( assert!(
u16::MAX as usize - 1, ccsds_packet_len_for_user_data_len(
Some(ChecksumType::WithCrc16) u16::MAX as usize - 1,
) Some(ChecksumType::WithCrc16)
.is_some()); )
.is_some()
);
// This is too much. // This is too much.
assert!(ccsds_packet_len_for_user_data_len( assert!(
u16::MAX as usize, ccsds_packet_len_for_user_data_len(u16::MAX as usize, Some(ChecksumType::WithCrc16))
Some(ChecksumType::WithCrc16) .is_none()
) );
.is_none());
} }
#[test] #[test]
+35 -35
View File
@@ -492,17 +492,17 @@ pub mod std_mod {
} }
impl< impl<
Inner: SequenceCounter<Raw = RawTy>, Inner: SequenceCounter<Raw = RawTy>,
RawTy: core::fmt::Debug RawTy: core::fmt::Debug
+ Copy + Copy
+ Clone + Clone
+ Into<u64> + Into<u64>
+ TryFrom<u64> + TryFrom<u64>
+ FromStr + FromStr
+ Default + Default
+ PartialEq + PartialEq
+ Eq, + Eq,
> SequenceCounterOnFile<Inner, RawTy> > SequenceCounterOnFile<Inner, RawTy>
{ {
/// Initialize a new persistent sequence counter using a file at the given path and /// Initialize a new persistent sequence counter using a file at the given path and
/// any non persistent inner [SequenceCounter] implementation. /// any non persistent inner [SequenceCounter] implementation.
@@ -549,17 +549,17 @@ pub mod std_mod {
} }
impl< impl<
Inner: SequenceCounter<Raw = RawTy>, Inner: SequenceCounter<Raw = RawTy>,
RawTy: core::fmt::Debug RawTy: core::fmt::Debug
+ Copy + Copy
+ Clone + Clone
+ Into<u64> + Into<u64>
+ TryFrom<u64, Error: core::fmt::Debug> + TryFrom<u64, Error: core::fmt::Debug>
+ FromStr + FromStr
+ Default + Default
+ PartialEq + PartialEq
+ Eq, + Eq,
> SequenceCounter for SequenceCounterOnFile<Inner, RawTy> > SequenceCounter for SequenceCounterOnFile<Inner, RawTy>
{ {
type Raw = RawTy; type Raw = RawTy;
@@ -590,17 +590,17 @@ pub mod std_mod {
} }
impl< impl<
Inner: SequenceCounter<Raw = RawTy>, Inner: SequenceCounter<Raw = RawTy>,
RawTy: core::fmt::Debug RawTy: core::fmt::Debug
+ Copy + Copy
+ Clone + Clone
+ Into<u64> + Into<u64>
+ TryFrom<u64> + TryFrom<u64>
+ FromStr + FromStr
+ Default + Default
+ PartialEq + PartialEq
+ Eq, + Eq,
> Drop for SequenceCounterOnFile<Inner, RawTy> > Drop for SequenceCounterOnFile<Inner, RawTy>
{ {
fn drop(&mut self) { fn drop(&mut self) {
if self.save_on_drop { if self.save_on_drop {
@@ -632,14 +632,14 @@ pub mod std_mod {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use core::sync::atomic::{AtomicU16, AtomicU32, AtomicU64, AtomicU8}; use core::sync::atomic::{AtomicU8, AtomicU16, AtomicU32, AtomicU64};
use std::boxed::Box; use std::boxed::Box;
use crate::MAX_SEQ_COUNT;
use crate::seq_count::{ use crate::seq_count::{
SequenceCounter, SequenceCounterCcsdsSimple, SequenceCounterSimple, SequenceCounter, SequenceCounterCcsdsSimple, SequenceCounterSimple,
SequenceCounterSyncCustomWrapU8, SequenceCounterSyncCustomWrapU8,
}; };
use crate::MAX_SEQ_COUNT;
#[test] #[test]
fn test_u8_counter() { fn test_u8_counter() {
+1 -1
View File
@@ -36,8 +36,8 @@ pub const FMT_STR_CODE_B_TERMINATED_WITH_SIZE: (&str, usize) = ("%Y-%jT%T%.3fZ",
pub mod alloc_mod_chrono { pub mod alloc_mod_chrono {
use super::*; use super::*;
use chrono::{ use chrono::{
format::{DelayedFormat, StrftimeItems},
DateTime, Utc, DateTime, Utc,
format::{DelayedFormat, StrftimeItems},
}; };
/// Generates a time code formatter using the [FMT_STR_CODE_A_WITH_SIZE] format. /// Generates a time code formatter using the [FMT_STR_CODE_A_WITH_SIZE] format.
+5 -6
View File
@@ -4,8 +4,8 @@
//! The core data structure to do this is the [CdsTime] struct and the //! The core data structure to do this is the [CdsTime] struct and the
//! [get_dyn_time_provider_from_bytes] function to retrieve correct instances of the //! [get_dyn_time_provider_from_bytes] function to retrieve correct instances of the
//! struct from a bytestream. //! struct from a bytestream.
use crate::private::Sealed;
use crate::ByteConversionError; use crate::ByteConversionError;
use crate::private::Sealed;
use core::cmp::Ordering; use core::cmp::Ordering;
use core::fmt::Debug; use core::fmt::Debug;
use core::ops::{Add, AddAssign}; use core::ops::{Add, AddAssign};
@@ -30,9 +30,8 @@ use core::any::Any;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{ use super::{
ccsds_to_unix_days, unix_to_ccsds_days, CcsdsTimeCode, CcsdsTimeProvider, CcsdsTimeCode, CcsdsTimeProvider, DateBeforeCcsdsEpochError, MS_PER_DAY, SECONDS_PER_DAY,
DateBeforeCcsdsEpochError, TimeReader, TimeWriter, TimestampError, UnixTime, MS_PER_DAY, TimeReader, TimeWriter, TimestampError, UnixTime, ccsds_to_unix_days, unix_to_ccsds_days,
SECONDS_PER_DAY,
}; };
/// Base value for the preamble field for a time field parser to determine the time field type. /// Base value for the preamble field for a time field parser to determine the time field type.
@@ -1314,9 +1313,9 @@ impl CdsTimestamp for CdsTime<DaysLen24Bits> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::time::TimestampError::{ByteConversion, InvalidTimeCode};
use crate::time::{UnixTime, DAYS_CCSDS_TO_UNIX, MS_PER_DAY};
use crate::ByteConversionError::FromSliceTooSmall; use crate::ByteConversionError::FromSliceTooSmall;
use crate::time::TimestampError::{ByteConversion, InvalidTimeCode};
use crate::time::{DAYS_CCSDS_TO_UNIX, MS_PER_DAY, UnixTime};
use alloc::string::ToString; use alloc::string::ToString;
use chrono::{Datelike, NaiveDate, Timelike}; use chrono::{Datelike, NaiveDate, Timelike};
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
+3 -3
View File
@@ -15,9 +15,9 @@ use crate::ByteConversionError;
#[cfg(feature = "std")] #[cfg(feature = "std")]
use super::StdTimestampError; use super::StdTimestampError;
use super::{ use super::{
ccsds_epoch_to_unix_epoch, ccsds_time_code_from_p_field, unix_epoch_to_ccsds_epoch,
CcsdsTimeCode, CcsdsTimeProvider, DateBeforeCcsdsEpochError, TimeReader, TimeWriter, CcsdsTimeCode, CcsdsTimeProvider, DateBeforeCcsdsEpochError, TimeReader, TimeWriter,
TimestampError, UnixTime, TimestampError, UnixTime, ccsds_epoch_to_unix_epoch, ccsds_time_code_from_p_field,
unix_epoch_to_ccsds_epoch,
}; };
#[cfg(feature = "std")] #[cfg(feature = "std")]
use std::time::SystemTime; use std::time::SystemTime;
@@ -884,7 +884,7 @@ impl Add<Duration> for &CucTime {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::time::{UnixTime, DAYS_CCSDS_TO_UNIX, SECONDS_PER_DAY}; use crate::time::{DAYS_CCSDS_TO_UNIX, SECONDS_PER_DAY, UnixTime};
use super::*; use super::*;
use alloc::string::ToString; use alloc::string::ToString;
+2 -2
View File
@@ -431,14 +431,14 @@ impl Ord for UnixTime {
Ordering::Greater Ordering::Greater
} else { } else {
Ordering::Less Ordering::Less
} };
} }
Ordering::Greater => { Ordering::Greater => {
return if self.secs < 0 { return if self.secs < 0 {
Ordering::Less Ordering::Less
} else { } else {
Ordering::Greater Ordering::Greater
} };
} }
Ordering::Equal => (), Ordering::Equal => (),
} }
+1 -1
View File
@@ -3,7 +3,7 @@
use arbitrary_int::{prelude::*, u4, u6}; use arbitrary_int::{prelude::*, u4, u6};
use crate::{crc::CRC_CCITT_FALSE, ByteConversionError}; use crate::{ByteConversionError, crc::CRC_CCITT_FALSE};
/// Only this version is supported by the library /// Only this version is supported by the library
pub const USLP_VERSION_NUMBER: u8 = 0b1100; pub const USLP_VERSION_NUMBER: u8 = 0b1100;
+4 -4
View File
@@ -384,11 +384,11 @@ impl TryFrom<UnsignedByteField> for UnsignedByteFieldU64 {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::util::{
UnsignedByteField, UnsignedByteFieldError, UnsignedByteFieldU16, UnsignedByteFieldU32,
UnsignedByteFieldU64, UnsignedByteFieldU8, UnsignedEnum,
};
use crate::ByteConversionError; use crate::ByteConversionError;
use crate::util::{
UnsignedByteField, UnsignedByteFieldError, UnsignedByteFieldU8, UnsignedByteFieldU16,
UnsignedByteFieldU32, UnsignedByteFieldU64, UnsignedEnum,
};
use std::format; use std::format;
#[test] #[test]