# 合成教学配置；请连同配套输入使用，数值仅用于复现本例。
config_version: 4                    # 声明分析文件采用的字段结构版本；当前填写整数4
dataset:                             # 设置本次分析名称及可选的对象、会话和时间范围
  name: cycles                       # 命名本次分析数据集；名称写入结果身份字段
sources:                             # 列出输入来源；每项规定数据位置、格式和时间解释方式
  - paths: data/can/start-end.asc    # 选择输入文件、连续分卷列表或目录；相对路径基于本配置，目录按自然序读取
    dbc_by_channel:                  # 为每个CAN通道指定解码用DBC文件；键是通道编号的字符串
      '1': data/can/teaching.dbc     # 为这个通道指定DBC文件；路径相对当前配置文件，通道键须为字符串
signals:                             # 把输入字段定义为有名称、类型、单位和有效期的分析信号
  - name: begin                      # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: '0x112'              # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Begin                  # 填写DBC中的信号名称，大小写须一致
    valid_for: 20s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
  - name: done                       # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: '0x115'              # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Done                   # 填写DBC中的信号名称，大小写须一致
    valid_for: 20s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
  - name: value                      # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: '0x11e'              # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Value                  # 填写DBC中的信号名称，大小写须一致
    valid_for: 20s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
rules:                               # 列出识别活动或瞬间变化的规则；每项产生有独立ID的事件
  - name: cycle                      # 为规则取唯一名称；窗口rule和计算scope通过此名选择它的事件
    rule_type: start_end             # 选择活动或变化识别算法；本例start_condition开始活动，end_condition或timeout结束活动
    start_condition: begin > 0       # 设置开始活动的条件；引用上方定义的信号
    end_condition: done > 0          # 设置结束活动的条件；引用上方定义的信号
    timeout: 5s                      # 限制一次活动的最长等待/持续时间；达到上限按规则结束
windows:                             # 围绕已定义规则的事件选取时间片段，供计算或导出使用
  - name: cycle_window               # 为窗口定义取唯一名称；计算或导出通过此名选择产生的片段
    rule: cycle                      # 选择生成窗口的事件规则；填写前面rules中的name
    pre: 0s                          # 设置起点之前保留多久上下文；0s表示不提前
    post: 0s                         # 设置结束点之后保留多久上下文；0s表示不延长
calculations:                        # 列出希望获得的统计或积分结果，每项独立选择范围和算法
  - name: cycle_mean                 # 为这项计算结果取唯一名称；结果表用它区分计算项
    scope:                           # 选择计算范围；session整段会话，{rule: 名称}逐事件，{window: 名称}逐片段
      rule: cycle                    # 按指定规则的每次事件分别计算；填写前面rules中的name
    operation: time_weighted_mean    # 选择计算方法；本例按有效值持续时长加权求平均
    expr: value                      # 指定参与计算的数值或信号表达式；引用前面已定义的信号
execution:                           # 设置本次分析的并行处理方式
  process_count: 4                   # 最多4个文件工作进程；实际并行数不超过输入文件数
