libbladerf-rs 0.3.0

Fully Rust native BladeRF driver
use libbladerf_rs::bladerf1::BladeRf1;
use std::sync::{LazyLock, Mutex};

pub static BLADERF: LazyLock<Mutex<BladeRf1>> = LazyLock::new(|| {
    let mut sdr = BladeRf1::from_first().unwrap();
    sdr.initialize(false).unwrap();
    Mutex::new(sdr)
});

pub fn sdr() -> std::sync::MutexGuard<'static, BladeRf1> {
    match BLADERF.lock() {
        Ok(guard) => guard,
        Err(poisoned) => {
            log::warn!("BLADERF mutex poisoned — recovering");
            poisoned.into_inner()
        }
    }
}

pub fn logging_init(module: &str) {
    let _ = env_logger::builder()
        .is_test(true)
        .filter_level(log::LevelFilter::Trace)
        .filter_module(module, log::LevelFilter::Trace)
        .try_init();
}