Chronaxis用户手册English
本页目录相关类型对象导航require_message_calculation参数返回说明异常说明边界说明parse_message_calculations参数返回说明异常说明副作用说明

chronaxis.planning.message_calculations

静态解析当前消息legacy_sum声明,保持解码profile和新计算policy分开。

输入为message_calculations原生JSON数组、当前来源/绑定和计划ID集合;输出冻结的 MessageCalculationPlan tuple。frame_id必填,channel默认采用来源通道,帧类型可省略;参数按FLOAT64处理,表达式 只访问本来源、本消息的完整CAN定位,不沿用全局派生、上一条值或普通TTL。 当前模式明确拒绝cache_policy,旧完整触发/缓存尚未接入可运行流程不能靠同名字段冒充。 可选disjunction另声明方向别名和正负桶;方向可不在expr中,仍须有同一原消息 的完整定位。它选择本条原解码值,不改表达式、信号转换或旧读写调用。

require_message_calculation只检查已有带有明确类型的计划与当前来源/声明的关系,供解析和 validate/explain共用;它不重新解析AST或raw_config。所有操作只处理有限配置, 不open/stat/resolve,不加载DBC、旧reader或执行流,不读取任何分析输入。

这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。

相关类型

CANTextSpec、DeclarationBindings、ExpressionParameter、LegacyCANSpec、LegacyDisjunction、LegacyMessageSelector、MessageCalculationPlan、MessageDeclarations、PlanValidationError、SignalDType

对象导航

对象 用途
require_message_calculation 核已有带有明确类型的逐消息指标与当前计划一致,不借旧配置覆盖带有明确类型的替换。
parse_message_calculations 按声明顺序解析独立逐消息指标,ID与原规则/窗口/指标共用集合。
导入与重导出来源(展开)
python
from ..core.declarations import DeclarationBindings
from ..core.message_binding import ExpressionParameter, MessageDeclarations
from ..legacy.records import PROFILE_ID
from ..legacy.disjunction import LegacyDisjunction
from ..core.types import SignalDType
from ..sources.can_spec import LegacyCANSpec, can_field_from_key
from ..sources.text_can_spec import CANTextSpec
from .diagnostic_collection import usable_node, collect_node_error
from .checks import PlanValidationError, array_at, choice_at, model_at, object_at, text_at
from .models import LegacyMessageSelector, MessageCalculationPlan
from .nodes import expression_at, register_id

require_message_calculation

核已有带有明确类型的逐消息指标与当前计划一致,不借旧配置覆盖带有明确类型的替换。

python
require_message_calculation(calculation, sources, bindings: DeclarationBindings) -> None

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
calculation MessageCalculationPlan 是 无 位置或关键字。calculation为MessageCalculationPlan
sources tuple[SourcePlan, ...] 是 无 位置或关键字。sources为当前SourcePlan tuple
bindings DeclarationBindings 是 无 位置或关键字。bindings 为当前DeclarationBindings。

返回说明

None,来源、帧定位和原声明均一致。

异常说明

TypeError为指标/绑定模型错误;ValueError为来源能力、声明或定位冲突。

本函数直接报告的具体错误:

  • TypeError:逐消息指标需要MessageCalculationPlan及当前DeclarationBindings。
  • ValueError:逐消息指标必须引用当前唯一来源。
  • ValueError:逐消息计算仅支持已接入的单BLF/sclicer-functions-v1来源。
  • ValueError:逐消息指标profile必须等于来源legacy_profile。
  • ValueError:逐消息来源定位、原时基或offset与当前完整声明不符。
  • ValueError:逐消息选择器channel与来源声明不一致。
  • ValueError:逐消息表达式必须属于当前完整原声明、来源和参数。
  • ValueError:逐消息表达式依赖与静态树不一致。
  • ValueError:disjunction方向仅接受数值或bool声明,不接受enum。
  • ValueError:逐消息依赖须保当前来源的同一原SignalDefinition。
  • ValueError:逐消息依赖的完整帧定位与update_message不一致。
  • ValueError:逐消息表达式的所有依赖必须属于同一原message。

边界说明

不重编译AST,不读DBC;字段存在性和单位实况仍由同次READY另行验证。

返回类型:None。

源码:src/chronaxis/planning/message_calculations.py:29(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

parse_message_calculations

按声明顺序解析独立逐消息指标,ID与原规则/窗口/指标共用集合。

python
parse_message_calculations(value, sources, bindings, ids) -> tuple[MessageCalculationPlan, ...]

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
value list[dict] 是 无 位置或关键字。message_calculations原始配置数组;逐项解析消息定位、公式、方向及贡献明细设置。
sources tuple[SourcePlan, ...] 是 无 位置或关键字。当前计划已经解析的来源声明,用于检查指标引用的来源和CAN配置。
bindings DeclarationBindings 是 无 位置或关键字。当前计划的静态信号声明绑定,用于编译消息公式;此时还没有读取实际日志。
ids set[str] 是 无 位置或关键字。本计划已经使用的节点名字集合;解析成功后把新名字加入,遇到重复名字报错。它是本次解析的可变工作集合,不是原始信号值。

返回说明

MessageCalculationPlan tuple。

异常说明

PlanValidationError保具体JSON路径;cache_policy报旧完整缓存能力尚未接入可运行流程。

副作用说明

只向本次局部ids登记名称,不读输入、DBC或执行表达式。

返回类型:tuple[MessageCalculationPlan, ...]。

源码:src/chronaxis/planning/message_calculations.py:99(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

Chronaxis 用户手册 · 离线阅读