#![allow(clippy::style, clippy::complexity)]
#[allow(unused_imports)]
use crate::eval::format_validators::*;
use crate::eval::{ConditionEvaluator, ConditionResult, EvaluationContext};
use crate::generated::fv2510::IftstaConditionEvaluatorFV2510;
pub struct IftstaConditionEvaluatorFV2610 {
fallback: IftstaConditionEvaluatorFV2510,
}
impl Default for IftstaConditionEvaluatorFV2610 {
fn default() -> Self {
Self {
fallback: IftstaConditionEvaluatorFV2510::default(),
}
}
}
const FV2610_OVERRIDES: &[u32] = &[155];
impl ConditionEvaluator for IftstaConditionEvaluatorFV2610 {
fn message_type(&self) -> &str {
"IFTSTA"
}
fn format_version(&self) -> &str {
"FV2610"
}
fn evaluate(&self, condition: u32, ctx: &EvaluationContext) -> ConditionResult {
match condition {
155 => self.evaluate_155(ctx),
other => self.fallback.evaluate(other, ctx),
}
}
fn is_external(&self, condition: u32) -> bool {
matches!(condition, 155) || self.fallback.is_external(condition)
}
fn is_known(&self, condition: u32) -> bool {
FV2610_OVERRIDES.contains(&condition) || self.fallback.is_known(condition)
}
}
impl IftstaConditionEvaluatorFV2610 {
fn evaluate_155(&self, ctx: &EvaluationContext) -> ConditionResult {
ctx.external
.evaluate("use_case_is_messlokationsaenderung_to_msb")
}
}