1#![no_std]
2
3extern crate embedded_hal;
4use embedded_hal::blocking::delay::DelayMs;
5
6pub mod print;
7
8pub mod delay;
9use delay::WasmDelay;
10
11#[cfg(feature = "logger")]
12pub mod logger;
13
14pub mod prelude;
15
16mod runtime;
17
18static mut ESP32: Option<Esp32> = Some(Esp32{
20 _extensible: (),
21});
22
23pub struct Esp32 {
25 _extensible: (),
27}
28
29#[link(wasm_import_module = "env")]
30extern {
31 pub fn get_ticks(m: &u32);
32}
33
34impl Esp32 {
35 pub fn take() -> Option<Self> {
37 unsafe { ESP32.take() }
40 }
41
42 pub fn get_ticks(&self) -> u32 {
44 let mut v = 0;
45 unsafe { get_ticks(&mut v) };
46 v as u32
47 }
48}
49
50impl DelayMs<u32> for Esp32 {
52 fn delay_ms(&mut self, m: u32) {
53 WasmDelay::delay_ms(&mut WasmDelay, m);
54 }
55}
56
57
58