use std::time::Duration;
use serde::Serialize;
use rsiot_messages_core::{Message, MsgDataBound};
use crate::plc::function_block_base::{FunctionBlockBase, IFunctionBlock};
#[doc = include_str!("./template.rs")]
#[derive(Clone)]
pub struct Config<TMessage, I, Q, S>
where
TMessage: MsgDataBound,
I: Clone + Default + Serialize,
Q: Clone + Default + Serialize,
S: Clone + Default + Serialize,
FunctionBlockBase<I, Q, S>: IFunctionBlock<I, Q, S>,
{
pub fn_input: fn(&mut I, &Message<TMessage>) -> (),
pub fn_output: fn(&Q) -> Vec<Message<TMessage>>,
pub fb_main: FunctionBlockBase<I, Q, S>,
pub period: Duration,
}