Skip to main content

AdspPacket

Struct AdspPacket 

Source
pub struct AdspPacket {
    pub descriptor: AdspDescriptor,
    pub connection_id: u16,
    pub first_byte_seq: u32,
    pub next_recv_seq: u32,
    pub recv_window: u16,
    pub flags: u8,
}
Expand description

ADSP packet header structure

ADSP (AppleTalk Data Stream Protocol) provides connection-oriented, full-duplex byte-stream communication over DDP.

Packet format:

  • Byte 0: Descriptor (packet type)
  • Bytes 1-2: Connection ID (u16, big-endian)
  • Bytes 3-6: First Byte Sequence number (u32, big-endian)
  • Bytes 7-10: Next Receive Sequence number (u32, big-endian)
  • Bytes 11-12: Receive Window size (u16, big-endian)
  • Remaining bytes: Data payload (not owned by this struct)

Fields§

§descriptor: AdspDescriptor

Packet type/descriptor

§connection_id: u16

Connection identifier

§first_byte_seq: u32

Sequence number of the first data byte in this packet

§next_recv_seq: u32

Next expected receive sequence number

§recv_window: u16

Receive window size (flow control)

§flags: u8

Flags (Control, Ack, EOM, Attention)

Implementations§

Source§

impl AdspPacket

Source

pub const HEADER_LEN: usize = 13

ADSP header length in bytes

Source

pub const FLAG_CONTROL: u8 = 0x80

Source

pub const FLAG_ACK: u8 = 0x40

Source

pub const FLAG_EOM: u8 = 0x20

Source

pub const FLAG_ATTENTION: u8 = 0x10

Source

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

Parse an ADSP header from bytes

Returns the parsed header. The caller is responsible for handling any data following the header in the buffer.

Source

pub fn to_bytes(&self, buf: &mut [u8]) -> Result<usize, AdspError>

Encode the ADSP header to bytes

Returns the number of bytes written (always HEADER_LEN). The caller is responsible for appending any data payload.

Trait Implementations§

Source§

impl Clone for AdspPacket

Source§

fn clone(&self) -> AdspPacket

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AdspPacket

Source§

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

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

impl PartialEq for AdspPacket

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Eq for AdspPacket

Source§

impl StructuralPartialEq for AdspPacket

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.