Compare commits
3 Commits
c750f94fba
...
v0.3.0
Author | SHA1 | Date | |
---|---|---|---|
85bfcad111 | |||
03d112cbef | |||
1ec21c1bff |
@@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v0.3.0] 01.12.2022
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
- `EcssEnumerationExt` trait which implements `Debug`, `Copy`, `Clone`,
|
- `EcssEnumerationExt` trait which implements `Debug`, `Copy`, `Clone`,
|
||||||
|
14
Cargo.toml
14
Cargo.toml
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "spacepackets"
|
name = "spacepackets"
|
||||||
version = "0.2.0"
|
version = "0.3.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
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"
|
||||||
@@ -12,17 +12,17 @@ categories = ["aerospace", "aerospace::space-protocols", "no-std", "hardware-sup
|
|||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
zerocopy = "0.6.1"
|
zerocopy = "0.6"
|
||||||
crc = "3.0.0"
|
crc = "3.0"
|
||||||
delegate = "0.7.0"
|
delegate = "0.8"
|
||||||
|
|
||||||
[dependencies.serde]
|
[dependencies.serde]
|
||||||
version = "1.0.142"
|
version = "1.0"
|
||||||
default-features = false
|
default-features = false
|
||||||
features = ["derive"]
|
features = ["derive"]
|
||||||
|
|
||||||
[dependencies.chrono]
|
[dependencies.chrono]
|
||||||
version = "0.4.20"
|
version = "0.4"
|
||||||
default-features = false
|
default-features = false
|
||||||
|
|
||||||
[dependencies.num-traits]
|
[dependencies.num-traits]
|
||||||
@@ -30,7 +30,7 @@ version = "0.2"
|
|||||||
default-features = false
|
default-features = false
|
||||||
|
|
||||||
[dev-dependencies.postcard]
|
[dev-dependencies.postcard]
|
||||||
version = "1.0.1"
|
version = "1.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
|
@@ -23,6 +23,8 @@ pub enum CcsdsTimeCodes {
|
|||||||
Ccs = 0b101,
|
Ccs = 0b101,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CDS_SHORT_P_FIELD: u8 = (CcsdsTimeCodes::Cds as u8) << 4;
|
||||||
|
|
||||||
impl TryFrom<u8> for CcsdsTimeCodes {
|
impl TryFrom<u8> for CcsdsTimeCodes {
|
||||||
type Error = ();
|
type Error = ();
|
||||||
|
|
||||||
@@ -112,7 +114,6 @@ pub trait CcsdsTimeProvider {
|
|||||||
/// ```
|
/// ```
|
||||||
#[derive(Debug, Copy, Clone, Default)]
|
#[derive(Debug, Copy, Clone, Default)]
|
||||||
pub struct CdsShortTimeProvider {
|
pub struct CdsShortTimeProvider {
|
||||||
pfield: u8,
|
|
||||||
ccsds_days: u16,
|
ccsds_days: u16,
|
||||||
ms_of_day: u32,
|
ms_of_day: u32,
|
||||||
unix_seconds: i64,
|
unix_seconds: i64,
|
||||||
@@ -122,7 +123,6 @@ pub struct CdsShortTimeProvider {
|
|||||||
impl CdsShortTimeProvider {
|
impl CdsShortTimeProvider {
|
||||||
pub fn new(ccsds_days: u16, ms_of_day: u32) -> Self {
|
pub fn new(ccsds_days: u16, ms_of_day: u32) -> Self {
|
||||||
let provider = Self {
|
let provider = Self {
|
||||||
pfield: (Cds as u8) << 4,
|
|
||||||
ccsds_days,
|
ccsds_days,
|
||||||
ms_of_day,
|
ms_of_day,
|
||||||
unix_seconds: 0,
|
unix_seconds: 0,
|
||||||
@@ -142,7 +142,6 @@ impl CdsShortTimeProvider {
|
|||||||
let unix_days_seconds = epoch - secs_of_day;
|
let unix_days_seconds = epoch - secs_of_day;
|
||||||
let ms_of_day = secs_of_day * 1000 + now.subsec_millis() as u64;
|
let ms_of_day = secs_of_day * 1000 + now.subsec_millis() as u64;
|
||||||
let provider = Self {
|
let provider = Self {
|
||||||
pfield: (Cds as u8) << 4,
|
|
||||||
ccsds_days: unix_to_ccsds_days((unix_days_seconds / SECONDS_PER_DAY as u64) as i32)
|
ccsds_days: unix_to_ccsds_days((unix_days_seconds / SECONDS_PER_DAY as u64) as i32)
|
||||||
as u16,
|
as u16,
|
||||||
ms_of_day: ms_of_day as u32,
|
ms_of_day: ms_of_day as u32,
|
||||||
@@ -211,7 +210,7 @@ impl CcsdsTimeProvider for CdsShortTimeProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn p_field(&self) -> (usize, [u8; 2]) {
|
fn p_field(&self) -> (usize, [u8; 2]) {
|
||||||
(1, [self.pfield, 0])
|
(1, [CDS_SHORT_P_FIELD, 0])
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ccdsd_time_code(&self) -> CcsdsTimeCodes {
|
fn ccdsd_time_code(&self) -> CcsdsTimeCodes {
|
||||||
@@ -237,7 +236,7 @@ impl TimeWriter for CdsShortTimeProvider {
|
|||||||
}),
|
}),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
buf[0] = self.pfield;
|
buf[0] = CDS_SHORT_P_FIELD;
|
||||||
buf[1..3].copy_from_slice(self.ccsds_days.to_be_bytes().as_slice());
|
buf[1..3].copy_from_slice(self.ccsds_days.to_be_bytes().as_slice());
|
||||||
buf[3..7].copy_from_slice(self.ms_of_day.to_be_bytes().as_slice());
|
buf[3..7].copy_from_slice(self.ms_of_day.to_be_bytes().as_slice());
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Reference in New Issue
Block a user