#[cfg(any(target_arch="x86", target_arch="x86_64"))]
pub mod x86;
#[cfg(any(target_arch="x86", target_arch="x86_64"))]
pub use x86::X86Timestamp as Timestamp;
#[cfg(target_arch="aarch64")]
pub mod aarch64;
#[cfg(target_arch="aarch64")]
pub use aarch64::AArch64Timestamp as Timestamp;
#[cfg(all(not(target_os="none"), not(any(target_arch="x86", target_arch="x86_64", target_arch="aarch64"))))]
pub mod std;
#[cfg(all(not(target_os="none"), not(any(target_arch="x86", target_arch="x86_64", target_arch="aarch64"))))]
pub use std::StdTimestamp as Timestamp;
#[cfg(feature="cortex-m")]
pub mod cortex_m;
#[cfg(feature="cortex-m")]
pub use cortex_m::CortexMTimestamp as Timestamp;
#[cfg(not(any(target_arch="x86", target_arch="x86_64", target_arch="aarch64", feature="cortex-m", not(target_os="none"))))]
compile_error!("Unsupported platform! Either std or cortex-m are currently supported");
pub trait TimestampProvider {
type TimestampType: Copy + Sized + From<u64>;
fn now() -> Self::TimestampType;
const TIMESTAMP_VALID_BITS: u8 = (size_of::<Self::TimestampType>() as u8) << 3;
const MAX_VALUE: u64 = ((1u128 << Self::TIMESTAMP_VALID_BITS) - 1) as u64;
}