mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
60 lines
1.8 KiB
Rust
60 lines
1.8 KiB
Rust
// Copyright (C) 2020 Christian Amsüss
|
|
//
|
|
// This file is subject to the terms and conditions of the GNU Lesser
|
|
// General Public License v2.1. See the file LICENSE in the top level
|
|
// directory for more details.
|
|
#![no_std]
|
|
|
|
use riot_wrappers::{riot_main, println};
|
|
use riot_wrappers::{gcoap, thread, ztimer, gnrc};
|
|
|
|
use coap_handler_implementations::{ReportingHandlerBuilder, HandlerBuilder};
|
|
|
|
extern crate rust_riotmodules;
|
|
|
|
riot_main!(main);
|
|
|
|
fn main() {
|
|
extern "C" {
|
|
fn do_vfs_init();
|
|
}
|
|
|
|
unsafe { do_vfs_init() };
|
|
|
|
let handler = coap_message_demos::full_application_tree(None)
|
|
.below(&["ps"], riot_coap_handler_demos::ps::ps_tree())
|
|
.below(&["vfs"], riot_coap_handler_demos::vfs::vfs("/const"))
|
|
.with_wkc()
|
|
;
|
|
let mut handler = riot_wrappers::coap_handler::GcoapHandler(handler);
|
|
|
|
let mut listener = gcoap::SingleHandlerListener::new_catch_all(&mut handler);
|
|
|
|
gcoap::scope(|greg| {
|
|
greg.register(&mut listener);
|
|
|
|
println!("CoAP server ready; waiting for interfaces to settle before reporting addresses...");
|
|
|
|
let sectimer = ztimer::Clock::sec();
|
|
sectimer.sleep_ticks(2);
|
|
|
|
for netif in gnrc::Netif::all() {
|
|
println!("Active interface from PID {:?} ({:?})", netif.pid(), netif.pid().get_name().unwrap_or("unnamed"));
|
|
match netif.ipv6_addrs() {
|
|
Ok(addrs) => {
|
|
for a in &addrs {
|
|
println!(" Address {:?}", a);
|
|
}
|
|
}
|
|
_ => {
|
|
println!(" Does not support IPv6.");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Sending main thread to sleep; can't return or the Gcoap handler would need to be
|
|
// deregistered (which it can't).
|
|
loop { thread::sleep(); }
|
|
})
|
|
}
|