make spacepackets no_std

This commit is contained in:
muellerr committed 2022-06-18 21:50:22 +02:00
1 parent ac7a295c37
commit b938eff9cf
9 files changed
+60 -160

No files matched your search

+1 -1
View File
@@ -1,7 +1,7 @@
use crate::{CcsdsPacket, PacketError};
use crc::{Crc, CRC_16_IBM_3740};
use serde::{Deserialize, Serialize};
use std::mem::size_of;
use core::mem::size_of;
/// CRC algorithm used by the PUS standard
pub const CRC_CCITT_FALSE: Crc<u16> = Crc::<u16>::new(&CRC_16_IBM_3740);
+7 -3
View File
@@ -1,4 +1,7 @@
//! # Space related components including CCSDS and ECSS packet standards
#![no_std]
extern crate alloc;
use crate::ecss::CCSDS_HEADER_LEN;
use serde::{Deserialize, Serialize};
@@ -237,7 +240,7 @@ pub trait CcsdsPrimaryHeader {
) -> Self;
}
pub mod srd {
pub mod ser {
use crate::{
CcsdsPacket, CcsdsPrimaryHeader, PacketId, PacketSequenceCtrl, PacketType, SequenceFlags,
};
@@ -412,12 +415,13 @@ pub mod zc {
}
}
sph_from_other!(SpHeader, crate::srd::SpHeader);
sph_from_other!(SpHeader, crate::ser::SpHeader);
}
#[cfg(test)]
mod tests {
use crate::srd::SpHeader;
use alloc::vec;
use crate::ser::SpHeader;
use crate::{
packet_type_in_raw_packet_id, zc, CcsdsPacket, CcsdsPrimaryHeader, PacketId,
PacketSequenceCtrl, PacketType, SequenceFlags,
-67
View File
@@ -1,67 +0,0 @@
use postcard::{from_bytes, to_stdvec};
use serde::{Deserialize, Serialize};
use zerocopy::byteorder::{I32, U16};
use zerocopy::{AsBytes, FromBytes, NetworkEndian, Unaligned};
#[derive(AsBytes, FromBytes, Unaligned, Debug, Eq, PartialEq)]
#[repr(C, packed)]
struct ZeroCopyTest {
some_bool: u8,
some_u16: U16<NetworkEndian>,
some_i32: I32<NetworkEndian>,
some_float: [u8; 4],
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct PostcardTest {
some_bool: u8,
some_u16: u16,
some_i32: i32,
some_float: f32,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct SliceSerTest<'slice> {
some_u8: u8,
some_u32: u32,
some_slice: &'slice [u8],
}
fn main() {
let pc_test = PostcardTest {
some_bool: true as u8,
some_u16: 0x42,
some_i32: -200,
some_float: 7.7_f32,
};
let out = to_stdvec(&pc_test).unwrap();
println!("{:#04x?}", out);
let sample_hk = ZeroCopyTest {
some_bool: true as u8,
some_u16: U16::from(0x42),
some_i32: I32::from(-200),
some_float: 7.7_f32.to_be_bytes(),
};
let mut slice = [0; 11];
sample_hk.write_to(slice.as_mut_slice());
println!("{:#04x?}", slice);
let ser_vec;
{
let test_buf = [0, 1, 2, 3];
let test_with_slice = SliceSerTest {
some_u8: 12,
some_u32: 1,
some_slice: test_buf.as_slice(),
};
ser_vec = to_stdvec(&test_with_slice).unwrap();
println!("{:#04x?}", out);
}
{
let test_deser: SliceSerTest = from_bytes(ser_vec.as_slice()).unwrap();
println!("{:?}", test_deser);
}
}
+11 -9
View File
@@ -1,6 +1,6 @@
use crate::ecss::PusVersion;
use crate::CCSDS_HEADER_LEN;
use std::mem::size_of;
use core::mem::size_of;
type CrcType = u16;
@@ -32,7 +32,7 @@ pub trait PusTcSecondaryHeader {
pub mod zc {
use crate::ecss::{PusError, PusVersion};
use crate::tc::{srd, PusTcSecondaryHeader};
use crate::tc::{ser, PusTcSecondaryHeader};
use zerocopy::{AsBytes, FromBytes, NetworkEndian, Unaligned, U16};
#[derive(FromBytes, AsBytes, Unaligned)]
@@ -44,9 +44,9 @@ pub mod zc {
source_id: U16<NetworkEndian>,
}
impl TryFrom<srd::PusTcDataFieldHeader> for PusTcDataFieldHeader {
impl TryFrom<ser::PusTcDataFieldHeader> for PusTcDataFieldHeader {
type Error = PusError;
fn try_from(value: srd::PusTcDataFieldHeader) -> Result<Self, Self::Error> {
fn try_from(value: ser::PusTcDataFieldHeader) -> Result<Self, Self::Error> {
if value.version != PusVersion::PusC {
return Err(PusError::VersionNotSupported(value.version));
}
@@ -88,9 +88,10 @@ pub mod zc {
}
}
pub mod srd {
pub mod ser {
use alloc::vec::Vec;
use crate::ecss::{PusError, PusPacket, PusVersion, CRC_CCITT_FALSE};
use crate::srd::SpHeader;
use crate::ser::SpHeader;
use crate::tc::{
PusTcSecondaryHeader, ACK_ALL, PUC_TC_SECONDARY_HEADER_LEN,
PUS_TC_MIN_LEN_WITHOUT_APP_DATA, PUS_VERSION,
@@ -98,7 +99,7 @@ pub mod srd {
use crate::{zc, CcsdsPacket, PacketError, PacketId, PacketSequenceCtrl, PacketType};
use delegate::delegate;
use serde::{Deserialize, Serialize};
use std::mem::size_of;
use core::mem::size_of;
use zerocopy::AsBytes;
#[derive(PartialEq, Copy, Clone, Serialize, Deserialize)]
@@ -392,9 +393,10 @@ pub mod srd {
#[cfg(test)]
mod tests {
use alloc::vec::Vec;
use crate::ecss::PusPacket;
use crate::srd::SpHeader;
use crate::tc::srd::PusTc;
use crate::ser::SpHeader;
use crate::tc::ser::PusTc;
use crate::tc::PusTcSecondaryHeader;
use crate::tc::ACK_ALL;
use crate::{CcsdsPacket, PacketType};