//! This module contains all components required to create a ECSS PUS C telemetry packets according
//! to [ECSS-E-ST-70-41C](https://ecss.nl/standard/ecss-e-st-70-41c-space-engineering-telemetry-and-telecommand-packet-utilization-15-april-2016/).
//! let (ping_tm_reader, read_size) = PusTmReader::new(&test_buf, 7).expect("Deserialization failed");
/// This class models the PUS C telemetry packet. It is the primary data structure to generate the
/// This class also derives the [serde::Serialize] and [serde::Deserialize] trait if the [serde]
/// This class also derives the [serde::Serialize] and [serde::Deserialize] trait if the [serde]
pub fn new(slice: &'raw_data [u8], timestamp_len: usize) -> Result<(Self, usize), PusError> {
/// This is a helper class to update certain fields in a raw PUS telemetry packet directly in place.
/// This can be more efficient than creating a full [PusTmReader], modifying the fields and then
/// Please note that the [Self::finish] method has to be called for the PUS TM CRC16 to be valid
/// do any checks except basic length checks to ensure that all relevant fields can be updated and
/// required, it is recommended to construct a full [PusTmReader] object from the raw bytestream