pub struct EspNow<'d> { /* private fields */ }
Expand description
ESP-NOW is a kind of connectionless Wi-Fi communication protocol that is defined by Espressif. In ESP-NOW, application data is encapsulated in a vendor-specific action frame and then transmitted from one Wi-Fi device to another without connection. CTR with CBC-MAC Protocol(CCMP) is used to protect the action frame for security. ESP-NOW is widely used in smart light, remote controlling, sensor, etc.
Currently this implementation (when used together with traditional Wi-Fi) ONLY support STA mode.
Implementations§
source§impl EspNow<'_>
impl EspNow<'_>
sourcepub fn receive_async(&mut self) -> ReceiveFuture<'_>
pub fn receive_async(&mut self) -> ReceiveFuture<'_>
This function takes mutable reference to self because the
implementation of ReceiveFuture
is not logically thread
safe.
sourcepub fn send_async<'s, 'r>(
&'s mut self,
dst_addr: &'r [u8; 6],
data: &'r [u8],
) -> SendFuture<'s, 'r> ⓘ
pub fn send_async<'s, 'r>( &'s mut self, dst_addr: &'r [u8; 6], data: &'r [u8], ) -> SendFuture<'s, 'r> ⓘ
The returned future must not be dropped before it’s ready to avoid getting wrong status for sendings.
source§impl<'d> EspNow<'d>
impl<'d> EspNow<'d>
sourcepub fn new(
inited: &'d EspWifiController<'d>,
device: impl Peripheral<P = WIFI> + 'd,
) -> Result<EspNow<'d>, EspNowError>
pub fn new( inited: &'d EspWifiController<'d>, device: impl Peripheral<P = WIFI> + 'd, ) -> Result<EspNow<'d>, EspNowError>
Creates an EspNow
instance.
sourcepub fn new_with_wifi(
inited: &'d EspWifiController<'d>,
_token: EspNowWithWifiCreateToken,
) -> Result<EspNow<'d>, EspNowError>
pub fn new_with_wifi( inited: &'d EspWifiController<'d>, _token: EspNowWithWifiCreateToken, ) -> Result<EspNow<'d>, EspNowError>
Creates an EspNow
instance with support for Wi-Fi coexistence.
sourcepub fn split(self) -> (EspNowManager<'d>, EspNowSender<'d>, EspNowReceiver<'d>)
pub fn split(self) -> (EspNowManager<'d>, EspNowSender<'d>, EspNowReceiver<'d>)
Splits the EspNow
instance into its manager, sender, and receiver
components.
sourcepub fn set_protocol(
&self,
protocols: EnumSet<Protocol>,
) -> Result<(), EspNowError>
pub fn set_protocol( &self, protocols: EnumSet<Protocol>, ) -> Result<(), EspNowError>
Set the wifi protocol.
This will set the wifi protocol to the desired protocol
§Arguments:
protocols
- The desired protocols
sourcepub fn set_channel(&self, channel: u8) -> Result<(), EspNowError>
pub fn set_channel(&self, channel: u8) -> Result<(), EspNowError>
Set primary WiFi channel. Should only be used when using ESP-NOW without AP or STA.
sourcepub fn version(&self) -> Result<u32, EspNowError>
pub fn version(&self) -> Result<u32, EspNowError>
Get the version of ESP-NOW.
sourcepub fn add_peer(&self, peer: PeerInfo) -> Result<(), EspNowError>
pub fn add_peer(&self, peer: PeerInfo) -> Result<(), EspNowError>
Add a peer to the list of known peers.
sourcepub fn remove_peer(&self, peer_address: &[u8; 6]) -> Result<(), EspNowError>
pub fn remove_peer(&self, peer_address: &[u8; 6]) -> Result<(), EspNowError>
Remove the given peer.
sourcepub fn modify_peer(&self, peer: PeerInfo) -> Result<(), EspNowError>
pub fn modify_peer(&self, peer: PeerInfo) -> Result<(), EspNowError>
Modify a peer information.
sourcepub fn peer(&self, peer_address: &[u8; 6]) -> Result<PeerInfo, EspNowError>
pub fn peer(&self, peer_address: &[u8; 6]) -> Result<PeerInfo, EspNowError>
Get peer by MAC address.
sourcepub fn fetch_peer(&self, from_head: bool) -> Result<PeerInfo, EspNowError>
pub fn fetch_peer(&self, from_head: bool) -> Result<PeerInfo, EspNowError>
Fetch a peer from peer list.
Only returns peers which address is unicast, for multicast/broadcast addresses, the function will skip the entry and find the next in the peer list.
sourcepub fn peer_exists(&self, peer_address: &[u8; 6]) -> bool
pub fn peer_exists(&self, peer_address: &[u8; 6]) -> bool
Check is peer is known.
sourcepub fn peer_count(&self) -> Result<PeerCount, EspNowError>
pub fn peer_count(&self) -> Result<PeerCount, EspNowError>
Get the number of peers.
sourcepub fn set_pmk(&self, pmk: &[u8; 16]) -> Result<(), EspNowError>
pub fn set_pmk(&self, pmk: &[u8; 16]) -> Result<(), EspNowError>
Set the primary master key.
sourcepub fn set_wake_window(&self, wake_window: u16) -> Result<(), EspNowError>
pub fn set_wake_window(&self, wake_window: u16) -> Result<(), EspNowError>
Set wake window for esp_now to wake up in interval unit.
Window is milliseconds the chip keep waked each interval, from 0 to 65535.
sourcepub fn set_rate(&self, rate: WifiPhyRate) -> Result<(), EspNowError>
pub fn set_rate(&self, rate: WifiPhyRate) -> Result<(), EspNowError>
Configure ESP-NOW rate.
sourcepub fn send<'s>(
&'s mut self,
dst_addr: &[u8; 6],
data: &[u8],
) -> Result<SendWaiter<'s>, EspNowError>
pub fn send<'s>( &'s mut self, dst_addr: &[u8; 6], data: &[u8], ) -> Result<SendWaiter<'s>, EspNowError>
Send data to peer.
The peer needs to be added to the peer list first.
sourcepub fn receive(&self) -> Option<ReceivedData>
pub fn receive(&self) -> Option<ReceivedData>
Receive data.