Various smaller changes
This commit is contained in:
parent
8970ac7bc5
commit
5d39cef6a0
29
src/tc.rs
29
src/tc.rs
@ -213,21 +213,27 @@ impl PusTcSecondaryHeader {
|
|||||||
/// serde provider like [postcard](https://docs.rs/postcard/latest/postcard/).
|
/// serde provider like [postcard](https://docs.rs/postcard/latest/postcard/).
|
||||||
///
|
///
|
||||||
/// There is no spare bytes support yet.
|
/// There is no spare bytes support yet.
|
||||||
|
///
|
||||||
|
/// # Lifetimes
|
||||||
|
///
|
||||||
|
/// * `'raw_data` - If the TC is not constructed from a raw slice, this will be the life time of
|
||||||
|
/// a buffer where the user provided application data will be serialized into. If it
|
||||||
|
/// is, this is the lifetime of the raw byte slice it is constructed from.
|
||||||
#[derive(Eq, Copy, Clone, Debug)]
|
#[derive(Eq, Copy, Clone, Debug)]
|
||||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||||
pub struct PusTc<'app_data> {
|
pub struct PusTc<'raw_data> {
|
||||||
sp_header: SpHeader,
|
sp_header: SpHeader,
|
||||||
pub sec_header: PusTcSecondaryHeader,
|
pub sec_header: PusTcSecondaryHeader,
|
||||||
/// If this is set to false, a manual call to [PusTc::calc_own_crc16] or
|
/// If this is set to false, a manual call to [PusTc::calc_own_crc16] or
|
||||||
/// [PusTc::update_packet_fields] is necessary for the serialized or cached CRC16 to be valid.
|
/// [PusTc::update_packet_fields] is necessary for the serialized or cached CRC16 to be valid.
|
||||||
pub calc_crc_on_serialization: bool,
|
pub calc_crc_on_serialization: bool,
|
||||||
#[cfg_attr(feature = "serde", serde(skip))]
|
#[cfg_attr(feature = "serde", serde(skip))]
|
||||||
raw_data: Option<&'app_data [u8]>,
|
raw_data: Option<&'raw_data [u8]>,
|
||||||
app_data: Option<&'app_data [u8]>,
|
app_data: Option<&'raw_data [u8]>,
|
||||||
crc16: Option<u16>,
|
crc16: Option<u16>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'app_data> PusTc<'app_data> {
|
impl<'raw_data> PusTc<'raw_data> {
|
||||||
/// Generates a new struct instance.
|
/// Generates a new struct instance.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
@ -243,7 +249,7 @@ impl<'app_data> PusTc<'app_data> {
|
|||||||
pub fn new(
|
pub fn new(
|
||||||
sp_header: &mut SpHeader,
|
sp_header: &mut SpHeader,
|
||||||
sec_header: PusTcSecondaryHeader,
|
sec_header: PusTcSecondaryHeader,
|
||||||
app_data: Option<&'app_data [u8]>,
|
app_data: Option<&'raw_data [u8]>,
|
||||||
set_ccsds_len: bool,
|
set_ccsds_len: bool,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
sp_header.set_packet_type(PacketType::Tc);
|
sp_header.set_packet_type(PacketType::Tc);
|
||||||
@ -268,7 +274,7 @@ impl<'app_data> PusTc<'app_data> {
|
|||||||
sph: &mut SpHeader,
|
sph: &mut SpHeader,
|
||||||
service: u8,
|
service: u8,
|
||||||
subservice: u8,
|
subservice: u8,
|
||||||
app_data: Option<&'app_data [u8]>,
|
app_data: Option<&'raw_data [u8]>,
|
||||||
set_ccsds_len: bool,
|
set_ccsds_len: bool,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self::new(
|
Self::new(
|
||||||
@ -405,7 +411,7 @@ impl<'app_data> PusTc<'app_data> {
|
|||||||
|
|
||||||
/// Create a [PusTc] instance from a raw slice. On success, it returns a tuple containing
|
/// Create a [PusTc] instance from a raw slice. On success, it returns a tuple containing
|
||||||
/// the instance and the found byte length of the packet.
|
/// the instance and the found byte length of the packet.
|
||||||
pub fn from_bytes(slice: &'app_data [u8]) -> Result<(Self, usize), PusError> {
|
pub fn from_bytes(slice: &'raw_data [u8]) -> Result<(Self, usize), PusError> {
|
||||||
let raw_data_len = slice.len();
|
let raw_data_len = slice.len();
|
||||||
if raw_data_len < PUS_TC_MIN_LEN_WITHOUT_APP_DATA {
|
if raw_data_len < PUS_TC_MIN_LEN_WITHOUT_APP_DATA {
|
||||||
return Err(PusError::RawDataTooShort(raw_data_len));
|
return Err(PusError::RawDataTooShort(raw_data_len));
|
||||||
@ -435,7 +441,14 @@ impl<'app_data> PusTc<'app_data> {
|
|||||||
Ok((pus_tc, total_len))
|
Ok((pus_tc, total_len))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn raw(&self) -> Option<&'app_data [u8]> {
|
#[deprecated(since = "0.5.2", note = "use raw_bytes() instead")]
|
||||||
|
pub fn raw(&self) -> Option<&'raw_data [u8]> {
|
||||||
|
self.raw_bytes()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// If [Self] was constructed [Self::from_bytes], this function will return the slice it was
|
||||||
|
/// constructed from. Otherwise, [None] will be returned.
|
||||||
|
pub fn raw_bytes(&self) -> Option<&'raw_data [u8]> {
|
||||||
self.raw_data
|
self.raw_data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
36
src/tm.rs
36
src/tm.rs
@ -200,23 +200,24 @@ impl<'slice> TryFrom<zc::PusTmSecHeader<'slice>> for PusTmSecondaryHeader<'slice
|
|||||||
///
|
///
|
||||||
/// # Lifetimes
|
/// # Lifetimes
|
||||||
///
|
///
|
||||||
/// * `'src_data` - Life time of a buffer where the user provided time stamp and source data will
|
/// * `'raw_data` - If the TM is not constructed from a raw slice, this will be the life time of
|
||||||
/// be serialized into.
|
/// a buffer where the user provided time stamp and source data will be serialized into. If it
|
||||||
|
/// is, this is the lifetime of the raw byte slice it is constructed from.
|
||||||
#[derive(Eq, Debug, Copy, Clone)]
|
#[derive(Eq, Debug, Copy, Clone)]
|
||||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||||
pub struct PusTm<'src_data> {
|
pub struct PusTm<'raw_data> {
|
||||||
pub sp_header: SpHeader,
|
pub sp_header: SpHeader,
|
||||||
pub sec_header: PusTmSecondaryHeader<'src_data>,
|
pub sec_header: PusTmSecondaryHeader<'raw_data>,
|
||||||
/// If this is set to false, a manual call to [PusTm::calc_own_crc16] or
|
/// If this is set to false, a manual call to [PusTm::calc_own_crc16] or
|
||||||
/// [PusTm::update_packet_fields] is necessary for the serialized or cached CRC16 to be valid.
|
/// [PusTm::update_packet_fields] is necessary for the serialized or cached CRC16 to be valid.
|
||||||
pub calc_crc_on_serialization: bool,
|
pub calc_crc_on_serialization: bool,
|
||||||
#[cfg_attr(feature = "serde", serde(skip))]
|
#[cfg_attr(feature = "serde", serde(skip))]
|
||||||
raw_data: Option<&'src_data [u8]>,
|
raw_data: Option<&'raw_data [u8]>,
|
||||||
source_data: Option<&'src_data [u8]>,
|
source_data: Option<&'raw_data [u8]>,
|
||||||
crc16: Option<u16>,
|
crc16: Option<u16>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'src_data> PusTm<'src_data> {
|
impl<'raw_data> PusTm<'raw_data> {
|
||||||
/// Generates a new struct instance.
|
/// Generates a new struct instance.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
@ -231,8 +232,8 @@ impl<'src_data> PusTm<'src_data> {
|
|||||||
/// the correct value to this field manually
|
/// the correct value to this field manually
|
||||||
pub fn new(
|
pub fn new(
|
||||||
sp_header: &mut SpHeader,
|
sp_header: &mut SpHeader,
|
||||||
sec_header: PusTmSecondaryHeader<'src_data>,
|
sec_header: PusTmSecondaryHeader<'raw_data>,
|
||||||
source_data: Option<&'src_data [u8]>,
|
source_data: Option<&'raw_data [u8]>,
|
||||||
set_ccsds_len: bool,
|
set_ccsds_len: bool,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
sp_header.set_packet_type(PacketType::Tm);
|
sp_header.set_packet_type(PacketType::Tm);
|
||||||
@ -262,11 +263,11 @@ impl<'src_data> PusTm<'src_data> {
|
|||||||
length
|
length
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn timestamp(&self) -> Option<&'src_data [u8]> {
|
pub fn timestamp(&self) -> Option<&'raw_data [u8]> {
|
||||||
self.sec_header.timestamp
|
self.sec_header.timestamp
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn source_data(&self) -> Option<&'src_data [u8]> {
|
pub fn source_data(&self) -> Option<&'raw_data [u8]> {
|
||||||
self.source_data
|
self.source_data
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -401,7 +402,7 @@ impl<'src_data> PusTm<'src_data> {
|
|||||||
/// the instance and the found byte length of the packet. The timestamp length needs to be
|
/// the instance and the found byte length of the packet. The timestamp length needs to be
|
||||||
/// known beforehand.
|
/// known beforehand.
|
||||||
pub fn from_bytes(
|
pub fn from_bytes(
|
||||||
slice: &'src_data [u8],
|
slice: &'raw_data [u8],
|
||||||
timestamp_len: usize,
|
timestamp_len: usize,
|
||||||
) -> Result<(Self, usize), PusError> {
|
) -> Result<(Self, usize), PusError> {
|
||||||
let raw_data_len = slice.len();
|
let raw_data_len = slice.len();
|
||||||
@ -441,6 +442,17 @@ impl<'src_data> PusTm<'src_data> {
|
|||||||
verify_crc16_from_raw(raw_data, pus_tm.crc16.expect("CRC16 invalid"))?;
|
verify_crc16_from_raw(raw_data, pus_tm.crc16.expect("CRC16 invalid"))?;
|
||||||
Ok((pus_tm, total_len))
|
Ok((pus_tm, total_len))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[deprecated(since = "0.5.2", note = "use raw_bytes() instead")]
|
||||||
|
pub fn raw(&self) -> Option<&'raw_data [u8]> {
|
||||||
|
self.raw_bytes()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// If [Self] was constructed [Self::from_bytes], this function will return the slice it was
|
||||||
|
/// constructed from. Otherwise, [None] will be returned.
|
||||||
|
pub fn raw_bytes(&self) -> Option<&'raw_data [u8]> {
|
||||||
|
self.raw_data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PartialEq for PusTm<'_> {
|
impl PartialEq for PusTm<'_> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user