rsiot/components/cmp_plc/plc/library/state_machine/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//! Блок реализации машины состояния

mod i;
mod logic;
mod q;
mod s;
#[cfg(test)]
mod tests;

pub use i::*;
pub use q::*;
pub use s::*;
use serde::Serialize;

use crate::components::cmp_plc::plc::{FbSystemData, FunctionBlockBase, IFunctionBlock};

/// Блок реализации машины состояния
pub type FB<TState> = FunctionBlockBase<I<TState>, Q<TState>, S<TState>>;

impl<TState> IFunctionBlock<I<TState>, Q<TState>, S<TState>>
    for FunctionBlockBase<I<TState>, Q<TState>, S<TState>>
where
    TState: Copy + Default + PartialEq + Serialize,
{
    fn logic(
        input: &mut I<TState>,
        stat: &mut S<TState>,
        _system_data: &FbSystemData,
    ) -> Q<TState> {
        logic::logic(input, stat)
    }
}