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/blob/main/ROADMAP.md)
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_log as log;
42#[doc(inline)]
43pub use ariel_os_power as power;
44#[cfg(feature = "random")]
45#[doc(inline)]
46pub use ariel_os_random as random;
47#[doc(inline)]
48pub use ariel_os_rt as rt;
49#[cfg(feature = "storage")]
50#[doc(inline)]
51pub use ariel_os_storage as storage;
52#[cfg(feature = "threading")]
53#[doc(inline)]
54pub use ariel_os_threads as thread;
55
56// Attribute macros
57pub use ariel_os_macros::config;
58pub use ariel_os_macros::spawner;
59pub use ariel_os_macros::task;
60#[cfg(any(feature = "threading", doc))]
61pub use ariel_os_macros::thread;
62
63pub use ariel_os_embassy::api::*;
64
65pub mod config {
66    //! Provides configuration to the system and the application.
67
68    pub use ariel_os_utils::{
69        ipv4_addr_from_env, ipv4_addr_from_env_or, ipv6_addr_from_env, ipv6_addr_from_env_or,
70        str_from_env, str_from_env_or,
71    };
72}
73
74/// This module contains all third party crates as used by Ariel OS.
75///
76/// TODO: The version of this crate (`ariel-os`) will correspond to changes in
77/// these dependencies (keeping semver guarantees).
78pub mod reexports {
79    pub use ariel_os_embassy::reexports::*;
80    // These are used by proc-macros we provide
81    pub use static_cell;
82}
83
84#[cfg(feature = "sensors")]
85pub mod sensors;