Merge remote-tracking branch 'origin/main' into improve_cds_short_impl
This commit is contained in:
commit
6798e3a6f5
@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## Added
|
||||
|
||||
- Added PFC enumerations: `ecss::UnsignedPfc` and `ecss::RealPfc`.
|
||||
PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/5
|
||||
- Added `std::error::Error` implementation for all error enumerations if the `std` feature
|
||||
is enabled.
|
||||
- ACII timestamps as specified in CCSDS 301.0-B-4 section 3.5.
|
||||
|
@ -35,9 +35,9 @@ default-features = false
|
||||
version = "1.0"
|
||||
|
||||
[features]
|
||||
default = ["std", "dep:serde"]
|
||||
default = ["std"]
|
||||
std = ["chrono/std", "chrono/clock", "alloc"]
|
||||
serde = ["chrono/serde"]
|
||||
serde = ["dep:serde", "chrono/serde"]
|
||||
alloc = ["postcard/alloc", "chrono/alloc"]
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
|
@ -28,12 +28,15 @@ It also offers optional support for [`serde`](https://serde.rs/). This allows se
|
||||
deserializing them with an appropriate `serde` provider like
|
||||
[`postcard`](https://github.com/jamesmunns/postcard).
|
||||
|
||||
Default features:
|
||||
## Default features
|
||||
|
||||
- [`std`](https://doc.rust-lang.org/std/): Enables functionality relying on the standard library.
|
||||
- [`alloc`](https://doc.rust-lang.org/alloc/): Enables features which operate on containers
|
||||
like [`alloc::vec::Vec`](https://doc.rust-lang.org/beta/alloc/vec/struct.Vec.html).
|
||||
Enabled by the `std` feature.
|
||||
|
||||
## Optional Features
|
||||
|
||||
- [`serde`](https://serde.rs/): Adds `serde` support for most types by adding `Serialize` and `Deserialize` `derive`s
|
||||
|
||||
# Examples
|
||||
|
46
src/ecss.rs
46
src/ecss.rs
@ -15,6 +15,16 @@ pub type CrcType = u16;
|
||||
pub const CRC_CCITT_FALSE: Crc<u16> = Crc::<u16>::new(&CRC_16_IBM_3740);
|
||||
pub const CCSDS_HEADER_LEN: usize = size_of::<crate::zc::SpHeader>();
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
pub enum PusServiceId {
|
||||
Verification = 1,
|
||||
Housekeeping = 3,
|
||||
Event = 5,
|
||||
Action = 8,
|
||||
Test = 17,
|
||||
}
|
||||
|
||||
/// All PUS versions. Only PUS C is supported by this library.
|
||||
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
@ -55,6 +65,36 @@ pub enum PacketTypeCodes {
|
||||
Packet = 12,
|
||||
}
|
||||
|
||||
pub type Ptc = PacketTypeCodes;
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
pub enum UnsignedPfc {
|
||||
OneByte = 4,
|
||||
TwelveBits = 8,
|
||||
TwoBytes = 12,
|
||||
ThreeBytes = 13,
|
||||
FourBytes = 14,
|
||||
SixBytes = 15,
|
||||
EightBytes = 16,
|
||||
OneBit = 17,
|
||||
TwoBits = 18,
|
||||
ThreeBits = 19,
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
pub enum RealPfc {
|
||||
/// 4 octets simple precision format (IEEE)
|
||||
Float = 1,
|
||||
/// 8 octets simple precision format (IEEE)
|
||||
Double = 2,
|
||||
/// 4 octets simple precision format (MIL-STD)
|
||||
FloatMilStd = 3,
|
||||
/// 8 octets simple precision format (MIL-STD)
|
||||
DoubleMilStd = 4,
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
pub enum PusError {
|
||||
@ -278,13 +318,13 @@ impl<TYPE: ToBeBytes> EcssEnumeration for GenericEcssEnumWrapper<TYPE> {
|
||||
}
|
||||
|
||||
fn write_to_be_bytes(&self, buf: &mut [u8]) -> Result<(), ByteConversionError> {
|
||||
if buf.len() < self.byte_width() as usize {
|
||||
if buf.len() < self.byte_width() {
|
||||
return Err(ByteConversionError::ToSliceTooSmall(SizeMissmatch {
|
||||
found: buf.len(),
|
||||
expected: self.byte_width() as usize,
|
||||
expected: self.byte_width(),
|
||||
}));
|
||||
}
|
||||
buf[0..self.byte_width() as usize].copy_from_slice(self.val.to_be_bytes().as_ref());
|
||||
buf[0..self.byte_width()].copy_from_slice(self.val.to_be_bytes().as_ref());
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -22,12 +22,15 @@
|
||||
//! deserializing them with an appropriate `serde` provider like
|
||||
//! [`postcard`](https://github.com/jamesmunns/postcard).
|
||||
//!
|
||||
//! Default features:
|
||||
//! ### Default features
|
||||
//!
|
||||
//! - [`std`](https://doc.rust-lang.org/std/): Enables functionality relying on the standard library.
|
||||
//! - [`alloc`](https://doc.rust-lang.org/alloc/): Enables features which operate on containers
|
||||
//! like [`alloc::vec::Vec`](https://doc.rust-lang.org/beta/alloc/vec/struct.Vec.html).
|
||||
//! Enabled by the `std` feature.
|
||||
//!
|
||||
//! ### Optional features
|
||||
//!
|
||||
//! - [`serde`](https://serde.rs/): Adds `serde` support for most types by adding `Serialize` and
|
||||
//! `Deserialize` `derive`s
|
||||
//!
|
||||
|
Loading…
Reference in New Issue
Block a user