Enum w5500_ll::SocketCommand[][src]

#[repr(u8)]
pub enum SocketCommand {
    Accepted,
    Open,
    Listen,
    Connect,
    Disconnect,
    Close,
    Send,
    SendMac,
    SendKeep,
    Recv,
}

Socket commands.

This is used to set the command for socket n.

After W5500 accepts the command, the sn_cr register is automatically cleared to 0x00. Even though sn_cr is cleared to 0x00, the command is still being processed. To check whether the command is completed or not, check sn_ir or sn_sr.

Variants

Accepted

The command register clears to this state once a command has been accepted.

Open
Listen

Operate the socket as a TCP server.

This will change the socket state from Init to Listen, and the socket will listen for a connection-request (SYN packet) from any TCP client.

When a TCP client connection request is successfully established, the socket state changes from Listen to Established and the CON socket interrupt is raised.

When a TCP client connection request fails the TIMEOUT socket interrupt is set and the socket status changes to Closed.

Only valid in Tcp mode.

Connect

Connect to a TCP server.

A connect-request (SYN packet) is sent to the TCP server configured by the IPv4 address and port set with set_sn_dest.

If the connect-request is successful, the socket state changes to Established and the CON socket interrupt is raised.

The connect-request fails in the following three cases:

  1. When a ARPTO occurs (timeout_raised) because the destination hardware address is not acquired through the ARP-process.
  2. When a SYN/ACK packet is not received within the TCP timeout duration set by rcr and rtr (timeout_raised).
  3. When a RST packet is received instead of a SYN/ACK packet.

In these cases the socket state changes to Closed.

Only valid in Tcp mode when acting as a TCP client.

Disconnect

Start the disconnect process.

  • Active close it transmits disconnect-request(FIN packet) to the connected peer.
  • Passive close when FIN packet is received from peer, a FIN packet is replied back to the peer.

When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), the socket state changes to Closed. Otherwise, TCP timeout occurs (timeout_raised) and then the socket state changes to Closed.

If the Close command is used instead of Disconnect, the socket state is changes to Closed without the disconnect process.

If a RST packet is received from a peer during communication the socket status is unconditionally changed to Closed.

Only valid in Tcp mode.

Close

Close the socket.

The socket status is changed to Closed.

Send

Transmits all the data in the socket TX buffer.

SendMac

The basic operation is same as Send.

Normally Send transmits data after destination hardware address is acquired by the automatic ARP-process (Address Resolution Protocol). SendMac transmits data without the automatic ARP-process. In this case, the destination hardware address is acquired from sn_dhar configured by the host, instead of the ARP process.

Only valid in Udp mode.

SendKeep

Sends a 1 byte keep-alive packet.

If the peer cannot respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur (timeout_raised).

Only valid in Tcp mode.

Recv

Completes the processing of the received data in socket RX buffer.

See sn_rx_buf for an example.

Trait Implementations

impl Clone for SocketCommand[src]

fn clone(&self) -> SocketCommand[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for SocketCommand[src]

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

Formats the value using the given formatter. Read more

impl Hash for SocketCommand[src]

fn hash<__H: Hasher>(&self, state: &mut __H)[src]

Feeds this value into the given Hasher. Read more

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given Hasher. Read more

impl Ord for SocketCommand[src]

fn cmp(&self, other: &SocketCommand) -> Ordering[src]

This method returns an Ordering between self and other. Read more

#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]

Compares and returns the maximum of two values. Read more

#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]

Compares and returns the minimum of two values. Read more

#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]

Restrict a value to a certain interval. Read more

impl PartialEq<SocketCommand> for SocketCommand[src]

fn eq(&self, other: &SocketCommand) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl PartialOrd<SocketCommand> for SocketCommand[src]

fn partial_cmp(&self, other: &SocketCommand) -> Option<Ordering>[src]

This method returns an ordering between self and other values if one exists. Read more

#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Copy for SocketCommand[src]

impl Eq for SocketCommand[src]

impl StructuralEq for SocketCommand[src]

impl StructuralPartialEq for SocketCommand[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

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

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.