moonboot 0.1.2

OTA Bootloader Construction Framework for Rust no_std environments
Documentation
#![no_std]

//!Moonboot is a framework to build bootloaders for embedded devices, or other kinds of no_std
//!Rust environments.
//!
//!This crate contains implementations, macros and build.rs helpers for:
//!* Partitioning of your memory into different sections
//!* Exchange of the contents of those partitions via the bootloader
//!* Signature/Checksum-checking of the partitions contents with an algorithm of your choice, because it is
//!done in firmware, not in bootloader
//!* Automatic Linker Script generation based on a Section/Parition Description in Rust Code

mod boot;
/// Implementations for use in the bootloader
pub use boot::MoonbootBoot;

mod manager;
/// Implementations for use in the firmware
pub use manager::MoonbootManager;

/// Common hardware abstractions and associated implementations
pub mod hardware;
/// Shared state management between firmware and bootloader
pub mod state;

pub use embedded_storage;

// Because most of the time, ...
//pub use boot::MoonbootBoot as LeftBoot;
// ... there's two boots involved.
//pub use manager::MoonbootManager as RightBoot;

/// Address type in RAM or ROM
pub type Address = u32;

/// Marker macro for a handler fn invoked shortly before jumping to a different image. Use this to
/// uninitialize your hardware.
pub use moonboot_macros::pre_jump_handler;

#[cfg(feature = "use-defmt")]
pub(crate) use defmt as log;

#[cfg(feature = "use-log")]
pub(crate) use logger_crate as log;

#[cfg(not(any(feature = "use-log", feature = "use-defmt")))]
pub(crate) mod log {
    macro_rules! info {
        ( $( $x:expr ),* ) => {};
    }
    pub(crate) use info;
    macro_rules! trace {
        ( $( $x:expr ),* ) => {};
    }
    pub(crate) use trace;
    macro_rules! error {
        ( $( $x:expr ),* ) => {};
    }
    pub(crate) use error;
    macro_rules! warner {
        ( $( $x:expr ),* ) => {};
    }
    pub(crate) use warner as warn;
}

#[export_name = "__moonboots_default_pre_jump"]
fn default_pre_jump() {}