Enum w5500_ll::SocketCommand[][src]

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

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Writes the defmt representation of self to fmt.

Performs the conversion.

Feeds this value into the given Hasher. Read more

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

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

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

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

This method tests for !=.

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

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

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

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

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

The type returned in the event of a conversion error.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

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

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

recently added

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.