Type Alias coap::client::UdpCoAPClient

source ·
pub type UdpCoAPClient = CoAPClient<UdpTransport>;
Expand description

A CoAP client over UDP. This client can send multicast and broadcasts

Aliased Type§

struct UdpCoAPClient { /* private fields */ }

Implementations§

source§

impl UdpCoAPClient

source

pub async fn new_with_specific_source<A: ToSocketAddrs, B: ToSocketAddrs>( bind_addr: A, peer_addr: B ) -> IoResult<Self>

source

pub async fn new_udp<A: ToSocketAddrs>(addr: A) -> IoResult<Self>

source

pub async fn send_all_coap( &self, request: &CoapRequest<SocketAddr>, segment: u8 ) -> IoResult<()>

Send a request to all CoAP devices.

  • IPv4 AllCoAP multicast address is ‘224.0.1.187’
  • IPv6 AllCoAp multicast addresses are ‘ff0?::fd’ Parameter segment is used with IPv6 to determine the first octet. It’s value can be between 0x0 and 0xf. To address multiple segments, you have to call send_all_coap for each of the segments.
source

pub fn set_broadcast(&self, value: bool) -> IoResult<()>

source

pub async fn create_receiver_for( &self, request: &CoapRequest<SocketAddr> ) -> MessageReceiver

creates a receiver based on a specific request this method can be used if you send a multicast request and expect multiple responses. only use this method if you know what you are doing


use coap_lite::{
    RequestType
};
use coap::request::RequestBuilder;
use coap::client::UdpCoAPClient;

async fn foo() {
  let segment = 0x0;
  let client = UdpCoAPClient::new_udp("127.0.0.1:5683")
         .await
         .unwrap();
  let request = RequestBuilder::new("test-echo", RequestType::Get)
      .data(Some(vec![0x51, 0x55, 0x77, 0xE8]))
      .confirmable(true)
      .build();

  let mut receiver = client.create_receiver_for(&request).await;
  client.send_all_coap(&request, segment).await.unwrap();
  loop {
     let recv_packet = receiver.receive().await.unwrap();
     assert_eq!(recv_packet.payload, b"test-echo".to_vec());
  }
}