diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ca80c5..a7eadb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. - CUC timestamp implementation as specified in CCSDS 301.0-B-4 section 3.2. diff --git a/Cargo.toml b/Cargo.toml index 22eabe0..0004f8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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] diff --git a/README.md b/README.md index ed4e7e4..1545bf0 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/src/ecss.rs b/src/ecss.rs index ea2896f..37293c9 100644 --- a/src/ecss.rs +++ b/src/ecss.rs @@ -15,6 +15,16 @@ pub type CrcType = u16; pub const CRC_CCITT_FALSE: Crc = Crc::::new(&CRC_16_IBM_3740); pub const CCSDS_HEADER_LEN: usize = size_of::(); +#[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 { diff --git a/src/lib.rs b/src/lib.rs index f543c0c..cd38ae3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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 //!