1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! High-level bindings for the Flipper Zero.
//!
//! # Features
#![cfg_attr(feature = "document-features", doc = document_features::document_features!())]
//!

#![no_std]
#![cfg_attr(test, no_main)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(rustdoc::broken_intra_doc_links)]

#[cfg(any(feature = "alloc", docsrs))]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
extern crate alloc;

pub mod dialogs;
pub mod dolphin;
pub mod furi;
pub mod gui;
pub mod io;
pub mod macros;
pub mod notification;
pub mod storage;
pub mod toolbox;

#[doc(hidden)]
pub mod __macro_support {
    use crate::furi::log::Level;

    // Re-export for use in macros
    pub use ufmt;

    pub use crate::furi::string::FuriString;

    /// ⚠️ WARNING: This is *not* a stable API! ⚠️
    ///
    /// This module, and all code contained in the `__macro_support` module, is a
    /// *private* API of `flipperzero`. It is exposed publicly because it is used by the
    /// `flipperzero` macros, but it is not part of the stable versioned API. Breaking
    /// changes to this module may occur in small-numbered versions without warning.
    pub use flipperzero_sys as __sys;

    /// ⚠️ WARNING: This is *not* a stable API! ⚠️
    ///
    /// This function, and all code contained in the `__macro_support` module, is a
    /// *private* API of `flipperzero`. It is exposed publicly because it is used by the
    /// `flipperzero` macros, but it is not part of the stable versioned API. Breaking
    /// changes to this module may occur in small-numbered versions without warning.
    pub fn __level_to_furi(level: Level) -> __sys::FuriLogLevel {
        level.to_furi()
    }
}

flipperzero_test::tests_runner!(
    name = "flipperzero-rs Unit Tests",
    stack_size = 4096,
    [
        crate::furi::log::metadata::tests,
        crate::furi::message_queue::tests,
        crate::furi::rng::tests,
        crate::furi::string::tests,
        crate::furi::sync::tests,
        crate::furi::time::tests,
        crate::toolbox::crc32::tests,
        crate::toolbox::md5::tests,
        crate::toolbox::sha256::tests,
    ]
);