make spacepackets no_std
This commit is contained in:
9 files changed
+60
-160
No files matched your search
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
@@ -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};
|
||||
|
||||
Reference in new issue
Block a user