ariel_os/
lib.rs

1//! Ariel OS is an operating system for secure, memory-safe, low-power Internet of Things (IoT).
2//! Supported hardware includes various 32-bit microcontrollers.
3//!
4//! This is the API documentation for Ariel OS.
5//! Other resources available are:
6//! - ๐Ÿ“” Extensive documentation for Ariel OS can be found in the
7//!   [book](https://ariel-os.github.io/ariel-os/dev/docs/book/).
8//! - โš™๏ธ  The git repository is available on
9//!   [GitHub](https://github.com/ariel-os/ariel-os).
10//! - โœจ [Examples](https://github.com/ariel-os/ariel-os/tree/main/examples)
11//!   demonstrate various features of Ariel OS.
12//! - ๐Ÿงช A set of [test cases](https://github.com/ariel-os/ariel-os/tree/main/tests)
13//!   further verifies the capabilities of Ariel OS.
14//! - ๐Ÿšง The [roadmap](https://github.com/ariel-os/ariel-os/issues/242)
15//!   shows the planned features for Ariel OS.
16//!
17//! # Cargo features
18//!
19//!  Ariel OS is highly modular with a significant number of features
20//!  to configure the operating system.
21#![doc = document_features::document_features!(feature_label = r#"<span class="stab portability"><code>{feature}</code></span>"#)]
22#![no_std]
23#![cfg_attr(nightly, feature(doc_cfg))]
24#![deny(missing_docs)]
25
26#[cfg(feature = "bench")]
27#[doc(inline)]
28pub use ariel_os_bench as bench;
29#[doc(inline)]
30pub use ariel_os_buildinfo as buildinfo;
31#[cfg(feature = "coap")]
32#[doc(inline)]
33pub use ariel_os_coap as coap;
34#[doc(inline)]
35pub use ariel_os_debug as debug;
36#[doc(inline)]
37pub use ariel_os_hal::api::*;
38#[doc(inline)]
39pub use ariel_os_identity as identity;
40#[doc(inline)]
41pub use ariel_os_power as power;
42#[cfg(feature = "random")]
43#[doc(inline)]
44pub use ariel_os_random as random;
45#[doc(hidden)]
46pub use ariel_os_rt as rt;
47#[cfg(feature = "storage")]
48#[doc(inline)]
49pub use ariel_os_storage as storage;
50#[cfg(feature = "threading")]
51#[doc(inline)]
52pub use ariel_os_threads as thread;
53
54// Attribute macros
55pub use ariel_os_macros::config;
56pub use ariel_os_macros::spawner;
57pub use ariel_os_macros::task;
58#[cfg(any(feature = "threading", doc))]
59pub use ariel_os_macros::thread;
60
61pub use ariel_os_embassy::api::*;
62
63pub mod config {
64    //! Provides configuration to the system and the application.
65
66    pub use ariel_os_utils::{
67        ipv4_addr_from_env, ipv4_addr_from_env_or, ipv6_addr_from_env, ipv6_addr_from_env_or,
68        str_from_env, str_from_env_or,
69    };
70}
71
72/// This module contains all third party crates as used by Ariel OS.
73///
74/// TODO: The version of this crate (`ariel-os`) will correspond to changes in
75/// these dependencies (keeping semver guarantees).
76pub mod reexports {
77    pub use ariel_os_embassy::reexports::*;
78    // These are used by proc-macros we provide
79    pub use static_cell;
80}
81
82#[cfg(feature = "sensors")]
83pub mod sensors;