
#[doc(hidden)]
pub mod ffi;

pub mod base_data;

pub mod startup_verifier;

#[cfg(feature = "vmprotect")]
#[doc(hidden)]
pub mod protection;

pub mod esi;

pub mod help;

pub mod version_info;

pub mod xml;

pub mod kernel_guard;

pub use ffi::{
    EmcyRecord, TopologyNode, SlaveIdentity, EsmTimeouts,
    FoEOptions, CommunicationStats, RedundancyStatus,
    WatchdogConfig, WatchdogStatus,
    MasterIdentity, MasterDiagData,
    AOENotificationCallback,
    FsoeState, FsoeError, FsoeConfig, FsoeStatus, SafeMdpConfig,
    TIMING_AFTER, TIMING_BEFORE,
    TRANS_IP, TRANS_OS, TRANS_PI, TRANS_PS, TRANS_SO, TRANS_SP,
    LogCallback, CrashNotifyCallback, ProcessDataCyclicCallback,
    SlaveStateChangeCallback, EmergencyEventCallback, SlaveDiscoveryCallback,

    RedundancyModeChangedCallback,
    PDOFrameLossCallback, SlavePreOpReconfigCallback,
    SlaveIdentityMismatchCallback, SlavePortLinkChangedCallback,
    FoEProgressCallback, DCSyncLostCallback,
};
pub use base_data::{BaseData, EcValue, type_size, convert_from_bytes, convert_to_bytes, default_value};
pub use startup_verifier::{
    ExpectedSlaveConfig, ActualSlaveInfo, SlaveVerifyDetail,
    VerificationResult, verify_configuration,
};
pub use esi::{
    EsiPhysicsPortType, EsiRevisionCheckStrategy,
    EsiBootstrapInfo, EsiCoEDetails, EsiDcOpMode, EsiDcConfiguration,
    EsiEepromConfiguration, EsiElectricalInfo, EsiIdentification, EsiMailboxTimeout,
    EsiPdoEntry, EsiPdoInfo, EsiPdoConfiguration, EsiPhysicsPort, EsiPhysicsInfo,
    EsiPortInfo, EsiStartupSdo, EsiStatistics, EsiSyncManagerInfo, EsiDeviceInfo,
    calculate_eeprom_crc, validate_eeprom_crc, match_revision,
};
pub use help::{convert_byte_array_to_string, convert_fixed_name_to_string, decode_ethercat_string, bytes_to_hex_display, ip_to_string};
pub use version_info::{DllVersionInfoCached, get_dll_version_info, version_number, build_date};
pub use xml::{
    parse_uint_hex_or_dec, parse_u16_hex_or_dec, parse_u8_hex_or_dec, parse_i32_hex_or_dec,
    bytes_to_hex_string, hex_string_to_bytes,
    QosConfiguration, StartupSdoConfig, MasterXmlConfiguration,
    GroupConfigData, SlaveDcConfig, XmlConfigurationResult,
    SyncManagerConfig, PdoEntryConfig, SlaveXmlConfiguration,

    load_xml_configuration, apply_xml_configuration,
};
pub use kernel_guard::{DarraKernelStatus, DarraKernelNotAvailableError};
