foxmark3 0.1.1

Send/receive Proxmark 3 commands
Documentation
//! An interface to Proxmark3 devices which run the [Iceman
//! firmware](https://github.com/RfidResearchGroup/proxmark3).
//!
//! Use of this library may be through commands executed by a [`Proxmark`]. This is the recommended
//! way, when possible. In cases where there is no developed command API, raw
//! [`request`](crate::raw::request)/[`response`](crate::raw::response) frames may be sent/received
//! by a [`raw::Proxmark`]. It is possible to swap between these modes of use at runtime.
//!
//! # Feature Flags
//!
//! - `serde`: derives `Serialize` and `Deserialize` on card types
//! - `sqlx`: implements `Type`, `Encode`, and `Decode` for card ID types

#![warn(missing_docs)]
#![warn(clippy::pedantic)]
#![allow(clippy::missing_errors_doc)]

pub mod commands;
pub mod raw;

#[allow(missing_docs)]
mod util;

macro_rules! mod_const {
    (
        $vi:vis $mod:ident: $ty:ty $(, $doc:literal)?;

        $($name:ident = $value:expr),+ $(,)?
    ) => {
        $(#[doc = $doc])?
        $vi mod $mod {
            #![allow(missing_docs)]

            $(
                pub const $name: $ty = $value;
            )+
        }
    };
}

pub(crate) use mod_const;

pub use crate::commands::{Error, Proxmark, find, find_path, new};