Skip to content

Commit aa2d5df

Browse files
committed
Compatibility with embassy-net fixed multicast support
1 parent 24cdf07 commit aa2d5df

File tree

4 files changed

+22
-43
lines changed

4 files changed

+22
-43
lines changed

matter/src/mdns/builtin.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,7 @@ impl<'a> MdnsRunner<'a> {
128128
buffers: &mut MdnsUdpBuffers,
129129
) -> Result<(), Error>
130130
where
131-
D: crate::transport::network::NetworkStackMulticastDriver
132-
+ crate::transport::network::NetworkStackDriver
133-
+ 'static,
131+
D: crate::transport::network::NetworkStackDriver,
134132
{
135133
let mut udp = crate::transport::udp::UdpListener::new(
136134
stack,
@@ -139,11 +137,13 @@ impl<'a> MdnsRunner<'a> {
139137
)
140138
.await?;
141139

142-
udp.join_multicast_v6(IPV6_BROADCAST_ADDR, self.0.interface)?;
140+
udp.join_multicast_v6(IPV6_BROADCAST_ADDR, self.0.interface)
141+
.await?;
143142
udp.join_multicast_v4(
144143
IP_BROADCAST_ADDR,
145144
crate::transport::network::Ipv4Addr::from(self.0.host.ip),
146-
)?;
145+
)
146+
.await?;
147147

148148
let tx_pipe = Pipe::new(unsafe { buffers.tx_buf.assume_init_mut() });
149149
let rx_pipe = Pipe::new(unsafe { buffers.rx_buf.assume_init_mut() });

matter/src/transport/network.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,6 @@ pub mod std_stack {
6868

6969
impl NetworkStackDriver for () {}
7070

71-
pub trait NetworkStackMulticastDriver {}
72-
73-
impl NetworkStackMulticastDriver for () {}
74-
7571
pub struct NetworkStack<D>(D);
7672

7773
impl NetworkStack<()> {
@@ -85,5 +81,4 @@ pub mod std_stack {
8581
pub mod embassy_net_stack {
8682
pub use embassy_net::Stack as NetworkStack;
8783
pub use embassy_net_driver::Driver as NetworkStackDriver;
88-
pub use smoltcp::phy::Device as NetworkStackMulticastDriver;
8984
}

matter/src/transport/runner.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,7 @@ impl<'a> TransportRunner<'a> {
138138
handler: &H,
139139
) -> Result<(), Error>
140140
where
141-
D: crate::transport::network::NetworkStackDriver
142-
+ crate::transport::network::NetworkStackMulticastDriver
143-
+ 'static,
141+
D: crate::transport::network::NetworkStackDriver,
144142
H: DataModelHandler,
145143
{
146144
let mut mdns_runner = crate::mdns::MdnsRunner::new(mdns);

matter/src/transport/udp.rs

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ pub mod async_io {
3131

3232
use log::{debug, info, warn};
3333

34-
use crate::transport::network::std_stack::{
35-
NetworkStack, NetworkStackDriver, NetworkStackMulticastDriver,
36-
};
34+
use crate::transport::network::std_stack::{NetworkStack, NetworkStackDriver};
3735
use crate::transport::network::{Ipv4Addr, Ipv6Addr, SocketAddr};
3836

3937
pub struct UdpBuffers(());
@@ -46,11 +44,11 @@ pub mod async_io {
4644

4745
pub struct UdpListener<'a, D>(Async<UdpSocket>, &'a NetworkStack<D>)
4846
where
49-
D: NetworkStackDriver;
47+
D: NetworkStackDriver + 'static;
5048

5149
impl<'a, D> UdpListener<'a, D>
5250
where
53-
D: NetworkStackDriver + 'a,
51+
D: NetworkStackDriver + 'a + 'static,
5452
{
5553
pub async fn new(
5654
stack: &'a NetworkStack<D>,
@@ -64,29 +62,23 @@ pub mod async_io {
6462
Ok(listener)
6563
}
6664

67-
pub fn join_multicast_v6(
65+
pub async fn join_multicast_v6(
6866
&mut self,
6967
multiaddr: Ipv6Addr,
7068
interface: u32,
71-
) -> Result<(), Error>
72-
where
73-
D: NetworkStackMulticastDriver + 'static,
74-
{
69+
) -> Result<(), Error> {
7570
self.0.get_ref().join_multicast_v6(&multiaddr, interface)?;
7671

7772
info!("Joined IPV6 multicast {}/{}", multiaddr, interface);
7873

7974
Ok(())
8075
}
8176

82-
pub fn join_multicast_v4(
77+
pub async fn join_multicast_v4(
8378
&mut self,
8479
multiaddr: Ipv4Addr,
8580
interface: Ipv4Addr,
86-
) -> Result<(), Error>
87-
where
88-
D: NetworkStackMulticastDriver + 'static,
89-
{
81+
) -> Result<(), Error> {
9082
#[cfg(not(target_os = "espidf"))]
9183
self.0.get_ref().join_multicast_v4(&multiaddr, &interface)?;
9284

@@ -181,9 +173,7 @@ pub mod embassy_net {
181173

182174
use log::{debug, info, warn};
183175

184-
use crate::transport::network::embassy_net_stack::{
185-
NetworkStack, NetworkStackDriver, NetworkStackMulticastDriver,
186-
};
176+
use crate::transport::network::embassy_net_stack::{NetworkStack, NetworkStackDriver};
187177
use crate::transport::network::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
188178

189179
const RX_BUF_SIZE: usize = 4096;
@@ -210,11 +200,11 @@ pub mod embassy_net {
210200

211201
pub struct UdpListener<'a, D>(UdpSocket<'a>, &'a NetworkStack<D>)
212202
where
213-
D: NetworkStackDriver;
203+
D: NetworkStackDriver + 'static;
214204

215205
impl<'a, D> UdpListener<'a, D>
216206
where
217-
D: NetworkStackDriver + 'a,
207+
D: NetworkStackDriver + 'a + 'static,
218208
{
219209
pub async fn new(
220210
stack: &'a NetworkStack<D>,
@@ -239,16 +229,14 @@ pub mod embassy_net {
239229
Ok(UdpListener(socket, stack))
240230
}
241231

242-
pub fn join_multicast_v6(
232+
pub async fn join_multicast_v6(
243233
&mut self,
244234
multiaddr: Ipv6Addr,
245235
_interface: u32,
246-
) -> Result<(), Error>
247-
where
248-
D: NetworkStackMulticastDriver + 'static,
249-
{
236+
) -> Result<(), Error> {
250237
self.1
251238
.join_multicast_group(Self::from_ip_addr(IpAddr::V6(multiaddr)))
239+
.await
252240
.map_err(|e| {
253241
warn!("Error on the network: {:?}", e);
254242
ErrorCode::Network
@@ -259,16 +247,14 @@ pub mod embassy_net {
259247
Ok(())
260248
}
261249

262-
pub fn join_multicast_v4(
250+
pub async fn join_multicast_v4(
263251
&mut self,
264252
multiaddr: Ipv4Addr,
265253
_interface: Ipv4Addr,
266-
) -> Result<(), Error>
267-
where
268-
D: NetworkStackMulticastDriver + 'static,
269-
{
254+
) -> Result<(), Error> {
270255
self.1
271256
.join_multicast_group(Self::from_ip_addr(IpAddr::V4(multiaddr)))
257+
.await
272258
.map_err(|e| {
273259
warn!("Error on the network: {:?}", e);
274260
ErrorCode::Network

0 commit comments

Comments
 (0)