blackbox-log 0.4.1

Ergonomic parser for BetaFlight blackbox logs
Documentation
macro_rules! trace_field {
    (_impl pre $field:expr, $enc:expr, $signed:expr, $raw:expr) => {
        tracing::trace!(
            field = $field.name(),
            encoding = ?$enc,
            signed_encoding = $signed,
            raw = $raw,
        );
    };
    (_impl post $field:expr, $pred:expr, $signed:expr, $final:expr) => {
        tracing::trace!(
            field = $field.name(),
            predictor = ?$pred,
            signed = $signed,
            value = $final,
        );
    };

    (pre, field = $field:expr, enc = $enc:expr, raw = $raw:expr $(,)?) => {
        if $enc.is_signed() {
            trace_field!(_impl pre $field, $enc, $enc.is_signed(), $crate::utils::as_i32($raw));
        } else {
            trace_field!(_impl pre $field, $enc, $enc.is_signed(), $raw);
        }
    };
    (post, field = $field:expr, pred = $pred:expr, final = $final:expr $(,)?) => {
        if $field.signed() {
            trace_field!(_impl post $field, $pred, $field.signed(), $crate::utils::as_i32($final));
        } else {
            trace_field!(_impl post $field, $pred, $field.signed(), $final);
        }
    };
}