Struct csp_packet_s

Source
#[repr(C)]
pub struct csp_packet_s { pub packet_info: csp_packet_s_anon_union, pub length: u16, pub id: csp_id_t, pub next: *mut csp_packet_s, pub header: [u8; 8], pub packet_data_union: csp_packet_s_data_union, }
Expand description

CSP Packet.

This structure is constructed to fit with all interface and protocols to prevent the need to copy data (zero copy).

.. note:: In most cases a CSP packet cannot be reused in case of send failure, because the lower layers may add additional data causing increased length (e.g. CRC32), convert the CSP id to different endian (e.g. I2C), etc.

Fields§

§packet_info: csp_packet_s_anon_union§length: u16§id: csp_id_t§next: *mut csp_packet_s§header: [u8; 8]

Additional header bytes, to prepend packed data before transmission This must be minimum 6 bytes to accomodate CSP 2.0. But some implementations require much more scratch working area for encryption for example.

Ultimately after csp_id_pack() this area will be filled with the CSP header

§packet_data_union: csp_packet_s_data_union

Trait Implementations§

Source§

impl Clone for csp_packet_s

Source§

fn clone(&self) -> csp_packet_s

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 Copy for csp_packet_s

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, 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.