Add new features
- Basic ECSS enumeration support for u8, u16, u32 and u64 - Better names for generic error enums
This commit is contained in:
19
src/tm.rs
19
src/tm.rs
@ -5,7 +5,8 @@ use crate::ecss::{
|
||||
verify_crc16_from_raw, CrcType, PusError, PusPacket, PusVersion, CRC_CCITT_FALSE,
|
||||
};
|
||||
use crate::{
|
||||
CcsdsPacket, PacketError, PacketType, SequenceFlags, SizeMissmatch, SpHeader, CCSDS_HEADER_LEN,
|
||||
ByteConversionError, CcsdsPacket, PacketType, SequenceFlags, SizeMissmatch, SpHeader,
|
||||
CCSDS_HEADER_LEN,
|
||||
};
|
||||
use core::mem::size_of;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@ -309,7 +310,7 @@ impl<'slice> PusTm<'slice> {
|
||||
let sph_zc = crate::zc::SpHeader::from(self.sp_header);
|
||||
let total_size = self.len_packed();
|
||||
if total_size > slice.len() {
|
||||
return Err(PusError::PacketError(PacketError::ToBytesSliceTooSmall(
|
||||
return Err(PusError::PacketError(ByteConversionError::ToSliceTooSmall(
|
||||
SizeMissmatch {
|
||||
found: slice.len(),
|
||||
expected: total_size,
|
||||
@ -318,14 +319,14 @@ impl<'slice> PusTm<'slice> {
|
||||
}
|
||||
sph_zc
|
||||
.to_bytes(&mut slice[curr_idx..curr_idx + CCSDS_HEADER_LEN])
|
||||
.ok_or(PusError::PacketError(PacketError::ToBytesZeroCopyError))?;
|
||||
.ok_or(PusError::PacketError(ByteConversionError::ZeroCopyToError))?;
|
||||
|
||||
curr_idx += CCSDS_HEADER_LEN;
|
||||
let sec_header_len = size_of::<zc::PusTmSecHeaderWithoutTimestamp>();
|
||||
let sec_header = zc::PusTmSecHeaderWithoutTimestamp::try_from(self.sec_header).unwrap();
|
||||
sec_header
|
||||
.to_bytes(&mut slice[curr_idx..curr_idx + sec_header_len])
|
||||
.ok_or(PusError::PacketError(PacketError::ToBytesZeroCopyError))?;
|
||||
.ok_or(PusError::PacketError(ByteConversionError::ZeroCopyToError))?;
|
||||
curr_idx += sec_header_len;
|
||||
let timestamp_len = self.sec_header.time_stamp.len();
|
||||
slice[curr_idx..curr_idx + timestamp_len].copy_from_slice(self.sec_header.time_stamp);
|
||||
@ -394,7 +395,9 @@ impl<'slice> PusTm<'slice> {
|
||||
let mut current_idx = 0;
|
||||
let sph =
|
||||
crate::zc::SpHeader::from_bytes(&slice[current_idx..current_idx + CCSDS_HEADER_LEN])
|
||||
.ok_or(PusError::PacketError(PacketError::FromBytesZeroCopyError))?;
|
||||
.ok_or(PusError::PacketError(
|
||||
ByteConversionError::ZeroCopyFromError,
|
||||
))?;
|
||||
current_idx += 6;
|
||||
let total_len = sph.total_len();
|
||||
if raw_data_len < total_len || total_len < PUS_TM_MIN_LEN_WITHOUT_SOURCE_DATA {
|
||||
@ -403,7 +406,9 @@ impl<'slice> PusTm<'slice> {
|
||||
let sec_header_zc = zc::PusTmSecHeaderWithoutTimestamp::from_bytes(
|
||||
&slice[current_idx..current_idx + PUC_TM_MIN_SEC_HEADER_LEN],
|
||||
)
|
||||
.ok_or(PusError::PacketError(PacketError::FromBytesZeroCopyError))?;
|
||||
.ok_or(PusError::PacketError(
|
||||
ByteConversionError::ZeroCopyFromError,
|
||||
))?;
|
||||
current_idx += PUC_TM_MIN_SEC_HEADER_LEN;
|
||||
let zc_sec_header_wrapper = zc::PusTmSecHeader {
|
||||
zc_header: sec_header_zc,
|
||||
@ -568,7 +573,7 @@ mod tests {
|
||||
assert!(matches!(error, PusError::PacketError { .. }));
|
||||
match error {
|
||||
PusError::PacketError(err) => match err {
|
||||
PacketError::ToBytesSliceTooSmall(size_missmatch) => {
|
||||
ByteConversionError::ToSliceTooSmall(size_missmatch) => {
|
||||
assert_eq!(size_missmatch.expected, 22);
|
||||
assert_eq!(size_missmatch.found, 16);
|
||||
}
|
||||
|
Reference in New Issue
Block a user