PrimaryHeader

Struct PrimaryHeader 

Source
pub struct PrimaryHeader {
    pub version: u8,
    pub packet_type: PacketType,
    pub secondary_header: bool,
    pub apid: u16,
    pub sequence_flag: SequenceFlag,
    pub sequence_number: u16,
}
Expand description

Primary Header used in the Space Packet Protocol.

This data structure encapsulates the packet version number, packet identification, and sequence control field of the primary header of a SpacePacket. It is possible, although not neccessary to work with the PrimaryHeader struct directly.

Typical usage involves creating a SpacePacket, which internally constructs the PrimaryHeader using the arguments passed.

use ccsds_rs::spp::{SpacePacket, PacketType, SequenceFlag};
// generates new SpacePacket, internally constructing the PrimaryHeader.
let my_space_packet = SpacePacket::new(
    PacketType::Telecommand,
    false,
    17,
    SequenceFlag::Unsegmented,
    0,
    "Cool Space Data".as_bytes().to_vec()
);

Note that the user data length field is not included as a field within PrimaryHeader, The data length field is generated at encoding time of the SpacePacket.

Fields§

§version: u8

Hardcoded to 0b000, but here incase standard changes in the future (3 bits)

§packet_type: PacketType

Packet type defined by PacketType enum (1 bit)

§secondary_header: bool

Indicates if secondary header is used (1 bit)

§apid: u16

Application process ID of the packet (11 bits)

§sequence_flag: SequenceFlag

Sequence flag defined by SequenceFlag (2 bits)

§sequence_number: u16

Sequence number (14 bits)

Implementations§

Source§

impl PrimaryHeader

Source

pub fn encode(&self) -> Vec<u8>

Encodes the PrimaryHeader into a vector of big endian bytes as described by CCSDS 133.0-B-2.

Source

pub fn decode(buf: &[u8]) -> Result<Self, Error>

Decodes the PrimaryHeader from a slice of bytes. Returns the result of the operation, on success giving the decoded PrimaryHeader.

Decoding can fail for the following reasons:

Trait Implementations§

Source§

impl Clone for PrimaryHeader

Source§

fn clone(&self) -> PrimaryHeader

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PrimaryHeader

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for PrimaryHeader

Source§

fn eq(&self, other: &PrimaryHeader) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for PrimaryHeader

Source§

impl Eq for PrimaryHeader

Source§

impl StructuralPartialEq for PrimaryHeader

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.