Enum w5500_ll::SocketCommand
source · #[repr(u8)]pub enum SocketCommand {
Accepted = 0,
Open = 1,
Listen = 2,
Connect = 4,
Disconnect = 8,
Close = 16,
Send = 32,
SendMac = 33,
SendKeep = 34,
Recv = 64,
}
Expand description
Variants§
Accepted = 0
The command register clears to this state once a command has been accepted.
Open = 1
The socket is initialized and opened according to the protocol
selected in sn_mr
.
Listen = 2
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 = 4
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:
- When a ARPTO occurs (
timeout_raised
) because the destination hardware address is not acquired through the ARP-process. - When a SYN/ACK packet is not received within the TCP timeout duration
set by
rcr
andrtr
(timeout_raised
). - 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 = 8
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 = 16
Close the socket.
The socket status is changed to Closed
.
Send = 32
Transmits all the data in the socket TX buffer.
SendMac = 33
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 = 34
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 = 64
Completes the processing of the received data in socket RX buffer.
See sn_rx_buf
for an example.
Trait Implementations§
source§impl Clone for SocketCommand
impl Clone for SocketCommand
source§fn clone(&self) -> SocketCommand
fn clone(&self) -> SocketCommand
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for SocketCommand
impl Debug for SocketCommand
source§impl Format for SocketCommand
impl Format for SocketCommand
source§impl From<SocketCommand> for u8
impl From<SocketCommand> for u8
source§fn from(val: SocketCommand) -> u8
fn from(val: SocketCommand) -> u8
source§impl Hash for SocketCommand
impl Hash for SocketCommand
source§impl Ord for SocketCommand
impl Ord for SocketCommand
source§fn cmp(&self, other: &SocketCommand) -> Ordering
fn cmp(&self, other: &SocketCommand) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq for SocketCommand
impl PartialEq for SocketCommand
source§fn eq(&self, other: &SocketCommand) -> bool
fn eq(&self, other: &SocketCommand) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for SocketCommand
impl PartialOrd for SocketCommand
source§fn partial_cmp(&self, other: &SocketCommand) -> Option<Ordering>
fn partial_cmp(&self, other: &SocketCommand) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more