coap_message_demos/
helloworld.rs1use coap_handler::Handler;
4use coap_handler_implementations::{
5 HandlerBuilder, ReportingHandlerBuilder, SimpleRenderable, SimpleRendered, new_dispatcher,
6};
7
8pub static WELCOME: SimpleRendered<&str> = SimpleRendered("Hello CoAP");
11
12#[derive(Copy, Clone)]
15pub struct Time;
16
17pub static TIME: SimpleRendered<Time> = SimpleRendered(Time);
18
19impl SimpleRenderable for Time {
20 #[cfg(feature = "std")]
21 fn render<W: core::fmt::Write>(&mut self, writer: &mut W) {
22 write!(
23 writer,
24 "It's {} seconds past epoch.",
25 std::time::SystemTime::now()
26 .duration_since(std::time::SystemTime::UNIX_EPOCH)
27 .unwrap()
28 .as_secs()
29 )
30 .unwrap();
31 }
32
33 #[cfg(not(feature = "std"))]
34 fn render<W: core::fmt::Write>(&mut self, writer: &mut W) {
35 write!(writer, "A no_std system knows no time.").unwrap();
36 }
37
38 fn content_format(&self) -> Option<u16> {
39 Some(0 )
40 }
41}
42
43const POEM_TEXT: &str = "Aurea prima sata est aetas, quae vindice nullo,
44sponte sua, sine lege fidem rectumque colebat.
45Poena metusque aberant nec verba minantia fixo
46aere legebantur, nec supplex turba timebat
47iudicis ora sui, sed erant sine vindice tuti.
48Nondum caesa suis, peregrinum ut viseret orbem,
49montibus in liquidas pinus descenderat undas,
50nullaque mortales praeter sua litora norant.
51Nondum praecipites cingebant oppida fossae,
52non tuba directi, non aeris cornua flexi,
53non galeae, non ensis erant: sine militis usu
54mollia securae peragebant otia gentes.
55
56Ipsa quoque inmunis rastroque intacta nec ullis
57saucia vomeribus per se dabat omnia tellus,
58contentique cibis nullo cogente creatis
59arbuteos fetus montanaque fraga legebant
60cornaque et in duris haerentia mora rubetis
61et quae deciderant patula Iovis arbore glandes.
62
63Ver erat aeternum, placidique tepentibus auris
64mulcebant zephyri natos sine semine flores;
65mox etiam fruges tellus inarata ferebat,
66nec renovatus ager gravidis canebat aristis;
67flumina iam lactis, iam flumina nectaris ibant,
68flavaque de viridi stillabant ilice mella.
69
70Postquam Saturno tenebrosa in Tartara misso
71sub Iove mundus erat, subiit argentea proles,
72auro deterior, fulvo pretiosior aere.
73
74Iuppiter antiqui contraxit tempora veris
75perque hiemes aestusque et inaequalis autumnos
76et breve ver spatiis exegit quattuor annum.
77";
78
79pub const POEM_TEXT_LEN: usize = POEM_TEXT.len();
80
81#[derive(Copy, Clone)]
82pub struct Poem;
83impl coap_handler_implementations::SimpleRenderable for Poem {
84 fn render<W: core::fmt::Write>(&mut self, writer: &mut W) {
85 writer.write_str(POEM_TEXT).unwrap()
86 }
87}
88pub static POEM: SimpleRendered<Poem> = SimpleRendered(Poem);
89
90pub fn hello_world_tree() -> impl Handler {
92 new_dispatcher()
93 .at(&[], WELCOME)
94 .at(&["time"], cfg!(feature = "std").then_some(TIME))
97 .at(&["poem"], POEM)
98 .with_wkc()
99}