5b021fec22
Some checks failed
Rust/spacepackets/pipeline/head There was a failure building this commit
7.5 KiB
7.5 KiB
Change Log
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[unreleased]
Added
- Added
.gitignore
.
Fixed
- Correct implementation of Trait
PartialEq
forPusTc
.
[v0.5.1] 2023-01-22
Added
time::cds::TimeProvider
- Add
Ord
andPartialOrd
, use customPartialEq
impl to account for precision correctly. - Add
precision_as_ns
function which converts microsecond and picosecond precision values into nanoseconds. - Add conversion trait to convert
cds::TimeProvider<DaysLen16Bits>
intocds::TimeProvider<DaysLen24Bits>
and vice-versa.
- Add
time::UnixTimestamp
- Add
Ord
andPartialOrd
implementations. - Add
Add<Duration>
andAddAssign<Duration>
implementations.
- Add
Fixed
time::cds::TimeProvider
: Fixed a bug where subsecond milliseconds were not accounted for when the provider has no submillisecond precision.
[v0.5.0] 2023-01-20
The timestamp of PusTm
is now optional. See Added and Changed section for details.
Added
PusTmSecondaryHeader
: Newnew_simple_no_timestamp
API to create secondary header without timestamp.PusTm
: Addnew_simple_no_timestamp
method to create TM without timestamp- New
UnixTimestamp
abstraction which contains the unix seconds as ani64
and an optional subsecond millisecond counter (u16
) MS_PER_DAY
constant.- CUC: Added
from_date_time
andfrom_unix_stamp
constructors for time provider. - CUC: Add
Add<Duration>
andAddAssign<Duration>
impl for time provider.
CDS time module
- Implement
Add<Duration>
andAddAssign<Duration>
for time providers, which allows easily adding offsets to the providers. - Implement
TryFrom<DateTime<Utc>>
for time providers. get_dyn_time_provider_from_bytes
: Requiresalloc
support and returns the correctTimeProvider
instance wrapped as a boxed trait objectBox<DynCdsTimeProvider>
by checking the length of days field.- Added constructor function to create the time provider
from
chrono::DateTime<Utc>
and a generic UNIX timestamp (i64
seconds and subsecond milliseconds). MAX_DAYS_24_BITS
which contains maximum value which can be supplied to the days field of a CDS time provider with 24 bits days field width.- New
CdsTimestamp
trait which encapsulates common fields for all CDS time providers. from_unix_secs_with_u24_days
andfrom_unix_secs_with_u16_days
which create the time provider from aUnixTimestamp
reference.from_dt_with_u16_days
,from_dt_with_u24_days
and their..._us_precision
and..._ps_precision
variants which allow to create time providers from achrono::DateTime<Utc>
.- Add
from_bytes_with_u24_days
andfrom_bytes_with_u16_days
associated methods
Changed
- (breaking)
unix_epoch_to_ccsds_epoch
: Expect and returni64
instead ofu64
now. - (breaking)
ccsds_epoch_to_unix_epoch
: Expect and returni64
instead ofu64
now. - (breaking)
PusTmSecondaryHeader
: Timestamp is optional now, which translates to a timestamp of size 0. - (breaking):
PusTm
: Renamedtime_stamp
method totimestamp
, also returnsOptional<&'src_data [u8]>
now. - (breaking):
PusTmSecondaryHeader
: Renamedtime_stamp
field totimestamp
for consistency. - (breaking): Renamed
from_now_with_u24_days_and_us_prec
tofrom_now_with_u24_days_us_precision
. Also did the same for theu16
variant. - (breaking): Renamed
from_now_with_u24_days_and_ps_prec
tofrom_now_with_u24_days_ps_precision
. Also did the same for theu16
variant. CcsdsTimeProvider
trait (breaking):- Add new
unix_stamp
method returning the newUnixTimeStamp
struct. - Add new
subsecond_millis
method returning counterOption<u16>
. - Default impl for
unix_stamp
which re-usessubsecond_millis
and existingunix_seconds
method.
- Add new
TimestampError
(breaking): AddDateBeforeCcsdsEpoch
error type because new CDS API allow supplying invalid date times before CCSDS epoch. MakeTimestampError
with#[non_exhaustive]
attribute to prevent future breakages if new error variants are added.
[v0.4.2] 14.01.2023
Fixed
- CDS timestamp: Fixed another small logic error for stamp creation from the current time with picosecond precision. PR: #8
[v0.4.1] 14.01.2023
Fixed
- CDS timestamp: The conversion function from the current time were buggy when specifying picoseconds precision, which could lead to overflow multiplications and/or incorrect precision fields. PR: #7
[v0.4.0] 10.01.2023
Fixed
- Remove
Default
derive on CDS time provider. This can lead to uninitialized preamble fields.
Changed
serde
support is now optional and behind theserde
feature.PusTcSecondaryHeaderT
trait renamed toGenericPusTcSecondaryHeader
.PusTmSecondaryHeaderT
trait renamed toGenericPusTmSecondaryHeader
.SpHeader
: Formertc
andtm
methods now namedtc_unseg
andtm_unseg
. Formernew
method now callednew_from_single_fields
.SpHeader
: Renamedfrom_bytes
tofrom_be_bytes
. The function now returns the remaining slice as well.- All CDS specific functionality was moved into the
cds
submodule of thetime
module.CdsShortTimeProvider
was renamed toTimeProvider
. PR: #3
Added
SpHeader
getter functionsp_header
added forPusTc
PR: #6- Added PFC enumerations:
ecss::UnsignedPfc
andecss::RealPfc
. PR: #5 - Added
std::error::Error
implementation for all error enumerations if thestd
feature is enabled. - CUC timestamp implementation as specified in CCSDS 301.0-B-4 section 3.2. PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/4/files
- ACII timestamps as specified in CCSDS 301.0-B-4 section 3.5.
- Added MSRV in
Cargo.toml
with therust-version
field set to Rust 1.60. serde
Serialize
andDeserialize
added to all types.- Added
const
constructors forPacketId
,PacketSeqCtrl
andSpHeader
. - Added
PartialEq
andEq
derive
s toTimeProvider
. SpHeader
: Added serialization function into raw formatwrite_to_be_bytes
.- Added 24-bit day field support for CDS short. The bit width is configured at type level
via a generic parameter type passed to the
cds::TimeProvider
- Added submillisecond precision support for
cds::TimeProvider
[v0.3.1] 03.12.2022
- Small fix for faulty docs.rs build
[v0.3.0] 01.12.2022
Added
EcssEnumerationExt
trait which implementsDebug
,Copy
,Clone
,PartialEq
andEq
in addition toEcssEnumeration
Changed
EcssEnumeration
trait: Renamewrite_to_bytes
towrite_to_be_bytes
[v0.2.0] 13.09.2022
Added
- Basic support for ECSS enumeration types for u8, u16, u32 and u64
Changed
- Better names for generic error enumerations:
PacketError
renamed toByteConversionError
- CCSDS module:
ssc
abbreviations fully replaced by better nameseq_count
- Time module:
CcsdsTimeProvider::date_time
now hasOption<DateTime<Utc>>
as a returnvalue instead ofDateTime<Utc>
PusTc
andPusTm
:new_from_raw_slice
renamed to simplerfrom_bytes
[v0.1.0] 16.08.2022
Initial release with CCSDS Space Packet Primary Header implementation and basic PUS TC and TM implementations.