mod callables;
mod callbacks;
mod data;
mod error;
mod events;
#[rustfmt::skip]
mod generated;
mod instance;
mod loader;
mod marshal;
mod native_manifest;
mod object;
mod properties;
mod readers;
mod time;
mod value;
pub mod sys;
pub(crate) mod sealed {
pub trait Sealed {}
}
pub use error::{clear_error_info, Error, Result};
pub use generated::*;
pub use loader::{install_native_libraries, LoadError};
pub use object::{BaseObject, Interface};
pub use properties::{BatchedPropertyUpdate, ComponentKind};
pub use readers::{
BlockReader, MultiReader, PacketReader, Sample, Samples, StreamReader, StreamReaderOptions,
TailReader,
};
pub use sys::daqIntfID as IntfID;
pub use time::TickConverter;
pub use value::{Complex, Ratio, Value};
use std::path::{Path, PathBuf};
pub fn init() -> std::result::Result<(), LoadError> {
sys::initialize().map(|_| ())
}
pub fn init_from(directory: impl AsRef<Path>) -> std::result::Result<(), LoadError> {
sys::initialize_from(directory.as_ref()).map(|_| ())
}
pub fn native_library_directory() -> std::result::Result<PathBuf, LoadError> {
sys::native_library_directory()
}
pub fn healthcheck() {
println!("openDAQ healthcheck");
println!(" platform: {:?}", loader::platform_directory_name());
for (name, var) in [
("native dir override", loader::NATIVE_DIR_ENV_VAR),
("downloads disabled", loader::NO_DOWNLOAD_ENV_VAR),
("archive mirror", loader::ARCHIVE_URL_ENV_VAR),
("modules path", loader::MODULES_PATH_ENV_VAR),
] {
if let Ok(value) = std::env::var(var) {
println!(" {name} ({var}): {value}");
}
}
println!(
" pinned binaries: {} (openDAQ {} @ {})",
native_manifest::TAG,
native_manifest::OPENDAQ_REF,
&native_manifest::OPENDAQ_SHA[..12.min(native_manifest::OPENDAQ_SHA.len())]
);
match sys::initialize() {
Ok(_) => {
println!(" status: loaded");
if let Ok(dir) = sys::native_library_directory() {
println!(" native directory: {}", dir.display());
for file in loader::NATIVE_LIBRARY_FILE_NAMES {
let path = dir.join(file);
let state = if path.is_file() { "ok" } else { "MISSING" };
println!(" library {file}: {state}");
}
}
}
Err(e) => {
println!(" status: FAILED");
println!(" error: {e}");
}
}
}