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