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