mod active;
pub mod live_list;
mod parameters;
mod telegram;
mod token_ring;
#[cfg(test)]
mod test_active;
pub use active::{ConnectivityState, FdlActiveStation};
pub use parameters::{Parameters, ParametersBuilder};
pub(crate) use token_ring::TokenRing;
#[doc(hidden)]
pub use telegram::{
DataTelegram, DataTelegramHeader, FrameCountBit, FunctionCode, RequestType, ResponseState,
ResponseStatus, ShortConfirmation, Telegram, TelegramTx, TelegramTxResponse, TokenTelegram,
};
pub trait FdlApplication {
fn transmit_telegram(
&mut self,
now: crate::time::Instant,
fdl: &FdlActiveStation,
tx: TelegramTx,
high_prio_only: bool,
) -> Option<TelegramTxResponse>;
fn receive_reply(
&mut self,
now: crate::time::Instant,
fdl: &FdlActiveStation,
addr: u8,
telegram: Telegram,
);
fn handle_timeout(&mut self, now: crate::time::Instant, fdl: &FdlActiveStation, addr: u8);
}
impl FdlApplication for () {
fn transmit_telegram(
&mut self,
now: crate::time::Instant,
fdl: &FdlActiveStation,
tx: TelegramTx,
high_prio_only: bool,
) -> Option<TelegramTxResponse> {
None
}
fn receive_reply(
&mut self,
now: crate::time::Instant,
fdl: &FdlActiveStation,
addr: u8,
telegram: Telegram,
) {
()
}
fn handle_timeout(&mut self, now: crate::time::Instant, fdl: &FdlActiveStation, addr: u8) {
}
}