spacepackets/CHANGELOG.md

557 lines
21 KiB
Markdown
Raw Normal View History

2022-06-19 14:37:36 +02:00
Change Log
=======
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
2022-09-03 18:50:21 +02:00
# [unreleased]
2022-06-19 14:37:36 +02:00
2024-11-07 23:36:04 +01:00
- Bumped MSRV to 1.81.0
- Bump `zerocopy` to v0.8.0
- Bump `thiserror` to v2.0.0
2024-09-10 17:51:31 +02:00
# [v0.12.0] 2024-09-10
2024-06-25 16:07:07 +02:00
2024-08-19 10:23:34 +02:00
- Bumped MSRV to 1.70.0
2024-07-09 16:04:01 +02:00
## Added
- Added new `cfdp::tlv::TlvOwned` type which erases the lifetime and is clonable.
- Dedicated `cfdp::tlv::TlvLvDataTooLarge` error struct for APIs where this is the only possible
API error.
2024-07-21 19:14:41 +02:00
- Added File Data PDU API which expects the expected file data size and then exposes the unwritten
file data field as a mutable slice. This allows to read data from the virtual file system
API to the file data buffer without an intermediate buffer.
- Generic `EofPdu::new` constructor.
2024-08-20 10:57:53 +02:00
- Added generic sequence counter module.
2024-08-20 16:56:25 +02:00
- Added `MsgToUserTlv::to_tlv` converter which reduced the type and converts
it to a generic `Tlv`.
2024-08-20 17:24:53 +02:00
- Implemented `From<MsgToUserTlv> for Tlv` converter trait.
- Added CFDP maximum file segment length calculator method `calculate_max_file_seg_len_for_max_packet_len_and_pdu_header`
2024-07-09 16:04:01 +02:00
## Added and Changed
- Added new `ReadableTlv` to avoid some boilerplate code and have a common abstraction implemented
for both `Tlv` and `TlvOwned` to read the raw TLV data field and its length.
- Replaced `cfdp::tlv::TlvLvError` by `cfdp::tlv::TlvLvDataTooLarge` where applicable.
2024-07-21 19:14:41 +02:00
## Fixed
- Fixed an error in the EOF writer which wrote the fault location to the wrong buffer position.
2024-08-29 09:46:40 +02:00
- cfdp `ConditionCode::CheckLimitReached` previous had the wrong numerical value of `0b1001` (9)
and now has the correct value of `0b1010` (10).
2024-07-21 19:14:41 +02:00
## Changed
- Minor documentation build updates.
2024-09-10 17:51:31 +02:00
- Increased delegate version range to v0.13
2024-05-19 08:49:03 +02:00
# [v0.11.2] 2024-05-19
2024-05-19 09:13:12 +02:00
- Bumped MSRV to 1.68.2
## Fixed
- Removed `defmt::Format` impl for `MetadataPduCreator` which seems to be problematic.
2024-04-22 10:18:35 +02:00
# [v0.11.1] 2024-04-22
2024-04-20 10:42:36 +02:00
## Fixed
- The default data length for for `SpHeader` constructors where the data field length is not
specified is now 0.
- The `SpHeader::new_from_fields` is public now.
## Added
- `SpHeader::to_vec` method.
2024-04-16 19:15:04 +02:00
# [v0.11.0] 2024-04-16
2024-04-13 12:10:32 +02:00
## Changed
- Moved `CCSDS_HEADER_LEN` constant to the crate root.
2024-04-16 19:15:04 +02:00
## Added
- Added `SpacePacketHeader` type alias for `SpHeader` type.
2024-04-04 14:12:33 +02:00
# [v0.11.0-rc.2] 2024-04-04
2024-04-03 18:21:37 +02:00
## Changed
- Renamed `PacketId` and `PacketSequenceCtrl` `new` method to `new_checked` and former
`new_const` method to `new`.
- Renamed `tc`, `tm`, `tc_unseg` and `tm_unseg` variants for `PacketId` and `SpHeader`
to `new_for_tc_checked`, `new_for_tm_checked`, `new_for_unseg_tc_checked` and
`new_for_unseg_tm_checked`.
2024-04-04 12:07:37 +02:00
- `PusTmCreator` and `PusTcCreator` now expect a regular instance of `SpHeader` instead of
a mutable reference.
2024-04-03 18:21:37 +02:00
## Added
- `SpHeader::new_from_apid` and `SpHeader::new_from_apid_checked` constructor.
2024-04-03 21:56:26 +02:00
- `#[inline]` attribute for a lot of small functions.
2024-04-03 14:13:04 +02:00
# [v0.11.0-rc.1] 2024-04-03
2024-03-18 15:14:40 +01:00
Major API changes for the time API. If you are using the time API, it is strongly recommended
to check all the API changes in the **Changed** chapter.
## Fixed
- CUC timestamp was fixed to include leap second corrections because it is based on the TAI
time reference. The default CUC time object do not implement `CcsdsTimeProvider` anymore
because the trait methods require cached leap second information. This task is now performed
by the `cuc::CucTimeWithLeapSecs` which implements the trait.
2024-03-11 14:28:18 +01:00
## Added
- `From<$EcssEnum$TY> from $TY` for the ECSS enum type definitions.
2024-03-18 15:14:40 +01:00
- Added basic support conversions to the `time` library. Introduce new `chrono` and `timelib`
feature gate.
- Added `CcsdsTimeProvider::timelib_date_time`.
2024-03-29 13:42:02 +01:00
- Optional support for `defmt` by adding optional `defmt::Format` derives for common types.
2024-03-18 15:14:40 +01:00
## Changed
2024-04-03 13:30:01 +02:00
- `PusTcCreator::new_simple` now expects a valid slice for the source data instead of an optional
slice. For telecommands without application data, `&[]` can be passed.
- `PusTmSecondaryHeader` constructors now expects a valid slice for the time stamp instead of an
optional slice.
2024-03-18 15:14:40 +01:00
- Renamed `CcsdsTimeProvider::date_time` to `CcsdsTimeProvider::chrono_date_time`
- Renamed `CcsdsTimeCodes` to `CcsdsTimeCode`
- Renamed `cds::TimeProvider` to `cds::CdsTime`
- Renamed `cuc::TimeProviderCcsdsEpoch` to `cuc::CucTime`
- `UnixTimestamp` renamed to `UnixTime`
- `UnixTime` seconds are now private and can be retrieved using the `secs` member method.
- `UnixTime::new` renamed to `UnixTime::new_checked`.
- `UnixTime::secs` renamed to `UnixTime::as_secs`.
2024-03-18 15:14:40 +01:00
- `UnixTime` now has a nanosecond subsecond precision. The `new` constructor now expects
nanoseconds as the second argument.
- Added new `UnixTime::new_subsec_millis` and `UnixTime::new_subsec_millis_checked` API
to still allow creating a timestamp with only millisecond subsecond resolution.
- `CcsdsTimeProvider` now has a new `subsec_nanos` method in addition to a default
implementation for the `subsec_millis` method.
- `CcsdsTimeProvider::date_time` renamed to `CcsdsTimeProvider::chrono_date_time`.
- Added `UnixTime::MIN`, `UnixTime::MAX` and `UnixTime::EPOCH`.
- Added `UnixTime::timelib_date_time`.
2024-03-25 13:42:18 +01:00
- Error handling for ECSS and time module is more granular now, with a new
`DateBeforeCcsdsEpochError` error and a `DateBeforeCcsdsEpoch` enum variant for both
`CdsError` and `CucError`.
2024-03-29 14:06:52 +01:00
- `PusTmCreator` now has two lifetimes: One for the raw source data buffer and one for the
raw timestamp.
- Time API `from_now*` API renamed to `now*`.
2024-03-11 14:28:18 +01:00
2024-03-29 14:06:52 +01:00
## Removed
- Legacy `PusTm` and `PusTc` objects.
2024-03-04 12:25:47 +01:00
# [v0.11.0-rc.0] 2024-03-04
2024-02-27 15:59:04 +01:00
## Added
- `From<$TY>` for the `EcssEnum$TY` ECSS enum type definitions.
- `Sub` implementation for `UnixTimestamp` to calculate the duration between two timestamps.
2024-02-27 15:59:04 +01:00
## Changed
- `CcsdsTimeProvider` `subsecond_millis` function now returns `u16` instead of `Option<u16>`.
- `UnixTimestamp` `subsecond_millis` function now returns `u16` instead of `Option<u16>`.
2024-02-17 13:24:25 +01:00
# [v0.10.0] 2024-02-17
## Added
- Added `value` and `to_vec` methods for the `UnsignedEnum` trait. The value is returned as
as `u64`. Renamed former `value` method on `GenericUnsignedByteField` to `value_typed`.
- Added `value_const` const function for `UnsignedByteField` type.
- Added `value_typed` const functions for `GenericUnsignedByteField` and `GenericEcssEnumWrapper`.
2024-02-07 11:07:20 +01:00
# [v0.9.0] 2024-02-07
## Added
- `CcsdsPacket`, `PusPacket` and `GenericPusTmSecondaryHeader` implementation for
`PusTmZeroCopyWriter`.
- Additional length checks for `PusTmZeroCopyWriter`.
## Changed
- `PusTmZeroCopyWriter`: Added additional timestamp length argument for `new` constructor.
## Fixed
- Typo: `PUC_TM_MIN_HEADER_LEN` -> `PUS_TM_MIN_HEADER_LEN`
2024-02-05 15:29:18 +01:00
# [v0.8.1] 2024-02-05
## Fixed
- Added `pub` visibility for `PacketSequenceCtrl::const_new`.
2024-02-05 15:04:29 +01:00
# [v0.8.0] 2024-02-05
## Added
- Added `len_written` and `to_vec` methods to the `TimeWriter` trait.
2024-02-01 17:52:45 +01:00
# [v0.7.0] 2024-02-01
2024-01-23 17:55:07 +01:00
# [v0.7.0-beta.4] 2024-01-23
## Fixed
- `MetadataPduCreator`: The serialization function shifted the closure requested information
to the wrong position (first reserved bit) inside the raw content field.
2023-12-06 18:13:22 +01:00
# [v0.7.0-beta.3] 2023-12-06
2023-11-24 16:15:46 +01:00
## Added
- Add `WritablePduPacket` trait which is a common trait of all CFDP PDU implementations.
- Add `CfdpPdu` trait which exposes fields and attributes common to all CFDP PDUs.
2023-12-04 15:54:35 +01:00
- Add `GenericTlv` and `WritableTlv` trait as abstractions for the various TLV types.
2023-11-24 16:15:46 +01:00
2023-10-06 15:02:12 +02:00
## Fixed
2023-11-24 16:15:46 +01:00
- Set the direction field inside the PDU header field correctly explicitely for all CFDP PDU
2023-10-06 15:02:12 +02:00
packets.
2023-11-24 16:15:46 +01:00
## Changed
2023-12-06 17:04:30 +01:00
- Split up `FinishedPdu`into `FinishedPduCreator` and `FinishedPduReader` to expose specialized
APIs.
- Split up `MetadataPdu`into `MetadataPduCreator` and `MetadataPduReader` to expose specialized
APIs.
2023-12-06 17:53:35 +01:00
- Cleaned up CUC time implementation. Added `width` and `counter` getter methods.
2023-11-24 16:15:46 +01:00
- Renamed `SerializablePusPacket` to `WritablePusPacket`.
2023-12-06 16:17:54 +01:00
- Renamed `UnsignedPfc` to `PfcUnsigned` and `RealPfc` to `PfcReal`.
2023-11-24 16:16:30 +01:00
- Renamed `WritablePduPacket.written_len` and `SerializablePusPacket.len_packed` to `len_written`.
- Introduce custom implementation of `PartialEq` for `CommonPduConfig` which only compares the
values for the source entity ID, destination entity ID and transaction sequence number field to
allow those fields to have different widths.
2023-12-03 15:46:07 +01:00
- Removed the `PusError::RawDataTooShort` variant which is already covered by
`PusError::ByteConversionError` variant.
2023-12-03 19:55:09 +01:00
- Ranamed `TlvLvError::ByteConversionError` to `TlvLvError::ByteConversion`.
2023-12-03 20:25:32 +01:00
- Renamed `PusError::IncorrectCrc` to `PusError::ChecksumFailure`.
2023-12-05 15:31:00 +01:00
- Some more struct variant changes for error enumerations.
2023-12-03 19:55:09 +01:00
## Removed
2023-12-03 20:25:32 +01:00
- `PusError::NoRawData` variant.
- `cfdp::LenInBytes` which was not used.
2023-11-24 16:15:46 +01:00
2023-09-26 17:17:01 +02:00
# [v0.7.0-beta.2] 2023-09-26
2023-09-18 16:59:38 +02:00
## Added
- `PacketId` trait impls: `Ord`, `PartialOrd` and `Hash`
- `SerializablePusPacket` trait: Add `to_vec` method with default implementation.
2023-09-18 16:59:38 +02:00
2023-08-28 18:36:00 +02:00
# [v0.7.0-beta.1] 2023-08-28
2023-08-28 18:54:01 +02:00
- Bump `zerocopy` dependency to v0.7.0
2023-08-16 16:27:10 +02:00
## Changed
- The `Tlv` and `Lv` API return `&[u8]` instead of `Option<&[u8]>`.
2023-08-28 17:00:29 +02:00
- `ByteConversionError` error variants `ToSliceTooSmall` and `FromSliceTooSmall` are struct
variants now. `SizeMissmatch` was removed appropriately.
2023-08-28 17:30:26 +02:00
- `UnsignedByteFieldError` error variants `ValueTooLargeForWidth` and `InvalidWidth` are struct
variants now.
- `TimestampError` error variant `InvalidTimeCode` is struct variant now.
2023-08-16 16:27:10 +02:00
## Added
- Added `raw_data` API for `Tlv` and `Lv` to retrieve the whole `Lv`/`Tlv` slice if the object
was created from a raw bytestream.
2023-08-16 18:01:54 +02:00
- Added `MsgToUserTlv` helper class which wraps a regular `Tlv` and adds some useful functionality.
2023-08-16 18:15:49 +02:00
- `UnsignedByteField` and `GenericUnsignedByteField` `new` methods are `const` now.
2023-08-17 21:22:49 +02:00
- `PduError` variants which contained a tuple variant with multiple fields were converted to a
struct variant.
2023-08-16 18:15:49 +02:00
2023-08-17 20:42:45 +02:00
# Added
- Added `pdu_datafield_len` getter function for `PduHeader`
2023-08-16 16:27:10 +02:00
2023-08-28 17:00:29 +02:00
## Removed
- `SizeMissmatch` because it is not required for the `ByteConversionError` error enumeration
anymore.
2023-08-16 14:00:38 +02:00
# [v0.7.0-beta.0] 2023-08-16
2023-07-09 12:27:44 +02:00
2023-08-11 14:00:46 +02:00
- Moved MSRV from v1.60 to v1.61.
2023-07-09 12:27:44 +02:00
## Changed
2023-07-11 00:03:07 +02:00
- `PusPacket` trait: `user_data` now returns `&[u8]` instead of `Option<&[u8]>`. Empty user data
can simply be an empty slice.
2023-07-09 12:27:44 +02:00
- Moved ECSS TC components from `tc` to `ecss.tc`.
- Moved ECSS TM components from `tm` to `ecss.tm`.
2023-07-10 23:18:09 +02:00
- Converted `PusTc` class to more specialized `PusTcCreator` and `PusTcReader`
classes. The old `PusTc` class is deprecated now.
- Converted `PusTm` class to more specialized `PusTmCreator` and `PusTmReader`
classes. The old `PusTm` class is deprecated now.
2023-07-09 16:46:25 +02:00
- Implement `Display` and `Error` for `StdTimestampError` properly.
2023-07-10 00:37:16 +02:00
- Remove some redundant `Error` suffixes for enum error variants.
2023-08-10 20:22:07 +02:00
- `CommonPduConfig`: `new_with_defaults` replaced by `new_with_byte_fields`.
2023-07-09 12:27:44 +02:00
2023-07-10 23:37:23 +02:00
## Added
2023-07-11 00:03:07 +02:00
- `source_data` and `app_data` API provided for PUS TM and PUS TC reader classes. These simply
call `user_data` but are also in line with the PUS packet standard names for those fields.
2023-07-10 23:37:23 +02:00
- Added new marker trait `IsPusTelemetry` implemented by `PusTmCreator` and `PusTmReader`.
- Added new marker trait `IsPusTelecommand` implemented by `PusTcCreator` and `PusTcReader`.
2023-08-10 18:17:32 +02:00
- `metadata_param` getter method for the `MetadataPdu` object.
2023-08-10 20:03:50 +02:00
- `Default` impl for CFDP `ChecksumType`
2023-08-10 20:22:07 +02:00
- `Default` impl for CFDP `CommonPduConfig`
2023-08-10 18:17:32 +02:00
## Fixed
- All `MetadataGenericParam` fields are now public.
2023-08-10 20:01:13 +02:00
- New setter method `set_source_and_dest_id` for `CommonPduConfig`.
2023-07-10 23:37:23 +02:00
2023-07-06 01:26:53 +02:00
# [v0.6.0] 2023-07-06
2023-05-14 20:10:34 +02:00
## Added
- Added new `util` module which contains the following (new) helper modules:
- `UnsignedEnum` trait as an abstraction for unsigned byte fields with variable lengths. It is
2023-07-02 20:57:50 +02:00
not tied to the ECSS PFC value like the `EcssEnumeration` trait. The method to retrieve
the size of the unsigned enumeration in bytes is now called `size`.
2023-05-14 20:11:31 +02:00
- `GenericUnsignedByteField<TYPE>` and helper typedefs `UnsignedU8`, `UnsignedU16`, `UnsignedU32`
and `UnsignedU64` as helper types implementing `UnsignedEnum`
2023-05-14 20:10:34 +02:00
- `UnsignedByteField` as a type-erased helper.
2023-07-06 01:24:40 +02:00
- Initial CFDP support: Added PDU packet implementation.
2023-07-02 18:38:18 +02:00
- Added `SerializablePusPacket` as a generic abstraction for PUS packets which are
writable.
2023-07-05 19:07:31 +02:00
- Added new `PusTmZeroCopyWriter` class which allows to set fields on a raw TM packet,
which might be more efficient that modification and re-writing a packet with the
`PusTm` object.
2023-05-14 20:10:34 +02:00
## Changed
2023-05-14 20:10:34 +02:00
- The `EcssEnumeration` now requires the `UnsignedEnum` trait and only adds the `pfc` method to it.
2023-07-06 01:24:40 +02:00
- Renamed `byte_width` usages to `size` (part of new `UnsignedEnum` trait)
2023-05-29 13:46:19 +02:00
- Moved `ecss::CRC_CCITT_FALSE` CRC constant to the root module. This CRC type is not just used by
the PUS standard, but by the CCSDS Telecommand standard and the CFDP standard as well.
2023-05-14 20:10:34 +02:00
2023-02-12 17:23:37 +01:00
# [v0.5.4] 2023-02-12
## Added
- `Clone` trait requirement for `time::cds::ProvidesDaysLen` trait.
- Added `Copy` and `Clone` derives for `DaysLen16Bits` and `DaysLen24Bits`.
2023-02-05 23:46:07 +01:00
# [v0.5.3] 2023-02-05
2023-02-04 15:13:59 +01:00
## Added
- `num_enum` dependency to avoid boilerplate code for primtive to enum conversions, for example
for the PUS subservices.
- `ecss.event` module containing a `Subservice` enum.
- `ecss.verification` module containing a `Subservice` enum.
- `ecss.scheduling` module containing a `Subservice` enum and some other helper enumerations.
2023-02-04 15:16:57 +01:00
- `ecss.hk` module containing a `Subservice` enum.
2023-02-04 15:13:59 +01:00
## Changed
- Added missing Service IDs to `ecss.PusServiceId` and marked in `#[non_exhaustive]`.
2023-02-05 18:47:46 +01:00
## Fixed
- `time.UnixTimestamp`: All constructors and `From` conversions now use the `new` constructor,
which should cause a correct conversion of 0 subsecond milliseconds to a `None` value.
2023-01-26 22:03:43 +01:00
# [v0.5.2] 2023-01-26
2023-01-26 19:07:35 +01:00
## Added
- Added `.gitignore`.
## Fixed
- Correct implementation of Trait `PartialEq` for `PusTc` and `PusTm`. The previous auto-derivation
were incorrect because they also compared fields unrelated to the raw byte representation.
2023-01-26 19:07:35 +01:00
2023-01-26 21:31:29 +01:00
## Changed
- Renamed `PusTc` `raw` method to `raw_bytes` and add better docs to avoid confusion.
Deprecate `raw` to avoid breaking change.
- Added `raw_bytes` method to `PusTm`.
2023-01-22 13:06:22 +01:00
# [v0.5.1] 2023-01-22
2023-01-21 01:25:05 +01:00
## Added
- `time::cds::TimeProvider`
- Add `Ord` and `PartialOrd`, use custom `PartialEq` 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>` into
`cds::TimeProvider<DaysLen24Bits>` and vice-versa.
- `time::UnixTimestamp`
- Add `Ord` and `PartialOrd` implementations.
2023-01-21 13:17:38 +01:00
- Add `Add<Duration>` and `AddAssign<Duration>` implementations.
2023-01-21 01:25:05 +01:00
## Fixed
2023-01-22 13:11:43 +01:00
- `time::cds::TimeProvider`: Fixed a bug where subsecond milliseconds were not accounted for
when the provider has no submillisecond precision.
2023-01-20 19:48:20 +01:00
# [v0.5.0] 2023-01-20
2023-01-16 18:00:23 +01:00
The timestamp of `PusTm` is now optional. See Added and Changed section for details.
2023-01-14 17:15:48 +01:00
## Added
2023-01-16 11:56:25 +01:00
- `PusTmSecondaryHeader`: New `new_simple_no_timestamp` API to create secondary header without
timestamp.
2023-01-16 18:00:23 +01:00
- `PusTm`: Add `new_simple_no_timestamp` method to create TM without timestamp
2023-01-15 21:12:54 +01:00
- New `UnixTimestamp` abstraction which contains the unix seconds as an `i64`
and an optional subsecond millisecond counter (`u16`)
2023-01-15 21:47:35 +01:00
- `MS_PER_DAY` constant.
2023-01-17 01:16:07 +01:00
- CUC: Added `from_date_time` and `from_unix_stamp` constructors for time provider.
- CUC: Add `Add<Duration>` and `AddAssign<Duration>` impl for time provider.
2023-01-16 11:56:25 +01:00
2023-01-15 21:12:54 +01:00
### CDS time module
2023-01-16 11:56:25 +01:00
2023-01-15 21:53:25 +01:00
- Implement `Add<Duration>` and `AddAssign<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`: Requires `alloc` support and returns
the correct `TimeProvider` instance wrapped as a boxed trait object
`Box<DynCdsTimeProvider>` by checking the length of days field.
2023-01-15 21:12:54 +01:00
- Added constructor function to create the time provider
2023-01-14 17:15:48 +01:00
from `chrono::DateTime<Utc>` and a generic UNIX timestamp (`i64` seconds
and subsecond milliseconds).
2023-01-15 20:48:39 +01:00
- `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.
2023-01-15 21:47:35 +01:00
- New `CdsTimestamp` trait which encapsulates common fields for all CDS time providers.
- `from_unix_secs_with_u24_days` and `from_unix_secs_with_u16_days` which create
the time provider from a `UnixTimestamp` 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
a `chrono::DateTime<Utc>`.
- Add `from_bytes_with_u24_days` and `from_bytes_with_u16_days` associated methods
2023-01-15 20:48:39 +01:00
## Changed
2023-01-17 01:16:07 +01:00
- (breaking) `unix_epoch_to_ccsds_epoch`: Expect and return `i64` instead of `u64` now.
- (breaking) `ccsds_epoch_to_unix_epoch`: Expect and return `i64` instead of `u64` now.
- (breaking) `PusTmSecondaryHeader`: Timestamp is optional now, which translates to a
timestamp of size 0.
- (breaking): `PusTm`: Renamed `time_stamp` method to `timestamp`, also returns
`Optional<&'src_data [u8]>` now.
- (breaking): `PusTmSecondaryHeader`: Renamed `time_stamp` field to `timestamp` for consistency.
2023-01-15 21:47:35 +01:00
- (breaking): Renamed `from_now_with_u24_days_and_us_prec` to `from_now_with_u24_days_us_precision`.
Also did the same for the `u16` variant.
- (breaking): Renamed `from_now_with_u24_days_and_ps_prec` to `from_now_with_u24_days_ps_precision`.
Also did the same for the `u16` variant.
2023-01-15 20:48:39 +01:00
- `CcsdsTimeProvider` trait (breaking):
2023-01-15 21:47:35 +01:00
- Add new `unix_stamp` method returning the new `UnixTimeStamp` struct.
- Add new `subsecond_millis` method returning counter `Option<u16>`.
2023-01-15 20:48:39 +01:00
- Default impl for `unix_stamp` which re-uses `subsecond_millis` and
2023-01-15 21:47:35 +01:00
existing `unix_seconds` method.
2023-01-15 20:48:39 +01:00
- `TimestampError` (breaking): Add `DateBeforeCcsdsEpoch` error type
because new CDS API allow supplying invalid date times before CCSDS epoch.
Make `TimestampError` with `#[non_exhaustive]` attribute to prevent
2023-01-15 21:47:35 +01:00
future breakages if new error variants are added.
2023-01-16 11:56:25 +01:00
2023-01-14 17:46:43 +01:00
# [v0.4.2] 14.01.2023
## Fixed
- CDS timestamp: Fixed another small logic error for stamp creation from the current
time with picosecond precision.
2023-01-14 17:47:52 +01:00
PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/8
2023-01-14 17:46:43 +01:00
2023-01-14 17:18:02 +01:00
# [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.
2023-01-14 17:47:52 +01:00
PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/7
2023-01-14 17:18:02 +01:00
2023-01-10 00:00:10 +01:00
# [v0.4.0] 10.01.2023
2023-01-09 11:21:07 +01:00
2022-12-21 10:14:58 +01:00
## Fixed
- Remove `Default` derive on CDS time provider. This can lead to uninitialized preamble fields.
2022-12-04 17:11:44 +01:00
## Changed
2022-12-05 09:05:35 +01:00
- `serde` support is now optional and behind the `serde` feature.
2022-12-07 14:42:53 +01:00
- `PusTcSecondaryHeaderT` trait renamed to `GenericPusTcSecondaryHeader`.
2022-12-05 09:05:35 +01:00
- `PusTmSecondaryHeaderT` trait renamed to `GenericPusTmSecondaryHeader`.
2022-12-04 19:57:51 +01:00
- `SpHeader`: Former `tc` and `tm` methods now named `tc_unseg` and `tm_unseg`.
2022-12-05 09:05:35 +01:00
Former `new` method now called `new_from_single_fields`.
- `SpHeader`: Renamed `from_bytes` to `from_be_bytes`.
The function now returns the remaining slice as well.
2022-12-07 14:42:01 +01:00
- All CDS specific functionality was moved into the `cds` submodule of the `time`
module. `CdsShortTimeProvider` was renamed to `TimeProvider`.
2022-12-20 16:27:23 +01:00
PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/3
2022-12-04 17:22:51 +01:00
## Added
2023-01-09 11:12:07 +01:00
- `SpHeader` getter function `sp_header` added for `PusTc`
PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/6
2022-12-20 16:21:30 +01:00
- Added PFC enumerations: `ecss::UnsignedPfc` and `ecss::RealPfc`.
PR: https://egit.irs.uni-stuttgart.de/rust/spacepackets/pulls/5
2022-12-07 14:42:53 +01:00
- Added `std::error::Error` implementation for all error enumerations if the `std` feature
is enabled.
2022-12-10 18:27:13 +01:00
- 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.
2022-12-07 19:05:09 +01:00
- Added MSRV in `Cargo.toml` with the `rust-version` field set to Rust 1.60.
2022-12-05 09:05:35 +01:00
- `serde` `Serialize` and `Deserialize` added to all types.
2022-12-04 19:57:51 +01:00
- Added `const` constructors for `PacketId`, `PacketSeqCtrl` and
2022-12-05 09:05:35 +01:00
`SpHeader`.
2022-12-07 14:42:01 +01:00
- Added `PartialEq` and `Eq` `derive`s to `TimeProvider`.
2022-12-05 09:05:35 +01:00
- `SpHeader`: Added serialization function into raw format `write_to_be_bytes`.
2022-12-07 14:42:01 +01:00
- 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`
2022-12-04 17:18:10 +01:00
2022-12-03 15:47:18 +01:00
# [v0.3.1] 03.12.2022
- Small fix for faulty docs.rs build
2022-12-01 01:22:19 +01:00
# [v0.3.0] 01.12.2022
2022-11-02 11:10:41 +01:00
## Added
- `EcssEnumerationExt` trait which implements `Debug`, `Copy`, `Clone`,
`PartialEq` and `Eq` in addition to `EcssEnumeration`
## Changed
- `EcssEnumeration` trait: Rename `write_to_bytes`
to `write_to_be_bytes`
2022-09-13 10:18:21 +02:00
# [v0.2.0] 13.09.2022
2022-09-03 18:50:21 +02:00
## Added
- Basic support for ECSS enumeration types for u8, u16, u32 and u64
## Changed
- Better names for generic error enumerations: `PacketError` renamed to `ByteConversionError`
2022-09-13 10:28:20 +02:00
- CCSDS module: `ssc` abbreviations fully replaced by better name `seq_count`
2022-09-13 10:18:21 +02:00
- Time module: `CcsdsTimeProvider::date_time` now has `Option<DateTime<Utc>>` as
a returnvalue instead of `DateTime<Utc>`
2022-09-13 10:28:20 +02:00
- `PusTc` and `PusTm`: `new_from_raw_slice` renamed to simpler `from_bytes`
2022-09-03 18:50:21 +02:00
# [v0.1.0] 16.08.2022
2022-06-19 14:37:36 +02:00
2022-08-16 01:17:10 +02:00
Initial release with CCSDS Space Packet Primary Header implementation and basic PUS TC and TM
implementations.