1#[warn(dead_code)]
5pub mod bus;
6mod channel;
7pub mod df;
8pub mod error;
9pub mod hw;
10pub mod info;
11pub mod io;
12pub mod log;
13pub mod socket;
14pub mod special;
15pub mod trace;
16
17use peak_can_sys as peak_can;
18
19use std::sync::LazyLock;
20
21static PEAK_BASIC: LazyLock<Result<peak_can::Pcan, crate::error::CanError>> = LazyLock::new(|| {
22 let filename = libloading::library_filename("PCANBasic");
23 Ok(unsafe { peak_can::Pcan::new(filename) }?)
24});
25
26pub(crate) fn peak_lib() -> Result<&'static peak_can::Pcan, crate::error::CanError> {
27 PEAK_BASIC.as_ref().map_err(|e| e.clone())
28}