From ee89720fff64e54fce9d9d4d52cf8087cb42cf40 Mon Sep 17 00:00:00 2001 From: ywh <2227158009@qq.com> Date: Thu, 13 Aug 2026 12:50:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=A0=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Core/Inc/stm32f4xx_it.h | 2 + Core/Src/main.c | 6 +- Core/Src/stm32f4xx_it.c | 10 +- Document/PLSR_document/PLSR地址映射.md | 147 +- .../PLSR测试报告_2026-08-12.md | 376 ++ .../更新的需求/参数表-2026.xlsx | Bin 0 -> 12541 bytes ...现PLSR指令(2026) - 需求明确版.md | 248 ++ ...现PLSR指令(2026) - 需求明确版.pdf | Bin 0 -> 299297 bytes .../虞文昊_PLSR_2026.8.13.zip | Bin 0 -> 286088 bytes .../PLSR_document/虞文昊_PLSR_2026.8.6.zip | Bin 303852 -> 0 bytes .../~$设计方案书.docx | Bin 0 -> 162 bytes .../设计方案书.docx | Bin 279917 -> 261286 bytes .../需求规格书.docx | Bin 46350 -> 47070 bytes Document/PLSR_document/设计方案书.docx | Bin 261159 -> 261286 bytes EWARM/Modbus.ewp | 30 + .../plsr_control_panel.cpython-314.pyc | Bin 0 -> 65830 bytes .../plsr_modbus_product_test.cpython-314.pyc | Bin 0 -> 135478 bytes HostComputer/plsr_control_panel.py | 212 +- HostComputer/plsr_modbus_product_test.py | 1819 ++++++++- .../Third_Party/Micrium/Config/app_cfg.h | 7 +- Modbus/Inc/modbus_rtu_slave.h | 1 + Modbus/Src/modbus_rtu_slave.c | 43 +- PLSR/Inc/plsr.h | 40 + PLSR/Src/plsr.c | 1474 ++++++- PLSR/Src/plsr_internal.h | 5 + PLSR/Src/plsr_platform.h | 71 +- PLSR/Src/plsr_platform_f407.c | 3383 +++++++++++++++-- tests/plsr_host/test_plsr_host.c | 2161 +++++++++-- 29 files changed, 9180 insertions(+), 856 deletions(-) create mode 100644 Document/PLSR_document/PLSR测试报告_2026-08-12.md create mode 100644 Document/PLSR_document/更新的需求/参数表-2026.xlsx create mode 100644 Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.md create mode 100644 Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.pdf create mode 100644 Document/PLSR_document/虞文昊_PLSR_2026.8.13.zip delete mode 100644 Document/PLSR_document/虞文昊_PLSR_2026.8.6.zip create mode 100644 Document/PLSR_document/虞文昊_PLSR_2026.8.6/~$设计方案书.docx create mode 100644 HostComputer/__pycache__/plsr_control_panel.cpython-314.pyc create mode 100644 HostComputer/__pycache__/plsr_modbus_product_test.cpython-314.pyc diff --git a/.gitignore b/.gitignore index 81d6927..533ef4d 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ .DS_Store Thumbs.db Desktop.ini +tmp/ diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h index ae330a9..885d93d 100644 --- a/Core/Inc/stm32f4xx_it.h +++ b/Core/Inc/stm32f4xx_it.h @@ -64,6 +64,8 @@ void TIM1_UP_TIM10_IRQHandler(void); void TIM8_UP_TIM13_IRQHandler(void); void TIM1_TRG_COM_TIM11_IRQHandler(void); void TIM8_TRG_COM_TIM14_IRQHandler(void); +void TIM1_BRK_TIM9_IRQHandler(void); +void TIM8_BRK_TIM12_IRQHandler(void); /* USER CODE END EFP */ #ifdef __cplusplus diff --git a/Core/Src/main.c b/Core/Src/main.c index f84d298..346df0c 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -75,8 +75,12 @@ static void AppTaskStart(void *pArg) while (1) { - PlsrPoll1ms(); ModbusSlavePoll(); + PlsrPoll1ms(); + if (ModbusSlaveIsIdle() != 0U) + { + PlsrServicePersistence(); + } OSTimeDly(1U); } } diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 2a13a5c..5da38a8 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -47,7 +47,7 @@ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ - +extern void PlsrPlatformForceSafeOutputsFromFault(void); /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ @@ -89,7 +89,7 @@ void NMI_Handler(void) void HardFault_Handler(void) { /* USER CODE BEGIN HardFault_IRQn 0 */ - + PlsrPlatformForceSafeOutputsFromFault(); /* USER CODE END HardFault_IRQn 0 */ while (1) { @@ -104,7 +104,7 @@ void HardFault_Handler(void) void MemManage_Handler(void) { /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - + PlsrPlatformForceSafeOutputsFromFault(); /* USER CODE END MemoryManagement_IRQn 0 */ while (1) { @@ -119,7 +119,7 @@ void MemManage_Handler(void) void BusFault_Handler(void) { /* USER CODE BEGIN BusFault_IRQn 0 */ - + PlsrPlatformForceSafeOutputsFromFault(); /* USER CODE END BusFault_IRQn 0 */ while (1) { @@ -134,7 +134,7 @@ void BusFault_Handler(void) void UsageFault_Handler(void) { /* USER CODE BEGIN UsageFault_IRQn 0 */ - + PlsrPlatformForceSafeOutputsFromFault(); /* USER CODE END UsageFault_IRQn 0 */ while (1) { diff --git a/Document/PLSR_document/PLSR地址映射.md b/Document/PLSR_document/PLSR地址映射.md index f2016d9..c58c661 100644 --- a/Document/PLSR_document/PLSR地址映射.md +++ b/Document/PLSR_document/PLSR地址映射.md @@ -1,50 +1,121 @@ -# PLSR 地址映射 +# PLSR Modbus 地址映射(2026) -> 文档版本:V1.0 -> 适用轴:Y0~Y3 +> 文档版本:V2.0 +> 字节序:每个 32 位量均为低 16 位字在前、高 16 位字在后 +> 访问方式:配置和控制支持 FC06/FC16,状态和诊断仅支持 FC03 -## 1 固定配置参数 +## 1 固定配置区 `0x1000..0x1197` -| 地址 | 用途 | -|---|---| -| HSD460~539 | K0参数区 | -| SFD900~1419 | 公共参数及K1~K4参数区 | +### 1.1 公共参数 `0x1000..0x1013` -## 2 固定运行状态 +| 地址 | 类型 | 名称 | 取值/单位 | +|---|---|---|---| +| `0x1000` | U16 | 脉冲输出 | `0..3`,对应 Y0..Y3 | +| `0x1001` | U16 | 方向输出 | `0..3`,对应 Y12..Y15;AB 模式忽略 | +| `0x1002` | U16 | 等待输入 | `0=X4`,`1=X5` | +| `0x1003` | U16 | 外部中断输入 | `0=X4`,`1=X5` | +| `0x1004` | U16 | 发送模式 | `0=完整发送`,`1=后续发送` | +| `0x1005` | U16 | 方向延时 | ms;AB 模式忽略 | +| `0x1006` | U16 | 方向负逻辑 | `0/1`;AB 模式忽略 | +| `0x1007` | U16 | 曲线模式 | `0=直线`,`1=S 曲线`,`2=正弦曲线` | +| `0x1008` | U16 | 位置模式 | `0=相对`,`1=绝对` | +| `0x1009` | U16 | 有效段数 | `1..10` | +| `0x100A` | U16 | 起始段 | `1..10`,启动时不得超过有效段数 | +| `0x100B..0x100C` | U32 | 默认速度 | Hz,`1..100000` | +| `0x100D..0x100E` | U32 | 起始速度 | Hz,`0..100000` | +| `0x100F` | U16 | 保留 | 读为 0,仅允许写 0 | +| `0x1010..0x1011` | U32 | 停止速度 | Hz,`0..100000` | +| `0x1012` | U16 | 加速时间 | ms | +| `0x1013` | U16 | 减速时间 | ms | -| 地址 | 用途 | -|---|---| -| HSD0~15 | 累计脉冲状态 | -| SM1000、SM1001 | Y0运行和方向状态 | -| SM1020、SM1021 | Y1运行和方向状态 | -| SM1040、SM1041 | Y2运行和方向状态 | -| SM1060、SM1061 | Y3运行和方向状态 | -| SD1000~1011 | Y0实时运行状态 | -| SD1020~1031 | Y1实时运行状态 | -| SD1040~1051 | Y2实时运行状态 | -| SD1060~1071 | Y3实时运行状态 | +`0x1014..0x10FF` 为保留区,读为 0,仅允许写 0。32 位参数必须在同一次请求中完整访问两个寄存器。 -## 3 固定事件入口 +### 1.2 分段参数 `0x1100..0x1197` -| 地址 | 用途 | -|---|---| -| I6000~6399 | Y0~Y3每段事件入口 | +第 `n` 段(`n=1..10`)首地址为 `0x1100 + (n-1)*0x10`。 -## 4 动态数据地址 +| 段内偏移 | 类型 | 名称 | 取值/单位 | +|---|---|---|---| +| `+0x0..+0x1` | U32 | 段频率 | Hz,`1..100000` | +| `+0x2..+0x3` | I32 | 位移/脉冲数 | 正数为正向,负数为反向 | +| `+0x4` | U16 | 等待类型 | `0=定时等待`,`1=信号等待`,`2=定时动作`,`3=外部信号`,`4=外部或完成` | +| `+0x5` | U16 | 等待时间 | ms | +| `+0x6` | U16 | 动作时间 | ms | +| `+0x7` | U16 | 跳转段 | `0=不跳转`,`1..10=目标段` | +| `+0x8..+0xF` | U16 | 保留 | 读为 0,仅允许写 0 | -| 地址 | 用途 | -|---|---| -| S0 | 路径数据块,首地址动态指定 | -| S1 | 执行参数块,首地址动态指定 | +## 2 扩展配置区 `0x1200` -汇总 +| 地址 | 类型 | 名称 | 取值 | +|---|---|---|---| +| `0x1200` | U16 | 输出模式 | `0=PULSE/DIR`,`1=AB 正交脉冲` | +该参数参与持久化。AB 模式只允许 `0x1000=0`(Y0/Y1)或 `0x1000=2`(Y2/Y3);其他组合返回非法数据值。运行期间不得修改输出模式或脉冲输出。 -| 类别 | 固定地址 | -|---|---:| -| K0参数 | HSD460~539 | -| 公共参数及K1~K4参数 | SFD900~1419 | -| 累计脉冲状态 | HSD0~15 | -| 正在发脉冲、方向标志 | SM1000~SM1001、SM1020~SM1021、SM1040~SM1041、SM1060~SM1061 | -| 实时运行状态 | SD1000~1011、SD1020~1031、SD1040~1051、SD1060~1071 | -| 每段事件入口 | I6000~6099、I6100~6199、I6200~6299、I6300~6399 | \ No newline at end of file +AB 模式的频率单位是完整正交周期/秒,一个 `00` 起止的四状态周期等于一个指令脉冲: + +- 正向:`00 -> 10 -> 11 -> 01 -> 00` +- 反向:`00 -> 01 -> 11 -> 10 -> 00` + +方向由段位移的符号决定。独立 DIR 输出、DIR 极性和 DIR 延时在 AB 模式中不参与输出。 + +## 3 固定状态区 `0x2000..0x2006`(只读) + +| 地址 | 类型 | 名称 | 说明 | +|---|---|---|---| +| `0x2000..0x2001` | I32 | 当前位置 | 累计指令脉冲位置 | +| `0x2002..0x2003` | U32 | 当前频率 | Hz | +| `0x2004` | U16 | 运行状态 | `0=未初始化`,`1=空闲`,`2=加速`,`3=运行`,`4=减速`,`5=等待`,`6=暂停`,`7=完成`,`8=停止`,`9=错误` | +| `0x2005` | U16 | 当前段 | `0=无`,`1..10=段号` | +| `0x2006` | U16 | 错误码 | `0=无错误`,其余见 `PLSR_ERROR` 定义 | + +## 4 扩展诊断区 `0x2100..0x2119`(只读) + +| 地址 | 类型 | 名称 | 说明 | +|---|---|---|---| +| `0x2100` | U16 | 诊断标志 | 位定义见下表 | +| `0x2101` | U16 | 首个锁存原因 | `0=无`,`1=计数`,`2=频率`,`3=曲线`,`4=无效采样` | +| `0x2102` | U16 | 段号 | 当前或末次诊断段 | +| `0x2103` | U16 | 模式与方向 | bit0..7=输出模式,bit8=`1` 正向/`0` 反向 | +| `0x2104..0x2105` | U32 | 期望脉冲数 | 当前或末次诊断段的完整指令脉冲数 | +| `0x2106..0x2107` | U32 | 实测脉冲数 | 当前或末次诊断段的实测值;目标板来自独立硬件计数链 | +| `0x2108..0x2109` | I32 | 计数误差 | `实测 - 期望` | +| `0x210A..0x210B` | U32 | 请求频率 | Hz,规划器本次请求值 | +| `0x210C..0x210D` | U32 | 期望定时器频率 | Hz,根据实际 PSC/ARR 可实现的量化值 | +| `0x210E..0x210F` | U32 | 活动定时器频率 | Hz,实际生效的定时器配置值 | +| `0x2110..0x2111` | I32 | 请求量化误差 | `期望定时器频率 - 请求频率`,Hz | +| `0x2112..0x2113` | U32 | 采样数 | 本次诊断累计的有效样本数 | +| `0x2114..0x2115` | U32 | 不匹配数 | 频率或曲线不匹配的累计样本数 | +| `0x2116..0x2117` | U32 | 最大频率误差 | `abs(活动定时器频率 - 期望定时器频率)`,Hz | +| `0x2118..0x2119` | U32 | 首个不匹配样本 | 无不匹配时为 `0xFFFFFFFF` | + +`0x2100` 标志位: + +| 位 | 名称 | 置位条件 | +|---|---|---| +| bit0 | `monitoring_active` | 正在采集诊断数据 | +| bit1 | `count_checked` | 已完成计数核对 | +| bit2 | `count_pass` | 计数核对通过 | +| bit3 | `frequency_checked` | 已执行频率核对 | +| bit4 | `frequency_pass` | 频率核对通过 | +| bit5 | `curve_checked` | 已执行加减速次序核对 | +| bit6 | `curve_pass` | 曲线核对通过 | +| bit7 | `fault_latched` | 至少一个诊断故障已锁存 | + +诊断使用定时器分频值、完整周期计数和频率变化次序核对输出配置。它能发现内部计数、频率和曲线不一致,但不能代替逻辑分析仪对端子占空比、窄脉冲或电气波形的验收。 + +## 5 控制区 + +| 地址 | 类型 | 名称 | 写入值 | +|---|---|---|---| +| `0x3000` | U16 | PLSR 命令 | `0=无操作`,`1=START`,`2=STOP`,`4=CLEAR` | +| `0x3100` | U16 | 诊断控制 | `0=无操作`,`1=清除诊断锁存和统计` | + +控制寄存器读取恒为 0。除上述单一值外的位组合均返回非法数据值。 +运行期间写 `0x3100=1` 返回设备忙,避免清除正在采集的诊断上下文。 + +## 6 地址边界 + +- 原固定区 `0x1000..0x1197`、`0x2000..0x2006`、`0x3000` 保持不变。 +- 扩展区仅增加 `0x1200`、`0x2100..0x2119`、`0x3100`。 +- 完全落在 PLSR 地址之外的请求返回“不处理”,跨越 PLSR 地址与空洞的请求返回“非法地址”。 diff --git a/Document/PLSR_document/PLSR测试报告_2026-08-12.md b/Document/PLSR_document/PLSR测试报告_2026-08-12.md new file mode 100644 index 0000000..f54d829 --- /dev/null +++ b/Document/PLSR_document/PLSR测试报告_2026-08-12.md @@ -0,0 +1,376 @@ +# PLSR 2026 重写测试报告 + +> 测试日期:2026-08-12 +> +> 测试分支:`codex/plsr-2026-minimal` +> +> 测试代码基线:`bf314a2343002a3df78bce5049badb29d11eae2e` +> +> PLSR 实现提交:`c7b851659ea26f9af8563e146bf5332c3c8d6dfd` +> +> 分支起点:`e35595aae18690a46a03445865bd6218a166bd89` +> +> 结论口径:只记录本次 2026 PLSR 最小重写实际执行过的测试 + +## 1. 总结 + +本次重写的 Host 回归、Python 离线自检、IAR 全量构建、固件烧录、真实 Modbus RTU 板测、Y0~Y3 逐路选择、X4/X5 实体回环、硬复位持久化和最终默认状态复核均通过。 + +| 类别 | 最终结果 | 数量或关键结果 | +|---|---|---| +| C Host 回归 | PASS | 44 个测试组,1,694,007 次断言,0 失败 | +| Python 产品测试脚本离线自检 | PASS | 未打开串口 | +| Python 控制面板离线自检 | PASS | 未打开 GUI 或串口 | +| IAR EWARM 全量构建 | PASS | 0 errors,0 warnings | +| 固件烧录和校验 | PASS | `Verification...OK`,SHA256 与板测固件一致 | +| Modbus RTU/运动板测 | PASS | 9 组 | +| X4/X5 实体回环板测 | PASS | 9 个用例 | +| 硬复位持久化 | PASS | 配置和位置恢复,运动不自动续跑 | +| 最终默认状态复核 | PASS | 位置、配置、输入和夹具输出均恢复 | +| 逻辑分析仪测试 | 未执行 | 不在本轮验收范围内 | + +这里的“Y0~Y3 验证”是**同一个逻辑 PLSR 依次选择 Y0、Y1、Y2、Y3 作为脉冲输出**,不是四轴同时运动或四轴联动。 + +`1,694,007 assertions` 是逐脉冲检查、边界检查和随机算术比对产生的断言总数,不代表 169 万个独立测试场景。 + +## 2. 测试范围和口径 + +### 2.1 纳入本报告 + +- 本次重写新增的固定产品寄存器区:`0x1000~0x1197`、`0x2000~0x2006`、`0x3000`。 +- 单个逻辑 PLSR 的配置、状态、控制、运动、短段曲线、动态调频和停止。 +- 单个逻辑 PLSR 对 Y0~Y3 的逐路选择。 +- X4/X5 的 WAIT、EXT 和 EXT_OR_COMPLETE 实体输入回环。 +- 产品配置与逻辑位置的保存、硬复位恢复和默认值恢复。 +- 最小 Modbus RTU 的真实串口访问和异常响应。 +- 当前代码基线的 Host、Python、IAR 和固件产物复核。 + +### 2.2 不纳入本报告 + +旧工程曾做过的四轴并发、双 AB、软限位、长稳、USB CDC 并发和逻辑分析仪波形测试属于另一套实现,不能作为本次重写的通过证据,因此没有合并到本报告。 + +## 3. 环境与产物 + +| 项目 | 实际环境或结果 | +|---|---| +| 目标板 | 信捷 XDM-60T4-E,STM32F407IG | +| RTOS | uC/OS-II | +| 串口 | `COM5`,9600 bit/s,8E1,从站 1 | +| Host 编译器 | GCC 4.9.2 (`tdm64-1`) | +| Host 编译选项 | C99,`-Wall -Wextra -Werror`,`PLSR_HOST_TEST` | +| IAR | EWARM 8.3.4,配置 `Modbus` | +| IAR 工程 | `EWARM/Modbus.ewp` | +| HEX | `EWARM/Modbus/Exe/Modbus.hex` | +| HEX 文本文件大小 | 142,131 B | +| Intel HEX 有效数据 | 50,513 B | +| HEX 地址范围 | `0x08000000..0x0800C550` | +| SHA256 | `97956D9EF30A9B274140B9B82F412EDD77F9637F563FCC3F552BB4B140772343` | + +IAR 链接结果: + +```text +49,004 bytes of readonly code memory + 1,509 bytes of readonly data memory +18,660 bytes of readwrite data memory +Errors: none +Warnings: none +``` + +## 4. 最终自动化回归 + +### 4.1 C Host 回归 + +执行命令: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass ` + -File .\tests\plsr_host\run_tests.ps1 +``` + +最终输出: + +```text +SUMMARY tests=44 assertions=1694007 failures=0 +``` + +44 个测试组全部 PASS: + +| # | 测试组 | 实际验证内容 | +|---:|---|---| +| 1 | `u64_by_u32_division` | 用 8 个边界被除数、9 个边界除数和 250,000 组确定性伪随机数据,比对 64 位除 32 位算法与 C 原生除法的商和余数。 | +| 2 | `protocol_boundaries` | 覆盖区间外、跨区、地址溢出、零长度、空缓冲、只读区、保留字、32 位字段不完整写入、非法值和控制字宽度,并确认失败写入不破坏原值。 | +| 3 | `wait_zero_one_ms` | 验证 `WAIT_TIME=0` 按最小 1 ms 处理,先进入 WAITING,1 ms 后才进入下一段。 | +| 4 | `act_zero_no_pulse` | 验证 `ACT_TIME=0` 的段不产生脉冲并在下一次 1 ms 调度跳过,后续段正常执行。 | +| 5 | `relative_absolute_zero` | 验证相对位移 0、相对位移 +5,以及当前位置等于绝对目标时的零位移完成。 | +| 6 | `self_jump_stop` | 验证单段自跳转可循环运行,并能由 STOP 正常终止。 | +| 7 | `stop_deceleration` | 验证 STOP 从 1000 Hz 按 1000 ms 减速至 100 Hz 后停止;重复 STOP 不重启减速,最终位置 902。 | +| 8 | `stop_pending_boundary` | 验证最后脉冲已完成但 Poll 尚未处理时收到 STOP,最终为 STOPPED 而非 COMPLETED。 | +| 9 | `direction_delay_one_ms` | 验证 1 ms 方向建立延时结束前不输出脉冲,满 1 ms 后启动。 | +| 10 | `ext_edge_at_natural_boundary` | 验证 EXT 边沿和自然末脉冲同时发生时只处理一次,不重复切段或计数。 | +| 11 | `ext_cut_natural_boundary_interleavings` | 覆盖 EXT 切断与自然边界的两种临界交错顺序,均正确进入后续 2000 Hz 段。 | +| 12 | `ext_edge_during_direction_delay` | 验证方向延时期间的 EXT 边沿不会在首脉冲前错误切段。 | +| 13 | `stopped_clears_pending_ext` | 验证 STOP 清除方向延时期间挂起的 EXT 边沿,重新 START 不消费旧边沿。 | +| 14 | `ext_edge_seamless_epoch` | 验证上一段的 EXT 竞态不会误切无缝衔接后的下一段。 | +| 15 | `ramp_seamless_epoch` | 验证上一段遗留的调速更新不会重定向无缝衔接后的下一段。 | +| 16 | `short_profile_boundary_matrix` | 覆盖直线、平滑、正弦三曲线与 1、2、10、99、100、101 脉冲,检查频率范围、升降趋势、对称性、计数和理论时长。 | +| 17 | `short_final_no_poll` | 验证三种曲线的 10 脉冲最终短段在脉冲间无 1 ms Poll 时仍逐脉冲减速并准确完成。 | +| 18 | `zero_to_maximum_ramp_duration` | 验证三种曲线从 0 加速到 100 kHz、1000 脉冲、20 ms 配置的单调性、峰值和总时长。 | +| 19 | `maximum_pulse_ramp_duration` | 验证三种曲线在 65,535 脉冲和 1311 ms 加速条件下采用可达峰值并准确计数。 | +| 20 | `maximum_single_ramp_no_poll` | 验证三种曲线的 65,535 脉冲单段在无 Poll 时持续逐脉冲更新并准确完成。 | +| 21 | `short_timer_failure` | 注入短段频率更新失败,验证立即关闭输出并进入 `ERROR/TIMER`,位置保留为 1。 | +| 22 | `stop_after_subsequent_handoff` | 验证无缝切入第二段后立即 STOP 能从新段频率正常减速并停止。 | +| 23 | `short_zero_speed_edges` | 验证起始/停止速度均为 0 时,1 脉冲和 2 脉冲短段仍以有效非零硬件频率准确执行。 | +| 24 | `short_dynamic_retarget` | 验证 50 脉冲短段中把目标频率由 1000 改为 2000 Hz 后安全上升,随后 STOP 正常停止。 | +| 25 | `short_ext_cut` | 验证短段执行 3 脉冲后触发 EXT,在下一脉冲边界切断,最终位置 4。 | +| 26 | `current_frequency_dynamic` | 验证当前段动态频率按安全脉冲边界生效,状态反映实际输出,运行中改脉冲数不改变启动快照。 | +| 27 | `poll_mailbox_failure` | 注入动态调频失败,验证 Poll 仅提交更新,失败在脉冲边界转为 `ERROR/TIMER`。 | +| 28 | `future_frequency_on_arrival` | 普通逐段模式中修改未来第二段频率,当前段不受影响,到达第二段时采用新值。 | +| 29 | `subsequent_future_frequency_handoff` | 无缝模式中修改未来段频率,验证预装衔接重建并以新频率无缝进入第二段。 | +| 30 | `future_frequency_last_pulse_race` | 验证未来段调频与当前段最后脉冲竞态时,第二段仍以新频率启动并准确完成。 | +| 31 | `latched_update_before_future_frequency_commit` | 验证屏蔽中断期间锁存的物理脉冲先消费旧衔接,再提交新的未来频率预装。 | +| 32 | `subsequent_no_poll_gap` | 验证两段只靠 ISR 无缝衔接,中间不依赖 Poll,输出不停止,最终位置 7。 | +| 33 | `three_single_pulse_no_poll` | 验证三个各 1 脉冲、1000/2000/3000 Hz 的段在无 Poll 时连续衔接。 | +| 34 | `handoff_queue_failures` | 两种时序下注入下一段频率排队失败,均关闭输出并转为 `ERROR/TIMER`。 | +| 35 | `command_state_restrictions` | 验证 IDLE/RUNNING 状态下 START、STOP、CLEAR、静态/动态配置写入及非法组合的限制。 | +| 36 | `command_mailbox_start_snapshot` | 验证 START 延迟执行与配置快照,后续写入和重复 START 不覆盖首个快照。 | +| 37 | `command_mailbox_stop_clear_deferred` | 验证重复 STOP/CLEAR 可幂等入队,状态变化延迟到 Poll,冲突命令返回 BUSY。 | +| 38 | `command_mailbox_validation` | 验证 START 入队前检查起始段和绝对位置有效性,非法配置不启动。 | +| 39 | `command_mailbox_start_failure` | 注入底层启动失败,验证 Poll 后进入 `ERROR/INVALID_RESOURCE`,CLEAR 可恢复。 | +| 40 | `wait_signal_positive` | 验证段后进入 WAITING,选定输入有效后由下一次 Poll 结束等待。 | +| 41 | `persistence_reinit` | 在 Host 存储模拟中验证输出、方向、2345 Hz 配置和位置 4 跨 `PlsrInit()` 恢复,CLEAR 后位置保持 0。 | +| 42 | `position_flash_save` | 验证位置稳定约 1000 ms 后仅保存一次,CLEAR 后延时产生第二次保存。 | +| 43 | `busy_reset_absolute_gate` | 模拟运动中复位,保留位置但取消绝对位置可信标志;CLEAR 后恢复绝对运动。 | +| 44 | `position_overflow` | 验证 `INT32_MAX` 正向溢出时立即停脉冲并进入 `ERROR/COUNT`。 | + +说明:Host 测试直接调用寄存器 API 和平台替身,不能代替真实 RTU 串口板测;真实 RTU 结果见第 7 节。 + +### 4.2 Python 产品测试脚本离线自检 + +执行命令: + +```powershell +py -B HostComputer\plsr_modbus_product_test.py --self-test +``` + +结果: + +```text +Self-test passed; no serial port was opened +``` + +覆盖: + +- Modbus CRC16 参考向量及线上低字节在前的字节序。 +- 6 组有符号 32 位数的双 WORD 拆分与合并。 +- 1200 Hz 请求的 1 Hz 容差边界。 +- ST-LINK GPIO 位读回文本解析。 + +### 4.3 Python 控制面板离线自检 + +执行命令: + +```powershell +py -B HostComputer\plsr_control_panel.py --self-test +``` + +结果: + +```text +PLSR control panel self-test passed; no GUI or serial port was opened +``` + +覆盖 9600 波特率、X4/X5 选项、10 段地址步进、整数解析和越界拒绝、公共区 20 WORD 编码、段区 8 WORD 编码、负脉冲补码及跳转段范围校验。 + +## 5. IAR 构建 + +执行命令: + +```powershell +& 'F:\IAR Systems\Embedded Workbench 8.3\common\bin\IarBuild.exe' ` + 'EWARM\Modbus.ewp' -build Modbus -log warnings +``` + +最终结果: + +```text +Total number of errors: 0 +Total number of warnings: 0 +``` + +`EWARM/Modbus/List/Modbus.map` 同时报告 `Errors: none`、`Warnings: none`,内存数据见第 3 节。 + +## 6. 烧录与固件产物校验 + +### 6.1 烧录 + +最终烧录使用 `EWARM/Modbus/Exe/Modbus.hex`,只擦除并写入应用占用的 Sector 0~3。ST-LINK 最终输出: + +```text +Verification...OK +``` + +开发过程中还用 STM32CubeProgrammer 执行过两次下载校验,用于确认当时固件可以下载和校验。它们属于中间版本的烧录链路记录,不是功能测试,也不作为最终交付固件的产物证据;最终结论以上述 ST-LINK 烧录、最终 SHA256 和后续完整板测为准。 + +### 6.2 持久化区保护 + +烧录前后均读取并检查 Sector 10/11。应用 HEX 地址上限为 `0x0800C550`,不覆盖持久化区;烧录流程也没有擦除 Sector 10/11。该检查用于确认后续持久化板测不是由重新烧录清空后伪造出的初始状态。 + +### 6.3 产物一致性 + +板测烧录件和当前分支重新构建产物的 SHA256 均为: + +```text +97956D9EF30A9B274140B9B82F412EDD77F9637F563FCC3F552BB4B140772343 +``` + +## 7. 真实 Modbus RTU 和运动板测 + +执行入口: + +```powershell +py -B HostComputer\plsr_modbus_product_test.py ` + --port COM5 --run --phase all --allow-motion +``` + +最终 `phase=all` 的 9 组测试全部 PASS: + +| # | 用例 | 实际验证内容 | 结果 | +|---:|---|---|---| +| 1 | `fixed_map_and_exceptions` | 真实 FC03/06/10 访问固定配置、段、状态和控制区;检查保留字读零、控制字读零;验证不支持 FC01 返回 0x01,非法/跨区/只读地址返回 0x02,保留字非零、半个 DWORD 和组合控制命令返回 0x03。 | PASS | +| 2 | `positive_negative_absolute_zero` | 验证正向相对、负向相对、绝对定位及零位移,检查方向、终态和逻辑位置。 | PASS | +| 3 | `all_outputs_100khz` | 同一个 PLSR 依次选择 Y0、Y1、Y2、Y3,每路请求 100 kHz、执行 1000 个逻辑脉冲并检查完成位置。不是四轴并发。 | PASS | +| 4 | `short_final_profiles` | 对直线、平滑、正弦三种曲线执行最终 10 脉冲短段,检查终态和准确位置。 | PASS | +| 5 | `wait_time` | 执行 10 脉冲后进入 WAITING,配置等待 120 ms;检查不会异常提前完成,之后正常完成。 | PASS | +| 6 | `act_time` | 2000 脉冲目标配合 80 ms ACT,检查时间到后在 0~2000 之间切断并正常完成。 | PASS | +| 7 | `dynamic_frequency_repeated_stop` | 当前段从 500 Hz 动态改为 1200 Hz;真实状态读回 1199 Hz,在允许的 1 Hz 容差内;运行中静态输出选择写入返回 BUSY;重复 STOP 正常减速停止且未跑满 3000 脉冲。 | PASS | +| 8 | `future_segment_frequency_on_arrival` | 普通逐段模式运行第一段时修改未来第二段频率,确认当前段仍为 400 Hz,进入第二段后采用 900 Hz。 | PASS | +| 9 | `subsequent_future_frequency_handoff` | SUBSEQUENT 模式运行第一段时修改未来段频率,确认当前段不变,第二段以 900 Hz 衔接并最终累计 400 脉冲。 | PASS | + +脚本在退出时停止仍在运行的任务,并恢复进入测试前保存的公共配置和前两段配置。 + +正式烧录后还在完整 `phase=all` 之前单独执行过一次 `--phase smoke`,固定映射和异常码检查 PASS。第 9 节恢复默认值并再次硬复位后又执行了一次 smoke,结果仍为 PASS。 + +## 8. X4/X5 实体回环板测 + +### 8.1 接线和方法 + +本轮保留的自动化回环接线: + +```text +Y4 -> X4 +Y5 -> X5 +``` + +脚本通过 ST-LINK 临时把 Y4/Y5 对应 GPIO 配置为输出,驱动 PLC 输入并直接读回 X4/X5 输入位;产品协议和正式固件没有为测试夹具新增私有寄存器。 + +开发期夹具最初尝试写 GPIO 的只写 BSRR 寄存器。旧版 `ST-LINK_CLI 3.5.0` 会在写后回读校验,因 BSRR 不可按普通寄存器回读而返回码 4。夹具随后改用 PI8/PE6 的 ODR 位带地址 `0x424402A0`、`0x42420298` 驱动输出。该失败是调试工具与只写寄存器的校验方式不兼容,不是接线、X4/X5 输入或 PLSR 功能故障。 + +执行入口: + +```powershell +py -B HostComputer\plsr_modbus_product_test.py ` + --port COM5 --run --phase x45 --allow-motion +``` + +### 8.2 九个用例 + +| # | 用例 | 实际验证内容 | 结果 | +|---:|---|---|---| +| 1 | `x45_electrical_scan` | Y4/Y5 均关闭时 X4/X5 均为低;分别打开 Y4、Y5 时对应输入为高、另一路保持低;关闭后恢复低,验证双路电气扫描和隔离。 | PASS | +| 2 | `X4_wait_signal` | 选择 X4;50 脉冲后进入 WAITING,X4 低时保持,Y4 拉有效后完成,位置仍为 50。 | PASS | +| 3 | `X4_ext_signal` | 选择 X4;5000 脉冲运动中由 Y4 触发 EXT_SIGNAL,提前切段并正常完成。 | PASS | +| 4 | `X4_ext_or_complete_natural` | 选择 X4;不触发输入,50 脉冲自然完成。 | PASS | +| 5 | `X4_ext_or_complete_trigger` | 选择 X4;5000 脉冲运动中由 Y4 外部触发,提前完成。 | PASS | +| 6 | `X5_wait_signal` | 选择 X5;50 脉冲后进入 WAITING,X5 低时保持,Y5 拉有效后完成,位置仍为 50。 | PASS | +| 7 | `X5_ext_signal` | 选择 X5;5000 脉冲运动中由 Y5 触发 EXT_SIGNAL,提前切段并正常完成。 | PASS | +| 8 | `X5_ext_or_complete_natural` | 选择 X5;不触发输入,50 脉冲自然完成。 | PASS | +| 9 | `X5_ext_or_complete_trigger` | 选择 X5;5000 脉冲运动中由 Y5 外部触发,提前完成。 | PASS | + +ODR 位带夹具修正后先完成独立电气扫描,再执行完整九项用例。异常清理顺序修正后又执行了第二次完整九项回归,结果仍全部 PASS。 + +### 8.3 最终夹具清理状态 + +测试结束或异常退出均按以下顺序清理:先关闭 Y4/Y5,再停止仍在运行的 PLSR,恢复测试前配置,最后把 PI8/PE6 恢复为输入高阻并清除上下拉。最终复核结果: + +- Y4/Y5 均关闭。 +- PI8/PE6 均为输入高阻、无内部上下拉。 +- X4/X5 读回均为低。 + +## 9. 持久化与硬复位板测 + +持久化测试使用真实目标板和 100 ms 硬复位,不以 Host 内存模拟代替。 + +### 9.1 保存准备 + +执行 `persistence-prepare`: + +- 清零逻辑位置。 +- 写入 500 Hz、7 脉冲的特征配置。 +- 执行运动并确认 COMPLETED、位置为 7。 +- 等待后台保存完成。 + +### 9.2 第一次硬复位和恢复检查 + +执行 100 ms 硬复位后运行 `persistence-verify --cleanup`,结果: + +- 上电状态为 IDLE,没有自动续跑复位前任务。 +- 逻辑位置恢复为 7。 +- 第一段频率恢复为 500 Hz。 +- 第一段脉冲数恢复为 7。 + +随后执行 CLEAR,把位置恢复为 0;写回默认配置并等待保存。 + +### 9.3 第二次硬复位和默认状态检查 + +再次执行 100 ms 硬复位后运行 `defaults-verify`,结果: + +- 状态为 IDLE,逻辑位置为 0。 +- 默认方向建立延时为 10 ms。 +- 默认速度为 1000 Hz,起始速度和停止速度均为 100 Hz。 +- 第 1 段为 1000 Hz、1000 脉冲。 +- 第 2~10 段频率均为 1000 Hz、脉冲数均为 0。 + +最后又执行一次固定映射 smoke,确认默认配置恢复后 RTU 访问和异常码仍通过。 + +## 10. 测试过程中出现的问题和修复回归 + +本节记录中间失败;这些结果不是最终失败,而是用于说明本轮调试实际发现并关闭了哪些问题。 + +| 阶段 | 中间现象 | 原因与处理 | 修复后结果 | +|---|---|---|---| +| 旧架构 PDU 试验 | `length == 8U`、`TestStatusAndControl() == 0` 失败 | 试验基于待废弃的旧 PDU 架构。需求复核后没有继续补旧架构,而是按 2026 固定产品接口重写;该试验路线整体废弃。 | 新固定接口由 Host `protocol_boundaries` 和真实 `fixed_map_and_exceptions` 覆盖并通过。 | +| 初期 Host | `12 tests / 262 assertions / 2 failures` | 失败项是 `wait_zero_rejected`、`act_zero_rejected`。复核明确需求后确认正确语义为 `WAIT=0` 按 1 ms,`ACT=0` 零脉冲跳段,代码和测试按正确语义修正。 | `wait_zero_one_ms`、`act_zero_no_pulse` 通过;最终 44/1,694,007/0。 | +| 扩充 EXT 测试 | Host 编译失败,`PLSR_EXT_SIGNAL` 未声明 | 测试扩充时枚举和测试引用未同步,补齐枚举/接口后重跑。 | Host 编译和完整回归通过。 | +| Modbus 裁剪中间态 | IAR `10 errors / 2 warnings` | 头文件先精简,旧源文件与 `main.c` 尚未同步清理;不是运动算法失败。随后完成最小 RTU 源文件和入口同步。 | IAR 全量构建 `0 errors / 0 warnings`。 | +| Host 脚本启动 | Windows 默认策略阻止直接运行 `.ps1` | 改用 `powershell.exe -NoProfile -ExecutionPolicy Bypass -File ...`。 | Host 脚本正常执行并通过。 | +| X4/X5 夹具初版 | `ST-LINK_CLI 3.5.0` 写 BSRR 返回码 4 | BSRR 是只写寄存器,旧 CLI 的写后回读校验不适用。改用 PI8/PE6 的 ODR 位带地址驱动 Y4/Y5。 | 独立电气扫描和完整 X4/X5 九项通过;判定为夹具工具限制,不计为产品失败。 | +| X4/X5 夹具审查 | 异常退出清理顺序不够安全 | 调整为先关闭 Y4/Y5,再停止运动、恢复配置,最后释放 GPIO;保证清理期间不会继续保持输入触发。 | 完整 X4/X5 九项重新执行并通过,最终 GPIO/输入状态复核通过。 | + +中间失败均保留在本报告中,但最终交付结论以当前基线重新执行的结果为准。 + +## 11. 明确未执行和结论边界 + +以下项目本轮**未执行**,不得从本报告的 PASS 推导为已验证: + +- 未使用逻辑分析仪,因此没有验证端子真实占空比、每路真实边沿数、毛刺、窄脉冲、方向建立时间或段间物理波形连续性。 +- 未对 MCU 中断最坏响应时间和 100 kHz 下的 ISR 最坏时延做仪器测量。 +- 未做四轴同时运动或四轴联动;本实现只有一个逻辑 PLSR,Y0~Y3 是逐路选择。 +- 未做 USB CDC 与 Modbus/运动并发长稳。 +- 未做本次最小重写的长时间压力、断线重连或坏 CRC 长稳矩阵。 +- 未做真实 VBAT 断主电源测试。本轮实际执行的是调试器控制的 100 ms 硬复位;它能证明复位恢复路径,不能等价证明 VBAT/完全掉电保持。 +- Host 的持久化用例使用内存模拟;真实 Flash/复位结论仅来自第 9 节板测。 +- Host 直接调用寄存器 API,不证明 RTU 物理链路;真实 RTU 覆盖仅限第 7~9 节列出的板测。 +- 未用 IAR 8.40 构建;本轮实际验证版本为 IAR EWARM 8.3.4。 + +## 12. 最终状态 + +测试结束后目标板处于以下状态: + +- 固件为 SHA256 `97956D9EF30A9B274140B9B82F412EDD77F9637F563FCC3F552BB4B140772343` 对应版本。 +- PLSR 状态为 IDLE,逻辑位置为 0。 +- 固定产品寄存器配置已恢复默认值。 +- Y4/Y5 夹具输出已关闭,PI8/PE6 已释放为输入高阻。 +- X4/X5 均读回低。 +- 最终 `defaults-verify` 和固定映射 smoke 均 PASS。 + +本报告没有引用旧实现的四轴、双 AB、长稳或逻辑分析仪结果作为本次重写证据。 diff --git a/Document/PLSR_document/更新的需求/参数表-2026.xlsx b/Document/PLSR_document/更新的需求/参数表-2026.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d6d9cf9aa2dd8352e42b270d5c3a7e4acedb1678 GIT binary patch literal 12541 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 J4fD@m{|~9$>l6S0 literal 0 HcmV?d00001 diff --git a/Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.md b/Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.md new file mode 100644 index 0000000..53cab2a --- /dev/null +++ b/Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.md @@ -0,0 +1,248 @@ +## 实现PLSR指令(明确需求版) + +## 一、任务要求 + + 参考信捷PLC设备PLSR指令手册,实现下位机PLSR指令。 + +### 1、整体任务要求 + +- 书写项目文档,包含书写规格书、方案书、测试大纲。 +- 代码管理清晰,以及编写规范。 + +### 2、PLSR指令任务要求 + +* 设计PLSR指令实现功能; + * 可脱离仿真器运行; + * 实现1路PLSR功能,脉冲输出端子在Y0~Y3中可选择,方向端子固定Y12~Y15; + * 脉冲发送频率、发送个数准确; +* 能记录累计发送的脉冲个数,累计值可通过通信方式清零; +* 脉冲输出方式; + + * 单相(脉冲+方向)脉冲,脉冲个数为正时,正向发脉冲,脉冲方向端子为ON;脉冲个数为负时,反向发脉冲,脉冲方向端子为OFF; +* 脉冲发送模式: + + - 支持完成模式、后续模式。 +* 运行模式; + + * 支持相对模式、绝对模式; + * 绝对模式时,如果设定的脉冲个数与累计的脉冲个数相等时,不动作; +* 加减速:支持直线加减速、S曲线加减速、正弦曲线加减速; +* 脉冲速度:支持设置起始速度、终止速度、脉冲默认速度(匀速) +* PLSR多段脉冲输出功能实现; + + * 脉冲总段数范围:1~10段; + * 起始执行段数:脉冲指令从“起始执行段数”开始执行; +* 等待条件 + - 当前段脉冲发送完成后,进入等待,“等待条件”满足后,跳转至指定段; + - 等待条件包括:Wait时间、Wait信号(X点)、ACT时间、EXT信号(X点)、EXT信号或脉冲发送完成; + * 单段脉冲参数配置: + * 脉冲频率,范围:1HZ~100KHZ,脉冲频率在脉冲指令执行过程中修改后立即生效; + * 脉冲个数,范围:-2147483648~2147483647,设置负数表示反向发脉冲; + * 跳转段数,如果设置为0,表示默认跳转至下一段脉冲,最后一段脉冲的跳转段数设置为0,表示结束脉冲输出功能; +* 断电保存数据: + * 系统参数数据、记录数据可掉电保持; + * 上电后自动加载保存数据,并进行参数配置; +* 配置参数; + + * 脉冲方向端子可选择; + * 脉冲输出端子可选择; + * 脉冲总段数可设置; + * 起始执行段数可设置; + * 运行模式可设置; + * 加减速模式可设置; + * 等待条件可设置; + * 加速时间、减速时间可设置; + * 第n段的脉冲频率、脉冲个数、跳转段数可设置(n:1~10); +* PLSR指令功能自测; + +### 4、通信任务要求 + +- 使用一种通信方式(modbus)监控和实时修改PLSR的参数; +- 自制触摸屏或者上位机界面,实现PLSR题目涉及的参数读、写功能。(二选一,需要触摸屏可申领) + +### 5、可选要求 + +* 实现PLSR输出AB相脉冲,可控制输出方向; +* 支持对输出的脉冲信号进行诊断: + - 诊断输出脉冲的个数是否与设置一致; + - 诊断输出脉冲的频率、加减速曲线是否与设置一致; + +## 二、时间要求 + +1个月(4周) + +## 三、任务器材和软件工具 + +| 序号 | 器材 | 数量 | +| ---- | ---------------------------------------- | ---- | +| 1 | XDM-60T4-E/XDM-60T10-E | 1台 | +| 2 | ST-LINK | 1台 | +| 3 | 电源线 | 1根 | +| 4 | XVP线 | 1根 | +| 5 | USB转串 | 1个 | +| 6 | DB9F侧线 | 1根 | +| 7 | 编码器线CP-SP-M-03 | 1根 | +| 8 | 动力线CM-P15-01 | 1根 | +| 9 | 开关电源 | 1个 | +| 10 | 驱动器DF3E-0410 | 1个 | +| 11 | 电机MF3S-60CS30B1-504 | 1个 | +| | **6~11是伺服相关的设备,一组有一套即可** | | + +| 软件工具 | 版本 | +| -------- | ---- | +| | | +| | | +| IAR8.40 | 8.40 | + + + +## 四、XDM-60T4-E硬件信息 + +- 芯片型号: STM32F407IG ,晶振12MHz。 +- 引脚信息 + +| 芯片引脚 | 实际作用 | +| --------- | -------- | +| I0 | PH10 | +| I1 | PH11 | +| I2 | PG8 | +| I3 | PB4 | +| I4 | PB5 | +| I5 | PG12 | +| I6 | PB6 | +| I7 | PB7 | +| I10 | PF10 | +| I11 | PA15 | +| I12 | PB3 | +| I13 | PA14 | +| I14 | PI4 | +| I15 | PI5 | +| I16 | PI6 | +| I17 | PI7 | +| I20 | PE2 | +| Q0 | PF6 | +| Q1 | PF8 | +| Q2 | PF7 | +| Q3 | PF9 | +| Q4 | PI8 | +| Q5 | PE6 | +| Q6 | PE5 | +| Q7 | PE4 | +| Q10 | PG7 | +| Q11 | PG6 | +| Q12 | PH9 | +| Q13 | PH8 | +| Q14 | PH7 | +| Q15 | PH6 | +| Q16 | PF11 | +| Q17 | PB0 | +| Q20 | PH5 | +| USART1_TX | PA9 | +| USART1_RX | PA10 | + +## 五、XDM-60T10-E硬件信息 + +- 芯片型号:STM32F407ZG,晶振12MHz。 +- 引脚信息 + +| 芯片引脚 | 实际作用 | +| --------- | -------- | +| I0 | PA0 | +| I1 | PA1 | +| I2 | PG8 | +| I3 | PB4 | +| I4 | PB5 | +| I5 | PG12 | +| I6 | PB6 | +| I7 | PB7 | +| I10 | PF10 | +| I11 | PA15 | +| I12 | PB3 | +| I13 | PA14 | +| Q0 | PF6 | +| Q1 | PF8 | +| Q2 | PF7 | +| Q3 | PF9 | +| USART1_TX | PA9 | +| USART1_RX | PA10 | + +## 六、Modbus 参数地址表 + +本节整理自《参数表-2026.xlsx》。表内地址为 Modbus 寄存器地址;所有双字参数均占用两个连续的 +16 位寄存器,并按“低地址存低 16 位、高地址存高 16 位”的顺序保存。 + +### 1、公共配置参数 + +| Modbus 地址 | 参数 | 取值及说明 | +| --- | --- | --- | +| `0x1000` | 脉冲发送端子 | `0`:Y0;`1`:Y1;`2`:Y2;`3`:Y3 | +| `0x1001` | 脉冲方向端子 | `0`:Y12;`1`:Y13;`2`:Y14;`3`:Y15 | +| `0x1002` | WAIT 信号 | `0`:X4;`1`:X5 | +| `0x1003` | EXT 信号 | `0`:X4;`1`:X5 | +| `0x1004` | 脉冲发送模式 | `0`:完成模式;`1`:后续模式 | +| `0x1005` | 脉冲方向延时时间 | 单位:ms | +| `0x1006` | 脉冲方向逻辑 | `0`:正逻辑;`1`:负逻辑 | +| `0x1007` | 脉冲加减速模式 | `0`:直线;`1`:S 曲线;`2`:正弦曲线 | +| `0x1008` | 运行模式 | `0`:相对模式;`1`:绝对模式 | +| `0x1009` | 脉冲总段数 | 范围:1~10 | +| `0x100A` | 起始执行段数 | 指令从指定段开始执行 | +| `0x100B~0x100C` | 脉冲默认速度 | 32 位,单位:Hz | +| `0x100D~0x100E` | 脉冲起始速度 | 32 位,单位:Hz | +| `0x1010~0x1011` | 脉冲终止速度 | 32 位,单位:Hz | +| `0x1012` | 默认速度加速时间 | 单位:ms | +| `0x1013` | 默认速度减速时间 | 单位:ms | + +### 2、单段参数布局 + +每段占用一个 `0x10` 寄存器跨度。第 `n` 段的基地址为: + +```text +segment_base = 0x1100 + (n - 1) × 0x10,n = 1~10 +``` + +| 相对偏移 | 参数 | 取值及说明 | +| --- | --- | --- | +| `+0~+1` | 第 n 段脉冲频率 | 32 位,单位:Hz,范围:1 Hz~100 kHz | +| `+2~+3` | 第 n 段脉冲个数 | 32 位有符号数;负数表示反向 | +| `+4` | 第 n 段等待条件 | `0`:WAIT 时间;`1`:WAIT 信号;`2`:ACT 时间;`3`:EXT 信号;`4`:EXT 信号或脉冲发送完成 | +| `+5` | WAIT 时间 | 单位:ms | +| `+6` | ACT 时间 | 单位:ms | +| `+7` | 第 n 段跳转编号 | `0` 表示默认跳转至下一段;最后一段为 `0` 时结束输出 | + +各段具体地址如下: + +| 段号 | 脉冲频率 | 脉冲个数 | 等待条件 | WAIT 时间 | ACT 时间 | 跳转编号 | +| ---: | --- | --- | --- | --- | --- | --- | +| 1 | `0x1100~0x1101` | `0x1102~0x1103` | `0x1104` | `0x1105` | `0x1106` | `0x1107` | +| 2 | `0x1110~0x1111` | `0x1112~0x1113` | `0x1114` | `0x1115` | `0x1116` | `0x1117` | +| 3 | `0x1120~0x1121` | `0x1122~0x1123` | `0x1124` | `0x1125` | `0x1126` | `0x1127` | +| 4 | `0x1130~0x1131` | `0x1132~0x1133` | `0x1134` | `0x1135` | `0x1136` | `0x1137` | +| 5 | `0x1140~0x1141` | `0x1142~0x1143` | `0x1144` | `0x1145` | `0x1146` | `0x1147` | +| 6 | `0x1150~0x1151` | `0x1152~0x1153` | `0x1154` | `0x1155` | `0x1156` | `0x1157` | +| 7 | `0x1160~0x1161` | `0x1162~0x1163` | `0x1164` | `0x1165` | `0x1166` | `0x1167` | +| 8 | `0x1170~0x1171` | `0x1172~0x1173` | `0x1174` | `0x1175` | `0x1176` | `0x1177` | +| 9 | `0x1180~0x1181` | `0x1182~0x1183` | `0x1184` | `0x1185` | `0x1186` | `0x1187` | +| 10 | `0x1190~0x1191` | `0x1192~0x1193` | `0x1194` | `0x1195` | `0x1196` | `0x1197` | + +### 3、运行监控 + +| Modbus 地址 | 参数 | 说明 | +| --- | --- | --- | +| `0x2000~0x2001` | 脉冲累计数量监控 | 32 位有符号数,可读取负数 | +| `0x2002~0x2003` | 当前脉冲发送频率 | 32 位 | +| `0x2004` | 运行状态 | 状态编码由实现定义并在通信协议中说明 | +| `0x2005` | 当前执行段 | 当前正在执行的段号 | +| `0x2006` | 错误码 | 错误码定义由实现说明 | + +### 4、控制寄存器 + +| Modbus 地址 | 位 | 功能 | +| --- | ---: | --- | +| `0x3000` | bit0 | 启动脉冲输出 | +| `0x3000` | bit1 | 停止脉冲输出(可参考) | +| `0x3000` | bit2 | 清除状态信息及脉冲累计值 | + +### 5、附加功能通信 + +AB 相输出和脉冲诊断属于附加题,若实现,所需寄存器及协议由项目另行设计,不占用或改变上述 +基础功能地址和语义。 diff --git a/Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.pdf b/Document/PLSR_document/更新的需求/实现PLSR指令(2026) - 需求明确版.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6a1f9aa412adb48e66c0462e0603bca8a789ebe8 GIT binary patch literal 299297 zcmb5UV{~Ls^e!CRw$l^awx;7`l8J5Gwr$&)7!%vJ&57+dzyG~o?ppW5eS58{+Rxrq zb)N3pb$Xv&hf+aIf}WXy6OPjV`vV8Z%tpdQVryUl$Hxc9C}D2pWb8n~C}E}VWGrTE zXlrB)#|SjGF?BK{;oxHBfD;gab98br*0+Xp%WBeIkD=gn@V=@oGX-aWv=v5E$0<9z zoNHJDe+EBDMgV8|v;PGhwL_1@$gj7 zmX31!`|I$ypzg-vibB_%FAKF!pqClL?ew;9*8*|Z=jZMG^yTf_SJz03AriLe0i*8M z&F%U)BjcCXshURa#^TEawrLi~e_G-%hnHO9ETB*1sf-y@%%2k_VrkCvMC($tyUz(6BjFf?;0G7~UClxdL5GE0fN2 z^4PwHODDC=P^q%S`zhqXE!Y1J_MGlOwr{s>VGIbg1B->s-D(YQNl^v)Ueo}?t_F!z zo!g_zWW=n4oOe}4Dd!NrzZ5c0Ex7+^9vn#e=#p(6oFC-^*enx&8@}P|avoU_)ZsQW zbP=YH4lj3440D1G465!-d-G*RN?+nJ_;whzr+9|ZOF00vARGt+y3-D70deC2lw(;U zy+XzuY{CG%Yqa(a zN41Q1rS%&uw>X0-4=fWV;}(wD)>6jf7Q#--sl3&*NyOHjPG@!D$H9%fWl78O|~XWQrN+h zjAVLH%J3DnN&6;3a0})z*pa1?g~IAL)uWS}CGF`OkI3#1p%28IMK(&jOE$%z4| zvfnj%gk3uMh6*uWqPFcAhHNLiav5n7{DNM1CVxB)MEt`oWN3c99`wB8@0#2)5ruOu z@ZaiV#)C+y(rxc%fO-@sGI&rUJtO^Iinw_(tN;cheQHi}rJRuhuRNWZnymNY$zCZe zZ5#^tWE?)sB`5*@M!&A@0@^bjVVLrOfz%L`HZyrfkOXXjaG{-HLV&#)Bpr zCA{B4@XTJG-swHvONJgaoLmihIo`N4d3$<5qA1)FZLh8#(gSUa@^u^z;bJzGn;EF~ z_7w(##h~5US#Ez#hPl{bDMnU#NIS;A7N;*4Tm&`s&wMZ(37B0xZzh0EvPb0yVvFLGB<15^`)SzxcokG7%HCVIzN6E2nKs9y`KZxO=#ns zp1&#dSj+tQ>CswEL<5!}##YYA#7ll9zyg$07>sdVa(gDPAZo;O>iXH?)nO!raBG1U zmGZ+c@QW|2@}kjP>7~^-5PQ*i{mxO(St(YQ6p5k_D|olEhqCc0mMcNO51Z%0^x0ww zy}&~nH|XfqWOd6%huD&=e~+?N6T0tG6j=Ln&<{0+WntM!T+7L@&`+r*H+ir&Oj%}Q zXH1290}Ine6HIVc*~pO@nNmlU?;Wmbvfv2p!XR^af+R~rf(<|rip}y64)vw{3z*+S z6pw_gkMQH^fDc!lkYAwgZnI*v%%UhRZiNIa?#)Tr`Elr*r_nY9f(D54_?B)KPXZY0 znJ$R~lpe}S7l5Vfl1&#y^R4DLR+^P{`ybGnZtIsXW^A^`_c%Ym$3>G;MDtkP*5?qN za6scZIyB9|yYg&cMa$vk=Q(ttU)U)0DDebZ&0yG7Q6P#d(7}9&nI|d*T%0#Ns16}cyQUY5XFQBCC`)UA1-7j z<0)j-#BVxn?`jz&m!cecjs4;#u2-G%Y#w`YTi^9+y?_a8$(91j~-Fp|}v_Fiy>pW6Mo2zPIT#uFnwJa#y8= zWt*ajbhn$*ziT(XYu9mTr>?Au6zYi-y3ZflznjyaubI~GFilPDpBdE8Z<+zu!T9fq z0F#KHhrpJn0wWq#V8bb+U^z1e&lqXeqzkowddsQ6y2*KeZHIhwGVrq20sZ#yRARUz z{O}O&3ybQF+I#Y7?{>`q-N<`vm&JBk6mnhDDxij*BlQU@Q_nL}cBXg`pdbs=WJ;DM zwOc}znP(YWt+!_A=zdn$TUz)Rys!*>-)nMKl@2kqgLBm`yHK_mZq_D+rpC2Xp?8f? zS=kI*RyL*eH%6vaK-Dz2)+0Ug-0Ax+cWBrC`!-uTNfGEk-92t}nw|XYc~)VGWG(z{{47nUEHj zd_>`;sg4$#^9lH+N`}SkJX&kFbIvsst5QT^>@^g#V#HpTH58}f=m2W#=QHk2^xgU0 zKTKnG7v^1fpd?FSXmLIR=rxWIIW%JX%9zXht+Z|>i0r|)0U31m4ODX>B;WH{Vy&SV zeb1M=)zQ*88=}W+4a4(r1X-31P+=f+6P*d>>?pPo&u}aB0MxzjZ9(f>}FCnG8r5u;%uoz`o0RU)@GMHCVp49F0NIcmF}qhzkwTf&m!%~HOGRd={Mqw3bWJ@ z)vGx!xxl}Fj@c{-@8m|gBVIba7zD?i6EL!CH2(^2bqIDgI&?eBWwIS0#21#Top%0h zkK%YU)sa7y={scEz@qrDFYr>$N@wzvnZft&%#%7w<_UQ9I!sNKZIzb?ZYl5U1 zk}f*VkVP=$1w8@!=t;xE%8gxmqS*B+)$d(+y6WZ_VbLOHY2fQ?#Hm2 zWP&`mM|KbF(G2d$h3-Hl5V&Yo3o^@Y48zwA2*C~2X=ONLXS$a#cJ&GGSdQ-~&Uv1Tyh<$}W`$c9yHZ$}BZkh6gW^ufHRhb3pO0kW42gKUTT6tO@x#qYcX)W*69Iy1sBwcC`|Po zapjG8BGz3@D1Y=c3rO@xeoCW5`Y(wI|KV3eak7@cL_iB>VlUj8w~q}_T(It6iUO-+ zgHiE_#@0S+U9RA{PpPsvZ?T!F+1g!1$bc zWRF=fuH(T(3bZT|%^^8S`T_IDn^-E8N|-V@9HUxk#4r>_SaD88 zU!eTHNbi>_HM!hgJ}5giUV(fx%dmOVR@lDjeBi{sK0Pj< z3r~KSG?bQ8Pki_qL1LNT$IyshRH7g7Lb7gKr-bTMt+I0Ss~o0Tl?IF< zIYKClZa;>j7wr(GR7QMeDM}?59Y~Amf=Y||>|`{`6afV?wG1XcIA^AG%6{#XPQI?@ zY^IoJaXtuMp%#h29<)Se@n>K%N4)~3UVz>7I7LG|Zs!mMyh;^9Tc=syw59YY;G!ua zPq~`RFEP;vu(?L&mu`V6oT?F=eIe1PT&*Mk!uUtCnq@LSW-(a!t3k6mz*01|d0p92 z6$>i70<(YAx+&tnNZxc1?ypN)j8*J|ZT#ge6A;NAH+(ev_QOBdcHJ|UcYAFF(6ipZ zdv{^;!Q!H}?`6cVcKYdoR>TLj?C#dObS$d89GS5Dx2iMDx`NffQ55+gG&~oK$OA;JqH>3zzqrrmq!$H;591e97oU?KkvuQIzY=qV zS!t$Mrq=^x|KVa zU0NI^&kX0gSANhY6z?QBw(QL_Fz+e5$J6*D7u}nW0<)OkiaM942lJs1rx&KrLK;^; z7cR6G5HEE0UDh0q`QNlsc+sV_uNR^ZU-vV17c5Eo%fY8{r z>b@Uz^VBN3zrS={2-A+QsKK?0I{x$h4A`sB1~tS�`ck-03eoMOX|6InjE{Qb(_= zp*NS}q`3K^w`-Te1D%#9gg2kMF4C`!ns5`#Wthe$%YtyvziK_z+T=S+m(hTW3mwoW zm*_mrzY_oH^cW5D5U^X9coizJQP$XJ=`Qfz`^;c=6#Cze%`KDiyvS4RD9Qhoh+D>j zV-$6wC=@@+0*WnTArXo;ahQq^P0q`;$!FHCqXGXAbwQDlgCJ{=SxcIpJ9lY!@^@*k zH?A>_ELULM%vNAJ*sacr7e{{f12W3>15*Rl2=O^cuv#m&@w?_ln8DuHt|1Tgfx+|O z`b=X4<%PTJ)o&`}01Z}C7P`L~8_0gbCrByL*z*+e%g%pv@3Tjc0Qg#!gM62aP|+4-;h3# z+a>kiklv~6_=(b8t2mO-Yf(Y@txEk&4n>8G7&>Wyp2J(hw|}QIe{u1UVyu3?(a1I9 z+)H4w>Tq12BERhw5H@f&GDAwg9yogPNl(h^U5QWdCfS~MP)|Jqm37-=Kk%tLNwvc9 znz(&rmST0yHz+Dj!!V);7_wyjoVAwZ_~J%5~_X=NtlmsLfh&Z@sn6Nn1A zS$5fw%!XCCaS_Q+TwHF(@79x8X6CRsXT+SA9CCeJO1P9o$*(C2W5S5#PO&q9!Pw}) zCCK7{EjhkUKQw+6mMmY4CxCs`^a9fuv$%U#=AAk6F_<07W-sR9z7VxW~*-a-yY&uYa zwrENBh}KYCr_fTKxhlMvk0qQ*?n7-b=GrWI)9}?5jIwneM)t*$q%D5(*_Lv*;-VRu(_lSXtnhbHYJ6YDT5G+yiR&s3m9GJW}; z>W-9ujIWP)zHlP+p2|@^mWARHbj=akP6ywicY$8lo?A&|-)bTj zbcS0->dU)YZA+inl)Og;-HcXMTEHi~8&x=wzUu`J+zATHeSf3#=HOtX^Usi`=#(>^ zu(s%w6l+ZL&0q0y>ol(l=-bV|5pU_kN`v6x75joI!M7`1lBR@WWxQqg;kN_qljM4% zZhiW@D#@CbZyD#Md>AF?-Ic{F-oTC=*cLy)9l0~6GHK?T%gM4iREzFPBAnJ#;)hBi z8f_}1{x|y1uCFZ4V_hM2EQ^_k5slV;XU$_<0a7@j$n(tMJ)IM=@T5ZbuKFn@pE4m<6X0xn$DPW z_0L(rwr%OaX}G_rW#!L^2jK#gmZ>HoP41Mvd`J47wKgoPX>{Sc8;nSJ=W?E zFfISwEHneHNf5(UnrlpQ?t)rds+IW~t0DOojKQwlMgB)TgtfQUgs)#T2Ftk(ax>E` z<%+m$ZLB_*+yR6(Kk#9;Zf`Y1?amg)T3aeaNQ~xNZ(?*F!rsg@|2mH*@!^mU`tKd>3D9>JB-8GrTo4R=?!7La#!E>}I0FrC3Uhx|%!z3f7;A7Pdy0s? zKkI(1_I-q9?wdKRRT``cRqUb0)xNa*sfpeFRC9RWIMGJHc-~NmW4PIj#|rtDckiYU zr5q2anBd?mmTCD{Hr&6_C7T~1FEC3dv**`3w+)2RM)YTD+t0bL-sXN%(OCUn77235TOeS31^_6fzS_ zq)IP?I5rL^iU`}&e%HvJA3p9chlgJvgjmZhaK<)9|NHprTl(+N3yy{9|MB>Xor{b6 z|2+Q6-i)E+v>Cp7qkiS-X)c$S=^+z(nrN);Tr#HYqQJAp>4N;{ncVIRSBD^uXVGnumWPO|k& zYwW3~Uwaoi@zzhx@DE#>yJHb(g++Y9U%H_hz z5Wv>StP1cs5bR?9(caeQMtm%V{KUMeMu!=B>;v8QJggSz;i24$?hd$>CzBMbL2DDj zV2R&nxCXN>XN3@veZgl zWZ1|uhU{>dO*PWJtxHr#bNw3j#_#Jez@ANbBzTD;>9wUotyGR&5qmsNzJR1ltlw>l zPb%1b@=HS9o16C_)w_aIS|wBj<9+;y+vagsB3%@=w0&EjQsLE@mhkCan%3CY@&lK;{cSu&X;8OCrQ5VYWdWxA@@!;Kv;EVh+{v=R zU|XEB^`w>zfxDQh&&e^IFY=GVB&D-HkbCfadQOO;t94^A%bVK4n(V5TJHlrx6U54UUX-xfJ^Z1znq`-5~eur2eeJ5P3%Tbf=6IkP`72~R>T zye%`&RV*T=m7l1SoU@cyayin`4%oJmfEFjzH*%?T)N5X) z)bDqPf{fi>5)>9s3x+zXTkE3qza-Q7>|qDusjt&EKCTUui;FFhqH0k4g13C<+1trm zGwxN`U&)cgY4#Hy;-%!J!nC4hiqSSYA?tqGEQh2(%W~1-_op+HVKELcT#O!ixvHtr zNkJR9Z+p`^>c;2b(%z!NFgM4bugaI^9Ms32iuefaa28wMA2tCyAlr$Z;`#04;8+Vy0=ZkM_{TrB7!u%= z9VtrUZe+6)R|3vv+bU$}A=@hqRq`Xa4bo&$&ZMeG_43EE+y3TjaxA3O`nZUck+=Ma z4W>B@b;|C*KeO{L3q6-~Y9uBN%7cYzEf`O3d9h*k8bn_wE+zmNf0B8)kfv5TmNEV5v*g;oEc7B^l%zx!^VCa* z6c4s73w7AeN~IPl48#gdql04pjbLEP6qY?m;(`^p@*iLg(^lS^MlldHi2H~jeq?p~ zCh}U|&nhUyDMf(;T|^j#>*%xsJ^x!ad^FZXQl%^rh4ySlBIoEXn6FLaVDu2d>>nRC zqOS@&b|haq{jE{+Xrep0yvaAP{strDH?D5{cQQGTSvZU;Q68sFJL}kJz3YLW9>$k{*-IY=FaC~VcIj7WY^@Oi+C*Q57bU7adlakOo zr)fU3hp_asVYRCLRN7mY^4RtjYbVP{G8F0UBkPeNtRoh-z<<2WK zJb3oB8nG;YtB!Y7RTNii9+lhC7svp|>nlhJR(TRoR<|ur(#M&+;_)Kr!yO)ftyt=_(F>M8(*1N+>mA zsfw0U^B^yla>X2FSg0Gx#LPP>lTkX#vJ=!7nYv~lU8P3SNDk{9`N#Mt$OBlWLaoWj z>%GbLz1RROWSc+!r`+yre1nbu1^!3b1Yo(~?qn#532k90IhYlgHn~Rg780?t$q1@$7nHD_Ze{3cR9+ zze3s2!g_#K(%*l#f2Wl)QX>u#H>)CG8q0 zhE$5<)?gX8Y9vt`DU`&Cr;99EmBa<7i*T60;igeH>Xo$q$6oB4J?S@llW+Fs;N$@m zfwP7ZNI&&&D-@X*XF*}0oUuj3wAZ=jJG$*cA_s9zB3UOmOw;J6?3%gySC0^mqgk{5 z1KjfB2@3%8p8bu9+n~FK<4EWx7zF@xbU< z5|qyRQmp`MYn@CH)uv`cTPlyUPi-BAx;lj;zp57{HGSBbAztK741#zP?m84^XBs8- z-8g+W^h04@hCp;O!=l)9X18z&y2g@SephcJFpF~PK=L_={#j9uieeJ`-m>qUfU3l zvWfi<`ue~xR8cCN%pS*3oE-gah!B0CA~A5tFPtR3pf_#wUO59vlAandv!`@h*D%V} ziRtJgdM=S#aC>d&^2rYHoXy&+nFZUs2ZR~Yk|=u98v1@e1|Sy6O1g#CmSHj#=NY>upS+G+_Kszi`ij3yAC@F5YFnvC!dq5nO z6Pq6qc_gdo$6MBD=Xf)JOvbuVkfSSRcf{_Otj2-1fX}~3NXnL|Ff}_B!t|fvlb95be z%S#wR=_)lnCsa(P8eNP&t5mrI>z|Cox^5{kBN@wA?$T7~x+t8zHJ*%KV^KtAARsmt zNP|i%pyRWu_|wg2(#XDV=Oy1GfhEIis^3cy?KQgH@MHh3?gu$z%|7pZf44Wb;aXcm zF!ODQt!Y%p-a4*w#9*2d-B6MRQ;A9>bFqeHu~K!DQaOjA3_A{aUpRB}uc01Fl)5#% zpr?h0bl5z~B7`UyGz5v*RW7>V@Jfk6Hc4m_j0J5N6lZHgpkS@rZ$@Su<@!2eawSVa ziG#OwN=DmG*P$dM){>%VX3F1D)T1UqX)MF`t;q+<>L_Y+69hJY&{V6TG7p^5Q3C`d z51IHzR*7hCN*#_T!yd(-GUSFx-Q6Q;9$A!S#R^^B=-u1YC9!JHXfgd@Wk4L~qcXP> z%F}$gegw&v*A8rSkLyv6Q=pxPe3hUr}Lr5=E{ zNiu>QhSz$H#Vc9~3c26dMg1ttEP;&?O|-ycD^ z0|r)sVdpUjI$)>-->~hRm9?OWJdivfDDo)g+vm`^HF*E?Ikefe_-~&(8t|6<_BqGz zKHtkVNO9{ui1EKJmTD>!^-$97Abdaw-#bz|oeU%5z~_q!rV1%TnxB~B zD5d|*7v;SssRcCAu-_M=Dt}m$uB+bnM^Bn+mV!qu#F*!xI1YPkM9D~NmyMcpIT zx!Rb79AkJ9jg7f7wU(4N@OUhwRCGBWa%Hp;81(3*#D4bJ*K+t88KdFrZccDTTuaqa zF@{@f{8+`hk&Rl1^+C1vik{`_Wfa+m=ni}HLIR^7>d0n8UGemwU?u5rB z71@993R?~Y$U-?q+Y59dcUz)aie_9X=R)HMaUX^vi70~it5PBU1?gDu19vpD04ZpP zoGC}5d%3?J_=ReH3^YI(euv{pKFoE~GpG#n9%<9D$MG?(gh6bMa5Jft;%JVT(W?wo zYaTiYHBFs=W0os@+O>(Iu>GT&oDnd8Wi@CoM|$PjTyaw(rX(sa?b>c6EzfW6;PDih z2w*0vJXc3keSsV8SC*CcaO2)N(oA-%(e(y_&2Zp}r}RJ>{Gpg2ziM276OM*Xnf|-0 zv*)To*4;U!>=wlB!9o2}I-J&6Z4FAO%0I0;<4UAK;AP1Q7tZ$y{K%?2?1?pcwPIpB zR+P8)9DR)%+{`%r?mOF@xQYuj>7I5MH=A%5@0fBY4<#HWprdf)+KLeIuv!$KkU1{27cz)|5hFKk49NdDX?`qf=^|AARDD{OC#t-Z=~+ zhB*v-);T$QK4e-(Z=%9Q=c2+!>!QLzL!!b1=c4(eJNYCggP~yWHTSb27%JaxI4i^r zNgO3Y3Jd-#3uzq0WibeR#>`5njRz{Pmf_nCZ|+r4W*=3gn5*R>QE|UZt$Z*>H2N+X zo5>kjj_DcMY7QJ3+jr5)g`*zYT|1O=dxPyKzhr$VEHy5vk&)fSeM;wvafI{O2e#tb z$`l*%V=hqs3^-HXy}!hk4^E0<-K|CcY#lrnM1C#|Pf9^d+E-sbm%(Uh6cXsVo)tCA zPthz3?_dDk8ggmnqkRqa&G`s-&*I^oZtd%mW91G-%pgE8b70FGoecs=f@fs8m^swv zjhcr7etd(fO+-}NnFBV_2115_todzHZb{L&;g#d`>k0xpVM$PgSx|6mxp9)@5ZGj0 zJu8Y$I|LT{)<43D{ZO(($9Luj4{r-x)@dsOmyL*BK^MLtm^OLhfrMfVX5Ku)yL_8%3 zAX@@#6l^$WI?)^kK~oVM25Od%Z*>^SygSCH-sos{B6nZzKEJ?Cr_va5gp=U*W{dds z=B6O6(U=e8I97TuiEd1EX}EA#ls1iC9HTdE$ z@89KDu*eq8#FPL&23ol|Y5Y|&aP>!Fl5`PPuvnLZlo)TYn1!O$0dH_Uaq#MDZSd-c zWE5#7)7yz%p@N!iJ_>?i#G8>43=rZpDO#!IJF+h@i4^gnnGpE+BnuAs$`Dc44+<4~ zz5(QJ`6kP?&^U^}Up-2O{Mx<2c4Jw#wDCnhPVOe%J5-%)R!n_)Mi4^yu>3P2?=cYT z>)~i~RdX>F{i(B({dREocAM&Vaww>nr>2>^@xupRH`Ps;oSC@#1Rvn@I}pQ$()4O* z8()g=qQ@uqjl0-)?SpSiN9oLSOcHVMW>}xfKL0Iq!J|W2F1_HBF#M}B4u?lb>fPz( z^tSs}Ss~;9mP=>-f6S$`uyAtzAG!2wjrB1CZltcO((8vlw}U_<*pOg>_v~{7!GGXJ zKX9>Fn9`p@2VL4^nrXF@DM(Mt9ti2iD?|;v<8J%?K<^?|eGgCQ8(!`oZogk_J+3Qi zl#fXqd@p8wIldwWeq3LSA1)*Jdc7PcG$iKPgUoup?ccuK-rPPFlX@TMiDIzy1`|9# z4j&4BvG`s@e2B~(R8hoAe0{z_vqE#?V?;rtkei8=2@p6$4^mjhiD;ln4@QNaz;jqw z-DBdjbNon%z`Y^>t`KDYp|tNQVKY=->pdDEIwzO=U#fl$In-$55cl4DeyqEtvyg=L&y%z2D zCil;K;67M_6|5-s~kj8(nH7E+e=bMNKE{!c36-`y)PXgz5J84@$ zz2E~zY`swLNg#VG-NZFWAcL!MpQTql{VBvTKZ#=@g+kU=dQb=%-^o8#+Aq0dqAl@> zl0tO8H<#9Io6^M^^TJ?5)zkK{63)%TFY@opN(m=&$BZbc~GC zzg04fZ1eI)%tG>5mOxV9s_3{x*reuSlX|qEnN3lYp$r^V1K1<6McdIg?mCEJv6Soq z0s=JL`7HGS(E_(DY~=t8X2H3$5w=E;n4oHOLz@W!%W@J-#m-Fd-!-HmFJg7Jqbxa2kk zR}CpTj_4mqxN{i2>0RR$_hGCbK*0V^`GvrY>+em_lan7TkNZ3N#DG_UN}|jxj+v{t zT`o7AY_sj8=rYf|6Sq6&&P%+e z1HB}F#qF`rc_{lH&Mpf0zB#mY>iT#~><74idD%bMucRm0)_|uy)uwLy&4HsFZXbR4 zrnWp?k!U$^*!$RQ`cc8oMeBgW_VUQ#rBd}xb~fYgtb@^}P)JB&b+8pg$Uce?=A@qV8B+5;LuPV{+0^In!SD+Gx zF)4V2cK21MAWkyXt|3tP{J{PE)=j^veA_{GPMmOCRI?ck2j8`Dwe4iDUD~5)Vf;Z! z-xXl7?c!>JsCWR-eb33s&CJ?r~Anc~l0g(`n+lKA#0a({r-;!|Akc&dst70gpsrRCD* zBMYZq3#q8;LmmO7kzL!p;AiH4bshie;;WE(DN31X!J+pZ9;Bu-txI~ba(}RxPI2vh zH*%+@4_Hux(N#5rJfuPScR5+<85rCXN$G;I$;0yu$4pve3Ffm!x@FU23#LZaBN-$# zO3sS{Dy2r3dvgJGvJG-`-}rV};Ckg3pjlt*8W4s|LJ`)#lM}}rj~U~S2|5lw_b}ju zaPo*Kx2kc(Rwl*t88l$7kP>Fo2H^Dpd4@r8$lL(Q(lnXw-B6sPU8N1!{2(`bVwmRC zYXgT3;In~#!w!5%AZFkMbAYvZ_8S3t_uGe4xUT>UtyE1wRIfSzbg=4}bJdr9wh%5t>{!CW{8&L|W0Pfq+)5c|8uF5JrSG(P<)!8qeEIyzm(r^Tl;_jiB; zP_n`{u!tW{#h|CY-scfzK-V4@B|D%3&jh7OX(rj!#b8qm0)zkLBRhy2+pEc@%Lvx| z{sgTnN}$EWjRnJer2Yq~_Yfx##V}f&f-RRNW2K=GPxe50O6-~e)2R^!F26KsWKp5* z9|lvbIDw|yt(20l)+-R!ofO7~D zHEjSqhQXocqrd$YV@Y#vE<^uQ%t~g=@F6B|^)a19ZpGHo`0w1WI^n;e9S1Xv=vHuY zG;XvoMhfMJO6-3~?_35aU606`TGttb9?zn;=+s+K&p2$>5lSqBpqA(xM$5J|-ks=M z(=IcdwRM&kf0DLe>YgoTCpOh@hHJR!ak(3pHYa}n&mSM&JrTL(>#dOuPNpe+ZVA61sNopzFKnc(hX7-^vHYVBv2QXG2cH{{iJEd6kTjiEIRFo;`D)^w8>y-u0+~=ZQ{wKjpiAY`9t`) zn3@4I*@;KE&axQwdo2HlV&xh~UGv%5=+dLGd{48ku}I3tzaJF6e58uE5ruQ2qvwQB z6fy$WRnQa;zwKIN4sP9X;zs)Y#B!i1ZnwT0D2kfDVSET9@5vTHm{l4QqgI`Z?JTela3Y1ub}3M6-qS5 zZ(mBrtsC&q08x%ni@myO<`n@uQ!76$pD5O;cdNf&EKuWC0zRuSqe^HfY00|7Vnuv8JYa@4$m zQtN*m29h>|3vqr(mP8Un);Tt2#YGv%=+T)nY;vq`3D_#4-SoPFH!AXepARYxX1Rsqq@6l?gj}U zXG42s`AhzO(lkv(^$gEsWGs#6b6s(r#?}F~pGT+DkE|0&f^ZE-_gqF-v?EzdL!N{2 z4vEuNj;ERkc~`3k z1;wozH}DRq@j}1k5x%ly#FEcsUVYDxNB6(oHr*Y0H+njP)?EU>+!JM_XF7aVeVkto zv-jT*3;?OQSKaB$zRj+++hJl5__tf}yh8V*o2RR!yu;HrAUi+LM%d@>8XSqT?{3}{ z`K{qyP_p1#!Hb3)w}R6jg;gXyA>gec)$<`TsNJ*cA#;>T7luF1MlJFwDD>%HUWc00!efoCYq%;Eq&s+jw(m%^DfFM*0^0-v zwf`t=Er*a9q){&)|M||K!v~@&XHhSk*8L|p0kQQcRnGFnwIz7WZ3i2trQ@0RY|4X($1hH)m+HIQr8tyF|LTcYiQm zeNYmTYk@jnZ1s7Wj-=e!I$3veB_dcZmnj`so;d3}!a4$;k*K5`IsXbp-HAqtU}Adf z{F(575+&48J5*&d;jh~az%Si;xmbldnkshH)!xRXP;0X2HvhAFVWCw)4}>P?cqs!x zJUFQu&KewIkbG&CvXVlbkPMF@P!}M^u#E5@NYuJ67xO&N0|`k}x?jW)WBvID{H6St zg8=RnSb{RUxO>?lomDaX_h@)l)AP|$@iKK*v3|PKL@!kZAa}!x%#g6i%InC;$NDIX ziAAH3-t4R$vU4qk*ptv?RR1sPbf+B|-HxQpo0^ znKnd~n3|-BzY?PXvF0mUGE0tA&W^D(3JF?)rxD`i$?;0``-&zsgpO=|s2fc{Nyo=u z<_+fMy|jJ;)0Bu&sRio3hJySu~U z?z%XOFR-|~yE_c7i!AQW;_kY*I}Fa9_k0oe#)&vL;{3>ds&cZkx~IB2Gpnim8(Ac;LB0Vy$z)qibwR!vg{zjNgvhR*wwm6I}D}OA32z1ly$*HlvrS7$x zD+MD;<8oP?|0}0JSBDstho%O#JO-Z+Ol*;RW`K-;6%Nl;D zF5^o(*uNkNN9q&K93nf!=@V}FBZtiMxM$MM&##`jDj%8KOuk`@9Gy5`jhUjbh!9JD zn!eS4pq>r0{GaSGC;R`UJ?7`-`rqyG6lf_7OI}C6x;nlY@J1OOb%PiMpw>LzS4#6d_CP=e?2@G?3;aENS4g5bTUM|_lbVJ9*-(F`KkI+9lxMQ zk+MJKm7F*h#mL)3Dx5)LqF@yvDe}x7*Uzj*PQ>=F_>D*#S|Np@LL&ZzG#9yOK+g!G z5A`#l{0&*Xk!3R!mX(X@V?Sgmjo?MP8p#HFEBkJrA#87-p_xnRchgRQAAoGUC?a6U zm(^K=0=uETMWW)o!eC+%r#r%VlNPi4M-ten#ibmeoz2=|iizj9Vly?ZdVxPh^RYaR zyp;U9hiF{3;?MODo-ClH-YjoOL3x3UTS&JNSh=WT`k?gf+rvV|2I)KK@u40dE*W@Q zuIBd&g4Qt!C&tqD1ECKgTNm}*Pc}W}7#@lE|D;8_kqpXrXc@a$blp1(WVUEW9f5Ba z>@{TsAsb}{GLQE(Z4R%47W_X`x2}%W7MyvMdR4T~r0M^^eQ6ZPS=LWz&;C;`VD1bO z_TpYj^#Cb*JiT`WMvR@=R#jfOizb{cWNcjl$6RCyEnDBbG*NL)Ti-y!!eQPQdSx>k zNjyb!T%ZF-j^T0HN@()ZEahKar=-iqqzCvr?_%Ll0GVt=@P@(w{QcS+l z@%8tlFrxbVB+$UXzC0hrenh{Tk&L3kyZ71@`seU8+dM#Ea3N1OZ8aaq%ts(V(BFDe zQR3pF5-rYhU-CepWEYp*bGHViy+qD=BAcR8lc0_S*Sg6JaZx!&Ep4qOhruMhXCrFS zgD2^gg+@K6sw57>Lr<~zRa;@xk{$WHlhrw6xW(%6yr+tFgXKug0oQM}E5=KABMiyF z!&#TJj#h=Y+Y)!7q9>+n!i;3uBgsRLXgReH$*u*OpjO$PoGbGZA>lKC{r&a@Xl%Ug z@Bgxp@o;l{dmqsA{Aqhks+e$K=Joy#%m{FPocN)0rV?-K{W1#q_iq!>qivglDt-Tn>*VXQco|;h z(K@x?7Q%CO*TuC^{V;44={@kADaPI(^}YV#4|<^z1P!W%L94@SA@J7e0@y&x}G z3;1>jXQvu*ou5aCaNeqivaQga5@$Zs0nssoX}Mhr026-0gTvCpW%0YbzncZHZqA8u zqp($))>?Ppl=hh*P8N7HVBhc{`(sCZtsOf!)(=-H*RM@rkhWH(6Ywx3X7G!oNI5Hu zc~PJND=11R*Pn-nz3W?X6ML`ur_M{N8lu?RW(v+)a?WEkm!8%IZ{XrO5^qKGLb*kT z(md*l&6jyqh~}9J4L`d*pZMJbk5);4r?sPm(ArX({qey_E~o?-c59G_{6h+si)ggX+aNH z=HpRsn||(uagVRyko?x~1GG!h4g7U9quMlbX3A^IysEi-5dD1e+I zd?0lwO@9Qt&C7Lrahc$$lTa&z7Pi&GD>Qp8e(-9T{QgfZfn8dLZ#Q&_ zywCZzFut1Hd|fYs>{=Vtxv=3?2N6)|-%2~VhIPp;5S6B%>DzdtJV~z6kzwGJf?@Wc zldK~9GvM{P+A$9y=%lPM>cU0g4bg==(&J?;C^e&kAaUT~Y_-Lx!z6kBMx^;(bn zW>{q0?pj#oVCA|`xdf>3VJ=Eff6bn`F4!=ES6$gFJR_cG9ic2G=vwr-P4Yub`~x{4 zR~y+|wHN*dPOZWSA1l8esku6gFNow!2My?^Nzq*-{~`T5566YuWHqXC_{V_F!I9~p z@}!`9a%XIti6{$(lw_9P;ruKNK=lCHdRWOSrmb&y8hP>{3HK2sYcz78oftY9=`bOg%rG^X6C_(9KD0oY;IQP!_cC@RZ``o- zLdt$KR|z&|1AKecR=Ad`nm{ec1(PoZk{e9yVt%Z@ghDFZkR(+IC8V8kwmG2-V2PM> zI9`?A_am|3*{>V7uB1y)duvMM1=cdki^h{5vE-2+2U1;>v<$QdQkF8xnm7kiPUPIv zp(KjKjYTToBF4`H+>@L{+6De{#WyrG8gi=Qm5c2Z>w3ikC|F(W8YpSo|LG>Bcxu2; z(#fLg^15v&C?2~Y5mf(=9C7B}pY!_kuv53Kr11ZI%A)Ny0 zurmT@!TSTfvCacg1j)=GE~K1*q3LrG!7nGiCf4;FnI%`~iXQb4JSajTycMn;E0e3I z?sd?DTk(9Rv^P3SWPT@y8kozm!OKH;C}vc-zJ!k11-jx3t+hb*$W#B)bk4h;_9RS> zHxgCM(Cv%!@XSyg33#Dl7r=w;&f0~Nt#sAp z=JJdTY#E(EtW4-C)8A{XHoIQDjL2a1^f<}qZvvy$_}q1-T;vN3r@8su&lM&9a7YV` zGw&^`CTtFPhX_Rpqq-ad2Q9;1q}aIa90{$*_m56nahsrt;dzQVgPqsrO~N{4>a{JQF97Y>nCxucw7wKP^Hp(;U&GK`-0MZXct~7vqz|sL zCi)mI&hzNm&Tfc%Z8PXsNd@4DiN7Gx=!yw#3h7|U!~uk^;*Us)Ap-WYCnAIb*5mGP zt_7%DY_GCxBzY*4NH{Pdi_F3QP?Y-yf-G;Ku~D955zuoHhmajBqQQS^L1+IAfU+7V zH?)CNdO0U6)6;wSm*ceXIg60j=gV*ZPq8u7+e%Y*taA_H6yEFjAHkp(YByVPxV0`}F#m=6pomlP4cIdb z890XeU(;Ys3kV2aILK_Z8pv@C#YJ|LeeX??kEh@k&|tQ5m1bixAgECV!YzXavk~ON zE;wi~V_{Q1W5E%1sb~$tf(gC9_{?F-h^Y{P3&)XO{bdxDkAsG>j)y&`mAPR5(^m&29I0;9;_*4h5>s5QKgm$`Fbu}aq=xWAD-6= zqWVO#-_=!wjYC&2PK_6iM(`PI115Y5UXyK?kwMIf0gbz@fZ>}TP&@bKE~1c{ekvD$ z(G97OV6+pPy8J`CP-;i#-pGiAd#9O+dnXN;eLe0o%GEZ+w<-8*OZ5wSKSNFp7y;Fah`2Y zSl5y-qI31j?|4vy65Aj~+kXs@#F_s6mbE_Uh}*0A4i_}gy-ExpTrh_|XhW|HP*KVDXY^PVuz ziZ@5)4iH;y264IL`qQiG?TU(xArEyDH62EB$tYMH)v@m`=;sYOHu`h&I7S!B5XxsI z0feZwR`yJQ=2q+EV}dI1Lm39;tmpjM`?KQh=**Djv%lloKk=z(&OP2t=`?ad*GB+C zK)X`^V$^#X9JBt)Z5O^Kk^3a5xe2n=Wa=`IQ#Gf$4c5*RR$@SZN5EF78Z=)owBiRW zGOcA^wkd>LTMn_c+``r5KK}%K;`4>c+oZuS`c+>PUJ;fcx$RV;Rvc+}LkqKRjQZ;j zfIJ#iU~NC)Sr7T7L9q ztn(g+lC@Z+iWX?Z9OQMBDeXASKeh*J7ds{9{$}c22@+m8*I8DRGD;zXIRQ0S1~ZV7 z+PZQAX6)Lz@r7~Cl{h;M(QabkHSWZj;OAz@-%Y?T#VB;G1<4T84+uK?_qM=8>jzr< zOPv`EJz4D2cKqnDaL;{J!;u&z`x~#&&$82SD*|DD1GM!I&8e3dq$|2%f+W*gs$iG=nJemVwE%+Uh(brgr4!V5I(e{ZaFxJVm>V!P1`%)oWHR_8-4Qsk zyNPQ7ihc7Aq-2ogrsR~by$C0l;hN(7lXY2jO=cYB%n>pT@jXFG(F<<$hR__AIf)$t z*VpIn`ZcnGutr!ds-MCo@MBhcS<$o@@nXEsO#rzxh@hu zc-)$>N4*%GEC(G@TM9a6XvYGMGYpPLuz9W?a`0vpT7qin4@E0Dw;$Rxpp6Mk=ozoe z)Q!9*+!Ce$q{J3|0ldUkJK)rjX^Wp~z)$?Q9B}84I%8D5pRcM3{j65wYOgIHv(Bi@rfB8?a$16xk71 z^GKQIAAJ>4VX7ZJWjSu!g+6^HS4+z!$KSDR_wKO zkYYK(oypLfO{xIPl=|=ciElbZaF`EEY(}I9lj|`5H`~w zSh`R#pAu)vSQkIEF2UXhD!)vlBMj2pFvlXv%S~9i=BEPBY00-Ac{>_Xc~4R?ZNyRQ zv#mpvB@BKRgz`j3iH%3`oGe;bZ(}6vH~3vdP{uC)MdY*%4R0n-A7tS^f#gL%3H%v| zPDTz*L?b&)ZL}-Y=;6VgWFsAfLZSiol-jK+ThUnFgYEI}ylD^cF)`|*k#y~>n;2D{-Njh2panh*79lJa zVVo=5OcAb9WIlKYNM*AwMkiaIo=u_uDtkQV!y3Ozq50sMJF>lSTKLRLq$<*-I$tsH zT{;5l2g!qMnj7(Qv?#f1P#cKctJFyO)Ll(#AY;Msk-NZ)G3}x*fR>XtKRhn6zeK%Pr zT2e+It@kZIXu+p>Rc?CprRwaXqwErZ>ALsR=q03HV+orE7Foexo*J_GvOt zb;XVr5J#Xp44;OQ)oG}AZj0@sxy|7rvC*%=tUp&>SdLTso~EnUEFVpTd?OW)CNu_0 zT%i~h^u*Znz6E*L!byy<4^)fT!l27UMPg$vMOEiv(K_bn?~=1rOTtHBXcB>ssdU_2 zJ&)9{)zT5aUFlo!8)R7ss**%Vs>)d?DMvie?b`%)vAnRt1{kiQrBKvIfFzQ&gy+j~ z5Akf_ZhbR$v9z0_$FoO!4?d`J#28*MS&b%|^@Z=xAI&6f=G@*Ei_A|UlYqG2&QKtDrOg8hSO2C|F|E46k8@&X>7RrWHBAi) z?z%eh_x(!BHr16gCqONTjR?S<(l`2T7Kt5uJ|}&PQrv5 zfnCmV)X-kJ>*d6bEi-Da;)Fe==^|{wm-Zv4tz7*IkX3miXr|&ccT<6?VyAMGy^dRX zW=NX9&il0A736vW&vMW$B1G&Ryh62u{Htj>qFhqNiTvvE-{~TzVTFO8=Rp20cU=DN zoy~7l6$2HgJXB;Bkn}mpT=2p&Cef;NfvgXxO=@pFfk!AEXuu9=7Vzt{;q}Hsxc{0G z;!NIr^=vS#WjO-Tp$-*S;rsbu&KT?CKZ%Xb;26r<$A44p>90-zwSa&9>f5V5f5Q*| z#c?UaGooILP9FZt<4GgfxmVH}Yq`_xCqfnOPs^!f5+Lyju8u7;J13v4WZO6p!FC>% z)Noolq=QSC#onBb3Ds`V0-c496FEsoaE$m*qyC)3Q8X*|lBXs1UhN3lm*lL1>cQbr zi&r_+(^c%QcI%RMKA~oBQeoB_R?jb?m579XYaL*Tb>QhDzM)4njo+`(mY-e48A$8^ z-qLPPzDN>buFJfBt-Pa0Qf>15Pj-Qj-usP!dI>`hBD=R?&PxxDv7e33Gp)G2v`N)n zxx^U_Ntz)OFFp(<9YMApxBdj?&~}@hF^o)o*}9Twy265eFxqPhpF3cMnh6pZap`r!49i1*38wNqUq&$7@foZ8q z*j%&zUWK*HNBJ1WRtkE>c*3oddyDaK4IfDaN$>#lbOau7TZx04%es5{?vP0S|N7;|I zsjuL@A|3&!H3i(nRn%wl*@oPL&yBR#r)TX*0^+?CVWDU0SyH7(yL;Q5A)1$O7mYVd z%!fA^q$=)UoF#=lL27d#t_SYmh(|6xWlaq2(!ACMV>1p}+>fiITfb2$#vOP1PYvS3@Ecv^) zII4Nf(DL~zMGMcjky*#B6l5sf3`rk#`uJyhI?hME0 z$cOc6T>O#tDNjQ4sTv1@bMH7r{Q&!o?8iACoSJ@v<>_3QeXOwpeqIX&Ts$Nyn&Y$B7Th}++{zc zzTotyq?>9;`c3^R`Bl_PM z4;tL(d6_8M4hYHz)~(-3Z1ZZ|1nj)x&h>xUZvY-=d6a85c<$`|+LZ*BdpAm~^Lo^_ zmoYcF%)1AbLb}_Z`G^q2=0T zAHhQ`B04$~OcH(b2f+Enx*otzk7pp@M%d~X{DR`%Hw_Ar;L;M^2zll7Tb)zeL50h} zm9qAY=Ll0e23Vv=skiH&qpBN{jNz}_siXbSlebG);$fzz^age$#Q#1|Fd4xO)6!ej zU-v@mB6)o<_f73(>_9LzN%kZ>`KwN~F8h+^y^3?M7=kwId{it#G*6+VwI7A91M~}0 zqyDNLQ}lk{BK%eRUQ=-h)w40IC37_zm7qlr4^L)M}v?pv6tXwgpw9)h&N!NH4_Kg50ACPk`}y)NAVALJ%nIT@cf+uCO2mSf2?(*i(x- zLNpn*WJHU4^dGii$$hJWi|++TE$V4yE$TeT2l*$n+T%~qV@&HC^5o@-WX0XJsbeVf zeq@%iz)BIaD4A95s)EiB$~uQqY3or}Qqpz#+lE@K{{R4jjsF2qt+E#D+M(3bmT`Dl zJ9?!>-Pf9N*vEigq&aO*5(G_Yd*=TG|J7Rl7jtR%=7>}g$ljDjKpR|&V*Qh`w4XEu z9RZWgjvWlziWlatPbe}7OEGhHTT4C&wanyXQA_?G){(1hr#x~XPkb2jmW+Z9eGaO+ zit8DJrBA3K&ZSXlqTSzwN?)e9GP6+MoH0U-UroGe9MIeNA_HaWT|A(MH7e0hoV`Mz z>QzLz(g^S%@sG_lDuWDEQz3T>XJ1yeY)xnu|Mh7DUjpMwJ%2Kl7WYTGYP0c*Jf+X) z1%ornn4J0Avy`es9RHL2MUN)5cGybMSf2dzU3jY0vs(RYBy}gQ zM1<{dMMY^|fmM;#nk&31MA~6OMa(loDjWh_)|1X8a1l-nQMQN&~u0()Uu&C?MwKq->g8KQ0&RTcttvJHcfY-dm= zvuOEQAXk1>ZEruW((|JRhO{kQ3p}^_;5gcXX#&AV5bihlKJH!k!~_b|#9|68v^H`4 z*;omZg*=L4{}qh~fnIaEdMILeoMOyio3(M!1Ep{ET9(i?psC?Eo!h{I3cM+R*!Heh z75>;f1YRtX9hl;nVlBsbMNQ<-FsN{FZhFBYX33DhhUl_HjhnAx{m z_!1MaF|ps$?5GE>0&M@?8zTnNZ;HF9-d#mxh5N@7OXh_oSQNa1YH*#9U)a-759T!E z6P-DOByE+sA?bydcJuZ-Q6nJ85Txxc!t}VM2k+3POp6JCLFB`*eF9|gXvt8VvqgIpG-7H{Ks{>`0fI@{AJ8EokNsS3sO<*O5hMGkEaK8vs}z7l!0NUnS=;rSRd6b0@ajrKU>{46Tk`wpli| z*CJHzl8xxjSs^BGW6b4QdbKl*16=CVfSzHwXZzzKcl%}xi~Pn>l2ER?9m70n;Py|| z1Dm~HYXtG(B8XoPYu({0@e1yT3Ql!Bvl%)r{QRTT9XhY?(>jt4JlAVi!g zHaOGmr@ZjAEmB_Iifd;3XPI>C``?$nGfw-f7bVrK{KuC(URPgj{Sg{)G2q~m4)Ez| z7(Kwf(mN@V2u&f&o!sdkVmhh-GIg=9$OZdL;PUNd^VK7n?Y0q4Km<86H&2<|vP zk3~NQ@9CSgQ=fBW9H)<1p{&;Jd zxqN>@bKIf%_j!rNvO_X(xj`k=vvq#B!L-@Cb$)xPd(?{Q>jT$`@UlU5@RRn0n21<6KlrW{g(*Qi%>Z^GUS5 zoS;F25Vt;ih_}t~-KsTo#LIH@pXq$}%ZC`2^m1v&*KfH0Df%diDOM)2Np}xZP0+4U zab_Gbw_{u$ZNq+8-Huksqb5mqYBBS&Z3-sc&~Fgp(N`N-1F7+Esy23=Q!xVRdaaD{ zpBq*?#uJ&9X3y`?E!fkJ9bMM0NpNO7Y3Rnz5U|0~-S{@RvmJd{ITx)yt<97Wr+s75 z-Mm-9+3qC!J{SE+?>Ovf?=bv|*BVT+Vc=ZJxvV5;p8j8Z-1_J$Mm3-vhBR<91kMF6 zouS=w_FoglZR$qpvyY=^X1GO;*L+AP61`Tm@YG2L7PApfCp1y~`1>>DMvRqjEHUmf zf@t&)SY_Th#!e>Cdle;KIf`UGPOW*y;;mB9az1b{OofGx&1g&=D$D#P-z3XKuNR$8 zJ()@<2x?<+?X{AFs(gO;S20OS5kKncy3JJ5*EyLp_IKjbUKh>Pf8!!(h^(OFsmjWy zwpkf^oplX&wKnsMB~(ec%x=?M+hnQyupYXbwU)a4L76@(O=&Ai=&U(L(t(7-Op>ij znw{@w`=7XY!ev~Wrk;nCXu9kZSFYCWTL&63T3)2qn|D@R= zJRF8f$2Zd%CeWAO3kWKfbx(RS*q z^;*WUae=MZ(2>i8WVZgrgT)p1k%)x|P`**yppt4YA*yHcYt=@Z%;u_8M2CSYu7Isn z$m}xDBCd@O8NcDQP9<$4?KQDof8ZDKRKcO}%I(jYUXhpG(b1igeaffx0kqkI=JrL- z)O|_M=S9OjB&d$?nyD4JP3It4m!=%(W8lG#BE^ZvS|kz6q{S0nmEi% zOm@l<)>(J>GAF5GPPH1=#j;{!6rXJ^2@yaNBH=~#P&v<6rJzWTqNbQP8Z~c}IBFPO zd^n|3uyC_QfOuXG)bHf;8mqZQlZ3l(NAoKnU@aZuSAY19D6D6mRSTF$%$Y64JB#g{ z_a+UIP!z_E8j%?%*4_ z2WcKEdtx>>Ls4SL;dSQc0FlLuE2^+?lpLmjCzn?LM?p zp^s2MVosD9gmnE%bUtN)Rp1?Bet2BKC%xg+uunLaKI&bU@=H$VVG?%iS zW__Gv1EprI{zkJ|zQEofofnH~E+?Op>LQ~ZgVTXHW1-4l*NLR27Z;QANwjY@m{t4b zTT?vvbdZ}?+6R#Wtm*K~JuHojgj~h#hq-75hdGmxg?gkL3P#{<5nq6V4!S*Qb%P65 zA6$0xZ1MsZhKes5&Xg4Q+x1%KxKX_Xf980=?)u&gF$Y)=;p5o)Q>X9%w#QWobh6GY7N`J*sP^K2A zerN!UKoW%o;0J9*fdrBYOR3hodd(I#a4^j{8!R^FabkmMvR@MzxXkW&0g-~r1oXkJ#oDoyxB^3WtDvV9wjM2JDZl-V#hHJ6K!B1typ znaa|Tf$KlLnBb*9js=+U7+cH|ke;8^3-i-TGN~RZ*67pf*cVR@tm0MLSTTJSttvNutn|50MzY1R$)h? zEaitK+29W-O@W)zYo|Q>(GECannJOK0z_Nr6Tkc<@sf$*2G3T}!Yu>`5*bc)8jNXv zX?xQT4>qZAWHVvxg6k!frMbyPmT-N+6=Q{8PTp&xvm}}BCYh4$(#LJlzb-zgk)no@ zuSKyP{NcJ~aiCh+P7jfl*6`Bvx#U!O1z(axZ^A%|vi`h?>7ak*2{y%#g|@`XaA5l@ z&GuZc=%-tun55gOR5q)aU1mozhj3nD3OkIaQo@Ew8?^9QI-}K=!Kmm&GS4MohDlCazVDbACYRIN$cK)xaH?1OeLLDQ#%I!VF~^W; zL5by+@!SL*sKnxj_hE|@jbgo2TrICKS6ZrY^1keYgsFxVo??v!Ig^?|&fq>EixZ;1 z7_dx(oAxNPdSF|(eK3zRL8Egyt+r=svtxAGd-D}gEBam6snL~+nJwZ%{c^}*B4cC1 zIDR=zDogJruP~!A@Vh=VKLSt%m*`(yG+@Z zV|F$9ZQbGeAfcnUdn@H&vyjw3PWjqxvyog5|8PzR2l$q^!Xl*D5&5HFaK||;S*2*) z^;VUT_*PkXhPzTdCKa+C5_KjOnv}Wel?W3Nf@HSYS+Uh4jM-V!I8(;Ty@$IrNylD# z%)VD8>>22?vo6WhUiE=^d3OtQWmJE_g}Cv1G&XcqNT5WM?`C&uY#$VDsJ-i5VGXwg z;@Qas23FB6%~G?r*-3__@LJ6jqOKFbcZkSFvXwRh6NKy`dvsNHV;*6A8*=+(M0z2O znKGJaqD!``jRO;kCNi2PTiK20v-$X1n`qL<*lzoR_NYYCnV-p^St?B3Sam6;48f#d z|MbPX`GHf;%?GO%O+&XT-Xms5CE-Noj9`uD?0>^zT}@2rvY)Y|_?NUIH9&Y*>LM<3 z_YV1@-cDg$g?ms;CYT61E!Rsik?1+%7g-oeY3_sl8OFP@!4thds;=VIBzYj0LK);z z06{KAA;_gD1i2L6AeTbD0doZ8QtW*$B(ffgLft*CP#QCM9J~?uI~)7I-%WRwv1i67 z2&GHBhE6XhS^*XW4$Q&8#g4)UAS^uTw8U88z~C(6=&Hrsqa@-=0eBx`9nmfr7ERB5 z_xLbQx7t837KON5P8(C28C~{tE67JZk@)6`JNKH8^nW43&4y$PQHR`FS4?&A&GueO zR;Ux&9G%d_+@qtZD_t~sndA*}v`(`2!IdN&Iamnwyb!3XKL?Q(6K~*b)!U%89797! z&~YH{;n|V*%V_kFLTYF6ALN_}m}helZDCj!d4gMQjr-~VD`?)%lltWn7L`5nN zkZM&tsh*#@=_&DWBRYxffgGMClWYd2^kc0V0T%^rX1dKE4j`daw(+xcO7zvNV^M3U!>39~ebMNFD z#nc3V0cPqkMe|Ap+y10=szFI_CP*oWEW=5`8Y9o|cIw%Wx$X9yh`n;E5eq;NQi`SV_f|w)L znKOpZx8Ocn{J=r$LAyr6H0&oOz%Vk^}-3 z^T(#aXJ(B#Q>0_Yrtg)N247|QTz)m_Q5B65ILE4MST&-$rj|f~L2F7h?sZl~X~}R5 zWOdPHEf`rv&v3z5^i|C9L0ci|?3<6>Slsun6{>i$uxU6sxXZD8fl0~s`Z&}Xs0 z0tvz}Rkx(EtntKA+49iF*)B}*d4MMPPEeNkPI#7Cr@GEz_)g*=(gKlfAih&T7(N_k z7=8?`2|k>VB|e<0B|iKiun~zH0|wG0>nc7g@zd`|)|DfZB*B_qnIK6UoFIKW;xu z@xRmlRDSBW-2@Te^nHrG=*)F>Z|*VesegWf#hZw(TdQBafb^FoY0ce9LAqbm*|c9h zh}b$bEZ=ije(JPdhRlWGw$)J_GQFAT|7$d&R5IXkFF~E4Np$mAW5XC`GEgY$w_rV54?ZI{sIpEg3{=$tF^5223{%k?i-g0g$ zFt-!jRB4=G(RDj!!5gzk3^Zc>xt54dd?vX0tubOS zGk3}tO-2u=>Ezusy}ipe;WfNEPPzNfH?On zM)f1UO^(6bM-`3P0CtxbKg^o2Uzjz}n^1QBJpIr29q=@$#pY8IbC9*(4_Y?#uMZdK z0=Qf7egg$1&b=)b3|@ql5jvLS))y2~>r?!o>^Roer)?xDta~?9&dLM|HG; zqy4uGYoyHUC6m#K-)2G?mLF7$!wkb?StGLAJ?GxflF&l>6jE4T|EokG$d7G__#z}I z-IP@E61>yEwzY8o=y`Rs1(imF^D1NvEB?)dXKi03(**oU`Ud>Xp)iO5gF;*hp}lY% z+j*8}K*B_ryv%e1$1SOI*nv>70IFaPVyd;q>_*&y{JH80s*B(i>9cMIn5Jc+AtpH|+fMm;8vOM^=Y((6*JA;W#c?A9VmZ>?RT0-#!PZf9RWz zXioic@a9CD{b)o3c_`sD_*f>m_7FIZfLIyRoNp5$$oLibEsjlb^~1$}K~rQW-1dZ( z{`MYnOK=;ig-)yW>I;1%>AFsizFO_%Cio;6d@DVOG%4KLKNkd=G>!r;;+-JeHzOgm zxaL6NRVXODN(Y5kC!p|(aB7ack7kvM-WA!8z)%(e+BjsrpRqY_w|k!0>DLJ_RH!W+ zgbX)4ISfODiRQl8WEDE|fT$0uJ#CfFWzblL^-@Jd-S2>p+v$%weYaiEJ$cnkWQ%4< zUnP;eLs+~_+h}cNEHj>cniwpv>2&mYlQHl#FJ58V2pSq(z>eR86bsK*P`u2YztaIq z{SAU+ivDj?71;tquwu24o-|V#_jb~lf?w^}bR17L_tx&*QR{C5@!7d$w*^_P`PVV_ z+8w@dcQN<)AR}~c!t3Z*K(uIl5JLW<9-92(8pc_;7q)&SC)&Hq(qZ_dY(takgQ0e19j{%uoa zHml&uBy$5v98rO^FG z-htM$&J}bKz9NGI2!i|6lq4d9#>w%P_|X2?O2yo$05aE6$-JDeV?6GUw{cY`5n)H; zSzjt*#BaNL-mshRP=6SAvoI{x?QAEg-Q)7b<^IwO8JWrr*(@o(cb@k4h?(A?5@e4q zQA^jLK}@tCrAy8`7w0dBES8l{$%Oq*t~c>LygO?(<-T8ys+eSQt3{|SOo(13xR?aD z+bM#S!J9TAO=G^DLP{e03$dl9#QYmwhA%mN@)e^5)rMTOMe;19H_HndefniOFNI^wU3Ux7 z%M{bUn8zciu`DLFXMS}LWtxuDtjTHAU>FmdfsMImQ@G{ZNz^>6henLVNoM`5vT4iu zmM*jsDoc>!IFWEsAjC3;E-{Zb&BhjMQB;(1Jt;HMR!D2+O#R&?`d#PFxG9R7nC)95 zW*MFPh@WIxUb06zMbg1tV26T;ZnS02hdfVuvZ$-4?5=*UJXF}YYuwVt5XvPMMBp|Y zok=S)y{dSMuxdguU4`@i!`NE@<!D4Bxym>uk5{h(g4?*O z!^tmqHo$TSc@J#_?04?EM?nt1-8ebPbdIbTi+A~Sl8ji6o~c8+Oh1F6OTQglQZ^@* zGSM0IF?VY-#2p#0Y9tp&iyBGl2-Q`u^Is`)9F{TJ=}*kzkjI0*nD!JDgH{1dkx=b% zu$&d-a^uSGCOGlb1g!pZV(GYKC0Qe)EIMLWLF~y9es+^&z{*HktPkYn?Q*cg$N%z{ z15mOQsN%CZ(*3B-mOzT@0%9Q*lktTIg_2%lB5(73h41-7J?y%gjLpEIwKa3Cr|{ zTHFH9!0QwS6ZnggIn0oM-y$uG!hKr84ag~gZUj1QNFGI~y3(EmyA|FxAye*<>McZR z*vOkl)JD$dQedoZ%d@x?u_yJcyoY>U*;JU$^e0kz^@<{3N18sERK2wjjXa3oLq3Wy zl7no6VL=rg4OUo6STj=PH4~=#EY$pc=F_e^n3m9|Fcugx8>%WH8E7ZOU4N=i!g0f3 z7t>0?4LMF2<1V{>^kpAhpT9QV@#xL6kCt2}bR|nYMc`$QR{fKHsO0X4ckC3rD@uat- zqOMMXq_-l9huH6YBDJBxmBMFRKUNf+433aI+j_F|I1z={9&bMLSKx_E=TaVyM__E` zX7Rfz&Dqw6-^!Bu9A?sPpHOyEn;{tPkRls6jpq+4(6!|+i4;r-%v z9@awJONV@6tV9s_z)r=v6pbIlxCMyOghEpEias;;IF?&OJi zFij#^EKSxqI!tKI2?jTYePiF6Gw|8T5Wu3))r3NE)$**r3ru;7Q2%M|9;pO}n#^N8 zOx|MCDd5IbLo_Ih{p>j39cU<8OZ-Vq5QVxz5}sO#t3M~47s(@Q+UkADN7RjvDJ!T2 zW!Mddk#G!p!akLZ5ky#pNW<5b4G(;g)$NNR|l@3 zl8m*W{V#kOq@qoWVK8HPhQMN15LoQu%poxVi`~VP^T2q~9%39dQ55zHDHz5nuFnN4 zP=D3!t)|~b91+3Oz20<1HPWB%@s0Phbq&iw3z~4N3!2wM#NJ6~;fJCwX`;7e>&Vl| zF`MU*FW_~CNYlw~f?|sGZz%jDan-d;lhuqiLyw&LGjV>a&ryEs&q*$+)r{3n%lU~V z^gi4(;pUq|?H#A6ktV6@WYb&qH)f*-9_9TEApcY>r_*oa#rYZ}oR6 z>+UDC9Y8KT(yD7uYjq8mbJL`ge?4j}0wiPjp|tm@uX#MLA@{I|2h!?98Xt@U*oO=gTCVDU9L0ZvGJ5Fk|#}{QvJ1Fn4ChVxxR$j zyjHda#1e-A>t`464F+~Hwsy`@@^B;@=#i%nLxY+gi?Ow*lhH-o{rAyD(w^L+lc?<% zzKIB7@Q%EO%Y?j!*GxPMbm;t36_SQ2sRfF%X;UxN4_K51R56s(hiIM^ujFDcZFl5Q zO=TaA)wOdUD7uE520eEvEuy!3x~}y8u1#Hyr)IUUzeKFGKK^dpb|*aTd0PENWG}sz zV)jlej(NO$(Zx-8(FnVN#oXM8_(>0Iv(TPT;dK`GlkM%SO#23r-Bv)kVIP9swmsiM zp3-K)t>Ay6KNq$$(nTde5FKUJQEeqvTD=IVpUuCLZ;iLXK?GRE2$EE<^=eR>x~w-veu-}wQf*&>+P|q#5jG!sOly$84Juf1439$Ceo4T z@%j6B1dlgZL`K0RA0!36kuf~=4HWE8M&myf7s%o_wHx+vZ5Q0?DFzlMezLD?C5yOP z$|sEwfme+L*j0_xL+TavLb_C)Lq-&3!1G84V2st*FiKJA=xoW)wFTzT_#2BbPm9Ex z$ZmtUfw?pokz)jev}AYmDU+U`hup&P*YY(a$H)!xlHC(rX0@JCa`0*3xJJz{Y3BAn z7PK&#)mV1TF1;muF*)q;;+T!c)7r(whjTOJZUHC!P*GHH5Hf60iI$^7SYLUK>7s?{ z&jk@Vbe~Cqvu=YHP&iigreCh#GC_hBw1VBSzLhPXO3~F!ovAs~td@B&G=2Z}!F3@G z(0CI5nMS!vd$QJLh#N=>NW0}yNv^-OppCTH+}5>Gux zm|!2$5F|Ml;E#F&{H_}fWC;Tb`nWLJJEDYd{Of3u8bF?+7nK{bmzRh5GFcfaO*I z9L@IGJ`;J$aiu|3o810(VnDP}>@ELeZ>^LPqD;cm@5y4%n7A0f2v_+=mL%A3%Yq&= zxjI9{J3nYkw(1pYb^w{V+v%gh$NQA}Rk5CxHs`MeG)G)9;*yj{w`Mx2vtKP!v>6{( zCx_(s-?r?s&yy&Lfu;Vmv10rn7>Wz@8gZl-+n1#tXb&qvslkZ)+jJ9)4c5H&ZLYtu zV(P?^7Vqd(nWjvs`F7gKS>cDc>67uIw=6Vj%&%COXfg0|R$4Z>j%b6=9TvZJMME;V zFQ;;eXoIG1jNpUv3b!Ob@s+VWW_&pCAU8t+`jMSFoTuba2=Do(!POtJlkiE1s627# z;S3lKl>sXvZY#^Ex93i}ud3@toe@ZB!z$*C%uDf@(3MYgHGEL3l5U18-@0WQ8?TR>#4dwG z1i1~I0|u_lHwlQvaR@CH9}&m)PC7OQ`9OBgw6meL6MK#qpLgh@GnwsyD?2)qjJKC- z4;QP{H`sX;8mrU|V&{hflfn^~h)lhobF$gXUkf=?=j3-?i{C#u7!<6xO{k%$E*@EQL~mh!J;YkZRq-Rpdc^{(W}BnMzSZZ&2}r+Op1T5B3C+7zUp5}akAu^V8H zWTPPD8oUz^ib5m&X1;tDJ7Fy-vVx9K{Sjehb1V_@^$*c$6nJRZ!LZW6EiKN0TY+y|YMDNB#8KVBhO`op8(X5u_AO}B@c;JVGI{AWK5Yl%goJ zEcnzr`ar&wS7jlB;@4@gwl0E%0k==X^}#O|LL7vi&_wZ!0SrX(EP~hxx?hAG{2|QR zeJ!AO_Z5U{-k^q?as%~V-kVFL9^G=e$@{ziH9>b3tgY!w z!jZ%ne!>yUIB?gjuyNip(I~+AlE1jVz7TsF#P_eW{ZMoUS86jRYvO6}5PBpp zL9*N+M6c<)>3}H)agelgpp6D2OLim5w4!%#f|Z{{7Wx^OdlVX~qWn5cy$RN51Liyw z=bOMG9u_hz>_@1tbWPcwYb%iPx`J2fcz#2s?F%n@+$FLqUaEv{(%=I=&n0f&&L?ed za=%+|t~@^q;t(btTRTGH_l$1=F|;4hytP2{KF9=2O;#UZp%#$F;7#wLnVvxno8*w& z;BI7*i1wF)x!8WB1itoh8o&-0juS%eDvy4U3cVk38sx4B$+E!{Jvjb|MA<+ZJ|m?a zJ`*&CYd zjG`Cv?_{f*2~UGT{7u2%eQd<96W24}eJHx8hsXs}Kc_pD?-}{i%|&=+t#FM!&KVea zP`P2TN~^P{yH@b@zp5#5?$=kCGo7f*4{O(1Tg;aj-?Iy+o)=&N%7j)CtdpN`g<6cr z&Vo2NiZZN&*5R!8b@Jduy2*!=9$Ui_z7Mf~C+pM`mHNvsnri;@GF2p_fz(fDSex*( zB=B>v0|+7It;wGOA!HUHgj5EEkcWT}G7Atwk^n-;Hb4k@iJaenfC{j`(Kuim!tD>` z>hZIsJqlQ#uHz<7Z*}A749(s0SVL#xCh!b!d6G}XEaN5+v$ZK8LidK_1Q+m@iU0V@ z(xbSt<~xk-%vqQWmfk}*h~}T9OIPUhWvQxD?w1DdGpDJ?e%G$G8PCAXWJ4C*Nl%=b zyeHE}Bap5q>&zM^NfW3cG24u1uCjqSN+pv;Z88)eR&F*Fm+Awlf5$5Vase_L9*&yZ zxe1rN-S)ixvsWfwSwmo~`a#jCf z_EKRb)1t1NbY58iw6?ga4dFN;#O#*aPo=HE`Ke5N^3&Mq zqnK$8H7UY`ztRfFO9#z$U1n%m5OXtc6Lp<_eRf&RXS~5#9revv{L8Tq z>a=SiH9TjH2IEb686y>fL@$l}Tvqkhf&#pvsWn3;a9DF~PYzug`7bR}WbLpHwVzI8 zEuL+$4nezaTUCn9|0>>)OX>c+!#0W5_$LN!mGDoO9c{6zXCO66$J-@;B+?4#oDW4@ zz_-_cXHi<(V}DTv=FIvto`xfM?C=u!y$c-KEjxtk&7f& zuT|W;fho@2cbj;6T125>EVN$j3_c+;2*WKi480jdAfz}H`5mcwlUu&;%dJaCu)+C( zHP!tS7RMAwe-=*3cp$qppR4nJRtaeJu)l|E(zRS}3P5rTGT$rd8S90!M1PorO7_f8NK-C?UJy z?*`KXqP+ElR^YcZZ~A#E>;(_|Mi?3HE@~fB*_wy0Ule^PlF^^;bgdUsc91n?pWhtA z)(F}-2(O~c+vj>(vw~k#cnNrYaK|+cD92}t4dBO936Ou1FZ=iP+&Xb@E6%)q7aVE+ z@?QJ`A`p~*;P+2D^LZs(eRu@M{HxisO7~aXSUZ3J*H{6#=Y-yPQm$o4s-YX}Y+)6R ze8L0oYdQ^uM_yoyWeA~VDArzHM~>px(7(7;VbJTa5f#FMNHno6v>EkpT(kX}GL`zT zTrZ6{Q}K>*I)9j+(~I_|k2|w2TSTO}6d!dVD&Rf(HgRPCdi8C#i}wLgO-a8IQce{! z@&GnKl@1nw4dAep!=jGi1N|?f#^Z9M?m2~t`Df@lP!3ory=9jWE@HS zmS-Nn8JKEza7;chjns&zi#r9({aw3LYZ{E&6e0aYI<)~~K_*F)2~S=OL#9Fgc-zLQ z!R>EcXMfg;$IT>jzn8pS?R-|I_djYUw2bwI&m$K^B5%rnB$7HAa!;w;f8#q=`-Bx4 zn#s&hm^3rp7mXQnMUtNuJ0MG&_C49U8j)=7%lm?X%i&1l0_**&bKhp8kcfUKTdXpl zdqE1-aEl%iiIO>}5%nW|s*SnrQ5z1)_)FX|5NyT_lk5$vUv zneV$da$BxLV{aj^ywi;yXKJ4IbT6-sFtZESZ_=748H+z(bF>o%q>6LG9gh5RWHcK$ z@tU9PZZw>^cz{%DYQG#r2)qFiPJ(fPe5oO}n(R-`ru`;@3m)5kYE#?4h=n;zFje!!4FSdW9&Em z#1u%CU?8LK(k@%&=|*Wkv@-Tm-tT)WdD!C&PPckuXO^cH3F@*1LO7gnNqphYk?j(cwY@MW71-K zIZIr{XvhD#Q+iXB&n+J$&?^j9F zFavx#_evtQH^KvaVoWx!S9e0cK7}r-dJQ?oKUE{Y-=`P9ZaBv8p5Ttsx(@jCXq|mK zVqZjly~i@_e!nlN9R0X4olSt=IJ^H)g${#%rX8frKGTp?Y*S-tK2>fi z*iGNcQ#Fml@1<3(nEC!ZSDGE*(|6EGs9ma+^FYe`)%ITaTB|NrASOohG#Z(d6~pJu z9Tn$p=fH;jczROZUad84&#^Hk_hi?IS5R|y`Imvl`q8XN*E1ehw4mmCwT_!$Kux=? zU~lf5{k*<<2sjB%zY>eN=~Sfl@qjN{KjB{kY{4Zt-M_n*Io`w$xzZ5LoZCK!(gNJ6ZbVjd64R zjRgS?wkzrrCg_%w-n4w(r;Q6?_2|#A<-q%6n^O$`LwkP=&$TPFjvIGKWUKRW=Qvl^ zckbAo(U^X%oasRSn$!pEa_#U?Q*-@X@q??OQJ%Tj_ru8)_cH|V)}HFB%3vmo*S2~A z_3mkUT+2dT_JVB9;wh785?Sn=7s8?l7?5_ zT(=0P@nrLFudXQ9D8%dU!b62Z^Y&yUyTs zXnSF|q}?&7l)7xnb>1d%to?1Wnd1iqGA}Yc=p^K#G34_c;CUOOLrZ@$p2Wv|+s0}^ zmH1?klWr=U#)-TjVCm*>)S3V5o*U4T=?49}cJR%r&Sm7UGTrn?!13$cNXgEMqfBHu zutl%j`}AvN=mq0M3YY42*O$>0{|Pc1k$ZDXi~eg+(T#e%dOgMx;vg-tc1huH(m$TP z4Qw3?T>Omj9$tjxKNk1KQ?y*&MbH)ok9XaA?uvQ5tSRo>z1x_3Z&lwqwen=1AtLt? zKhM__a-j|R@Q<_1=VDYD$nkamaJG}$(reU%Eaq5N34aFo=p>4I0*;TUx0#iSo)2EK3HlY}E* zUuQra!$WC-eI}(XI9!|EyqF-`)ZVy0t7<_@P4`6ClI!jZ{8Q(cW45G0X8Tz#99Mpe zgY?zkYGk|_QANC}iFTGWN!fB=T?Nyl%>I#`l&dI|Nj(ly;w(ZHT#{D)?XW5XGhpS1 zwfN;GN2Vj@)wP6D;`L8a&b9&Wm=z>P3hHE;{U+^|3R6%`dh5dKbgO3?T`}3O&M{e+ zMRFjeyon8^Ci$Bwi9PVcXcvfE92kh(LOK%fm|nVq%db_vY@@;!d;{bhXJD0FIFkeC*#HpX<1o`E|sC`si=RSTG7~gd+F8xqJn_8;G3> zE{^6@?F_=D)+jS*%{r06xjenE8E};`DBlr_WPjSue8Q@_Q<3?EPK-Tn5J6`qVGyLX z6;{NnQTK&NV4VUT^VtNV?u`Foa!P_&%KQS^=JkEm=4WS-(L!j-^IsQ2l7P!fl(TY^B7@s_LHd1jxF%PbF$AVaB1 zzEfeQm%^Y2$zTe((F*4~wPMw6GQ1k({T1J}Qaq~uQJPgUUp_Bz zAQ>GlrO|2>!~f?Z*`0q^uz^w0r?wfXi&V)(s2>HZD^*OaC<%^T0Jr~KlzJX{D9Thx zU(})Bz)!c|6@UX$MX8*D{O5Xie)-?X+m=85x;ukU#Ev{D2x zE42()XJ(_*-Yy&e76iA&e6gKMmGKxtT`|jr`U8YgDYAKO?7*fCa;7jb zHECFAmBdp$pv%Uo(XEbiNUSO6m*oCVW+4|1;&Bz7=NJ&h{R)}K7=MLBLRoC}BP&uA`3DxO+!`6}`cs_L!1Lw&^1?h8hgAba zMvxn}$)$Zh{DL<%n(-JhS)mEp&j`)oIJQ4ep>|R@s*0_qLk3E20R}@Ml3}PpmYVl; zVl-$|-|_3X+To6uz{oBT$*bhaC^t1Kq$ITJ?%TeHlyRl%ltGnFArGG+#k>c{ENacE!18kC!Sc(1MZ`vaGytYzNGHLhzq;?^VbP%BOMcml` zrA&q=D9VgdDbWp@Ch1H_yx#Suwuo7lI5EMFk|qgXOnpXLjSQlIMmn;>jJzTVv!Fnb zvw-GFM2&1MB1()`ImMThCh1&Ey#B8bRawWFR`N~7-WZq~?FwnGn0h^$`iP9$WzpEM zQl7$^Qq%b5l!Q1iCX)bT^46!@LUa=wH7#&=h=p|h9|65CqtfKG%5`nf%0Z+{$wy=~ zmvmJ;*`|~9inm3ECsE4aHE&|nDokMz@z=My$>G=DFkp&Fi27O& zeApgEB<49%12&rpz#OBJNUT`&?;AXY3RGhu;$uO8$4YC@%63N#?aH`_85uv(i76E(BTk3djf=i4_-d3m_EzB<&ZXaYgds%9euM2%85=&>K)KdK9LH z@};E6jpXZRY#V;S%h=XKE;mYzeENj!KC1%LWmPr~`C}og;zssD4CuqT#PgN$6gDb8 zPkYe>rA3usJ#}%vb*b-d!EgI@*H>fdmB2h&Wd7Qr~W`Axf^evRvL;cWIzmzr^Vq>s9sD#86$ zb<)8mNK4k(uH&)hC+KbP|EtWe3`21AWng<-P?eeB3%coT^z<{^5ue9!_|a9Hv%aW7 z9DbZF{));?>j$yp5Ykgg#A%voxNo7DqHOKcdF0O0c59IdzXumXgH}BLaW$qDb{heN z9c7x;FXOxV*k;4#=?M_W%3gh}M~9v0YPbQ-8`!sIq{7W;8zupC1BcLxF5k^*)9BqI?b37%rk!xAMXMO4fZJy_L> z$qFbQkAeV*>lL?CiIURgUF$cR6-7;lXc#k4b~ zSo8s{_^_i_3PNc!MrPPWbJ z{oCLR3@?HY5A;#qTrkCYfD|V?hO2=#jUV6}@E1s8uY<^7D?PNNv9)E_TwexeFDL!Zn;<#0GkU1~LyX`=S!2X|3Anfz zD*?u&wmotS$VR$-b3(lS%%g_DA#Fa%t*0v0?8UqZ5b(yB@y1Wb>EeHI3~doCsIxrd zTKLg_zU-xeh?~*?ceFYQlFQ5OWvW0i!dJ&rLM_93l#ZQdlsK6!3K<$6gO9)StVv3= zJE$XYtTZEA|1Y^aPhE0SYRAWX0#jVvkh04qGk8?_FY)Fq7$aM&g>=c&rI5q7+?T1I z49UV>hXH`xN%aVp%dN9Ix!i?Gj#9y+s2If`umGf09_*Jn88fn# z#Sy7}6|Kmsn>)^vJ-yTI)jd5jUdDstZ9PEGZ6zYcj55&~&p~XE1sndy@Zdq{a2QO4 zoGb)Mh!;K{p4x944X!np4Dl&BW~I@8m4C<|SmG_ch?;@7hm2}3$wl_oeJpjNyx8}+!fAS$64tnF@Qoe)f%R_>6S6YS=x5D^M$&@9u zz+`*s@-orO>;~a8vo-+7*3(xp4$+jjRlb6KX?@7**<%A;Al3wP_4zq$SQRAny#kUv zRnS8;Ee>kX%xN}W?$}808!k_e}irK)wp;Ei|R*UyiI`t$bA*_WI^+Rw{faCsN zmyuC+f}Rzk$3{5~X2@r0U6Ur5$IZ**>&k<-ZI&&riuHKAN^)NbT zg=rSleMUjg8nfP7e2>fNGBUM=2m)O|)!aO69oe$22>gF?IFM&V#^+-|Q`FTN`<*NQH1fGVf3Fy3IABp< z+0!d??Z^UEK@bDmUBNzfL2WUUudmw)-b7TP`CsvhQgv96VFYWivaDc8#(PBDm$hCd;_$pF#{Q&ZNqEl zD%W-(@9w;NF-I&a+M9Y>-~$rf4j7YQm&?w*J1&7F-%XYsS~koR@CkPgFS&h8BUwPE z>w^$WGQ`lQu_#dYt6HDg$>vCY#t3m1Tz~yN#U&zVBmiD%yvD^RquKwzzb(#=Q1{D@ zMqh-{XNdqiR<4g12_rIIm>BkYRICw?Po(xap9j4+VPec~y2*-hS$3t3$kt(F*1=%q zBtj*_oQ>B6r=rb*CnbFnX%VYB4R&W>tJ*Z%D1NU<`3uyj{_4J^!DKY5^+~?{Hmm69 zk`i)M$H`p)19x#I#FT0ebvlkB_da!HoZAVsJz(bV54c@vAjG{S7=(`lRWJ{lm9ReC zTEv1TjOdG;fe0>~#`u-7&=MXo)c1T>Kxa@)g~~Hi80)#X`OB;33q%eQe|WkQzVK-o z1M#rX2}+y|VT4YT>C4=F-P|*28w>7@42*0x!?u z_HenNV14}Eld>$W=vl{QZ2$p1l_k85-cN+JhcBYED?OuPA{S^K7qearJ zy=V1^&%l^mD{7;IYi`yHhvt~^hBRJ8AQmFr7fWzI(P8iDc6f<^WZP5GJgPnUhw02W zof4@pcG!Ja_aJmHf|7Msw73Ve5-yLrLm`)#B*A^v8AL|3_y@-lHjlwDyUsFJ@^w+t z?OxGbmgIpl8l(g=;yY4T*`1r#FT^VTk+ojFfar^5`teC={1d;15`B!Mb9s_RH*})T zj+Gz3%904B6|G|e_I=vIl|EHjh7R@}O+`X8m{pqFynA)Mucbx#j!sqBeWm?UTK7!Y zJir~MRK;ToAur*|gFc}+LE!7tC}9(V;}KmT-sm$Zr85hAmiF4s$R`*v`Vk)nr>MPw z1D7i8)y;+;lXmTEO||OL$&^YjV1N}pkr!XEYL#(ltik(O!0{zp<0S+MNq@*liC%lE zjDfjR=nN~$h8RJIy}18@x9tZm9BF^+yh&MtYLs0}o;{C$LH}+kt4jq2tn~t(aE_%4 zrme-fKq9B>GbZfOekrP+^=@RMiMeF-ch=$L9gzsih*H>W;;ZJ9;O*?Wo zgqH4Jnpzj$cHgO?t-(sJ9C3A=Nu9i*&!2iEbcUW?hfp0IBn4Fnsavm6clW3=h)Vi9 zLf9Hpi$*(hlNfHkw5%4T$)kjAqw4#*bSE!vYFsIqwRssyJ#`O1x|%fj!lC#`$<2?u z`FtZhI7J?uC=5BTZf-ZVpW$7qiGurO#NGMvg_zcDht5-1pZ?)rD1OIm zag1lg-_;dy8GualaW(WWuW3~AM?vgq{q6f>eU|Q3R0^{KX=!IiZ&k70Dqjr6CUpRj z96BjBniHH^O6r6h+vvL)TPX2FqFqfd*!t(6JwrONE+`}WH9xP>Mh5@JJFDl}h1E$F zfl1W2rHjR2*nCNVmltMe^;1s@jcu;ed9CU$(ga2(wfTOOfJ`z>{eKaJiv zzrY(u2zhwOoEUy?*Qp7ES8bGmeAu`>$<)&^_OHk~{@Zd+e_I%dA5Ss&bkFae89rTV&jJ(q{< zyOytt1Yf@q>*ozV?C&aM(%raPyCup^sSWBaY3Cf}S`Ly%dXncdP!`ia3YfWsDq`Kr zXH%KmAzgkg`!Xwwoe4vZR8T9*(Sj?(_Q>cJLqr}YH_2kgH}j*vdjuYe9OM%uYr7Rgjgb#j}*AD@f*Be|T<36+WCz-G9Hmoto^qYVd!Z+ZSA% zUu}9}O=)#>q(4sMe0U8hvCn_CQ_ta0GmJS>IxcJ~8Np}p)x8k*o*zcB3D{k@UbkD4 zm=nFbpLKlj&hQ&5H zL0z7k(_&Ui-ka0AHcDPrwuK2kpSJB003MBvOzfWgwY0T-&K=LzuC+gwbI9aj1Oe`yq4joT{^MbTn?PS zbtLD2$D6!5IPv2oYytszuj}Fj-s#wSj?XVvQPZ`<*gUht3AEuom+DFyN^5Lt|~OPC6Samj(Kvd6Pos)`h9Xm6QSKoT5ckg zidMdZ&kLtElR`bsH8&1KG_Ty+O}{nh?-5qvpZNch8-8+|?inhWR7D)XBM?D*j=2 zpW%n&5LSeGJFN9DvQ7ry|E`p#+QTV)L%r`L=2|yr=d#B<4gU9L)rV#Vu61>GF0WEN z;K4vw13d7;(-M8BeI-8Yv0}@Ktn&h#tON0Vx3u{!K1P<(jw+~w4A#<)ivK4fG=rUB zwVXhY>O=@}&Bgu~AAUxkDUzii!VCdy!E87FM1{d?8D4^^XI zE=y@o8I)x%YiUo_|BZl$6#(^rAxkWvSOVq~(Mo1I7k}ItfgD8RJTtmF0ZrvJYA*U8 zJ~s#IRUL7nOYZkkjZKdTovPEb@PZ*tDm9lXRovdGNTQ7@=eejo)~@O*SAhqo$A_J! zxS{LNGvVu7F1uNQ;5CVd{#8)leHrrrG~A>|W{B zYJXE>uD~VmNSu84zej?X@axXmJ9vAk^+e4>C07*~p}xyI+!exG<}b7UF7f4bUd()~ zLr-2C3$*_7G{{u;)C37Os{}nfd*?Zz8F%_vdG=m?)g$puH3#+Q5tEwa`JsXyIM)>b zR^4__xDZBTPIe9&W>4US)?u!zH(~D8=VPv$H(`>yha1RE(nWGKo~klFSL%eF0|+F; zcx`UVXu#(h5O%2df*1W>u@dbUCmx`EHXtzccYyVxI$*!BxfC?97S{1rSG>RR&|<%C zg7u({OQ`m;&ahTX4k$e6TQBbuPQ>mYA8@>15^B?2hrIO83HaErpPP2lNTBA=5HVps z|98jY7o~f%T_b@5=!$z#Evp|jZ zrfx5@zziUtx8Lqj{n3&Nhl%&L=VFtZ#b2-^!xU~k)dMbn@-hov8$1K)#Xbnyd~vw% z?wbDqEtf0?ygd*Kemo5Yypsofdb~gQcrvXH=+W9dzx6+T8U#6ay*&x~zowB_f7E9k z+!$`Yzka+wE((4O##g`ayszCbT64eO)`BJ{yNYt-d){tV-Mb7QbOfYu9G$8bT?_*b zpoZ$Z1wl>j{9G4%&qs=&x0^|j^SkV~5Z88Lo{dSrGlyTNll68(^(6t?sc$-|<{!LW z=??XV7Z1+a);_u$@2{Ji?;w}W9y&q7kLMO%*L`a&iDce-yTyx>Vc!t?u3F2L)Hg?W zv-U~%vkOrr|7UJ`!8dEeoZK90#+k<(FIugc8Hr!sXq&mNJ{udkotO(BfZ?vXtJ;ru z)AdE~=npH#i?_2y!jtaKgPw-swFV!bp44iJZ5Kn3>-?boIN{Ox$xCyw-z1^=#)%Kl z;>j7~lfi|L&b6q_P2#meW9`L(>&1Z%?qY*4Nkexjul}CuoX<#Yyh{lE$HReK)06M@ zXp`fGB+q?m^Vv6saX%2UU-LriUi-LU&jAv_qJC!D%a~wKT7F|@s$vZ&y61K2cq^^N z@CNko)~0GZ?0C_L7w_O^@2Gpeo|vjXDYu8Q`qGwj5W2C~>}CYBn)6|^Byu*rzhJt| z&`-{(f6}lCW8~0r(G)gXH&H#=OsODi4f+!Cw0dmya7`+iePTD;vH)7s^8DuaL)_FO#R`POzzQcKFVFwy(uG ze{;`6asOJVbBu(7!M(!ejNk1;rSJ#<9* z;oN?Uej@5Ms}XT;;nTxXdC;=xKi9c&ojY+7?930kw`+3dzF&B0+^~I;9qQ`d^m%zY zXwwz1z8G?!KXiO)wm%!SHzW-GXs;=ppTGGbNaOIN5FbTfy{NqJ#(n<@x$R13a&{r? z&GUFu#KqXaC;Q_>=FX9#ZMyQ$OXS`5+Z+8q$W&;Z?S{11?_3JGFC=489h{=G)QDpcHrYKQ){)mNyUlm z!<|;J-hq(6mf-JvUh=5g!;1^wqO0Ji;=R`=&UewB48dzc{}XImWH&GCk8FOy=7%$B zuSmy-mBrk4pSK{YEU!v=Tb_6S@DF0)Coo2bMc~+jZn_TP_cxOG4+;mpZ_C9BCL``? zZ&e3rCk(us(lc%6_2Ld>1t&Ef*6|9OG`Nn?+5o&2M(a>n9_5u;t0}d6rX*r+*#l=| zTRRtzX>F10dHZRIu~c?((}9ZmaKfw-81ntmY`k$ldg}9(C|N03i>`ke*M}m&%aquKzUsslOcclK z8HtLfL!Bh_3+L)Z+KgR(9J1oiZshy%9EMWWmmC`%Ng6EbL>7t3;c6kZ-8^lKHk*BM z4T#vpk1(sbNNrxYQP1H%)~-S!`6rq^^CtXQMuB)>Z@=LD8^}03uM0X;j%;oNr1mK;SC+jg^z?Fj&Cc1 z*#>Js39bd}mWWkB(UeOeU&~R`I;W0Hjm^vfi!4#JPo50772Vo8Q2aT{HSqxKFBMEO z>#>B`@F#d8Gisa_<+`w!vWr@yKD6q4>|M^FzMF3%+iQ1= z(##2|a&eG7o#}L!v(cEyT2kVN&3+#UP0283@1>~FTf3I} z;1KXbGjLBUt{y}gXzb8&yZUhLp;kXW;EdPOd&%VxXzc%gFm;{*O*G%zrk4;PK!DH_ zYA8zRy(Scq5{iI@7K(J~D7}PGr3fO@J3&za5oszAnt;-kCeoX95J3^&eSZHh?}vri zC1G~<%$d3NK4*5tenVjV1`>`ftl+?vvl%DfADU|F=^MRw6I+8TyXO@xoP37_7GFeW zX59UKP~Y@$!utKco7Vq+%TA4HvRMONf>~3InE4Jm>L*Vjkgf*#xWsZzh9G#AX3o9u zCQG-|0wyfjnt|<0tEobb5JQAWW3Lj%zBfB7W>1iH3aw-0++!HkPouXCD=#!os8cgz z*q)fEF}j4a=bGZK&`Av6qj`q>7g-9NiMbQ~fObNwPiZ&r&{NR$Nm_|vA0hU2kHT8i z+jJ}2M=@5!-o?K?0a$pM@R#?VBH|u5>Q|Qkrni#~E@+(_QoEjIxm`Po{OX{#ZJT}) z2MU}@v$B=&0RDAuE6{I>hWtvq#}$XaA5yVzKeQpRAZJaO;}VM(ED?XiC06fKY4AQ6 zWpSQFrIbN^WH!583yW#|3U&SMZ}Up9H?NghAOcA?LWw~Wx!!+k5{$3^V%vJY1Rs&v zL()=Fb3MNK5w?}D#jZAP*Zlh7LAGy{L`bFZ znaVG{gTOskwpJd-wYNfl3;(E2nE84OtP`DE#iQ2)oyqQA^30vo+WPXHi@kMioQ8DF z=W0DwZAWcgPxdp?5YTVbNw~$pwG~-%G)yD zz~l9ZUhE6L5s}*?NWMlm3~ZQJjJ}$i9V%SXdVdqkmp8 z@~Sn+A6`06NGSWe!zD@Lpz29|^Wdm@*5&*J4nMV|>N#|e-x!Fef>jW};Hm-Ot*10g zC-SyS&=il^*-<*A2m}&9qQdjCk|SocwGFScLB?&U@anYWWrAtiL|!3?5tt5-lcy+i zd#G)`wUfx13$HxQ!=RVDPCcMJL2(7bd_}Rcl z=k~7^6;+pyTz=p%gLH0zY;4fjRR!e(GmjtVVoF5~$U9wH9kyy>_nz_PnlWGMC?#mY(oRFtRgp1= z9xa`y6babDBD1LpCA(?K{q=ELrMprLkE1d<^hI1Ul0Y6bC%U@ag%?>F}5(Is|eJ!^6`>-T%wYfvb{jn!t&H=5TjAK~ zbARcKmJNIU0JA8yfRT4s<$kU91#0~CSr~sapZhjAZPET~3X9>yeUrnyxiM+|7Y+q}a9Xh!;c$fB9{gc^x6>gs$-cUFhg|M|FZ!Z+w zvJ@{TWVE!J?6y76vDbR?ljsnQ;xslK;L3(JN@fCPRz$aPFA2Wt3PX}vB0#+-NsnYt z>rcUzUoWQS4HXPbZnLszcHb6x5Z$@e@{)&%~DJheD+VJ;%Wmb)f; z7PON2eNn?I?jwX<=)lQ?`mCPrQzh}nYcH!)o6eEPA3RTAXr63+=sX!$0MNrux-nT5vO77aa%wgsx5?8k08dc zKmV&x9{8hA5M$sR@P)oH1t}lvq$4fL399mo#!$vck0+?MyHD;!sZLpIPTokWZ!S zUMAy@0(-@iH9ML&?I9mIM)p}PHFhmp9ukL6Vc|AhAWIu`%3T{@g`*$9Sze3t-b}_+ zMZfT-Q$IJzocyj+rzObKTpXS3J-zqS?6>v#_jBgxJBoEYx{)`VDO-%Yc$U<;I7tsF zq;$(=C3TxY!k{auJ5UN6taXxoERLf)CK=UloQxU<{aZ8pDj~eLI|f|3?`TDNAzekV zKHhsXU8m}p4F1iDIC{(rb&pub&_yp|h_UM!B)<6VJKgX{-nKT;_Tn9je7%T>5I@0i z@s=fbj1F%o8Jm!BGiYWMOf!RWWNa*JV9FM|cy4*yu)*{!AGiv6tm4k6Y4ad`Jtl6q ztmg!K7lmoq`MnhVB3N@p>2RWy`idH8GVhheWuf~AwKvt!4}jVxZvO%{JQw|1ZC?)8rN$jR1gE&pKF zm;hOf13L}sjpUnheq;WTPRXbxt;@<^(g5ibsE7ELHb9u1jBlUcJsjG0aCmw59#6jH zeS<^V5Z?x+)kN!5QzPxKfw2gu18uPW3r8=*OK`wQm_$j9gOh zC3U2T36X!(6MmK$m(!P&b&<}P(j$XW;bOQMTFfz7Q)Bk{LS=5$OUDs0FXBwiE4D)G zP3+Wlw-n8(oIYk!+>Z^yG{VS;S;#bRQqIU1n}2~s!BaL_Z(AB6AJ3|h~4niZsbQ#fTUy(>}PDvH+Ft5xn_a77eP^U6OwR}K5R>DvZ1sDI}Dns6#gwfd#y?U=G97WQE*6m zdVA5#Hee6tqRLD*%SQm|jOfG;+$D=Uq9u#tbtj9%Y(7wvEE3%!1V3JRJgf7-V7DnE zgbWg1`>CK}OmxJbmI zyXH=%+sGZ8`9&KJjbWinz)_{7fGBj=p2lFyL`(5&yDM#FHk1%7@p?l%VHv9CGk}Gc z)>q?>nc5{3&kyR8C=uS&%J^ya7#0xBT={OlJ zOV|IS-p_~Wq)X<57$RsWeL0qflWrxm=dE;rDP2(IT*J`#kV{nGJps{$Y%RyV}zG%@T&1Ql~iOo0{L2BM$m=#qu)17G17;{Gc9?@*cpKL*$*b2dn6`rdshb(K(vY7s5P zArqPjJ<>p*F@nG!0G*9{^Jc8>=8RW*nRS9BS(1&{k5xNr?T9Ec;6dDWJfyMp&;GPD zDBXvgFheJ5G(TB)t4C$`Ios%+-<#`c!Atyjk|RKynE-8`>gwhLv>6A`CJ~@bP0Xh} zA@e&r0Bw$$LH)&equ9^2l`pQY9-A-KzYN?(&rdQWHbfInT#jP-sE=X|T#sV!v4?l` zN_A_)?!+=Wg;Cq%S!oVp)!hzaU99u;zbAMGm{SWV10Hm%po{kMb__E{CG<*!Y6jUd zUmr*h@SwrF2eBu#2eJI_2eJB_$&$HFcFWsCjh%-^J_Q{W%{H29or&)z(?5;5-`!}5 zCx^hhC{~a}$4(Q0LM|ten3=NWMsv(a)hol`ZYMZvKp!$;2ehus4ZL{mrCZB@S0_KH z(>6(0Mzg$fSffsZZA&3KYQyug&~Ni6yoHw4a;F%f)_axbmQ_9TMeTG8>2=CqjWnq^ zZQ|`%aM^w8TX?WO9lh6Z6Ygytxk&`41mHo+fCtS6y*>DTV3icG=dc;XukRiTlfF$=AgUWY&Xl6R?ByK5G zCJuyAUyPTVKqkBv%kvoO=IbjPpuOp2th<*~o$1nfwX%Yo(L*vF9YuMDrPoJWrO~ri zv9FQ@q389sjIYdR9lUs>IM2>C`j$LYjwl_V&%Q4!^YbM3D{?3H|BkxyV+tte|5|?+ zTAse9Q8eVj%RlrdtGP>AJvV~aCAw{?O>2MaeaV>edoImHkK{A&oQ9 z!cORBV2^DSNY1bQ@2kfH+r$>Z>%1BZ)D?DB+Ei)y#ofziqBMaV!m4fNCDg^%+=&~i zJpZ@-?p9X+I-{&^0~~Wp-JI87!9EG$st6DHxK<;_IQ8kOgF^Aux6bo+d`OI4FEYn2 zSa0%=QN;QRqek}CeKU!~Tk!1y#zCjgFR!Vnf8iWlYItwKl(Ci&kjEDFU!f|XMN2w| zbmvw!PG`wc@l^$o)T+Z%~d!Xnv?M*b7hy^O40>&_Yxl9?jpauzz2YqIKHtT=D&J( zsn#o#X~fvRH#E(5{fN7c6d38sx4t|-l0CcBYN4iX^Mc`lL(w!UtP*_2Ot@Y>@+!|4VW7!~3@T z05Qg$-=kS0Ej!I{%ntcLm>=>Tl%$C*U5j;wTLG(8?4PEUx|5f|1G$>vkxvJ7ndGim z2+FPKC=S7FG1-3`T&-+bwr{E2ILOClEjX15_M(H+ZWYmJlS>nfZkXwmjn^!iU#6lg z*(M{fVv`*==IVFIch}^S664bL(no>@5uFL|peulGi%3^%0d!lOjyg2OTwVUPxjOWl z(S37FbRt)meX`o}myWRnYpLKh1k|1$39 zrP+I)tL4G(sX%8~+2_(0v*!Yeg}EA6>bTa^j}4wt3Ne&Y1rHfg_YQ4RbAdByyoQx& z+v{WsDTjvv-x1w?ump@LfO&Z(^=4SZY4pT7E=uOlw={Ec&eU_P9>PAp3 zbHlbd-R7}4a0(4Zr|i8P2^vSxC1|h@`(euY(>2JF%~`L@oXT2Qyqc-C}m9>}lkmPk)ooCvhMj(rsK;`)8P zzt>^@E{agqJh!jUva7o)tVEs|(}>4l|q zzgpOdfK{SKKv{b%6FViCfTnE#6L!Lb_3ljV-d8kDahSFxLj_ zSE!5TSGZVbn*AUL_vj}!eci4?%|~dp_}!PSQ~AXbP}EPs$Xr3F-#F9W351owY4|L3 zPKLE5PQZ#k>R&R39fLvTrE#G0#dr|T5fm;_x|Bqv$r}z~tq{(|$@kt#3m-+?HRSF0 zfbPE$!6o3QH#5(do@W`nmz3%$MXy(fr|_O8W$wbla}wh5+y1DVZY&`jt8!jR#RJIW zS6?6>==q{-(RGpzDZ$K-vVU0)U>8Es`Q0>(?Sr>fq@?bhAG{%>MYX4~pgM=Sol>Z& zx{z}3I@KjLU0A7Za8+qT^qK>P7iG;MRV}6P>A-E6h#F&zsy+Dea&eq)mswW@2k zeoH&_e%q_oPzg(WbGna?P~CA@0w9Ir0VxzA{QMdqg|Y%tC?1eP%ZSJr$o2iF=^9{& zk?nWQC4{F68J&*Dks|2l$GI!QwPc8CtA#Eny9YIiCDfuZ1Fm5)2d;xL+%){LXt#h^ zFY80mDmdZ_Lw1sFKC*2q%4&J}W6s8;focdhgHH!c;T_;ZQ6LZbA!n1n%NE&L7yYu@KLe~VP8l2Ue2`eOvqis;cgG;ToXGk zAr;B08>;fToubGo0-P+S=`s6n`7MqeJJR~G%|;h70` zlcb2d`3D%`>RH}ZbtfKuVekhP$U`OXZD1QZcG0sGaP56rBW+5#fKE<1u(_06kGA$u zVa2P=j~WsvOvwvgrTfMxjM7y{I@Y2v{ja7%rH?tCt3K2KH^r7G?o|4PTTGt%n=sGy zXK}WH2dT{d|s{bo2;_VHS;$ukg|&ot<*HZlP)` zHDNo46NZz86=cfyNxInh0i4(gaN<`)gH8;R{58Od#>wRrk&PF{TW6%jo9riI!I&%b zvFNDRpH<6$-G*7}Bc9z@=q_`7@I0}O8W}U?8WHo?bvQkzTQ<2Bk8ct+ z*2H;~A6L(frKi$PR9JG>&UqlA$GB0{8I&!?u^JyB`to-2KRO&VQ7~(-Za(5)}E%`NeOeJ;zy=@KXZH#V%F^X=NWe#q>v5D3@1J^GssULT1 zP0k)Q#G}3k2}lHVY2|E9Dkz6?ldpBaBo#EN6WU7R3}jH<#tB$9-6<@ajY&`A@S7(i za1qbroxL;T8aPhPP5O<0p#1Ej%APhkmEmxwa>^B$Kbo#azo~nMZEEu4m5acwAC~WO z+%0s+^N5*tvG#^&IqvZ(Bbo+I1Ms0rqKm93?pPoS94|CyWXc4}j7Hc0!E3;R>S{1REMWr`g`F zIdLs%I&H?%XO1_kITWm+Oom`Zp&n5%;MK{J0)?!XsQwEK)OQ z;Omvw7+bx{(Yf(|vCP$&$%jsls5vG-T12=hjq&nOU-tSgD>;>ZUlFZF+x_iy7}-`* zA9qqZd~X13_JxG|4$`LRj*%xdh=q;R3CR9&uSe3a!z1~gKY3>8jtoxU<;aczw*8fa zg8Kp{8g0y}2ESxll7Ef0CbzLfs%SmJ6{+6+1Nc%UXMDn^ntJT-=Z8O-(RF3~%xJ0C zvb+T1)^p9}$lE5y{iUMS&em)bGS8E@BC15!nOzb|kmH*7D^5x0`z9pdXT_SiiSgGu z(e;d~dqs9z*RFlt5v@-3#kIZQt_lxg3-)*-^PiHqc34qBj0!n_MjqVCN4dYPEwe45 z->~ycvU}l1xf}8MO_QpjKiR(J97#vjS6FsG{p>dBc=ca9-U016PAJHei~6rnRd9df zgW!VAzUcbwtyeWly?ZNF1$kb90c?R4oOCV8YbG0_xg2fDZ35qV?#oB2{(Q7hL_njZ z^-Z6c>BJq?IF2()IhD*~K0$oYCRIT_&DJ}EF$*Tc;?2@F8=}=h`%`~olg?jt{7iEW zlK=NmS%5HnxLPT|j4|GLPRTN%(4JfyVftp=#Q4dFb4Dc@&W*+YYwV(Eu2Osfaj0Et z+^0P)l|N{v_I=2MI-Ot@ftCGjblJAVHJRO%tL5L>iJ}tQ?WUsJe^bBpl;%WJVeK3? zMgOD1g8xzB(f_E>7dOKJ+){~;M#zSCX0j^iR)O3q14Uda3tZ*ndZ`I<`>wNboNmGl z(Nd#~#ZS4IHE;EGmY2;ZDpYo-)X(iz1hNJ5v?WLJPhozhE*Jea)05UWdTJ(9b|QAC zk{{M$n1yXIT*6LRNA@&QPd?d#O=4td_K~oq*YUTfuOpZYggBO4C<|Z+7LG|w7Hp~q zuHTkit~OkZtpDso-lw{<#Xpa!5DDm`<8F1ebz$Q61Y|@97X=vC`MrEVMr^An)!rbg z2dYaS{|b7ZnY9(RcfORX?_Ux{JuxGKbcAzi^~EThd` zD7(Tt|9UXO=UPkwKm!)HJ<89k|BPj&icM5o3V3|;kUBZWP0F7`1-PR@Lf<+U(YNsV zT(g9HovkDvf5WcCj$4LZ?I5+Y3pn)D3PoZ`4pTlQ6V|^b)$0ywgZ)~R`<#hQpFpn9 z-6&lWRm8YN!H`)7>!vQebnLAjIeJVy53+V+R*(#q^3VF49?DYYR=^n#kayyva?Wkq zlfP3jX)TLJh8gNdGl(&_*3}%=%0?T z#GZ($0(J@l>=b0UH2T^)qNkDk|LoL7y^o|@dQE9FechkY06^51_#9q-a&~9r0j@rt zQRRxRig97mD^stw7kpLWer%B<IRhc~0mCR-TD@g>c_G9XS}aCG zy-jZ=9zAX{iGu_g_FnVWVK)NndJF~`wj0?}(qBJ8-+3heWj>cZ5`}OV;$`4jt%rO1)ugWSp#hbId8ls2bSW~@CgOq6-ra1xKfE4C|&ut z5P_ls;-Ar+V@jvVS_kOjKyF?3VoH9KjbGcS*PHa;h@C)=53+es+aHo8z((^ z0D0=$(M*F3K!x2vAPt~GZGZ|RwBdSO;QN`78vR9JVq2X2_yTDa?cYkPG={`i%7F9& zsOb^(Cc1{!*^qH=VLSzjz6@)uYi>@4$SKyL6Y=~%Dir-675V{G$TB#0B?q9wmKzIQ zOO5~)z5wRwufRP051>MEfC?=EDhvmx@M#e4X5M_yIOf>oSA`I#S+z-x=6KtL?dC== z(c?&5Q~nZa&=#ws+eD|J(8Q>aFwQb}R8LKR=;>41@m%qirdG4dsa1iJL8VEtGc&hi zP7h;R^;w)hGwTvK`KIziTtTz$9X~cb-2vuo$kBi>K8=zdp=6>v;FJw%uSnz_IMsl? z8@-{E8`HFNm+0s)SY~ugc4Jf0_MObY%}22#)MBA=$~m`qv^s(B8ry><=+xFZ$dj$M_#MGAdGs#tB1 zJnSF_Vft_s5OjKKvu`^RO&`P}MB^LiuQ_+ z0o&SLtlm>@_Zy=nL2Pe?shG|`0rSJcJ%lM&g1hYlhQ#Ex7yO?&O36Z=9FlY7$xyzB z#Zb9D9TTByN>Tb4&61|z6u@?!ZCB}Adhs3gJpH0J!(&r)Sp{c2VYp^f``i+;MMFb7 zCOFwKsyKOZ&A?ld#LnCE{7v}L%URd+i|LFpbDw!w`e|sonqdqJs~qYPj-gK-iGM9* z52Pb_U5!j<^Tk!bD+yWjTrN$zFUh+zANMJ^ylP;2z(j`8gRz^d=o{t07TJ2;jf2IN zavqLfdMX_jkc}pO>uH>QlM%e%Wpbhk(l8>!WJ!=E4L&AI^3479+pmR;I`dr`b7prM zSA9Q)LFv<{w@WM5cE*2I3M1Gr%l<#-shzC7i`thb1Dwa||D5NL8E_r}z~}^?QP-;0%>ebV(d#)d|gI)n=-=+dN<3aQhd#*`ZS$ zLmT~W!^NI+fb{;(d9#b0E-MCLc3b$W4!n@30VIYs1`;P3d~uX;VS)$!x$`sK>evsN z*`f-oFO!*WGM%C|@>tE42-l!6B3qTarryVV=l_COCKsaM6SesspEvsFu^DNDHtI)L zF45BcfoyMo_O>Rs`l~AW-*zZ2$SbG`WD8sg@?CE3P*;*s%J9Yc7R>j|Pk+v@_RK99 za+=5)Z?57i%yW=G2BOTXJ-`L{tQ04cc(?mS;4k6D2jGJf)I8)jFYJDFIvlJ+#dEc6 zgZgusSUocNL0mymUd_ALY;S`#m1W*O3|Ve|rwSC9LU6v^z$;yE8>q=BJp^`mc6;U( zfjW2$R2rIQ6lWC$fcj1Y%B6Q@-NOC-aN)ma=92gBK53Xs&1RE1c*zQ_c9DK(OmbDTK5z!_>)EdRq=(=+wKUrvW&R?ts{MHXx>K3dEFIeWaO8G0bhNRu1j*3--K) zNr$0pW!T_^rgzH9EMxl&O39c93u{rR!l^W|7Ni*4@R<+bmc|2~yQ zSee$f>xQfF7Q&`kQmht}?IZ$>4Q+JP5qGJ%68iM;pe0F1$)0++EQ1T?E$S1+QMaKa zZ=PNbC^bAh=&soMuX?sfp6TTK@Dt20@KKQgnF+IV!srH3`y%k9luqz-CcOqClS#ur zyehP$(DrT2-r)HvW`eHd-8)s4u{1z)A}H@Iit4);n3~F`=$L_B@I~$&q#b(7AM?JN zDh;ecfnDCog)`OJY&xmK-9DPCGMm7ynV~*4tj1itdJkE&JV8p|h~b6Q{i`RhX(D}0 z=rqjl)4h73s1tSkxAf!EN67ZPK~g9`15_i8Tef6{a%;p1&z}^77CxEOR-ObaBFw$e zAnl#2#b&1Rp+OnZ!2#tS1WMLZzfB!O@VH`0q5C#&`mK$aSpJ%FDvy~dRH#`52Xw3? zR*$AnVq&c3S@~`^D-VDV8mgv0L+MxCZw9VPfC@u^rizTA*0YP$-JX5jM1guXt&GIu zPw#mIq9#r2{^*3O6c)M<#|XRf#+p+5#ol-Ai7j=7#tl-t$DO!##PPa;5?rocU$^u1n_D<5&io6fWl2(|k0)R8!#AI_;ynCmtIwl3E zgGW;y-y(u=3FzwBSC}^MXj)oV00T>#ZSIQo_0(e?ge;34 z)F)rJXQE&(Q=z}=h<>WGXcBAfX#3Plw@3D}bD9F#wJU4UMJ^ZCWkyxmB`Np0OY8Y? z4K?BdvxMkr4)K`2=l|hg^=uWjU7q2z&}-X0wn8MWr=H<|ayo&vvdEdWWU58e&?Alt ztaG!aN~E#mYS3nKHS=cjA~YnZAj4Gt+;21XKT8P|xo`ewDFZR?RlrgircnN7J)Ekl z%u9W4AD}4_nidlpdZ2qikvH55&vayTRIp>e$@6^m%&%~M&qLFc%0{s}$`)#E{BtHb zxc0}(!V%MxsG+;}UVSz_;r~45{tAeLfna4ms%m3-T}k((Kby+8`ki8wg9DUGil%J= zeUL+U+kld%Z^nvM=yB|=;D%;t#n5ibI>MEmaK17y<>I1^&Zb8 zFL<=~e*jLtU5U2Rt{BbC>zLVmzJsBpA-#VG93JhyIe$N-+#D%V3K@4U7%>Gyb-T$E zGV}Ej|2a~TAyoHfUIJEgE+RzmW|D{s(Ep^M!I!;J%b`wX8NZW*x4fhiU$Z%1XVj5s zUclD2TuTgMpL+m2BY!usPfwd}NfImAQ?H$l8W<2=%BSwdXIpCXX5}PEW4A-!UVZM*1I*W1- zW`2EwEq*6+)=?W8>%r2Cdxp8`^UBl=Y~fmVbkbvXfSt(eKvFTEo6H%Kl2iUF?uhRV zFWv0r=hw8}`RU{fBrY5Ri3^-k%0hKAtk=$5yRLru&pHZN!_;nf{rWShtPFZ8D1-Oy=GWqdaL>P`5E*fu6f9>_B8ZnBPyrj8^2wdkK z7eyko2oM~v1%l&NbI(`U;!R$ivuSXiY(Vv->ASQJiaHVr9PGD!=&a^*&~H+9)pF{9 zK>vau6Mmh25u$2Krk~`D$-)j(-1070s88NE>TN?wq`aZ$F1*M2p0}8x;j;$#-)BmC zGiD*e=*BcKqk_xm1ZRO6RXUSNA=1QXa=e~~BA9ceMl392m;c}P31)weH}fRGnJdl# zm!u)PO1Y#M2Iu+t_YGk=G`94+GqN~WTr0--=XL%KU-V&%KKf93W8y#f3tJB11$yT2 zr-`lq$WX&y?bN1549Gsjs-JQamK#1OYskDctr7F>UpT1}H zgdu=LNNpxmS_?>o<2Ci87nT>BboxXOHcxAJKF{CJa_-+bWgCe+U>nh3?wDX3x#+pO z&mYPEfJb1b=Qt18h&2*{!yC27Px$hW3wL||w?#OK6>oTptv8Q8oc-uz5UDbq+}3oR z^V{noDXk(EqHoB@XNN(_d@Fk?+KBBzy|NvnA)Wna*olcLuL6CWQ?V(`3&x+6*$ke` z{-6KbHbmF^&gXjyyC+(cMZSv39V*-BC-+}=8xP-5cnTE8je)kh;e1cV$>bV3wuXDg zb>+-|RXl}dRGZe=TeMI3Avb#mYLCPXQI}BTXR%Cbe7YtOJCb5n080h~uG}V>@_CP+ zCjhf%Cc{1xwaF?E`z_h7zu%CK@t@x)bI#)`J1*?)xpOlv6APMf(Oq+w#kd}zaAgsb<(+#%67AcY9KX4JnwnaugL`2hrgh=R& zpOh{OUPcB4gUgc$xe9IOi8hZpXA$CEW@`<5_bPomHZ0h1xSq{43eZ$_!!xd^FQOn@I6Hdx^5#3JXe;STRnr zA@IX)bqclIp%GVhpt(Bjq%C*fg`j-q_V{ELN5B!>37DFs7|jaFU{EZ7l0f-Xq42T${NhABXvWM5(JwT+G(edK z6Ow^Ci%;VwB9xf^;3cjL#GZ$MH!!hS4#%ypC{*G0es2ePLG+~e`|DT5(Gk6hU~EpxkWMM*_&~?IY|7r z)d5IEGK3v0Pfhxlg{$by-E#y?S=6y#X=PQBU$l`NiY)6iFc>;Ngey&dZ~Xu*IJoHaU{?J_N2>z z$8y?W3EVHZvqYrK1DM_cGlszQtnpVrDy7m1b8?jq$t3KCsl zZ%G;EH+7{#pgYUR6#L~Xs!2L-IsH9;Im4h$50RMo>AcL-TkoJL1^cvIOlAZ{Ad~mi zu`PVrX%c(ND?p5765{PiQi5X4z;(Kx99}aqzYr38lE5NLgo9Lxa2mG85}am|}Y_K)Iz@6V+7z{g+N39cyW5^&}zoaGB5XE8IdZz~ya$e?|io@H=N z8AIfiL0p&0%k16U()kp|UD5sFmiC3H@tG5O!__eHT=f={1^p%M2kneEL4RcHB=#5U zUv*57CMeiCH)SC*;`FUiYq3Qo(ArcMvjz~Jfr1uztpMDkItM} z6ma=)PJ07)nH&JR(3#VRA zGb}8HIa0GXYrTZhR1YhMeq3)-YDHR!3*Agu>g+}prfxF+w?x88t5=IRLoqa69T_9T zDvior2I*_i;g2V<34zFR4=)n^F7_gR74;9E+@m$1c))x#ei476@DD!GrA4Htgn0Io z;RPwl%6J*IiMJ@RlV>)!6Tef%XnOPIy1sfZmCElbx?h=D+_9pY(Y*l98f;g_OYWay zUw2YxwirV)-x+g{cE=emW^mapK6Pyyvmvc=vQw2eTYv4Rk0o}V$70teWw?X6$$(5J zi7Oh^35q~0a$maJ7!AZCvw>Ko9%-d9@cv$W;IyLo0yg}Lz^=*D$jS9j4er?+L`qti zKrCf9^1WjVqhKK?IYW)9qvhS^tAifw6f$h!>jN+}yM^Q?gNnN``epul=G3C*>IZt3 zVB8~&9(6$Z$#6B&98u?ap50bv9UlY#pd$8dbWZ9HaXJHG@?eEL2f zRPJrKPcTe2jS6_b7W;6}0_O=cfo&x!P3;ZV(Ecqgh!X(o|4}vIqv||MVuu;XPz&*& zbhUcq0qKOF?))AVy+i8L9AJoN9XC)fhMg3 zO(FnIx@xOUS1B_AT5SZ&|GvylE7#Qsno55s#~3USb}tG}t@0Dh4`eDWT_qSP0P{~b zF#nvUA}tw!OeFyzQ>p!+MT$F@J>90+E?a4Geb6AB(@o%wU7*zL7nN-?GQ2@$Co%;I z^R1xW&`ayCWgD7&>XV4KE9ZBMJE!AvPS^FM_CwH`xDDK(yd$h&$UJjT6!SQb&)kgs zDN=o6Qz6oK!|1ZonfL}?n%MWK*)+*y!KqBU*BWdy7_L|-ac{T&RVUd&lQF|Vt1&z3 zL#KdWkFiAAqZ|3j`&zwmC~-nnGJkvEy2f{=)4m zaaa13;RF5o1^)-s&4i1sj6jRONBTym3=^uq6Lv$l7o_VxSTRRA{e2O3#4xl!RpDS8 z-N1j*{k!1jDrc_43)&B;f1VoW32UK0&Z&Bi=6>F%ST4%f3ldYqgmP1n)Pm#6d@=i1 zim#zfzrEJ4kr{1HUD6%0badYrkDI&@oQ6^;NT1Ls#NLoJe$GhBp&_BFKBA006u}e6 z-6-P`7g+UO&3^|stB;vWM1=arxCkSU%qwkFO4bsb&ZJ%gn>@H+D{%5jyc6+yd&HPV z`~1T#HlvyYKc1v)wjefqz zNc!#d(-HQ?q0WF*e~Ht85!RG`jG?4H+!`S`{rwiU%SbvJ`Wbxk+2(RrRb#^)_~fhb zuKEkr7ggkOP7fyN2~`PkPVelbVPC{D;>uL7MVeNWxpPw1JgR|p&09*6PGR;%5kRvX^BBA!;F7h+j(J0k zoZvu)FUizEO>%UEwvM6Fkgr!~me1{Q&uZ*IUWRsU{hRIM*wQvZ3(TLez@0y{#_t@7 zwZJ-)2FJW{tw$Bb(onG1$OnB?-LKzbkxwp^;*XrV>b>c9*Hq~U1V*AM;Ssi6TiUN? zSjDey7+v2$W_r+^W_!>+?6ee1J`GRf+J)!3{+6`81#V?nNz6?w7c!SFuFNG;~Z2IQ8^^SISYl3`~ zIbLlujaydx{7HZKFctKB&G9CLxdi*2Ux8%Q1a<>Oybguvu~XH!GiI zab9DT)&E^kW-h9~ORUij_+ppOjz+u(ooA<%<;FRpw~dxTwkCbdXJ%dEkSehJk|kF- z+@3tM)SauUG=QrW9!bqH&g5lfm|RzGe;e!wQ$$u4S?9agCxf=ysM*I;EIBVu5VwdcwG4f#$UYj|8X98%x@_hZ}q;N^LbYHiR-HVTEPSZ&gP> zEeoE~0IcEN{%_p^0a&+Cw(xQgOsda9WRrN4d0Bk~XJV=huOCZ}e=SVK(6Sil!HUe4 z^}Vfa>y^D^J`u{cG(i_Y|G(Fb7mxvKF(&+{3bIE{qoi)@gtsyg$`<1qv*CDat3}XX z@mNL;Npi@;I&G1*+i?=A_HojKjRVVEFvL?9qrFrZ@~a z;GPC+-JdSi=S5ptQWdy9aqGus*QowCR6d56X1=$m0C}3kF@vzx(0q$-F1j1#{P{Lr z20=|2i=bA_oggqJs5VgnS*d4jXeLPxCD9~IPHb0Ur>PQhzEOZ`ds|aSH`Jj?Au#zI z^+ek3;tIN6R5xQUum;ErJMp!yyRw4b>?KIZ1S#*-owW31c{7p{g_z}WX;kKE zRgS6V%u*{C@=+_ipkpAXMq9=kJFp4_h7sSODTw0qrXa1X_x#MPd_oy1eo0tmCJ{-g zxX-tMgy>C=G>U(oy$1!_ONs2Hw)HC8!$s5s&V(PU-xLdx-b0x+9kJ-fBYkE*217Fc zp#!q6Av}v93`^CQS4Qo2b3H$&M{`P1dY&F^ zc2GnLzsZLrxgu>7x+xu#I|>XFo*z+FIx6}@83Uhhys6Fi(^VZ~4p|i8 zY2^%kbFl7YmREjzJqp2|1sB=I+J@9@5Q{!4Xe&Dzo>!g>VZ*3B;7JBK`c8&dl_As9 zq5fBYFfPTF63xo-*36J_i=k6%^l?*cx95>2!#{CFmn4gYR)p1q#KbUaj+jbU&zND? zwwP0DvN!=zvN(O~T2U@PoK7AuX&jSiLWY^ULY8D-*k%|F1Rgy&D-vP`JEl>A)2ce-%$cc{ zF66D3ctIYsXItxcrvZGt=zEorqK>8Rr0y@^(7^&_Udel>^$ju92hCu}K|7cm z(xoko?Hj&|9g0^i;)MV!AmdxT~9>PE$8$LLK@=k}RAQZG{3p7jJ5*8c_ z)E@xjn#-n$Q%}iWwMQ=4Sx8^$jk7aqc3Ndyo2<{E9tfUFzz#c^Kbx#TKbQEekM}Dg zxD?NH?DKLmH7F!1xds^MJ@nDb`D>ZWrJB(AbBLaEx=S#%e*W`dz$p+y(0Q)%r?Dth=8~*?JI_s!5qORTJ?pBIRaSQIQE$&h* zNO515)2TXDzc%IpZHXimV4gz@nl2n-*zvEJ29S%%qi|CH8)y^VhhlbDOx!p6r> z`ZXh8|ApRKlO;fnbIuxTPSWXPCfzgb`43RO31=9`o&m9SGOvf6P9D^u-afpg!9EI- zvA77=0MSDaUB#2QFCrsB$S)3NMb~91k@$5OU(2Dg;P^u>jA3_nV?8ev^i$!`_?%o* zMM{-#5>B<_+5No@y&N|Mps&gvvs|CUexTOp{;uICJN-lG2?fyAYQ`kecu1akh!(}{ zC>F}}vjm~=Dc~J4vrtOpR_YXqMCi8o*g?*sDs~KHj7>=fLUdIQTDb+SJlcwX7wi`I zr>7{EK8LR&-F+OZyr>DH0aF}f&6X)!U9lyEXMc1jF^kudh?}1c7$Q}k^qNxLYSCP- z6aE&~1Fjxs@6Y~JQzw+!?d?x(B>TmCSw--4r#8-KmMLFX-} zw@F|TA0MZ9ussPEKpI56n$zkms@ z8x+;`O1{xrvqfW~{U+xn(0Ive3&{$w!^KKRs9wVOAd&%q*DH&rAaoaO;fE*=ytYr~ zRTcp$V0&LMQOXF3Lf_2(9;HIxV^}fRF375MMVzZYIDe=$Zt75o5Xpm(cTNaGkJd#r zV#sAHF6uKobq(vKa=oz^4Bdm6x4lkkoWIXL-$x^bBmXCj<%S11PCXDasT zOOMv6aWRJ`FQ68H?SH4b-WGrvMwPe#`k3A^5$rb`71q@u4~)kDsuc;qL0_9?4PFUv zGmHD-5tCjs;PDm=B$^M z={a>R5hVf;ix1xK-(8^j5qpMtQV2=j0pHJLp>{A#Lo*Lbd$wF|D4r-MreK6AYZ3p6 z#qQ+hI;jA7+_p&?O6mLe?>69cfR0Fwuw4tAN=T8Q86HLp3J){pP750p7+W9gLt|oC zc)txJP9y5p9u%5U&r5n6k=&Q5{s`41cI|1F`&L)Zw z8+zuD60OY5x+C}a^$Yz&r!z_}fjBq-(L&>%oDS->0EL_&fB(oeoS}yKGL-%QCypA3K3ygu} za2No&=sgTtdNQq!S&i5`D-5bwZ;(KtZPNp@WE~&l^jz#$?loDjfFD-(2BjCU#ajnI z{*fd*y>S^~Zq%i0i(AZ+JMc+#rbw&wP^ip|h3K|S)L0$NJveBrruYhMJMWS}fkeCP z)TAHk75rqSKa+pa`2|X9bXJtJbIPpUxbL~x1;pZFKrD6v#Nuo~ERF)i;x_U^5)?yl9aS+p4Zj>3!JNuUbB!ZK&exL=sW9V@YrI^F~cULVap?|q3h8YE)H zGY1^nE3mxcm;=_2aJ@uN(DCF_o643d_Xf#XN54NhKg?5TdJvNgAx=K<5)bu$)fmmK zNADzpBakq_(e82N@b3vlVGiLkXGUut*@Q(#4Tm!r1;JO1PQkBWc_OGQkRaw)*5zmg z*8)T^X#V$iaQ%ZjKohr84ohQ77DXk5I1jNyvffQ2M@;G<{V#Sbp=^YY<{>{yryZ6+ zZ%mvaWK8^3bxCy^4e`VA))Z_UVbLIv8#?~W4R>#BXT8D@I-B@5g(Sh0E`Sutd7~)F z14qEYw5DuU6Bf)h)KW-BLXkAiLvAq~Ux*{jPY>AdB;CDh{||M1Ow@$WHsJk^QT?Pa zUueMJhC7njg-_#0D8vT;v!9M`$k&Tz81mk0l)+j|8A4(bowIjqX zfNGuDf9mn;!<9^QncST5f~!3PY2ACpq6mq|V)l}6qj3XLaqvH>Sm-t=%q<WuW z?Hc~|A}L9SHInEiPYglhKxiBuir4~F1R*|vB{A7Lu@jo9WmkDgHs_lG5h8swMTk6s zfuTf?5tGxV#=;>+3c&%v@+5OG7(Fgudpp?8u621*!Q5fFu`pEPVq z1O-ZDpunKC0?_f){|7oI2>l1O{=d*MBLE#A0nl;I!J*g=Cye+#EQ~n%O}`lB+%xxp zV{?nIvmIY84_a5ghpvdoUsHDtK|m@d1*Bp;<9H%YP>KYqj4)RCY`vl^5s~%p-+|P? zdmoOm6PcMp3ejINB()+$3OT`tp&SnqqetSzLb1qH=K27ePcSYsR2-n76^*hCXx$tw?Cv;^rML;Z81jOR@K4b79KQrioM1(#7iECF(8JR@lKVtEp z<54@l*{MwW^V0E@f4#^0a4j=1f^0oYfgqLZpRKuHJ=S zLWICZX*H%P$A(3SGhG=L!aYOT2pvEVV@efio*Bmt=TY#AR$8haT*>(8GMK;kk2+4D z;Et~1$tpFb7*_v6A*c0Y6cQ^G4$MicL@tOMm(6IO=oE*Gn# zi;IrQsuNvlfgo^*xA}Nu5c+gGk-7N(2u7~Vwh+OMi;7`H01Btf{Rf37+vILxK!^ta zzMoOItq03GNn*q?Hl1BmnM5_GNfRIiGnG;*)Z|5}^oCPX#=+Ny{10^O{lC!hIqVy{ zatOmgSEvdQo(@3EKjde0d>|2)3kc`D5t~F}mYCE}K)ahCB3b}O39T1*NgLa*mRF)& z&^wJ>KtQH=LIKqeWQrglQ@jYoREhzG);C`o_o0ZSc2Uj0hXl#V5f$RipiYHKaph2g z6`c~6dxVn$e`0;F8>b`w%BAWjGh_1#HF^8Ye=x-);fTpa>yQin#~d31%rP8eJ*HH} z(uU+ODx{DO{9&v_?L6s2wvu-Q@Ss*jTSCqzgO6= z0->Zz|KZccVm-mWeC#W(wfW%UDippYmEGW?rTt)ZMfKqyr}ICoJeMfdms`Z zq5|Wl2Ytx`TI(s5NHy*b8E`{g?b0i z;$>c;QPKB~7`w;ZaZV%05E;1&$$L!cb`fSoe`=Stu z&r&gY#@GKt;1!dOpzkZ!dj{drwtli(qHgMC+H>cm$ zC2B>I!?&VhBjv-HYnQh21!!zTrbpM@<+fvA;?*~2&kmtg(Biaf3z(t$(y?!K>Gd*X zf>7|cX#G^HIYgPalFc**h@&ar+SFa4t7nqYMVz=mW#`HFK2wo3Eb5Z)9ttJI0%;Ae zRA)D^+|oBllV_fiRru{Vd8rta51s&9{1IZ|O-Y(F$xND~Ec}`VD@sn9G=^nxeHr$> z?QsX)Wft|%1yLL?kPosrc7Xjjbs&pTJLqnUtZUV&L&R+*1~^7+vAq3!RW!5Gbq5f-zk!c=5E9u7X?Pg)!=8U-pRa}PQ~Ix=SQ^0X3fWl>8r-QB|0 zbhiEB%9Oy(H9aZW^;X!K=xO`T{8m^jG9VAdZW~FZM*>P0BcOC;gq2|OR*nXEm}h*K zOhC#do$57=bl@Wj!WtqS>qkPaF(x$x+6%>_2Qd*GTOYVaXJTD=-yL?14$GXti7++H z63>`;k%7sF_80iZmY@n1W`!4-F35=DI01ZPbGKa8W)A?cYp4Evf{@y@iKFm7F)T~f zKzt;PA=g204`xW^4$!5cH9#G)57ClSl;7F=NOtS`AS99Kjf@K0TkIsxhfmW%sC-2% zbbLh`9%B#^lR3QG*oSyYNW!rZTvj4LL~?8`XFHb;P{NbC0~H%2M1pNYnJP=FKmRAk zh$k$v5!suX8mL7icm7&^lq89}QGJDWdy%2UkCr7xU@*%7$&;kr=gxH|Y>Co9B$QQ5 z%TpDgwIk4_;2&ilKigW)b-vd$lRG%e%-fP(?NhG*k5mjHcgIxDb=J9q$xtjn17^v> zE?4`>l2k6mmsAt`kR%Dh4Xri>PK+lbJ=P+Vs-Q1>aAFA|(Gsd88kr_{)~OEK*r~Z?*hmKDIgK;o?~174{3d$!W4pSMD{`U;T^q&2|tk#1~zc@~vvBu=q|?Y==);_WLmW)bAmS6@3_mxpJE}A}8_GaT&lEp#TO= z6fj2UtWY25`4>X!k58-y2*tL5P<(jM@vLG|~46Cj`dOlU7~Hj~)Ff8d^<7j;CHqARhnz z2kiOFfY=2M6k8Ag#TJY}vBkl~jVi<~{ZF+*y?<$E%4DoTdgt6LV4aZ*lnf#fQvQI2 z@fwGa!pQJ(_YzF356of^BPBC*hs|QZhQxCrboXH$fdB8Trng{ha{t^iO~7XekZ8ZF^CO<5?~kIZ`E^0>dx7_r50 z$akBPAL%iz6+UBmiyCu4T<;w%{3T(m(9MfwA3Wl8CN83Cjo>~tCc8DG&yeqK{*D|n zh)T&o#YM8};$%W-4q!(Rfr=*!GVj7uvU8Sn()s;yXsd4rQ^5%TI?(l$FJL``=md12 zG0AU=pD7&o^ZAjMoyIN5GJ@mn7b`e1gM;IH7Jc`Dw;>J2lDH%c(fI-`!92|MIou*( ze=9Wzi@DzcMuNNvOF7p|Csp{j;<_qW-0L8eHB^|$B-z6SNoNT7>jx;cMfO}T!hUE) z=3zLIbZmt6<>^?VN_vgtBvZaCN6|KFOh0k~Cx41nAUc;*uzArybS|gF^Vdr@r(vT( zvxIXYQ_OSynwJ+h5fHcU|DqFI`T|5J8;A}8P|#U%&;pA>NV)YdIu>MKW%;;a-T~2( z#AHI52cjd137Zkm6~<)t4ut0AIbK4But-@i9#{$x#nu2(Tn-S$uQRrk85Ww;xeZv# zSw5wjl$T8AH@O|ly-B@IXeGc!CK4S(mI4H4vo8?Q(rC!{f>JD;HvK0}NPQn2d1P<{ zy#m=bdzSCvifR-pMu8X|MuCOL7#+FEl*(P~(XJ$701)R7DHS({W<|gLB`L7fuQK9*DM}?1VP91+2Bnf>oB(2V^Ou@JXQby}S#p2;R~6}J+WTuT{^iXy z#4W#Ych>-qBgx~lj`~vSmbMon1mdP3OOAtV>`r<;4S{~|H~=FS1a8}Ay#B#T@w_$&=W|ze1^b@D6o`bbVBPrE>HSiu9hLm{%L57 zzJI|Ncy*||p+X(|eVDL&R6l6l6VR~+32jqhUn7V&F-Cn^euqQR9B5znwQu$;3IP1$>uvqY7K+k!9Nr)kK zb4oD;|29>C`_|JaSPYBBZZZP&9H;_QIZ{x8qLa$C#LtTpC9%2RwFqyn?-5$I{-pm4-jN9*b%I4NAk&qR(e1s8}`PUCbGL}l?`7AtVE zf&ovUMPC@IR?Goo38`tq54wipS1A@Pk|>II`MGTA20?NA^_?Yap!RDM?)tL z?(AO)1!mS|RUzw9l(Or6O0ZR?qki`8sq2(JGx#ULQqRpH zaWl=KbNkK9D3lEJTM+m6TVw+3e@g%jt;mxr&UXDI9i_++u;DUhvh8BVdW4zn8>{ZHUX^82<(!+ZES}kW z`N*bH7q!jWn(8(OjqhGaxK|XnT$$M-&K#_d}2t$gQY&xK;o9xKwr`L zB&|T#A;m_3NDwtG@7uHtEbk0~1{s0pj<-?e&~hpNN6*c3P#P)Wd^md5vz% zwX!#Wwk-l^TU?@mNYb^Qa1Is;MMMCd{+x_GYsGfCjKBtb2^Nf$x<4_N{;THMHys`f z_>|Df$hpF^sp847v3tfC7EEE()4^4`JcYR3WCf>MR!dE!iBdO1mCH#`vn0+RMl~Q% z7DA29(Bn~iXe7N)NVW)<4JG=kIhs3%(?|qIspg2I*AvVU)RP8N(No1SAM(}wZ%_sN zr?2zoIbUDQ&%V+jNCc~VNeTAU3aVj2p28s}nz3Y3Y*=>{eRR4s%WyrWjuDIrwKt5; zAjsVYaDFg=^Fx=2mzL#QEqzg;H4(_C@pj{j*Dp+==iA+Z#aLFIrbPU3xHT0VNBAKh zFPH(yDqu1B#nE^9B4D}<<|E*@(;B2^Kh(*MMYy8!nVDpmB=i&;6bZEOS@%N4%wQAL z4Sz+^jr}U2RrOxf`njSJ=zL-1(>S6rVgIyYVt*ZZz}($0eL`Fw&rBs2Ct9Tt#WvrO zrYAp*2CJYKe^_c+-cg!C0ZYbjtU+c{K}VLnYS^sgu=Y1YC#7 zI7-pmx<#42pU}9>OxkkgjN=f?fC@oHJ}G+Ae99>1 zsrWs5F0*-{LU6GA_oruC%X=`>4^|%r0%1bsbw#j@*CKi-%E~`Oj9tJGW2eP>_a-FxtX0n#!q)XSKHL(X|Tx0>0WlfUh=IzoGRL;Hy3EvI-3s9X|#5 zYJ)+WKdG{aR8cLIUDfICkoOMx5t*h*0B9Id+8H`HK6H@6tb!fM3mr`Yo-kO2VK9%r zERP~7hXH_wQT|!UP|^UgaI$Y&N?2HO!pf%NO^zT&}DM-_uA89ju$8x4n+ zM+3oRk1fHRR@NzU?DyA!K1O_xn8-Yn6=cm(h*R<_awz#RH5R2hyQS`X_{b3307Jcf zgUHQ$gSLV83fFo2?~duA)CxcL<7n70-l4OK;nns^p)s` zBMv-|ogW_s4N7o4De&$SKuAXjXc8twK;kz@Q6vBY5&$ zSu7npJN)`x?d`YZo>ns%g!GKEHB?JB33!YG95cU_w zkPNKyu#6UKAUJA3aMTL^s;;X(0m1nI1PAfJvSHR`^(PRVLm)V2pv@raEFvc$IKKaa za|r~8VR{S*&S%PYG4QbDHPO|)4rB}gssJH6vJ{`1rhJ6C|BCZ_fr4T^yc9;Y|8v=Ti@^sLj5(+hxXh(JOxqcN++iN;>_H0L-POfOI z{!Emw_xFJmH|l61)0RF5wXkr66qK;A3=PJ^ut9wMFPcq9D-0!je~o!*g2|j4+ZCb;apMe(_!U$SiO0#C1oK zCFM|1TL7f7xj-5_J3`DC&FpZKZy$uT>6uQt`8A#0I0imSjE%EFOp*y>ndZLC{!>2h z&wbEV9z(;huvnCrFt7~OV*SDXeB3b_e10$)O&lbE$IlA|OZ2B`|qW+kd)e&M}{>vl@zeDm&NIs5rATc0KRa^&##>~4E*^CFWh=yKN0eCPIj zN-p%tE-CN{F`zAXPl?=-@tS_Z&hIJi(OTGfE%o|qZuFM}z1#ZcrxD`GjC#6eJDaei zisyVP?fF)MhsvZ4&F*EVg$3$U<*vHtuD7|SNIvallJnJujL@@3>|Vpqf4X-awS!pZ zn;tPmR`(`3-{U!dF09qyxhQGU)RVupVY~Hr@OW|1@yopJ zGW$EQ<81nL9Q%~K!ZG{dCSW|cd;_jm&c#L(lQdy<4sC#-wXlIZ^~Zpxo#<*;wT1=t zO4TW6e2DJna}7G~H@R}omp_<>t@zlNF}$lB$HG2$hj!m4AR_jkaotm zoxNhabxia&-m5%;BHwg)%oiSlUqD!wLSjph{Uvl@nO2$mS$wH|l#WafZsboJ+8m~6 z2b%s7b7)pT_qxrBzmU0A{6O+bifN5O>Ur`tk3+;mZ%3=J-g}Pk>&>KftF#xbqjxfY zoA`t#{q~ry$+eD67ydd3eqgd~RUA%cZcnCSwoS1eNakUI2Ym8_8K?G=%8g2@67*c41B5ed)u`X| zRr8xBCWzj7Ya}>h*z0)wxzEOXBUbp$dR4~NEazqRhtQG!#C6F`>&v4T|D?;qQHfE? zwcMz(=-U1tnfkXw6K2rAea98dV1eo1ork=VmIn+sQ)TBJ?NN{Q)4!gn@^0=R+=ukQ%VsU=mtz z=~+Lq*$pU)$n;gZxMCo4+#If1H0@d6u_i}@0XdT;P# z-KOvg-=@$yYqk^LGv$0zQGY{nB|@AAZjW*rwmpd`l=<~=KE!F-^%9ZuC&(^wh+}_f zwt5ml9Oqu+V?Ks#X?GnK`{Vo~z<#&MIw$a4afH|8O{CYP#v3>0*hYGIhXu;6@N7s& zTiWvM*)Ogr2q)#dJZ-g1A6}eOJs}G-p~HqG5YsVmkZ?n(jDX< zmMyS<75h;vKUUeggVeCU@w**I`?d!<0 zRNX@q4RFx+VpF{1B|LXq(F4e0)&1u6f<8JwhJ& z<88mDt3i~(v_#3~X@}GOChL@Xz4&&%q|GY*l4o%~y!j!@l5>5(j^u)e*D9#gb0sA_ zvib81-JF(D#%C1CffsAjSD!1Fhv~^TqqWu#vWZk+&yA8p++mWh2OJ#VSMM0Uh~61R z^KVX^i)oI2h|z7Hm!ND`fO!`8y_L*M*h3#fxv4XM;Kou4+i7b`EhKHd-Z^Q3QgSw6 zV`dHF%_bk3mfpG7`lcPpE*7ny%B09_pw8`9(DDKKQ3D$^^qbv!$^Ls#`x4~SNc+;p zF~a5cFyH9|x7kkU@ota7&W~fnn*xUl^0_FdQp47Frdoc8M$xvn!M-nP=1IO48^hWn z(GlE4187;zL;A@%CQ766pr?bwA4>hII?CgP*jSREHwp@5^LAWS5L0|I;tE`ML0=}LO5w4g%fO{#tC=F(3O@A(uakWK~P(yU@61I zuIyPu0u#M2;zkD-^2c6431YOv3$EXCQhxE@i7Ay4W68)cBLQw7y!vK~>ZqTXPMz88qGFb41;zMEsXzJ!5No?P7BT_h6{)3>@lpN z;O~~JtseiVTVQi?OgzzA7QFLSlg1U^*F|(gIMWNoKd>Y8O|i?QHPg?tqammM!#PFz zM&LF$%(Qj{VgFI2sqk|dT0!fGiT0Kd_sbiJ@InM1%Ab!yk)gcVaWsrhy=p1{E(M0R zou*f0S8WkRkKd*V*E4^X8P2`^GcKBBM%=g~zYUg~u6%o!+b!qt(X18koi6KuL5k@L z*Pw@y|JL8b3xms)#;}Ak0%uH+$Z)d)E zv?tb{D;k3Sz9af>e=vOs8P_3RTtU|00F$2K#Y;3(rD^y`ZG?@~Tj$g^zzB7!)Aj9lGwII9L>V@(*-F{c` zosnv05o``QXy2@7YU``xOjX?rRq`bqG)OgF=~}7N+^<`yTQ-Y@a*b*SE!u^_Zi}Y{ z`w(}9BZ8HNO!Le!)}UfNf91uu%o=|aSjW;5I&{YQ6x4{+wwlEPv%e%`AAzx(awup2 zi*%TU)RmtnXPD(7d$pxEQl1Cp7x^!i(>ne7pSJAgt^RgDft@U_NaQpnpe1RHK96gUJSNKp9Y4LBc(LhZGY2s`&~ip+pxQ-e ztXxv;^&VK*4+T#ZfcD*m!g*0lft@6@xU*FyMBVq?2X*X>D_Sz+r>^nR;IUIztP0S+ zzTWu7BprVeSxg zMgHDkHU5(nH5Z1J8TOT??>qX(;G?uEV27C3k6l~fD9U#IMw-X|(WKgS=G}6~anyKm zT=r@%exuQQxp_A8ogU7(|&pz26J5pM$DwhHQnztScrp4Q*x8 zSmhWRjfg+ZW1551Upwqpe{59jovHFVoKlu!L{|a82fZY{iOyCVa6AO_>Z_yh#PfvKZ<&ZDZ?kv zS~FR~?{(eMRvg?7e?<7l(mVH3zH{+ZB@H%Z&+tVoN^ho|j#7bE{z@BH=id&TYH5!~ zt=O)7@7GF+N?Nkz5LZz6)2*ZMhsSr{CU_Xp(ZLM)lvWKAi--Ryy=C~>ChK}8*O zkWj)UCufK=7W74$H$y6m35HhJrx1Q+Z`pWlXK1jGOjPN>F3xE5NmJfz2OLMPJv(Ss z)vu*w3hWqFOeN1|VDCqjW-Zj9mjL(VM&O>@3*3{nkC=)Z(NIv0W69;E^+RdqeXaSc z+5`5uV(_%;LtM39m7R#1Z_l?ImQDMt06F_UurwsFE@{Af8DaCj9UX%iS!h zyv}Lqop)6Gh}O2aIn!lP-4C~tW>1ynPXgt(w(A-^Job#AKguS@j1za!Xe@uiNsg&u z?)t81KKmE6G4s)U*3bl@MA1Ar$W*c4z+BzJBzYisq!^mRTu_q-yvcEn9>=3ANJc!|gG)lL2^60FUz{`gp!7I6BP zxb>qld*M(x=yvC$u{tl9JwjA*KDjUI7ZHv6pp5Z1{vFvKme&=yre#xD`^)-GS|hf- zU^4DQd7|elX>WfOv_$C`x}moj8b0(q$Va>EHB`A8BqJ z`3KDS(J->fK2U|qPSRm_NPFywZa6cR4f%7w-if|USarKR5v$c#xMV+SFWss>5k3U{)qAp##8AFf# zJrC6_aF)`elBiq z6cG`W|9L^rtkn*5U%dHwQU8hT)U^|PcaOg;nYML;nQI;PiRijGI7ns`aPMF~!1beH z;b37gB*I~BltvKXW7FtK*_5f+d~Ot}qu8{rl8O}3Ql*!+uEH;pE2AnRU-KOD zo-+!VynYsaOPxG;%LUy{toj_BX8BAAANWkbAVKlK8H?LyysvKAn{CI2f!XL_zP0uO`B%c^A7)?exhWva2F4s zp@xRm8a5ZI=L5K3v7l_A#q@t{77s|<`oRQ_!BRX{PiR&o?>WAMnkalRV0!1VHt%WA z6?pa@YCncs{v8{Lyz2oBwW^fcyk9)u%oCi3JoeIg;}zHwNH%5+pI!bH8!PYnqpKvg z0yG(t4kg+()Y1XE5J)T#+D_fRX!4nt80OI7V-_^XTeI1@kW%Jz^}0ZA5zDjq9z`J8 z989Cw8)VmQgACSpwqr(lk=(v{&Y#BnMsG5<#@b`*@!QXHKV>(%2||;{&rp=7Be!Ta zG&L}Y-e<_HSIUv+iVJ2q%#@ioB<#n85;_tMmyf%eT6zkZ43QKmh1T0XI7X5guLRo& z1ilS%c3ZOyZb49i82eDL!^O}&6emig)Sh7ZrkIK%h-u?EX(RHp{#Ov!{p3zMi9cbP_q;Gk+_F?$7 za_wQKUaV1B<_6E(8>0mdArFL%S6>6B1wwU8|T=Ax*)iL!JKx^ z!kC>cey6;_=XZUhKFg-m4NM1Ur8hfP?4_8?waCLe-eM(l7p=)@pZ=rbd->iFXH7OR zS@UbU!=w<;_48Q3*l#|cqZ3g>ZU5{Ke|G=uH%<6Cp9QrV0kfotWKWK5%$?bGmlR%m zuic6otu}hzZb!+F$@lUWt;PFG{z4z;Wxk)t*~8V6(Ozq2ba&axaI^7m-=C=(bue&R z*%PGQ@X8ySuP@+r(*A9r>v66l>h?18bnd;`h{!5*f2TOg>t-*on!1pBd(i;F6!r$o z_nBVY_gQCHt7!(l{gqEKx}{lpb$Cs*d1dqeC3Px)b0dG;^!i#YEa@|G_Aro>d#>Af z5GEY;H+mWOw|WCzi(r$_>)8<-PZ!_Az+u$%yLyio=f&-8i2JMafrrO>TfNW0b~dW1 zg-3{y=V|DQq0Z}b`=o>a+46zCPxVVH_T(1l+T_^VLu>BcYscmxvGV5t=eIbv=lfCe zjklf503na3g;QnQxAng?D+jg)kA0KP`cIZeg@fm!*TdVg{jy742ah>xT>F&QVZp>* z-Qbx=%tdm&w?{uk4?p+Cr_S@$hq3ItO23`hKW8mx7_+AVoiF!x4r>dp*IAis73Vqw z^)Ab;8w(|G8*4@Hhm>15>f*Z2M~1sht43XhevfUCIhmW)v<@UE_^GEdQTuq6Fi}4V zGU?}>S03u7H$HxWa6W~ZV_5u6Bqp6W8IUK<8IV6eni$dFYwHx54fyO=9PkX+f$=#o z2x~%Ve$fQA7OPjc%==4uPC|L6x*Mv}^dRr|Vd*y3ZG#Kzxo z>h9k^+YGil;w;!`^AsINlzB^(ljT;<`&Vw5|5%954Z(>;fT66EpWjit)gh@eP|YkK zDmu>4Fvu>K1%K!1V$_UNm`~6!2-?#VrqYC{yXls*D$djBumYAe-C30RvleoP5#$&7 ztea^IE zCgt_Eby%4DMeT07M@lv_Z82^|sdEI21Pl9%2sSP@19}csB?|_BDjVnZtY@ts^oj|r zGpXxAUu;4Kb#YDHZ9@jraZM6bOtY{*o8adU>gZjsE@X#e{`w(DFS9U&{bgY3)(NKG zr0J30=gUoAV}3 zZPIh*F^6z`Ugq#*E?0#PZ!B6Sq^g1d*Qe&Y$MfbiL9Io;>j1BB*;Y4EnV)I725(qm z*!`|ob+n8nOi!v(26Z&ASJN0kU^>cMPCbvhF-Z>Y*=mRal*miw)p3m7$EMPNheb88 z<;PP-b06mq{D?i76yH`0UPG59YCgrjp7Z)yTO9qu@`WC1*iThk6D z-i&^mML}~E(b~cr$Aw}ZVBmuuvK(5>BmJ|5$%oK2HQ_=5ZIqAR^;NV__JUPkBBb+z z_BdX8w7d0ExyDB!{! z?kw!dm|6(!^CqO0)E{Ni%Hfft1ED*tdDDOorW+EsiOYwc+Xv+fADl-OWo0QN*v5|N z@&iiV5l(B1FsXLy?bhMpZD3HelIQ{Z*yA4lm~h-eQmicqne|9>N;0EdjEHa^j#9=r*cDuBf5SP>i# zoqkNw(#U~ZH&;W6Ds;TK8ANhxGmKF4$h{k=+zDrhH7~z8`w80_SV00GF^5C*9)a1- za)1YkE?_rU;+AUH#vB^2>|H)qUR22;D+j9_%OnCqVrBve$1G`kMJ0t=0=>>-|U+)E{JWu9@IQr}K@kSnz^?bKD zdbH*nLSdsbTC_T19>MY4HHcua;s8vdpfV{*I#+QZ_BG;|pRgtw*ErD|<9Lhc7Bvk? z^%m7K@YnG>5OQ&;Q4cprQy5jXDhq9Pt{wzmTw#%qoiR5FW*k!yg;-4$_+!jA)**i> z&lTq!Qxgq-5BmIqrnf0@%bA8;b!-GC7(O=I(n~9R#sAW$e_P{7I;K7;#?(+|Ar|&< z{5}nq6nH>Io$KxqsnO~uDH zc}fGmp8teB&Na@~T8AZ`7ya3J5&ww2ikLYUXDobEM*j2VqV^HnHc)m>v={cm?>4R$ zo2Mcm1aV9CHtqt;R#h}a@gnV!^5!Sz9Of3-Q{n|ys33U*LS7yaIDSEWi+MpWROS!$ z**NnNS_olf9&^*_{>LNqGgOXR0H$(}^4vxr=9bm%T`j(U`74<}oTz%-&ua2Xl8@4ELdrBF}KIl78elVefz^N@^vAQAB4)awQdnQ6_s>Z|Q|l*~+_v z4~&~11@GZcR09wv`wVYAF32wuz2OW4TfE`idq$73!+$azV=p0hYXqRSZ)zVqY)N}6 zzObBxEzb4TBK|Fd7_)U$lYLD!?)FC7zOcE)>Oe!ByW7OCdZy_p>q4yQ4JbeVS+mJ< zYv76QU)Y8Ev}t#1a0m%LZod#9(ZKBW_tX|f>JGb`3wDIUC_~&rzpr}4=s=d8^Vk&K z@;DZ}NYQ#lh%I;MTX9tIBVG^MsBq{LzZU~GLq$s+`g|_(A9+Z=iUJ3K@8w?5p9x-z zfa80HjvY2V9Q9w&NkWz9nm7Hbgb?WFn>X(+EN)rup+q#_a9^QH=HEgvx7dyYddat< zA8CDyk^{a@&hc)U-s}6}#`fvnqVqu;l{)m$IV$T_dK^_jx0YUOY33MHC(f(-X4Kj0BXdR9{P|tKoMH5?Vl2BC zJFUYAjFalv@73cHQoYe#Layc+;p&{qzdj}^r>Vm1mR2!d5M}d+jn3UsDC@UoLl*)2 z+A}Wm1?A`uoQ?dDm7ZAu(!0rry}b%@;Mq@`V4%;5~1G)Jq{qWHo!F? zELnjT5RYRTD8Hb%o=VN~&0&O>fp3&x9&ct6(_*^pVb@XziVy`%KCpqN&+k%G`cF1) z`sZI`v^~Vf2#7@L=;9LDuy_8Lw(ZJ?^9~llvwMoI>dth7O;=G+1tp55gQQXS8wbJGMI;@)&2(8F zZDR;1)>4ChG<-cv>Pf7KU&aLnXXcyCuTjal?xFL$CkCGeRP`eLxgXJ8S9S0=oWv;+#AG^^e#bJWv(Nrg}+rUL4Ae^zT;y;L33 zSEtx*uWw~MBy~hQ3_UW00#>m$mJ!k}q%?^YhBjCO;^9Ed8j5lCt^J-_S+oiog*)Kof?Q5{43mB}MEZ0JbMuB$&QwE!$y`tQFj z#^zZAG1Em)a=c&*&@ViwskD@)&YMJK$>UFsm?Fo_R3FF8XSJfVB<87a6=T@Z5Q7=o zf!H7}rOb|r9TPP*AbYNEj;kj+CQ`N6DmKs|p47CKJ;|y4t-1C;pW(d^cw%>Ll$VY! zEs06R{?Zb$GKL+Rw9INvQK{OKk|O%7$@EkHwf_nghsXS{)NP#gFK1WXSL>_3BKWgf zW0OL|_eq{#6Y^Yr8vR!H6;T8-?%}wwmx45DtO6E>u1uBKUA|e+?9Tu> zoAR{o0p0{@kSke%WmwM2agb(BOEc<7_+23qu6~#9PwKuKIPiP<;2%Y6CkWoo+f9t`xZ+EcEQ}2l%o&02r=*w7_`Hf$%p2K}GSa?jg@zQD@l@FA4 z$_b@a`G9iStNdMentu=&5a4@~0e~?YIZjBo{8AmD@C{DeEvKia>F8-1=y19;LQYHb z37rD52tJ`nV0wgo!Xe?fz=D9nAqE-AWQhV}Wk@g6#|$tGLqExv8)YCIYU>Vlhuhk^ zS4P4is1_n_t+Le!5y4jD4pX)We$)Z-I$#Lq7XUI#utIqcXXm1ql&zkU_&^y<93I_E zBrIh1Tpp);qFSj?j&5Cvqw!6pS=lo0d7OtA>9Z!> z_C;yEC*2xlDV494TyhX5!frSKM}gZ6Ps46F1uVqX{+E2Y(Plsb5N_`dT}|{PwJD_! z^BrGr@6)Zjw3d5UIXcv;90me~>R8=LeliH)g!}i{857Ggah$SOX3Y)&A&yfdx6JD6 zXowH{U^@*lTR{ZI#(+k*U{rg)J39(SonA*T$d)a7pT0@ouJ6=u)AK&PswZ{&<9gDp zM?HkQ+qzeV1c;>GuzO{r)O6PW#@(0}+{-au_kEJV(l5Ajg^`=5*wA<@Dwp&N-2zha5CBIUKzc4;)UB z3^FenEzw>cc?h?KLQw4vYlLXCWz>Yj;kHm)n-KYz`R5MTXy-`+xx*15Vyh`1fdb39 zGIWqP%Ebjo`72Qe9Ip!^V17Xm?XC=6et~YH@}V*`uj7Tp3gwlDKErY}Z@-++x~g#` zF*Gkxtjd1n!^FV6R+5X+=Es+xS@;k+t|-d>;@nF(=aIJ;ZrHnFhzE_1K>uvrJ@ax*bAX0u7hNsf#tCmC%~jsrVmV&XVevdUJA z2{XZj9>$d60S|4gmi_+DOeCF|n=(l_^H8Rm$z)1Ka}+YInO&LNGuhru%yi^tG9r`% zDTfZAGdQW1GAgKU>R#F276~V3WBdHJ`E447DZN9Xh!7cOOHH_~n`(ftRwT6mugfp6 z**RWESCp&%7>?HoenIOdE6AP77o*3o*m&=JG-qWW#9VwznU5bRh04c?yFWljbgFV; z#P2XSp;a1!T1hSQc z?galR7$E@9?e^I0PJ0}uOD0*b=NO*1`YcvU92=z?Ioo3OS;=uLHd{Na#A-D;5g;S% z+~hpuRGln1txnO|;bfgVIJ9s+j+hya3z!0NY}_M@hfHWn$+;<|`nB5Zh?*cA3Wd5O zSE$z=?rw`jk~HdW>rRnUNRpEZc=-stia3}g7?)oV%yVUE?b;u{itdKF%D{}d+0p>^ z+rS9fAVNMAWBp!B9$J~gyg0V*k_!WIY}h071^M{}acq#B zvQHn@6TRNcS-d`P*vmK>pEr)zNF{Q(5H0z>{Pz6L{GNO+oL{FMs`;FlU!LEb&(Ml= z-iE-NS54&id|@KBi2J2q`Vpy|RriB`e#y+d|MjzfDs^-P$T1 z(i*H8Zh^iT4Hvv6|l&{rscBo0#u?XUXjY`26KJU;dSK`&vWRwb!sq zE+safRr(Sw9gO+JxpTlmmh!poG`|B3;LjgSw1tDhJdzu(}=q9gN) zqqKg>XpUxO8NfjApC>b&ES9rG}^i= zs0wO}46lVLeM76Z?uf>u_U?$ShN_>`7$Fj-Lgddc$a7`rzNKu?Pt}oTpt$TDVaVge zS~?!ZDdV0b^9L`ULYUsHTxgu;9eohjlOO+V6^<@f2Jw}_^|)+mzjAKlGOqpR2d8i8 zD^?UTVfy>~2FsYA-nXXjO>7ym;z3ke?@m}1h3$Vkaj+FnVlG`_vz5Q=PVqm1LMVZ9 zcvDKt&CSg8I0d^v*E>51I73R4?e-#XhNs9wr?Owp7DYBMk7Wb8vTzYviqsq=PbMJ67hujEmG%{|tO%!$B zbYnW@g%Q$m>R#DsM3)PbW?I-)=W22>Ru{Tl#AXEx8X1el=1jAt(Mdg8HrnReeqsBi zjWs%KLEA{%YTG*7W*hIYO|(62V{AD&Asu>jKhzPU&Z8sgphGLs={UmC`v>GhCYnU79M(fgKCO&UB}Dy(q|KwrhOH*N@`@*+F^#e> zDLM2KDjiP0#;O1rUZIl~M1CuBkn5P zUy>~un9H~`;#e;&kvo0p^VRv9d<^)SeOO zWuMPhvpL9a&hEC|-#s^&d%V$#5G2W4i}-8XIj09#);mN<9paz6tJSh|!r z`YD%P%6Z)xeh1jW2LUL65QMQ@@^lqrR}iza!RZ8t)j^Dm!=cyn=^W3+v0;}S499WY zOR}W^ZH!nD$8o#l;y@h7?UA#JfE2}1lJ1ht#1ixc!@w^1&=Ywoh@KBIg z#7?nCWWr*d*d!hj*(UM4sESNyaZfR6DsC_CDLzzuyjU&fn~IMYpD$L6+45rSE8bpA znu|M%$#H@~v6zrzG01|!!u$AkeiP3c2Y3V?%?zKJX$L#CdR%ge)dD^shX6aE3wnVO zsYw#1Osc5(#$@Q8-xf)7F`VRK>K|39SL}n(6>sH=?6$R)kI0KqUR7$&ohGUgXL238 zqEu5%)!e>HKQV2_BMF5N)RS?E{djWYVDM?wPo1w+jdmCBCkM!ZMD4eCWS?1cV#}5j zYc98*&^nC4o(WZ2=OHjMgXwtO4R?>H~4CkOaAawuK7H$_he^SYI#3anc@n zLSE5WjkzYdX4Kf)suF97lqJP+!Y(=Dj^hOBTG=wTeQf7grgLo1Skg2Wtz*Tp1jbs& z_Ksyb#-12UnzGunh&2l#>u?q^N|ELWfk<0@bQXK5IPhZcDOR<7{;#B1Do)C}ny^jXN9;r#Rn6+1}ljL{2mpfXZ-+ z!FFow+w4M0pas7}=NBA2?F$IQe^hzX8DI}MBmPKbfQwWHFyM4mRpNVR$BcK4{Ak@k zgZvav^jSf))#l@o%clrCvVPecdefb2Us(I*sGjOB_N}3#Oi9JvcPq2ju2qh$T}zJL zJ-bBtirMy^MNhqjkKkG9@~4+S#zpucnOHqB+C4LIWW+T?TV~zl*N>>g70Ru+Ua2O> zm4{DBbJz>_CQhC{efqT0@&%I-rq)lP^11F5e;@FW4t^Xf**sZUIlL7Ft3Zs5Ah=u^ z)GPDJE|){!qeF|%rwi+vbgUJ0R$aM{$zgOllZh_R1~B0@FUbZ2Yj@;0D5hqR{coC& znNOP;bIJqLYNuPPrBb6g%9?}bk>-i!r_H;~yoH!2mP0w^8vAUFA;y%Ru2OpF8PSmybYdWdY`KNmvc+ zTz&z^>zFDS#epuEmtVkbKZy$;X;Ge3h7zx$?IUH;#C5ow*^i?KmBA6!m(ML;w)Q@J zeKi&;&wqgH@y68;@b@WI%CSf0VU&26u2#&-y4F6Nkf0FbhP^XetBhG_o=!HOT$lLr z%QWlH_5cH3)u=no?*ju^!3A+ibUGYn8!I@3punUHg4xO%9md_p1ID99?t&4Glo{T1 zA!;-l($gEwbIlK!nUQ96nAe$in-7>Tm^qDKcDpMIX3^Yd-fm{C#BA1FhZ&MxW)^8K z!yf^Ia0)I!5?RYDOd@O9xzX4aWG~d#M!kk_d~S{4l!75j)|znAe~3`jPm?arFZemI za|H7^zyhdcHp(|*_L7y#*UTrEmU2^Z>we|bQ%XmoA4TP~a&QP++4uME?%jTLjdJRV z#AnL>U06(NAKIeu%0vA~QC*7moZx>7cF2Gn2x7&HKC9Ok$ML)69IHD=J8%G9Q5vO% zvK7MKI&YJg5xwPJ$-CXlf_J+&=I!^gVRxOo$<2uFa<}B}aU?d}t94%}VtUiWr) z%-!$ijXMC7Gj$)Z=?qAvBcfh6fZNLi*uZ#$IzTh(FbXncsRQ7FER0Guvd6=;`*EKi z{Tk#;-8idX^!NJv{M-Ele%^10@o3@e_$Gb_&srItXEQ7e#XlP*w`|gjY&qM^_Odbd z1j~1@UF>$2q0_!QrS(!1x{dm4p|)@k_1b1H7c@Nj0v)vbb_lxm|G|P_`<&qVuqp z+>iYTI8S++?kXsfO4A|x6T$ahIs59l*WUZ=mDRUzp}z}LKG&V#{{!;jSFb`KMZT$$ zQTF?Dd{$p(KIF%-aj)zG@NgO=ngbqelAQAK9L&+EsiB-w4(m?p7GIF+mVU`1IHEaL zi$$N7#yMDyrL@eE1yc`qh&#?Po(supr7Mo#Mzh5N9MDNnzM+ z!yssq?!&k!CF96Ze!7l~qV90jD2_?3CVm^mK^a2HX!lnzRa~MJcdlwVIqR*van9D2 zD1L~qCPIW6GjwqunfuVV#CxB-o_J;co#f_i31IAoO9+oG*go&%ocDjdMNw2}iK(F6 zz9v3@8$PEzcy{H+1Gt3ZN`8vMUwRBsO``95=`0rboqCOLz-r~N)|MuF_aRAqzRF-98!Xm3*=G&6 zeYs}Mf&GIkHeB1u9$BM&xJFq-{{aWQlF&WQ{|GE8t(FI$N+K&2hN7&LkrlPFR2eY9 zqLE?QpqZFV#6gm1L@-zMW_hGsOe(lOFAJVN5AjgidD5-XT(8ID&1Ety|I}Y~bgea7 zDI5)2e@0dmz@~W(;Mnds>^R|IZHz<6;4xyX5F-AF z5I`+2%LM2*HY zK3ns*CP|azOumj_m>}_yFsUO>7fAV70curO*)x(+3g@uP<>2`wR$Eyapil{3-Gr3? ziw1D3;=<2s8^GgQMQSubJl+RA>I`u^2WLJ-F`9u7KONrU!InMm`#x0NQ*F0@l z%iTTrrWQl`RJW1;Ib=f#oP9CRpX-m~^u4k#-&>I5jpM96a!yXDAQZ=z-Ll>)SgB#1 zE4zen0g}1`v=sOXwiWCvV9f=RFB~n91V=P1pg>uanQo012n7P0>u^|dJ9BsBGSa~ z3QyNqrwQK`p0-iUV`clwVXh^STpQGAQP1)bToN?5`w8gs3xG;sRe_)JGiD}_$rCjG z2zk8Ik->7NVDQ0PHe{wLZ>B3p|FD)`A62GPKhsV=_oh93-OO+?!u`SLWHIi0fT zZ@X{h2N`c-U*f^tUCVF+GZpned`WrX@}_t1nxB6ei?3mBK$~)I=+yMd_07@MTFmq> zy7m0elNc79dKq%nekm=zFq)eiG*S3!>TcN}*aV6YX2=<~LMh!Ig+gl~2{47WLL2L& z;MP>hD?6QGUz2Z>?~sqR`e@vv!`J2Gz=vkWXQu0q3CuV{GRr2(Q5ZFu!0Xk>-Xhs$ z5@aW`v)H37dw@O4o?^9-xFm?dD6m$xob6!Q0ZRV3+DrW!7Q&%+ZGpL>q-4T;V{K%^sl6hfQNaC1n9)CjKkflHkV=yoGC<%PUP*X1`JS$)wi7v`;^0 zkmc}=^mMNC2lykVP`RKCpq1{QZrrXfijoZM8=9g_TE7LaC+CrW{z+x;&<9Fr)8<_M z)YpYi$GDF#e?a{Xo~c!w2_4wK@P*P>qv7hAR5;&g^JaRgvJdTbw>8u`tdg z#O_2%^2-w$Bn)~?RcC|nfB#@+JBF|}jp0zN_(#d1*+JH#%L zvx@ZOuy{h`B=LkeATo?7)>_ii)6mGKc|6`gtudYIVG9M1)4^ypiblqk6c$%@)M(Uk zx;Rdgta7k+T`ieaySeu1+5@$0EoE6*aaok-FrDQb+$oMR*K)O7R;eY7#1{^S>%xpB zOb<4Nw}m+;6V^n_5e=g^%NxguQkI;N;mg9Ftm9dvBdaT`H!GIapT#w2VOC0qhQATK zWW1z?f)z>o<4R8wMW$#(`}{UrjX>39Dh=T(_1PVv2uBF2lR%_qmS}bfI(d$z7G<7h znCImeP_-Jg`+1$cYLwr__<5b5&XwGP)KnVf*KE&G{z`w9uDW0O60>p6xH1Klhn4Rt zhT;i$Glm~re)GDC^Ksp4SXMLsi@&@u^wrbT&}$HwX}N}#Zz{(Zb=u1Q^wZfL8M;LL z2Z@)bufT&_5~oPFol`&9yRlBUc}@BH`zJ5!3rxNChW3_uD?UbBYm3q(-+reuu4A53 zy>jz4+?vO2Bj@)ibG9#AyW-0)Taz~HSGte*o!}WpG132`#Z%~^%a&O#D9jH*s4qlv z88Ji=q)gc>mKREe&4o;JVMig63VRC=7oI3&HPARWP!J7^SSS{XZrJBM?j#l`8fi?K z(9klmGEO=yE!!7$I_()0+@37u$<`(}?r`sOA99~}v*5P62`!p6uaC1c?wkMw==+S4 z4Lxbc)6S0vjq$Jz5N%kn0cIRq#|3=YEy7ywSx@{Y7a&4c#(heK^N*dM6~ zcVFc=4==yNQ)hl#cT!)k3?*?)4UJAMwMln+RMN*t#S>EDpd?UPL@NDA0Zo6Ue?P8h zm^^U!PJHCn4lJ8=6W*4X%1j^HrJNahfoVxhcl0>+Ihf-Pv^qowp+%pA0f*!` z;TUkRCWj`sg`wy+3tB8YEF=>wRtup;uO((-bC@j2Sr`pEELm9=N08<8dYVilxnzqT z)64Y;`osDYdPZRM#lS z(EKF&s6k69sZHh=409<@SHS8Dsw(M{X=5mhD*aCTD8G=GG;osANxS`Q%b6)k`;K0T z>H2Wn8_H%}u55l~uhNG>j4|%zzuseWt!kX23@Ag+-pyO)yd7P~J#_h?@-T>P_eMYis&jCJ&wIF8vZN31oG zI9BbJ!CC=vtdfFqj@N4v+F6{+qLKb950~TlaxB-E6&Ni>6d03{N?@%VG{I=====7|EE!9~>(bcfv7}?{;jt&iGGnvAgGP_XZE@B)dz?%HHa0@hI6p%B0 zZVbDT!aU9H4tKA+Ps4XkxCh(@3IGxJRd#XY3SMZ_U@a|ON0ZQRaK~X>K#Lw#rvgZ+ zSu?+_ZGKyFyCTgrn%*r$XnP7z(D0a~j;E?!Q|p@29z`coa1_ULc?F|bPM2T6W$-$` z)9=zUto*z#I0}=i0ha-^=4{FlWnwV&{pV_@V#XWFB634Tky_&IME*OTZ05Jhy#GY!r0L3LWl(9q@w-@m5!WaihdvT#GX}g9$(F?1L)j$~ z^D}bSlPkv6ESa(P)*F9%bi!mdaI7HqSj7_$33sjE_1@k{l{r#Ya&+C4B~Sej$J~Bn z(+cI@4>wNjU3mCxOnG(rnw2edW}1~h=uYsJkO=`Og12`Ig%(R;TuVp;Ct6si-EN7i z1CrfhF^W1}T6TIcXw2uB`~VY(h=)h<-b{Tt( zeMU}58VA1Is4+VeGO2NpBWqyuHrN5j;XJ6IqrPyDhIMdSgsI}2<$4%9pe!0rBT6M< z3fjD=j)Wt_DWz07I~l)|Fs>_0H02`*m43AQ9XcCUjq)@31%wH%<<9QM4V%9H5+}{3 zRR2;@l^s%xz-aK{V#v9(~ zzkTvA?z!XkR#cd&)yf%kH&-h<<;!Q^OT7QOqO4VZxspZ-Y2NC`{0vP~yCECOp%NEL zCX1!8m}FySW?DK8vG0|w>FFlGI8NIm1DFh^I5zH*ot`*O-X#lex>gGE$dZ!cii&W) zC>DCX;qoxGu4l+k8_;0g=0rlR!6ql;bB3LDP9}NQ?(B4Ka`H||3`Q+NyFh$GSg6x7 zVL6%?+b(npn}lt`aY1Kf1j!$amTTyp%^Nj1h4OO2X<&=FVhvg?gkqcyGUTcQ5QJQu zE_vi&u&EFWHLe$03&p~&!rsEZLSA4rn;^}X8!dF`HTZ9;WRmN+CJO#FbEp9pS1r4t z?#Q=5)8VAhkmmPRx24=(4ZzS8eQ4N&qUEqxT$4)A&0t2Q9Hvox1`YRL2_{ktULXuj zG)qp8s!@aq2sCNNCgsi^&Fqb?Cj70+1?3cGf3x%M#^YN)oUrisTOWQkI{TORzZ1+O zYn52;%KK~3U}9Gzs4zrq(|0+PXRw4_@@As<&BW$if8znUg z-}gFhCiTcFL(0v{arz%LFi@fDbVvA*7HPO)uweO&ZVX5iOJMG$!T>& z!DKawCdt%g;@rf87?DVIvi z4YN}&IC!2LUUM^&X&8cEsL*Xc(Rozq_LiMq__M*TW6U#&F69jAQ`Yk#<-+B%o-Jj} zBTt#0U}wKQ^vr5ph-;N~z<{W7x|93@EnhkZp4(~i#4);CHsEF zG+-hfCba0=^*i*8<*;50zL6}(q}S2^oP}|?TsAsAvt^45iO)roVHk^x9&B=Lb8$|_ z#qcS#lR=SbW;&QICdTwLd@qAc3hhkVlIOSr;Spa? zeI|2-@G9@$`}Xb1d)WHmCX)l-!#m4=@FT2M4oumy;rWI0l#5-D1excVF6Dyq47So8 zJCC7=a_=Nye?5j-a8rZRkrf6ujjq+3iq=iFX%v261tQ8 z%+xP2EcE|ffJu1G&IS)kAys|DMniLQy-!Kj+b8k%sB zE<+_cn953*=*{)gmSVXh7jtt3m&Ji*hp#AHL@Y&hMV&=GMTd%x7o9KCS(&1u{77DY z9(|ZmE-%S13x|#Q7GoU8?~-+l_JEiRU6iYV+`OnIA1z=(&|#)4-=fo5@?9)g#$z5c zo-PdIX&!%EF1dbeKI@OR$O>S=|_p~L$j3qIF6s0ICyaDR$Qu8gD$du^0Pminpiz`Dp|;q zj^);^2g|A|!_&nT2Y;H@H6NM8(^I4P>NC&K|4tLus;FDXj{qHbK!lffJA5{q@0U0R zWEzLsZL=9YMk={>89e14lFoQMGy|Mvc_&Yme}>FD9nPSWq18y|MCT&sDJSo8rr>YQ zdp8S?C^*qgoNkL3z4S6swxAE2a2xKx<9Hrb)YoAX_TWA|gvXJ`;q~IG1tYa)YbjkR zZn?wNDI+dpSkic1Ah%Ko2v$xLLcidMpb!wM*6Q@i$Cqo_{kgWYXWvvlo_aTXKpC7r zbnwg>RabuL$eq2+6TRy%k|&hq%IX8sd}SBAIdN=08t~4cckZT9PqjdIivJIg$c<8q zaV(m~jwN$PeP###Kkj?3b@|VuKT%w(D$Y za|wNhn1PrKCWF`F3cE-;TdtI)|(8$V>^nz@;LAXaCtPm7PdcA-x!a{+7APU6H zP%wPAD<{ebalB5dlxe(?SfEE+_*LM_DV$Oc+v)!yxtBr4$}lzkl?avPmCco1mHm~R zsZz5fJo(W|7-1bDj_4TCHKKO}FEZsL=;sP@xg-`w%V|1Pd3j!DW*()=R9W<%*P~wY z=SB5WW_DCBr8}a3(xYB4d7HhY*Na|nW~ZaaL7E&ConRc4UJl8Y6?Hi1uQ|#y4`-gp zQXqK83*Y7G>u35O{J z)FwpQk}HfbykcZjYknxbBJ__g{`;)qeB!#-4OyMyolFGj_?;X=!;;2C&A}fjw5M$O>W{r|*(8vy&-LmP}tJ zfy`KDe>_A1PPqww?f6O*bo$71 zAAX324?jFb$dd@DkD(3kRc^=r!8LvqtH?uW!=p-xaxU@Wn3lK4v3oC1;io71m5W0| z%0(@s@E^L9{0<005tPCRsDv6kvd7{>f$=4CDSS9aDwY@7SKCk7nTht*cG6-;Vz=5Y zIpLhnoSq!k$mHZ$3vD*D*;-|dqqJMDtSPIBU8QX z-(;w5(rwf2(CM5Eh4vez8M39Uy^Ms*>dKnR&X=*BWj$q^$_|wsFFRkxca`;)(H~2+ z8@CzH8<}m!9meCv^G0?Xhvzv2&dP~g7uU-j<_0(&ja>I9(>^4>*%mD`a-6Y@307>X z+V_7@_Ac;EU03?(S$iKHSHP1#zZ)X!Wy}6aYwx|*x4!RNRfw#wxH*OPygZ%mghU9W^!Lc_&usiogdR=!1U%S~<8 zO&nO|HQh4yB#U3BGzH|NOJt>XuN2LSOKT18S zf0w=-i%4HKHkH=F4v0LtV%zuXHo}}6;Ek1C|IZ($-A|!2(g9dC7J*gL0koEUP46RL zIsUy@c2DD<-cYvdn{&oy%$tW_)oIuERm|;tXw|)~Yuvrxl`Ore4z&J@gIQ?w)69VKp{CLE2H=8#3;Vshwn zysN|2?OI3ZDK1xOMJb8v$3>mZZ9{I`V%uulQ#RHnWP6hpHn?PikPUnY5RYPrerZB@ zvai1v-9+Ok3z2i?B7#_~BZjue_Qp_CtRr?fHV|WDLXIzaF$PQwbiRsp727K?Q*opM z8Eq(5Q4vEn*4x0;LjkT=j+uI8gQ};vhRK$!PlP>Q4|z+n#gKP<00IG@7p{1LFxp1E zn4D#FxdoD5Mdwo}BLRzv#F3yN|dLk;e7AvEJ>p+nsK#DcW8PSBs&Te3~v_C|PW{s0Usj(_heI zBi8FRmMo$MCan_k8a{o+ne?t`npk%aUv=|6G2`(CI36U-Q0 zdVj@?*3q{Iq*qq0oqyw2{|?(N>5VO$^xVvJUvZBZsP96~$}sjSFtBm2YbS4ErCM0$Ho1Wb0N2)N{mk#!ztV$dvT#JD$6 zk}#DdhG3dt6#0_w5~O2Fz>G^wFcNJ!=_D!b0;Q#pL6n6+*lkJ6nJ5ww*b8%eLi~Qz4t%a_T_2z=hE`8?&w|H z_Kd!8;H#b&mM{6>PG8p>T|3VL1N+}aS<7dH=5I;g0hjdICrf(Y-Py&klvzdcwIb@l z-wfFT&xb+Jn8Ae2=4!sKn(7aVqOvZ*r{>k$)yRyAw60BXi)Fc4?(ABfE~~b(wz8Iw z`E|x*EXzsd^3#NB(Z>6V0Qri5FWO!-P=vRWZXf81vUonL2!l{JZCXd&_B!OR1AiUV z@x`FW;bQX39AYHGhqs534u?r06b?g>9N^F)I7Hk5-GF+a7y1DA!x0z+Oe@Gqj+DZz zk#l-_)|)35+tQ`$yOsUWQX7?%b~A;3C}^PUmXqitJ-*F}az~{(P+6{gn3aS%s(i)- z5in&oNwdlxsI+pbKmo|uvhrE8UsX)&9i4Z(s2I(QOAFy5*&(o1;sHaa*udU_O_a&uszD;IqLe=jXTz3}w4MRST44bP7h4IA|} z$^L7SUivDFV|(VM(4x1tY(bmn6bWDgP8x;FGa9_DOQ`;GTuqhtHYUQ9GS>uOARP8b z9A2-_9xX1ml@=D7Yz&H{5rp*^<>ZsKmdE77yw}7$wT)#M8^H$5B9oWx^OLH~@7Ehm zCOu)MheRglu<3#c9X1V^&Y5uBB$$vX!q`EN?e=VxlbfAGdplk+mIF;W>vFc|4CI_6 z?2LX&)3`X5s3Cuj86jVcmPixo076}#_@J2@m+4J;4aUe5<&(W1S$a=1cN@nAGSG59 zP#n*UFsL!2j5i?02q=s%A_2TZLyvzV{l-@M?2o>m9!|G{W}YW~60d0758*rKkA7OW z=ui8lpRze`Jb&ZBNmV<6@1#3p=x*m_6Vz|45|o@5czq7P%QcifTsd;Y(jhi5t-jCU@Zl-QJpysr1xHfguU_hzez6l^>ID)YF}_+m8*{pG~5{$z((FHPPwR z8F&Kr%@z!zUsVuc8J>rH%qxiyuOvb|l^5BPJmZu3A_U4q1j-vEut7`)#iJPYWeE;1Xlk*j@ZIe&vSZQ8c}UfA_d|R<{T8Le*KiBc&k7A=SAMjsVe77}*mRh2 zJ$+I-v46>N_&FQ~^z5_gd6K>db)MR_i#Q5bjCZTwKsWD5lAJ36G;`xepPN&RyV8z!~>WxaM~;_L2I(KBq9xj!olOLDE4G$W4ZgmWXH3G z>{K>u!P!{`$jc9h^JGtsY~z(MFkw?z2xAuxE0GeW36sf|47&{$v)Sl0*o;PlObPTE zVY_j_c+QAZ)cj-6c+q&($dNn9_}BXc1#V>tni5BuUjG!tmx*Q=00eR&Z(&r~B;>r8 zAyJfJ?a(jgsa#icfc;eZTskj(xp`Nj2-fIMAZCC(h$Ym7Z=If+jzb%r})3 zMT_LDmydQtk%@_#q9`9nF+#aszdx6(+Y&K9%I)<7A}gF^Md$n~IX%LD4X^cSW7;cP z)_}EI9mi3|j#0eAfxxA>9Q=5uyh=*4or3j!30*q<^%3w={werGE`x>`9xYbHh-8)}ohYmCSkLtF2#2 zZ+;@Z)GA5CeLLN%r?+T#e|+N`3wGYP@hb)~8^+b@T<&oOGj8V8E0|%eBtUb-ZWegD zItj^aoaGD*^<%P8!x>(rMEy9nVXfY1q$@@*vNqR7<4)s#MW+`~bb78_S*OR7wyV)( zL_TC>TqH-HBiKZrYkPx>!)cE7rwh2p@9e~z(s!TyMe{Sev+}$C6%jtfExpN_6tc6jTy~AdMZ(b}G8)ip z)GExYz<{xeK*}bO!Jx<3kM*9?cp_0c1hZcg1&v{E0usuWlThC91QptuY{>-h3>YxO z7;Jj8!JsFv?iAlKd}Kf&L#N@k0e2c!7_J*`8(0IunEVCF9s?kQVxP72uaXr4EKhtI zmQ3q$!W3naT{@L*YA#oLT5>Is!H`J4N~z&dl7u=5;ke4`to)iJ+D=-M$_7@IAF!9( zr{p_Tgx^Lh43f3N>CY}oUslw;_uet2mlnbc;D@)Q8k9RaG<~KdwRaR0U1mQ4{hd2q zKbC&z^*_0>IpLQ|#m7G0wDyP6zhi+rcU<~h`tsNlXQk&4E_rVB;>FSDMmrx|I#z&Q znm6OQeQ&c*- zBvb}68KXt0)+87vp{W*HIGe9HR@_vKnc`G&fANuG)`E)_)mw2!fKXgjRaa-RStz~! zf(>j+WPi=Q$E>*bL?=3Fne$PGlVsvE;YilVuoCG=Y>2Kmf4wQXep!YGTO(5^X|F?3 zZclbjm9ohdtC4Nw=z_3Q$edGWK#8hKvl>@boAdG=PQ=k(M!+5-0!BOSaZGh)AoyqS z6KQz(4aDaC^uC`Rv3a+2zUNr?txve&&3%buTha%mk3kEs!Y`Ic_on~r2{`>g@mM3f zQM!{ph*nHqRNXK`I(1)gez0%tBfa!V+XZmob)xN)g& z$dvK;ud$8fPF_uB$6dccCjL(mq(?J$FfuMfyZk_7 zIKvK`z}2di7*;{Js#;a;P^k-4l;3Tq=P4S5YZZ{2mjizu8yg!-Zyma|Yu5o&*3+$z z{iCU%qN@U(H9fF;h&?0K9DVZ^L|!-p=%x8%xon>#pvdSER3izhb1zkG?3LCWIRYH4 zkPePB(!b>I+7(X!WyQk|)uw)~6S~X5Z*{?gYo)<6JB9~e*zv}hmU*|Oi??q>oM9Q0 z^e5_bm1H`|6dE*Busn3%eO(VenE1vw>f=>ar3yJ>~P(d^`#ea%RZ z>6MXnHV;9m;1KsV0Mjtifb@*hA0u+p6&Oj4EUaV+NMu$BfrQk^3!ilN7=Y^dg=5;vM?_% z5Eb$w$!Ih|(TgyX4|9baF&y5T06yVM#1hy*_FsQONU$zEH75{sW?M3`)U?!|WRjGH z5|}m5JC8*30x`GA4d>h!+*jP#?e>~@UgOimG>0{;Mld;&8cmEiW%TpNPlDTv2Uv&^ zoxWGCvv^q&;6!P_lFGM_dY@ipI9dnh`V`rLGZCYWX=10bfo!N7%!;|!Byc~~mukXt zRDnBc6}3_ZwaWQjbSdp6kQX=oE+dQ15a5;7QKP(`oS$TrEauvbmSK`hDFZ6jav8;> zOCwxW?c~(uc1nVhy_4*DQ(2SbN=3+%J@CN09Ua=?gHJrMYVPA^>6NR%L61lJMp@?{Vfwv!^Hwq{#yB2Uf5iivzY0I+k(;Wv)g?>>s-^^ z{LWzK5VX7|27}fdi`7E#okFp_9ooabl2{4Sl|V^!p)VW@BV8DD{6f%UW+Cuwcwu4J z1RK9ih>N<4`U+Grqhc25s_Uzfen$1IGF^g;&Yam6jq))t$6~d-;1gm3w%|sA7$N6~ ze50>1*4W+1`f+1pb3=nV%am2C(bOVZT8{lSbMEkts_>Jv4Rm>$tmLwB&|#_J7e7TEi z35r@WZdUt3J} zyh_^j$@~Md@G=X>4grU=ia6h>D)a1dNPr&vX@{dG`PRX423AQc;hAf&TiOJx_9ef} z$w4{GTet2$U6=gez|Ic}mMnXE$F*(yxc%umlu8fcx;snI(=(pgcWT@0n%tbCF4QA^ z(y(Iw=#2vhknw;Ws-(AJ!?XIXhvw{p!TG1wu01t>%{9;$&uM*Ml8!F)ckXFfvtm)j z)~ZQS_K=FOWoll*GixLSRU`w3&C zh-io@V#WjuZwEiN3whzBJ=>n`)(6~_X6g$OAepGoit;1*k$jWdCPULvk!6?w@HEwz zdwm_gZr@EG=f^(5k(~_q7{(XCCWpgIzCS2lM1Uxtmo%sMItCmZ<1jgT9GG!{5j$jT z+b$Yelg(6NYBhD5E}5>I)VEDwQtEedEoe=)WRI!Wgpf(GUXeYK6hY|}fs&$6%7h(l zK71`SiK$hE@%tuzOw@=F!#MuJ+ui&Ee{cI<%k-_l(_u@>8x9vnM?ZPFcSj8Mok z7xdMxtG7<|tL8#V8kD{o3m!YJJ+(IL8NBPRmpl8HdAkp&PDvZn8(|O3c|m&f5R|@6 z)Cqmk@6~X6#L4N~KQzZHUVLWpvi0yi3H(NL@})E0QJ>V^e3MvNC`& zb&LaKHalSwne)tec=_fZEk^iQ;e*nzo(y?MpOIP{;V)7T9Fdm7&!ir7_c?S%N=joe zeCEs<>Guz!I^!{lL$$ZNquJU}jLuWH#G%xTHF@U*CNxE+ff zIO?c(taiNaxa&~q9QBSz9Zxx4bbRFa!l8~@9f6guAXb>kdAwYLw1Kn z$8kD~gJp6ma$9pdb2sMh%-x^M<;tj0)BVO`(m}R2{QS$Z}MO47&@6A7)kL}o=Pb7Jdh}$E3BWPU&P%P3E z=^)0C9g*(Hy2wD}O5|o_Jdza=^yVaKKOwmtwYOlP;9LPm43J|57YeQvsPqLwVR5oR zFj?_yFw$CBLA(qD6jfO53Bw-f zc>^^7Uq6LTqkyjpGlOcpr&2QlQ`(MG910IfSHJs1e+UXsOEHux$%BSKKC8dGIa0#< zHh&UI#;yE(5_9=S2@Kk zH9e<{=Z_zM>80cN`=3hJKDobX!?TOF?pU$vZ+@*_BK_|5)gE@!HhtN{l7IC1?|kp2 z^y(II@RP9v9mbUU=c+Y9@o^=a5At(88L z)@H`yIz@|>FJ`g4-ls>r-lS*stTUhVV*NA&=neOU z`@>m2xhw0+mAkS!(v>YT6?w~?W#kp|#O!Pz2j@88IJe&!ccz>@&OT?qbI^IwdDW@u zae`Aeyo+U=HYN}Y8E~svHsNeHQAUvuV$#P~uCgfUP5yW+lje8!Nu|~QiPynUC&+;7 z^cHCZ{J@fo_tl^8S^1DO_TYE$G&BudAAGPcE#1wD>^k_YBuP7$uYg~ITAB}kBvd!h z!b8%t(pN9s|G@2ev&Qz~vM+zdz73tyap}&O?aD4DzLMzH4~grfH2s(D15Q z5pM7|4AF`m^O~3j+BJ(ct2J2TcjYEEgi*Cc1H@P*L~vI_FsL&yIxt}aWnY-ZZo@hQ zG8oh<;-`&O>epc|BQo*vVWEj6zSDfunx=J3V`KE{@HBSav@6qYPQ%kk1QCNh#8ATZ zuxdo5GT`_$ze?qw7H5SVfrM8xBS4E_6crztm>qx3NyaJi)+<(|vs%4Znt^FHHT#>f z3pXq0G`W7wY)dxF1}$y>KMY!wPQDxF>}ojPn_N{dZ~xrhQI(-@`d{fQD^ zX7N#4w)+3gs|A#lZHhLvGT>AweJUdL=SBxc0l}j+73nL|tI`i7dqoZOLf)e*xBqSH zGT1!?rFFs|{`uMTeFxHI=oSRg^>pro1JbSBf~||zNT-LS8`AYTv%&eLw3OZPJXpYT zTs3}q;PG;P+n$E4-m}x^bXPCP25vGQzqg_*{v!Q9qN6~k3 zJ}$=XZ53^uZAaTqww-U|+Q>duV|OJ7G=SD=Af~yZLEV~ln!}oNnhTnn8jjI` zE|m=#+Dcz`e>P{rSa3y>nD&Qte9~fQ(_~|ut!Xn@xI|%s#D4{ofVqNJ9H@W_L2pV{ zDCtH8?R&f2$%+C#M2xxdK)~CDtz!v&6+`}WbOM@8YA^noT82=09b}WM9~MTji<>G zT^!Z8+FX_IWYrUhQ$A-`5qWYsmEBbaY!uBU7AZEXlK6xsAYY121u8?_?(1;5OS<+Y z9FSJg%bQtJi}V#Y^hB=h;$`W2&zeQOhp?q@_3N+xe#UHR^x`Gy(~2!)XZNmt`;i|! zxgedZ2EATo(xygBZO3k(xc$%No1dtXhQY`Fa@*#QPrW_7Xnxo7i@->4FO!arNOym` zYTC9vEBb%@VAs)E8=pG1?`MzgI7(+|dB=fjZAzI6ct|kuYS7_g09@$t1oK?#At*j2 zx=b#stBica38oAh1&_Ecu|0tL-H-Vv$heA#oVsB;wA2Jb}X5N*XGzIhW+=V#>K4lI}uIQ7S z7AWQJare6i-NWt?H`nX#b0ha8e=0+ul0#>bh$lN=MP<5W#vN^v6}@!I%}iEZqlBAT zNtNSe0Mus#n=T6*O=@CiRkcco; z<6kDNYqgaO7S{ZaiM z_cO-9{NiP`o@6_2QC2r$199KJsvc3Z#DCjlw_2&wGND#7D!WRtE9tPqI{S9}fE}mo zeZQv^q(&u@ltwnL>`J)m|`;8Y(Cfhf^l)ksQ?Fb08OXIBGc^1%+&6P607Hv_*@H zOA8Cj!Z~H+yUWBpuQxw8H>ZQ^=GJkzgImWTo&z0k^VvFV*o8S;PL7Sk;aZD@VQOo$ zM)YegrSuY89#L*_Cvei z6$62M-e9?8v zsbzc1;g)kPDkE-b5n5|o2|A@0>+9`yhojb+&1X|aPo=4%@+>qkBI6q$VZ4lwcOTrKVUZ>0-?mSH~WWq4wB2F%%Pu zW62mf@%ai(ET*a8S*CGuE!b*9wHs?OTN|qFtle04oV4A;ti{a9HaDi&<2^DVNY2HB(_OuOvw=TfV!GAdO<$YWz)23PEEVG@_t<{ zGa;Pn0+kcORXCG02h4$191KE@(TwxQ_Wu4ii@M*vF1__g^z|M(xTNps?$jx1 zc%(~O*wyu=)CYYGW?a($rrt1W#>><|;tW$fKEf0+#V|wAiA6+nUR0D{MM2MOF>oQn z80+=1PVDnlX|px%EDfR7*u<-aU=bOJfON!!w2!^W zUS(A_%(9V4!lgIRLq;RoV=;q`8q^X~Co|~Ga=Rlx=}s8TW<$cw0@1k=!Rv)8m4~Wa zNr_&iv^1)KBd=r^I{^HU0wRkUgkj+N0AK>np6ZklT{h8`Oni+gO$oV~bTN_12{VGV zOkqaLCZ#3^MIJ3HUC1?&sk1=oUBsAy`dV6W0O4}8tvpeMU2IailYVP#PUn|zym1k| z@WJWR8&g`7G^m>M>_f$mi3L*YCzoZjSlBF9)@*cVUC2UAmMJTq)sxkmr5d4A zO_yd2YUHDcs+45&x>`C*FEasPlIIjJ%b&C)lrtwPUBRTqP+5rVlY-%u8*lzPSo)r2 zo75wHDs}jF_w9I&0ylb06`({Y3Ig;`={)$2a+34uh?=c}nH53p`F%A(cm>+C!1M=Z+< zkwlUus$905tpYt;ZYxK8Re4pp$Fjl(8*L|Tmu%N;kCuVSz(le(F~FA0io*f3%#^`K98hc?s;yO(bV8`23ooyl zZ17TJ^?oQ?1f4(q0oaNYh;^ze*8WC%)mys%@8dH{Oezg49c`K2{e9_k>ALj!ztlng zq$3$#)BpU~GrPH;mP#Yi7BIr;4 z=cOv?h4fKa2tCKYIyO4UkUes|T78XsnYz>EFhQbLVoG7h8OBK=U?;Q)wc=hfK@3p0 z3&;oo!c!+h=E#J(b9Ah1vz(+%0Wv*MV=y35I2f8LFY-@ zYcI?X!M_Jwt`Pi+XRpk0rS8mcxoV?nFMiI_2 zK*m!ehQa5|K>R3>*^I9k;GE%t0i_IJFl@&_oWA<-AijvN;t{Nt8IQ8t1c@UOG=zq= zeraN2Cw9uw6Qwoz6o^Y!CMp<>5o$A`UYy&YP{HL*Rflc~Sg~s~dI`rY);9Fe9TXz~%*Nz<4g`+RPz)$R5~Je0B;ippk^HY3j)!Gw)x6*QX|kn*Gk))|u&%?1<2vO7+Q z!7vqd%aHaQ;Q=v=)rIOq?V(3QY&29KdNlN6=$+8r5VttAI`revi=mG~s&@Ti{g3q@ z=~=zW9b6nl?ZL&tr-DBYeiT&cf{zAY555!pBB)|n2M|%(-4wIrby$dSmDe`{|vb6)U*p9Z7#D zZ5m^kEGA3(lll`*WW1TZfGKBYFtg$5la0+yP0gg6Y!sWCIH$*BM-2^i*%M>3XS_iYT@TTg7v;VYZ;NCAWvqg)fA!gjqr+>PLx~aOO8XFE1+A@!QcmSWnERTsWa(38PjoaFAwJ$uIQ(v(G zk@om)f{k_IspNa&MsCw`YL5I-Cb2_(MUDLGl)6VfsAknu%*(z`#E)i1|E!nC=zjg^ zpS)L|!BymJKhvI65_g5V8B;8>pjsL0AQz=%xPyZLFA6+oEw9WAm#~{WvVyBz;%9(J%dFTJpD>b{@Wb86CWQ zIlY2jOYetG(n9GUzlhXAv2@~NufL#WsN*;2r8}FTY$4vzclB!Dn78-z+6O?A@^(LT z-{v)CwX4zHJ$t0nd-m+vBYk_u`c-WF*ulHkwxRv8k{5OZ4-Z})eFm*cA7HW=z4RY+ z3SXWwNw$KiW#%v`xN&m&%(k|fGM}NXEvw#ba?fs`EqiUX2qtH;rA5d}354LF6-_qA z24-AoBdis@SXNn4!_*Luftn#`I4MR;8avKXq`^Br!sIeuXgek5<`%_6aTKHJ``OlkBg2@iESFlQ<{U5)>%_Vm((a^N;$&q>M4E~WH?ElJjb;P zn=_U=5U3_BV|gqfD5C*w|A#myu5s$D?O<*G<{4MPlEB>SSFigX?&;ml#p~vP{}`Yg zuk__b?BV+Hk57IP9l}`c5*TT`H-R{ltzOKY}lVB8?T+ri=+>YEDV_gkN$BM;h zK|!c=?(EsEGut}+-F~F^gWC^&wa^-5+DvV!Hmt*K>Na&K7$UC}WJ1s?7{p*ON9(j$ zO!^#c4p|`@F%gefOz*7dB!9406e5L%6{=EPN}i00F>R9;^~Z2UA#`H!#Z3y0in(kyyBcW7mQ$}fS=JsA=Eyjs?XSO95Ldr!>BTfst|uC zir@0Y#H|Sm@Z@-BMLS}t%`yFMVkVOLYvlPUph;cIw#= zK+6D=BcRtwXESzI6us2yu&>V7; zYP((9eQ)9E$j0S|m#&<>_Uu+DE~`M<-@FGBg~jk+(i_c< zXM5&#>`Hdz#L;`{1YRVi$lQf*ek6Tn3;uh>!|4-qT5tT#x20?Fi#3-vU)q;+dlr}N zsN0i#bakp{_>->r$DSJ$?>Ret`i?CNYaU)|3vRo#`O=!p?>_dOEVTKMcI%uK%MQNy z3PCqq<4x*o+^aITnTf-Q;AcXRqXFW2a0GzY?$r_|Axo@rf8 zpymW4Mox!~dJQQ>JtFanYSORMQ{qibzfONsud-u3sebjuiBqqSYYPkGq!0>=-DJ8w z@!IV!94Nd}$jNs)3cCyU79K9VP?)91h1q7}C8iOXY|!IutBoL(R*|vBtv%L3>qVT*Dq~)OzeJ^?W)3NZbOzUvvq0|Ubd2K&|c$|Hu)46 zw69r*Y?!d^j85?lSwAtaco}8tI!RuvE;l2bK%Z6)|NI1z=uWyi@%?VbfC2@`v7gqcyb#IO*s!11-&0S#I0t2;L$U!3UFSxI)+ z+S+Ly4c!fh21LIMdT4;kT@anLg(!QoCa2=XyP z)pLnS_jJK7>IJJanbP;@5u=am1wGbdeP))AUSB;|_U(>}16n}5mYn!|wTHDTomTMY zCAH)w^;$4tt#rBbnbvPACk*(V+-i$zZ z8a^G0Eu~(#@iJ#Pzsg*R)YbA@q`fAq6RE4@#rXd< z2)wGAA|XnB8<-dcKBofZw;fsjffh-ZkF&xmVe({Lk4<1V;RoG#W~^~qhdIL8psTDDibG*fsIMdppgZ&*n(q`cw93CwSrq5h(kOs z#1RuW#pChbcz=8_J`z_OFr7c5$ty_4Z7zm!4nZR^lje{&D)ID(W&mSa6r@D=f)jJh%8($mq{`CbmjgF$Lqhl4LqdvSmb+QZ2OATEoQ)7pQhUTFabEK7X z`sU!R^go7U{Ntd$PThwJm>M!^mFYs)1pS~B=#gN@^XF319*Mh|C&l=Dm`{uZ7(dwk z#J9sT-#_2)jYSA>x;KKIxGX|)q&#tYyt%*mNb_JbOZcHZ&ArWi%@>=mHjgxC>2P!N zf(1$00;C2kxUpsknqDLRFBV)c3_;ULF=gtYn|)9`*ADgV(AwVFj#}H#%OFQZ`^NU2 z?U&kbx2yFO#Ja}z#-|#8+{m^z!s7bX^^ex$7wccI z|ET_MJ*%s4uYal@>umMF*0EZkp+-Fc7ZAzfZHuRRYNLwWF&?#DW$6Y`6aA>DZ$TF_YEQJAM=7+qdr zM}6ahEDvp`*~{6oP+3J;XW8vCm9tFgq?JuL5S8_oAr~t1n#eHKW+7k9&em%Enz#mO zG(HbBc`kUac<`WS*mKc?<#R}$?427-dM1r*%Po`4F>)}JFPp?XW3i=CYG}K3z5G8# zhN!ZRSSwRWEnR9$ElTHO{Z!4(#6+2i#kOI?gzfFu%}Fw)lcKh)Sw;p0DXVZP8Ct9k zt4Oj3`2}GWHCfN|6YdTnJrHA(@v9e`OW5XdsVgUWJ3Df^Y$Is zvZ!WkY{nD7O47&ha9M&~cwl*M^$#|^C%ucL|Nh0`AEfU+Av_!yJvEBE7QS>oH}pX5 zypVK|7(Qe!s)x4p6(skpd|!H3`qy6#N;jonZ|Ll*Q;om%Su$~d_0<`$r$;)(&uc$1 z!@udZ`=A(YlHOl`|GN)-e_HRh(c|pUSm(F;9C+gvt|k;mD>q2*ZrGZLfA&NhKq=b# zm$lz|f5*;;w#*@Y8=Lg+>f5viBHlbRn0fFIXPCvDY6KHwq{3Xj2rMd7k*Ub(cGJ<+HZj{>T(7MM9`p5JQPt0MQ+3e^ zQJ_8!9`Ud+ARt~?Cu|o6gmZ$*hy^lfN)QUjkdfqTqE^Eqj1gJU#O29EKza?U=Uh#v~_)RF-N zwFEZWS|&Z-;!`u9P%s^nlu#5UJI9al5QX0eLiu;)lj4RlA}- zU-~~iOk&Y!hK>6*o02I8CSOaP6k~?+|A9PBwQHDgj8>-8sl${{>EzU8xP1Yh;s`}- zOaldBTp6$vKPg(J)3TllSgWj%(I8fJap)wMw30?)5X2I zeEA1e|FLTM{=YkM`tPJu|2q5ZN3cKr$NN@#jxE#0>#=la=FG9tkxS{%q@&eU5C1^5 zWzRFax2!n|{{r7YFO07E6Lg@56kU?^lTW{^*#L;4KKlP#y`TFDQ_a-V_-$wIg^NPa z-AuYd&CN4?zT#|hGu!L6Txg_Nu?rGr&wevn$t3e%IE6ZNO@i$ z@^!H~)Ku3|*Il>0Zg1Vqy74+SUk7?zCpbOHx;lohW~xbX5EJ!`t_5^0U}_O^JW00Y ze9P??>}X+H753Nk#)q1UD#@6#P-V9u+g+%&tqPfv~LJe+4PhXk1u0~G!zmI?Vvbfb%JJpcS>2M?ZnyLi<} zG_864MpMDHtsZIU$r-J?`fT1%>x`b+A%y(v{^liV<3{#a&6c~NO&gK$VWOfgy-kxl z$J&Co-?|2~rBl~#UE2|oW~iPY?d$#A^x!|0E%1d7&0e-D8?WBJ_pv1#hTz9A zfDVi{{t|l7Y3at;t}fPc_W<8rc#~e;htIf`~5$7MG_hL!c zGj2=SSf|Zt)00`uhhtcwzsKnB@r9BxtCi|Uz)EXcGq1@DxfqP!gXZKO>k zo8-}p+z_qAvgx+PsX`b#oJK60k;$W0K!tF=g$u$dX}0u<#7Un>bKoQdVf5_-TfW-3 z2OocKp>${EjwfDPQPke~c$buv-h$jcz&zM?cN?$^7fRB6?x(l!T)ler>Yb61+v&Bp zKHd7&$VTaz&zD0fM5NC;3(kCaUkMbU%ju1q*Pz{XQm^#Jd?;dACPx}qU*`s>a^J~B zm^&}q97B*gC0ckJ@g^iGn$DQi>p7O_W)P1#d1fw0CnPW|@W{s6SijC}_Wxh)-3@#j z)t%`5IWv;1Sh6Kqwk2DBkz~tu?8J6#$1h2UMczctEVnNdQV28!ma<)*E-k%<^5N;_DczFovMnE)3n`oO0b);{=Zxfc zNi%Z%w#o1N2SwH#%^aPXInvCWIY$ond(n|(s43W#>ao%j6z*WK-WiR)Rxe~%jp6!u zy)9^T*C$SZwbz}( zDNpgmni7YdLUj)Hizv@GjI?=4jd9<$Wo+m6ePh4OQhhG;^~ttUu+AMy=jf;631=d(VzRW{(+$)r2`oIl$e`fEg|4{!mdD+efMB(lFz~J8dzFndnxU2YU z>T*R>%JqLYj*Da~hd$X2dbh_Dcb6nQexJ{ORBZS`(&uwE)YKaHw*`_t?t+5eUVB%U zx2wEO2(6=|wLDOMR9-u72{ap{5v-1HN;ZaC0!ssH16oVq>w#ATnkx_rv;?jVJQ=VT z)d%hh916S~cs*d>9yk(sHt=%5))HD8Qf~{1mqQ{D3WVHswV_B$M2$qY*Y2r3P^;N$ zOKVrvYQ@HV)`hjvgijOfHl+nYdl<)M%`3u_j)be8F{E9xBKc>)Php>C)tA ztS4NWD|PK`La+B*(t}f^`c9L-)3*$_U>V&$!PnV4)Cc!S?>8k%UyHFb+Ku}`8XW;+ z?B(=ju90gEqk6S0ifp(X^q($YEpE9-{P&~#mh8WA_b+c- zw{ykoz55$J|H-fIec*#*2aX*$_TYoYKYzI3zRxtTI$u9>{nr$S64n1u@EgbGbSsw* zrCT{qL>~G>!9yVMR0cxRt?BVtw1`Hr3N6ijK93 z4Q<=n4z}IbW^1$e%K=h7cHxnO<;3lp(q^}}DcZbRIl#sG+Usj?u6?`K9!PbaB5${@ zZFU<&RmcII*UNk0Qf(cz{qw}U;gjz}-_*k$B<)K5Ml}w|hU(`I%`rK}L)Bj@)mUfgq3TpIT#+e=H!J3H$u!{J~_z3h-#wqx_g zR81@Hmpw6F{7BMK_@r@X{9-xiy~~@Zb%>iCcREygBJ8l^8HdfIEspg&9R0Dywk0h~ zj2m0}lqF*2sOBc?jwGw9g5|04Z_14UlwSx6Z!jEGgTd?jgr~2zPxUB$BB=GHhfnNl zDNdb-wx@?nT;C$XEgM?4wd`y;-11C|V}FZiNjFWra=2Tp)Q)}S$o(+m?zENPvm?VQ zj_nq%bEqvws@b8Vz+v1NsM;g)e!!7CYvuLrIyrhmw{LO8S6VKN9lPA91yZB%c8hI? zZhG(F4F#JT+)rHgJN-MV{%7safAjO-iok|-`jh%;eNg{?*VQ8W|9gSm3 zyU;lOId035XY{We)rNKGaA50|qfX`+hpgoRt<(4cCP%JGpM~-H>Qs3LL3g*mE`6t< zqae~PfAfn}CmSNQ1uaf(LG};2-}vQeeW1NLT3xh%f1u@ayZ7q)=UhM4-&?c&|GC@w zA0n{zW3OzyE4f+B-~B%ZZyLPi_Cx!xy7fzHgEy+{2X9|+SUkPX@o@Pi`p*Ym(XYGY z+V6I^e(A^CgdC{j>-x_>e$C!3PYavY^p(%<-~M9T(tjQd$>y`#Q+NM(%Oyu1KlRlc z?)mwBKk40}enEH#PQ>L|6+LmOMWBv zaO_7h%^edvVtZq%GbY@zSevuox!$QcWlvXIoYy&3%_;i>aJH^(l|zIU*;*T09F0$k z4Muy^6OTF^g^T4z(XA|&XI5H_p*MSzg>i3F!qa_y_s!kfH@YA0KHaUU{oOZr-`TCn zJ4@t~7rO1PZh2=@cf4V~9D&!ZwaAmYuEOq?mhM7rb;Z)vsqrAr_w);|(l2~kzcJie zDAC`)v}$2$JQz=va4A*Ws_v`Ol&W~u&MK`$tE!qG4$nU-lJa`^BH>!JsH5Y;whKEw z>qLjPPM&#Lw@&Ts?3H6u7biVY;nSiae^HUY(ilptC%HLtZA6WTx^huoSz!wcS7+F( zZmblx%F@asmCsh%io){XC#;p0F0EhMwRGds?Mv;(2wXwg?bA|mZ0U)ms=Cyp2%n}X z6{V#WN5#rVlZk}UsbPi7lTg*#QqfNMJCj_##%*OpP&y^WrhhYnH+k2mG>D{B9h#pA)`7`UAnTxI6EI^wDj z{r+^|ibIOgy~y%mKmF4)98CYKr%wA9vxR+*r(zC#sydG8w|RiQ>Dy6j%sF=%C7_(o zb&cC;%H`<%gq*uk=56^^%BWAaJBPFQy~qSLIX+5)l$-v6fyq}q`4pFdSN}spToJI|oynM}@VK0jQMe_6AMtg3^b)!` zniG|(5_(B!cax-8tVKExDKG=}(hXo0Jp@il48_q|2p4$%Luq8#OoeivRvw{XVPT!d zTg-i4B=3s!_ZUXk``2yJGQYPmZHuMHbdC{Hd0vKkN!F z6F;uqaX4P9QYB~*EP{2k1=wIQ;aC(!t$atz3`YomJ9(P^s_Oa z{MEgBQ4I#wj_n8shwX_@zHxqJV31Q^Kgab1A;8WcsHHN?I?SdkOA8R$uif#s+Cwya z?x-&G>T^d3?`Uvva}lH5P@jksp4ncQZ23yDy0vAhbNj}KrE-kM*rI)mMy+VdGgi%P z0_sVCD6hRl%J}QOBGOaTWyz_P<8JNRYsJd03bcC4+X&kYIm7Y_Q+AoB{_d@7SNj>sLouclS@(hFiu1b1?cqhXpi-I1z~O`rPRs@-QA5L4)-CQ8b!$;s4CBN6 zrjYyLBzecY+xaAJ3{mY;Sa@qX|BzG%2}&>@v66oj2GEDw-e@T8!Zv**YE^Q! z3dg2;r_1^Bh|-cl)C*iJ=B`m2VR^We<((~4wOiJ5Ls9{rsUxDKB+C89lMHMwWB_TG z{NQkFY_VTaEmSGL+dHi`lcjEeILY_3X6gX;J#33Ku;2k8K7#B|k}_i;d*1|{7gJ39LQK=CTs=I<#5GZ$`~)VOZS zFRE?YH|5%2W7M+B<*M+u9f_@1!p2E(@oz|{wk$1oO-)@DwX!Ip5WpT@LPLXkTAwwp z#mmUw%5fls@1><-REn8GiNp5Xx-C&JS8hXmj;spaiaD5m2$*%0ih$-)trMVFG8UFF zD=Vlb*S!A3!3&7nr$H^OxXyv z376QzhI>@>z@ax=p;v!;bK_w&#V)C1N=WG_jBjWW)rIJSji}80<Y*GQi#ayo zt~wG9Z{Jv)@cS#=aytRDzUF!>+3F(weN=n3tDJjd90{RO!^w1w?@ejJ4@5I zXKzYuIx>S%50falqd6#7=2zc=xYUW;z0AZ~dq75Q_HJCwAAb7YpdRQ3e%sTS#|=JK1&wd(hR)yJOJT6#<)j2oL$(6?tNNKjaIVRnPq z@kuAO)0t~}hfdasvrDspX6?9=?h8LrBd>TUIkjKfTMNRo{XpViK^%vj5P#E>Jarv+ zrs$UG)&Q=T`HM>?fq4C}rKM99K)z1Suucx7aBG*AL5nhPSX*DM>$ZtIj>4nS0VBoa z%^3C&w^-<2puvV!=jeO(T%6$Cd9I+2(JDR5k9_J`535yL_}V*Dql@h_ch)Qmhr9Uu_3LVw1(&z`h88?IKUl zHaa{4{EQg@K#hHXt=$HlKC*AvO+qgB!1Q5dwXm5PkW>q-Ob@1*nqk`RZZ-mc{P?5D z818bXP`Xr_F|iiC?A^JjZw12ZJJS28lP53r^z>^{<5^?!mpNPvA0Z-l4hy@f=3Ke} zSdhNHmaN6Y%8II4&|F?E&x<_=CcxSrI$}IgH;B%AOM@&>KiUX{HpSh7H>#R(Ee~L^ zpN9D89@7wmmr^M-^7-lIB72Tk%ShxCSlORUAM8ff!h(sXbK1DUZb0*sbmdj^#3Dk6 z_k#8TyMsxvqh5zAV+k-Qc9xhIf5Pkt_O0zGv`RLp3t%m^I~TCMvWwMDBf6;{IIOP> z(}o$`I;6t+FV=d5$5L=QxGbluE5sPA1?#5XF*3|^U+lHvi;W#MaqVJS@{Ufr9e133 z9r1S-VNwQU$2YQ;|l1A41&^P{liG<#hr9|H=-R@S@?q%&qBRkkpvsRPbWa@W)IsNvQnw znxli|b@q%kXyR^?krPH@E;M`xx$bhj4m&fMQArQmP@A3i&VN_}Tw!K8vPN}1odrs; z0zsf%u!_xxt+u$_D!X9W5|Nxl=DfohQ}L=C^|KjsuU{stdQ2b)5#2xr@lasTV%~W0 zzjhT=e-X&VC~kqdhn$z$^zp;#>d);DW2+d|V`_8F44_`fxnrf~mf(u25?87qF=U5e0th+AkV}_(D z#*m9y-rO#U#}P_NBn+~SSJlqtWUg{#b}n@i1fQMjR`|*#F*9B`;u5-Bdnwgglt{P% z58jBK{~X)eN2G%?>=%|b&~?;vpR!Hu|0o1BKn`dxdk=@2Cfb@fJVHZYztOGg#M2VH0n&$>XuHtmN8SaE0=mQ=8XRXg|f- zI1?~Ag0a!V{QbqfRCi*Y!nI6iWkdH|6kpYDx48EeUWmxlJYD^))J%eg*Udr+9GI{= zM{N_H_ZrnHNTR`O+XP*q{=lraEseqx=MT7Cv#><;-+!G-;{MLRPFFnX2$c}oxJ;$tBt9` z&FdOr6mXKzT6iTB9HM12u?R}O`+0y*vQ@qP}n+QCAp9aBvS^N+wl&-QaCDYZSiN*vERM~`7Q3%tu%a<-_q69$kYF^ z6AL5fcxKsCRJhr1B)V|H)DZe@0DwmH*d7*SufqTk?^MOg1qkE1Pzb0`Z48-&_Emy&IA2u4}G}Q6}J?I!|?)sfDN^i#%)7CUM;c%-pS$NNrW>+NQ$|KdYpbIe&1T z@j55IdtZOeC)T>B1}k(i^jWTLvKBbF`v{YBcWz0ZThdFN%v#89;F7=esm-^V+n&r7 za5w+i`DUF6)9nXjp&|XJVaJK^?FHYJzU5_`HSxm1Hv^@jp?kR|m*CU(u@_VE!k4MT zR4%o)U>ubhVZM)f*x^Y^=EMvy0p9c5UBbO#XIdNv`G4$J->-jY6t|+v7(21cXtuy!?AcE9M_nH*1Bfq zE~nmF@flM1Z3M)TxYt3ZwRY~JgfDP)yM0@H2}O5bB$@MViB-rK6Qz}W1nwyi8`jnYkv(ox3Su7ry(l8o75n-#eK610R2%aOuHD+-~i!xpm0PR=VI_ zKIX$tI&z%qcP^n?w7C@MgI7xh{sVYx5xzM#%@>IF7STP{aXo;5GCMxt} zP)?hs3Nr=HfLu4R!8qc>+!w%W>FNhkH~%xB*$x^CIxH8NAXuD zZe&Fq%(|EQM^CHU0$dE%lbC$ZL3|#!mwWkRkALn)ji#O8uertQxjBO*?mXyxgt?x(ZxtUeORoKfQ0GUpas1mQ$Z#Cc#EZ zs>W_=DEmrmk9HpZztHH^m`pcHobw|J>5RS28&`B-{97ksFM(xVJ#lfj-#tp2_WFk_`om1 zOYTP0xlKVJ)e>Lq#Np|-^7>DgX{<3$ZsvnM7jqAb_e|W}4+aNa_t~{&Zbuh`SCiD{ z!EJYoL2^R%3JZ5N7A_Z8b1vt5b0yXb@W&!^wd=XrXB#mjwKmz7%W9`YON^HdH_7zl z_nAK#I=G_DfvLmA1z0fxnf94tq`M*bRQODLfO=aXc-B;2F)uRUQyra#=Cs<&Gvt(F z6Zepf&5e!Yig6eWYA&J)+HQ`|^T#H8xq5TFjC%*y_ic|=XX2w_!I=Xq#+6Le%V`vbVtBz$YJ3mW(wQ?B- zcQ&+3lOqN|u0OdfxVf39Sj6Yxflg0@!H!_AIKoW@jPZAG5Oee zAR~K2%XI|nB%1Bo7*)1ai;JHlDn={9s4_S6rZ#wWlELCmFB7(mM`HGH0nbDWZ%1>z zm5VXTp0--CxQ5gZ3G-lY(;wqaKG_U=vF%dhcJ@9mAp8QSnP7Y$8nwN>)ix2lP1JG9 zh2SxC%Tl_eHjx;J$!WoBv)mPQk500{G?}@q`OziA_*kvoabSQ(U!G zV;Ph0Q7-0o0LP);Bgj#d!>IAGJSfDO!LYiI+Zu0hjB=K%%Z$l6-=x;zx$165Jw^05 zyjUdh*yfWXtXcH0O%|ZA5(*uZyK@G&2>8E^1a5(!514u6no0ud98;(Si~Q)=OI2~C z*jaROKFFBz`SN`P)gE;R(qEIBnc&&|4gGbR!mikS&ZS!!CLvHb^*%#GA`9gDX#s{NPRef@mzKA}$ zZw)0P*?$@Z`srA$(}fH*LbSM(GQL>ru9_QMqv%Zwpp8*AA5ep9=GM@1skzr2!MdsG zQi^X3flck*yHR--#U**RhO66A)O19dQO&PzEG*fhzpMFcHXvQbT#c#SHm@%1cnsgy z-A69$Z58L{Hb@>T#`B;N2SckWNnNHXOZMjZq^oxo01TwE+H}h*=-D2N;oR*_j;d2%_SBvh#jRo^O#(11=V z$F4%K*ZBOs;_aOIEEuiH4+694AjW*^KQY25(yOH+H?#JX9SP{YZ%&3P$ zY{3muKANmu7hU3}Tp+HQC*v(vY)dJMi&Z?h&+%h@?7A*u)tJ&hi`*@0{=7n*5USc| z(2Vn6YEL|z$we9H25TyWjr+K0V3_ACHdoji4=ik5^ zk;5+!CRGmO%Oj3ba2pyG?c+M~o8~GIyCB=fs%EhJbPur~b)!ki(Y4@#hrTn2k!E~j zejK>JiW4LxNMPtrv0w_fF*ay=So45?$GTuz&xLE5LP)e*DNTjvW-vs}3+LhF#Ys;G zHObT8t$5sR4B3hmpBDr(oy~>G(KEav>Ur5?qYJm0uQxQjG>l8T|9V4y=ZmYBBvEkF z!4@=@92d+%(#M5;PpRa(5uk(xYN*On*Tpv&fQPY{6Jj)>j6A06V?Qsd8H zVn6%v;{SfIq#wTeZ|aRN86G2h{xakL>x0|ZAUADtUy)el(XSu2?%YYKME@hdum+LE zoi(KOx7lg*37+6lX&I}28q7l*53at0Bf9cBort?i^Z00jzG&aW9(!6zXOw9CiqI^6 z0C84;)_n&vE#wG7sRoc+6o*ITBr|q+nQKAb?GJ zpcd`ncGx16ZN7sF#JRngI;61bbqofQ;MKHtVs*D|OkpSfPXs26N4{e+sjAEIVP8}jAUCOzrhC8yOJ0GYtVk{qm)qFu-deZ+ z0Fok?&v9PVc6T>#5{7EbwsNFYmYznF*0CLJw=Xrzz&2~0V>>vBK0B=-xecfre|Nsc zmN)=TPae?J&|G|gq*tjb1)O1-ytSG@ zU)(NS#uj()Z|?jS?dUi{;VEbwq9|Og0Mu`Y0P$Iki|YLdQYu$-g=z= zYaWklUR)rM_}DxyTsn@4`r#c1rRnKdjPti+#7s_*8!nAaOs^!`DcoKQbwTCt~0_MO$!vSv1APkyf&e zebuCiSyP%5cO6KD1OO#NN`AFtm&Dzq0<9xE19J zqVgofzpvdm^?=I%{`TKL^uNE#e46Ng^^jIZP^9`!Fs6rRX6kXj6=O_Vl`$U~!dQJihzt z8kwvF>7MPU(g6hl@zTU)y9kC(UkUAqDoG$ziXJbnW{UkDUVzh*Fw`Sxm&24p-b$s9VZy z;!dQ+t;2Cgx|VTPO0j?vF%H_Xbz5B?MZ^)CR3k@Mk4D~Zr%^@tTGTd8YLj*(iWxKW z?w;U_eY5;b1)O29!;RhaFRw6*S4JA&>X0ZcThz#1El|Oa=rdm92u(>O6oLgXcBevv-`)!&YX-9^T?YrWd^)p zS5JPG|}v&yQR(&^!^Ns zT42!=Hf@_|PMHXlCe2&!cdDHHbkIcTmOcCQ{Vpb^*9oS$z>Xg!&bbPT9QOT-d{@%gm%|U_ zyAb`0eCup~$Ttvk?FRo%KCZtZAJcvHmGnP{d;|MT@xQUzpsR562b=B@pYDEP^X^~R zybk(<&GU8l6rtbPl=~ZO4tNx~|AVl}M0eclNc^Q7@Q?{U@{jeR<0xpQgp6gCIR64C z5GYz2ET^9u%SQ3ApY<)g?3ekebYciYuah-b1=hvRElY@GUKL1Vg z^zQ7?RVd^^ZaykYq3^tckVYWGntkxXR-YkbH4gK*F(}AH9|7%ErT4zgir1ll9x1{Gyf~ zrM$R;@E>%NMSM#Ah0fH!(245v$8%z%th(#c z{6Z(1%zs7an+IVa`{$q&H?N2>>38$C%tdmO|7E>GP6_3t2iKVeF+!NaPbweH%m2eZ zMePS=ANy^-Q|}Wh4VEN+!4Jd)3eol&6Fyz}W0wQaX``C1iaNo@iq4vxt`)KwD`rRh zPL}ns*MYKpw{2ni1c?$;jy+n>jcbbEp3mi&>1=Ed24RFhxQu=qF9&~iDzVe!u)Uvrqa-fwAmizVXM z`!8t_mBtqNB@Lhck_HBBmVZfu1V#9@Ti7q(!pizzrNNxyzFPF3BMr(Fc=^A>mP&PL z1%p52V~O}w`ip#}e~~Ys?f)lVzytZ{e~~Zn@5tBVQN;2OA|J@ADET+}){I5W{*cd- zQ)2WNIJ3ZikuN^s5BY{?6R+L+ev|L`Z^+m8K)$Je4*57LVc$&nFdL@|p(+ZRCjaUa z0c5bDzqG-ODDK0V$T~fATs2+2BfCVt_jPy$Y|UL4^s7@e#rrq-1l`$La>QA&G8AJn zGn6r!vw}Ne1c7tUZF?X7S?MFP9yUgk2qucKIaal=aYfux30V?8dWG(ZFX;%9qcr<9 z9ayF;jCG#!blYv=2^{Wf2$}b*F^oxF8rxbxdUWY7W&VU#t@3WY>O4!^z2_)zMvZsuQcHPJ)Dh+q7(5By8~#C-p_7hYc5hGOzx2;GVOuf0Af z`F*ux>_12Sg6}aKU8}z$KMIqmnT0*jmXt}< zLf;JRg=>Q7}mh#+#&Im5&LKC%4~JZ(B~)^m@g^X{nQXn=;*MiD?4IS zRM|7*nsaOCCLohUc(uG)GK+kVxqb@;WLnPGFGNG;Wtn2E>i4e42Cg7A4970_l!QzJ zr>Ow9ln@6&nc~}+>edstsr}cRP)87%_vFd8qU4ml1Mgks9tVkwJI~Ghz?>$H z)Fk6@766r@H%oV0!8x?z2icdGUkUe>u~s-b52l^7(P*P{nMGcFNTmsuz{p@zdh+_Y zt*75<-Ls(ZcNSMrtSxx-hng>M$0-i`U&V17(@Q^-B&WgnG5oUkM=12QJvk5!$B{PJ z;AL8lx1A`a^jE+4ap|vuS@EbaY2~>Ntk@?;oD<8(S@g5}a^jFl6+Pd5Wmo#C{JR8dtEQO7KAG?Mmg~w@5 z@N}sh@pw`|CSt}{t&nm|zSP+9vH)M4n+*1O9b*JPvFdF@s((+c9IEksu;=+LwqmW2 z+N7m;wBISKL3AMG+c2D#iF-hv|NC)Z*<3{oKSvtj2V{jbgx9Jeqc>pe@2?Mo!0Ui< zFPm@^ZGe(!D&lk7(&soL$Yd;^_D6o=C-?tMKn_-p|IEN$4G&l4hw-I(mj#z&w&QDj zG>ZLI7GxIWOBM>2FGkX=WT7vfka1(O^u2%b;p?*}D(|OD{D(FKNIdb;IS+gl-<5(FW%;uW{2J|*OC#8F&e0E|_ zP4s*%|B>x#%BtM9M#E)RQxHt|(OUN7#cqfC{P66y^ZVyNF(1*pxE*B)a{8@3x_I`b zimV#WcT&62@rVnNllIL~a_ocm_hKZTc+AT9^I>nKBZj1Qhl7?HwLog}cD5&up9c-&P_YPU zKD|uGRwEC-RR69@FY<(L$VcbI5EULS`5N0_!9QQY_tI39F8XJ@6j;$Z=xMIp?HSWz zd2-F{3stCoGXAH z+RLk=ygJT^CP?CBI!y|~Hlp`GpWeI?dtCPN`);XtkU_1ux{EA1Xuvo(aeVE4f0~ar z4?~|e5137RH*BNgOk!R+*iUK|i9V{lgoiIXKaQQtXw^AA*)h4qk+FN)?v+j1o3m$z z!b&ZE-?-ky682f9V53(errkMm*}!Vk`p>8nnRv}|BSLAWT@F?FzhX93zejlDO-;U1 zl$vSj<0C_!H5yJeHVi40bj%OqynO?x)53MkH`R5wH25Cs)?HNZqQD20V6c|TSyIlF z*fp2RDa!r$c$D_`*5~24+SuP%C|C&UX+?5)#H?SPERp!Uk!m(34#)X3$hb&twl9vS z1+BtpjWFv6KifK1^GdH)qtT;)L0>D2_XOdSU)*1&RnK zyG{DbAgEz-er&BIOC!wucDB@8fF|;S1+#vm?M=Z)u1}+>_z8n1S`pt|Z#Ru!O>ylO zzlT1av3X@8jtCA^gv~44ZpJ#@2l_U&tA-%g| z_?09V32MYrV-TZa@{Fh=y5L;8NP=B{T_72sBk`^=PGC^eH8^N~x0a zad=*A9nxHGdw5#S6x?ff6nM2Ji*Qcxj z%64zrkbyU8%qE-WDtLa>wWH&0eh(j4g-0%>UFLl(;u6nc`;;e~WX}4@ALKAnDn>{P zfgA*5;j230P1mjzt@wL)hfCTFkp^I5%oo+5jyUs6lx1igq(n=vDp8h+aMK@7snON>SsvMiRoqVpSikHV6qVLfgJI^*61E zo9kuL*Q_*=)w-21&A-btmC2#t35S@=sasZkRM1WmFp3TbpM0Z~$#Xh{B1eh7X-&@P zeoGrL+BqDh-zCsAaStpt&JqIj`L0UC)&L5947S+*<~ zlDK3&@$Ttzq~C5*nX=aCX!I-P>dqTR9=K}Iu0-BbIu#ahJ@KolOx}KPO7P$^UcS^z zFEwQiBlihSh1Fx_4+{>52vI!``!v)9`YcOdoqceYUp<;7F4cUfY0qQBGaq+(Z7U~E zr2Y;MKR3u{^OJhKyy2;VRuCl{Rsd#HbnB{fnG$6ZXgf$RkJ2_}D*{BFmY;yDI}^T;&HU1_-*p3g|nm6G;vfETvI_ZI&cHDOqFmy=++sFrbQr zXn+2}m|9kMp_c}N#*e(-Q*7%WGk8m%%OXN4AtGx}2l4M_g#PR+2^04ZQ0#;B0*=(PA@p!FQBPaGn>dGD4K zeb`myj;47GJiS@^3-Ri5@xCAKU7@AG;h$)VvvstWtJpv2=4F%@vCzL$guKL8hzj`r zx{a2EW&5!yA$95Z99yh%NpgoE1j%z3@$5h1(JS zdzzy-RV_YdTjw5Z)sI^HOO=b+5)EZVQMu~tcu_|tS^jrVSe{Bb6a<6e}_J&ax@0NaO#gfc7$9w2GaQv%gP&>^n~o0rThf zSDt%iu~8v$hS9M}#zO}$h7`muV=v!5QAdKCP-{@|v%lYtezk$c%53E4GeY>ZBvgI6 zd2Sb9xsplFbs(4?o3qG2ZFDQWiiUVAEa8NlhS71;&$fJ+Z8CSG?b{bga@wF5QJr?F zir~E$sh--gDHgsC=kA=TW)>WIMICGh7jXwD-&SyR6oj%;nX)>Q zr1WyVVc}zC@LWG;iuPd3t?a$rrpgMlwkW1&(``r~BBEz_PC^Eks`y?028Hd#j)pwF zc#v(-jl|@O)|1!)MrTq|_O2z}40Y+=YH|Gtd8P02GK(TLegTrzpKJLQdA`%VU?{e) zJzCNF3gXXBA{bFLLFN*jRBv-27Y1To}QJ!6%;!Z;++iR7!W=VHgO1c~)lkgbD`=DPZvL z_|)~1HB)3L>Sc{U4o0T+o{gH=+)z$YfoE?fF59Uu`|3dE(2>Q`InVcq3(BHXe#&}G zCtS)0y{cL}sB!akfu9|%fzOGBWS#0nuSjO9^&Jf~q?SX}*zxU&W@ZIWM#IQ_iPNJ; zY1DdB-V+xEMXew_d~t%4!1|mS7!4w!6>CB*GL7Z0oHPR@9dc?8uGm=3#W+ zfT!y3>Ow2!LMrYnw!apW5O2<1TrAuc9L|IGZ;%fgM5ML$Cz6w?p25rSqm%-^=a!UZ zd-RoIMmqRPnlwNrklvF$ofReb*I{q9O`I&O~`zovzr{+fA#%jAfOcSI_T=KPQour&$ygN6rQf z5%)X8eg_W9U7v7gbsDYB5UG9qOgmSh$dg3$RgZxWS%Xj~)uk&&xmVm&WUgRw8_1~% zDjxR?$=xGIGL-AP!3ap{aDYxqu^jUKXc zoDK|_F@g5o?HAHw_#Q&XbOXJsGg?lw9cgvAKN0WkQpYrP!1rB$|AqTu>*CCPGZW}S zEa4AR=^)#}n-HvKb}gcaXCZUR2?6hjo!^4{6II(bPuT7=MEpIl*_ae#H?cuX%DLIo zySa>Xr!}Neh__(dBCpuAD1{aS9M7t zb&Yuc8P%b%#$83Nqlm~}fJYL8?|x(gd{Y~e0={+IZMpt_(V{(LJqfow3<@E=rF+p3 zAcTQaCXXLsipPe7RM*%3D59&2yFW}MA*z7hc=>fKB8LL`mCv%xz^8d7ZA)(*1MGBxz*xdmoY#9V1Bf};STB2^}kERi0stk>Qm z$=HYN833k|zWOGN0p{uP1aetXx%gaV+TC33}k=-08Bo zqY9z1B|_w&kM`(;?GDe3eN41e%bUUNUXEe5_$c22*dMgQcY^(I@CpI78UP8|(6JSa z-IR)cF{iNXO_%8f^QSi@jtOTp;9Xbp??plBH_R5_JF?<8X&s z72z7Gf$9mkOVt$mfoCjOp7zCdQtt0=7dI~TVR{ykt~u4YAtd7!B<9n*ou-A0zD?xR zYd@vYULZXMsfLE7U}>tp83RoU2-9vFxL?eADjQcGpa`Ln7`J6z=#^^p20C$9?#@r z*_fW$f~wdNuXt1y$0kEyCXPVVxlQ;`>8IdC9k+EjK|@Up@r2IAong$`6R?lEUkWn8 zMBzSI|72&9`sRSIb44;eRp5KHdNS9mm4d_`Ao>M$lR0!sSSNre+6P6ie5S9@Kk2!J z=%E&kbKtqG+D4r1xpP2GXOTo}N!LD(G?Juu;$F>lFyH?6pblwB1fBR9ynzh0rlMuK zrNDW0I=OXnycGX(al)he_|m-31)pJLc`WSBs^<;z3OR8Px?D2-hb1@13+DPp>L$ji za)zcIW6Dkzsq*GJe4zRj_Zw?ToUBXk%VryPua$uxxNO-XJx?L^uLa&EJS#`WADthb z7jhivIvd-TDy}_-&1m{!Y7)OmFa=VNwn_Eq9U|ffR{bcgX1k+7crGB9mmVjVO0*4J3QjVv*q<0 z>(q0qpn4OeGrH*+#}y#mRLUQ}PfAt42!7gBozYDPE|-A3Wj9}d^s6=@XKD>vUkrw(4z`qgb!H5)S=@r!i7LP2_$cf-spdbxPqaJ$;Hg$dF)x#`MVV6*}khXGC8 z?bc&nyQK+IO*@-&CeTwg8Q>N?>oiE5GtS~4(0C?Vb$GTTn_xLQ=S+j1VFeYj9=IY| zj4|^lCK?Jh?das2rY{TZrNYe+$^Y@(uy{yl*rfeVoXF7U2Y2Y3)nH^n=TNWdSoSEE zuB9>_&kqSQ6)kI(RnL$j*53&~ng^q3;ZrN-7}sSxQ_X+u5wOCKvO5Mw=r{=~Rj|g= z#ooZ*^Pa{nS92}g9+tb^ZMbCgS~a9v8)DY$+lg6|OcW;#-en{WyF0EsHf7J@H{1`3 zxnPKQz%S>-NZek&q*F|vZ4XQ;jWt59itStbynzrP+dyQ6`m9AZM&IP;kz-AIvYvy+ zyA-K8M!5?9SAF@PrL1^#@s4`v@~LEXB~xzu_y!t=LFnN}=O!knS`9#fg<8YYb{RoM z*~C_L?Hd5bOfQ|XC{v%)h`k4PH4PWyqxo5n3Fmsm);*p&zoPW}d=ZtWB^yer7<%YpH zg3t52G!|)Y+T$YH^@k1iHZ1ki=#;ZC^?4@tQJmm-EY=529Bb$s#}})#km)>Y`^j3DW_AN&6v5? zGmqr!bZGQFQvY5vC#c(K%y}(4d!_Ee`MZnN2@> zXGl7^rb@nOw4z2`%15iu5V@SlH;i8`Dx~diRih0#z9SFDEPEWiM>E5o-J>+@>Ea zTb`Gfm-t2DeyAL`Hijea~6Fs$Q~%pg}Jq`?x$ zRm7$V3RTRY7{uDnoQP`8ZH26px{bu%(7HR)$d_^Zk_!u9<96a?H5wfGx1$6-Kl|EE zjwW96)l|yygJI3P#`tZ%qGNZATo-P{c3(Lxg!14|1kQH^d{Z3e+Cpn)IhucG6PACo z$-l;(+1S}Q|L1XMRu(Sq|74;d746RiW4L#Fdy>)jzz%LI)FE81Z7Rceu=JNl%Txps z`JFUmFd$1UMufR#SJ({2S?f2lNSFbNmkCacAhX+s)OF+2T~x6y=`DHUpM}yr_Pj*N z8)%yq%q{G3f|Mh|-=}NCWyCiJG&bk$;Kxq;JSLRPkF;}yMGil?I}e--x-F9a*m)$M z$hXayiVFTBfJ(}F-ixw;y>LeRqYmjO{;^c{z@7OeH2Z5K<&V`XGbb=I*~X(gj33J< zaj3`EZdERPjdw_-fOoZ-j)pggk6h3j)1xG(cBgUco|Kq9;-fWDOGdv#-hU+h^o3wK z_xjra`Y!~Jru%CK7)#Y6ks7Za9oX$n9W{3N0lvU+^vb0IdgxA{_dc~K9%V{mV!Ew4 z?XP_7kO9sj>O<6%e<2L054PGBh%5gfnNs|e-Fd?|=+R4WmcVR^-sx1&50;bT>%gL7 zQUvdDK@TERz;(g$o)3&eXsJHqQZ+B+|D)|KU^9ooEzvT=l$n{CaoSFqrp(ODOfzMs zDbtkODKj%OGcz;&?ces_-Y4CsU1|09>FTcHI8LHCmLq>Yu|J>VDGK?*HkIbxwXJm# z=`AIZ}r<}(1d*7*IHHuzle!gIxd!G$%f9}44nwGrGAel z;tbwp5s+FzjxuHv7~L4rJc-fw2k?g^|rQ09t(GE zq;bRuTpjyK=co$U(-BFUzQ3QnzfUMSQk`IMc}Y{i=Y{?Y&EaCwqyctvcR)Qe8~vqs z;8&RIcu((f5J_FLM|Np_4~}G{n~Z8g5QL#6hIf(>9_^|nNhrg(k0k4bZk|2Dj$Iq! zx{EvH5MyGt5bXGNtB{AB6^uKCc9_`T2TC$F1-(RAGwyO?*ZzhU3}=_!rR^I+&~utJ zMw4p|dgxY%X4nPr@je?3&Ja7g6h{0ypvA6>Sl|t2=T*@f^k#gmxEM)m*+5R0Qkv%V zFyZq`lEgAvctBn=wEfIn70#whcupIc z1pK4$?_$t2*T#E$Vv$3lLn6~d=q2r!*Cf5Fd=V3V(oa{_EN>UXA~Q_Z{;vsG(Mno} zZ2Y>$=evs$IT}nca7WHTN@&x?IiWX5csV04uiml z0>unDl+b7_k6vp7A&!(nreqp>l^CR&)*}2O{O})cdBj(1jTrzX8)dnu-}U`-WsCzu z?idYsT7Ui}dx#&WFR=^|61zy#$xdw$WWpk-sBX>Lwd4HYB%V03kLNV)q^yKyXK7c< zp}G!`8id+6I`Ah z0ikz97!S1i>A6K_)L_c^Cl1)gQMh1?*Qq(CnAo>0Mk?1wYpEDpq$^t!p0i{IOd{VT zTpBv=wU))UpY<~x7SqTvPcjWS?Ot!NS_Jv5L5>U+IPN}sNveF`;*SQ4{E;Kyp4JVj z4P}g2vKx^$^Xg@Y8U;Hzl@bdK$PKbjnu)0v$d38@nFU-Vex!TouY7!Wd2h>XcJ)ro z%C39iLfujxb;>l}!jW9{p+JI0Lck+)U}!&2un3_ux<#@Mla5QYP>x0`z^0JzgP{)> z>e%wq);Op}aU%_@ zq$ouTKoCZBzt^D3&S2wEVkNhp3oYj;w@ z9(kAUV-da9=jUMtV+NyPgo{S;s+r2x2Cqx-$y|}s-3_3NZ1x7DJEF;$d|Vn{tE;GB z3?4#dHx`o1`)zc53H{Ou93c&v8UP9bBH$L9T%P|sXv6tGL7V?CxXI4`zhW8v1O=Nx zR;17u;m}l$=)PPxTO=y+-sn$dPn6wNSsN>}1K#M(?p0*fQ!xmco8ZzBU;hP6gxeRw zoIVIu(mdx_T@N^l>0hf&kR*D1CCghT7zbV58U9SIR+;3<=s|(Igv&{uyh1?U{fxVo zOE%cdJ-3^w4CjX8$5=!a@V-9~@fZgm(F!#l-*=Hatm4(g)>vM)-|2*3LS~y@-!6uK z#M{=RG!)}yV2Z&(yWoa>XQKq&1SlUIcH23e(?F|4C~`j4)#!cP7?0cYQKVptai}ms z^-C$zmB=o=fs2|t^8N2>i|c=?t^Wjqe0)6rM;8P(b{=j{uKxuLUgp62sj9!#?zlQW z7q4YQ9l-W#`o4ylhoo<&AbGoy=+_^XVDg$O~;j>H}jK`#<#F3Zo7{B3G?U0Lu%KM9h+bi{RvO>u zS(r1u$g`hzQiUEEVmA+dS<9a5s7|?WNYWhRa~HWMP-oek`;A=8?}@=n|m2P}c@ z(Qhi|j>|s}y9b_hA1s~3;_DqTYo1p+VD-O*9iRVbyFR<&NwIJ(oPdL4n|*_nOt=@M z{RJlPn_eVNgNuT0B#KCk3rSj`DU8a<+WQ+!1lQsBf*t{HmkgNM3Um*Q@?uynf4Asf zfm9~P6`7AjJx?Q!D2yL}9y8Dr(4J~6%5FA!DkP+Kl-ZwmsgdDiaiJ8dd-k?~!83y* zg!L}7m-OYU%a<@pr1cD04>3rJQG?|h7=5R|$F+b;%{pOjB1va~CppMUj<1E?Eh&ei ziPW<3Yl7S_!|eO5X2L|Z=_KiwXOAMMd_hSaA`+OiF=nl(gbNri_yqX|6nZ{&{gfzD zOsrkQEVK*xMuCO#pb?C&nJxtP8-x>AOfViRvPC~G0}!JZ8+{DCpdWJrZE zzC5(Rp%~7s*b42+YL>ovxG^g+b$=5p9=)+-bXRkYKh$LcvUUP8pAoF@;;g?B{$voo zu{L}Ix#J4-r4yZe*jWEVO<1Hda)Xh@p}hq{j~RDNI6awJos;`P6X#-v(lt}(6lE)Z zNxwv`cwjorO21ke`n73z04v_`0B<@~=Z4xIlcnT#>~`R{$tc0{t{bS$StXRreLEn? zJgQ-;qt7hIQ~X`mF>Bwhp@w5~D?3o+$sV zUy1Y}^vO$ws(cGupv;ljrMRmA9m8_1x-I*$kUar=)uG&+R4JG4^_5 z3OBZr;*r*QF1+h>`4;LmyyX2wO6sB2WKR4lMJi2Nb@X!ip{PN6(wK2s^hJyEANGsG zFD{@7p~TL7C${$K2|(h zK3AM>yhHI_s31smgl{-Lzu@z}SB5W5oW;`UVeoSusN`^?L-D+k!n7Bd*x^b`S5Qx zkNTLJ`HL{x9mQpVuQDlbUc#XY3QnDl_0i_9^y07o?JITSiTTA&8%$sJJKTuFE{MPg z%gze>x#KqJ45kT8naDestKWrwGRVC4t;NjBuckOr3$iTK{E|6+>r=YT=rR14GLmLL zEp0e`K6W0w>#n30TuYxyD~85^P%Sud&{XXgay__35=3PgD0PDC4u%21D}pIWNCfm< zKZwMeLD&2-yIYZ_2M~+(M1$oAA;e91CH%@p{YCi4?;GadeWhP2TK`0+@*udZ0IJ_0 zbv`kzLW;57-sxt4<%+=ju-?-2fz`dsL_kvnLc|#DD+R$%zQadgq*_FrD2WPc0Wgff z2|x^5p~cAP07Eix^w)y~IGJ~6X$XNp!pq&=_+ZHFud^`BPaG#PdJtj}+=QC+N#HL| zr#lgGez*NV7#y=(5pf#h4DgJ1rQI;*cclb6MuFgP5PW-3xCjjK=zjcM08AiK`|mVR z;xjLRqz`cmKtcxV@=B6VaCj#o#(el7B1(*TD!zDrr53lYjcQA~B!D zi=rVN#`hkvMuaAOX8 zg7=)TKuj?~=%2c+=zi}ltSVXt(1ifUzfh77J3*+juZ~8Tf9`gAt!NK=!q}9j1CfiB z#{!Yf`|AmZ?+m|()>ekle=^`AVgPE42;~n^=h#O{e&4Z1ia=q697(i>fzbaMvxBJg zkW~RJ#^~}#Jt4M#!$1(!h!b?IIiTOmYVSCWG-H7%Tuw|NK6#u}4kK<5-(<)IV8#f0 za!(}KcF*UNBOUnxFtf{_J`yN9Aqb+=Lw$HvGG=Dn6$$lLo*)S!*rom?-Gt+LfHfB0 zoD76OG(rQxFCt82?Q(x&=xE;N^-k5MgK)9?uHHwS5Et)A2C8a9KXp4O=pA=dU3;XH-7#09t^?} zMACizxP=3}e$?Wff2BN)+n}58ZhA$G1VAW)2m%04BZkZU9dHrB;U46teis5LK#Q?} zU|$ciz%KkJ(<;2uons%fS7sn0F-9u*>eNl}Nazv9En^RAZpg{2|1D-`Zx6f@;)Lby zk57eFWR^R}eqsO(2u2XG=GL*-wg2ARD}C4y>sj) zRMUv02ge|^1<-Yi-#K*?+Etquh-`q9>e$=yZhK4JIno0I+yw*CcS3`X4MSV@{6E#b zV1;)LLqBfOKnU-0THS~w4>i5MP6>g~D81i5%>g`q<2^_>1D5X-x8Q!$JxC<|IPW5R z6o8~ac;PVduOtQ_3PeK~QuCU&s|pDFx*B`~NZWNaeuXAHHVk3e^Zoq63nlf6v&Uey zYZy|qC-RPXi~Qazg1XZm|CP+C6+{xbn;Ad@WCRj-hZ_P;_Gk%D^1@*NDS;@TkTigk zU0B{R5m=Fax=%h{nD3w30C=(YhFgx?uLu$RQ=3;2t_L=N3aJNH@muN+Bu!-c4rFOW z`VR7U@*_|2h*7{+F9u&vmdE&M87`Q~nU$(mwAm0?Olm$6vpsflF(FcLO0X$RDbh6V zrnl4c?sYH=iJ$6?v8WV&G2@-}yhoj;J9Nk9kafFNTyf5w5pa$9k zItEaYL^wN*0W1^}6eg0Vl0~sj@wYK$#C2|FPhZQ=mGq9<=`ZN7|4mfuxGcfvEn40c z1F_!>2=oQp%^v6HY^7>QKKf4$N09JTHMl$Myw`%wMbgCEN;b7}HH16g$M1FNrGLan zS(`SQDwwv_L5?UA0;g674n}#;cwc#ETFVcr2|R(V;s1_fUSe2q4LQ3l-Yf4~VnHK- zkr9v}nZ<8Qv8j+XjDU1Fj3W#V8jn0J;X0T7_VeH8{pSVe&dG!;F&!2sT#kx(yhqRF z`{fKJ0Xh$Wmr%u0Lpl~2{ny2A=eW|!5oZbMI=zuoiQMbdEs-)46C zif7N~*o9$UMK*AKv+!a5*nGOfZ`+?IyK{~saN~XJ!7vvz{T_cD$POBXSomGuWLMS7 z?UnpaJ)xlQ`1V|4iipF!*?v2bwKf!tt+^AhaK*A2U^V71$IayJ78y9kA!nd}UqdC8 zN~rH*H#R1ablrL#cjf8lKQbo}peOA88ar{L7qD_4$h_0?9(+W?;;8jqV^mX1gR<(> z`2@?e+uQSfYeeHkU%%q55;wC62)`wG@6t^HbwQ@fJ+FYO&l&T{3L<|6h!F!fyXB{T;YW{ zh1RwFr1P@foYR+6>cM>}SpU%RAB4gtCqMzitv2(M9Z%+UK3mJDX=ecrPm4?WExNV4 zp*SLeb5FtALO-dUtDy~+oq*S8gN+Wyn|2}N4vP-EjkJy2^=5P3r)KyK`sN{rh2@)? z9Zitzhw9VAMNLglcYw!7%p2ZQ@;S|7dP$W=pS*515D%Pw1U4==PW&jQVku zkA=E*KdXSM51dU1hY>mSaheJC6x8ZI>n-`nI_D9pKf6}w;&IOE%o5CMzwEjG4BP=N zf6Q!yZifpAfR2}KY?g(_h1bHL-N7$io;w3CRqc+~{%PBuV_}*+f-QSv$OJs^<^xXz z)jO=W+iBPSd)uYg{zhF^Tixz0RTXWe6YI&gj)oQQ7uP-6I{p(jCtJmyFIw(^>R?Zz z){Cl+=dGt>eWjXCU-P?hVulBef}J%i@UIde~D219Ne?HYm4 zhR3;L#8l~2(XI0KymS1ot-I1U|GIr6elq~zadcG+2p=M0zOLuJYVO(5@ZH$mXlH6< z{M^0`sdk%(?dE$ENCXnBed$w;MI)@${ zvU$w6554_Q^x0V)4YoUDydxhN9~vJPT?0EmS1xQVQM)|Gn$irjxNL!yObuZ(mplzC zlbsoB3pE+lnI>2%;h+^4VVqaPZ~}gxKaPX73^2%qPTq6oAHc`%KNm|6N&UoIi1!aJ z9Y+Y0$_pIl_0wLH=}^Hv5>FU=Gg zTwAJs*qsN-`lcA_>h1rf386>>=C_96?}|)#YJDW!+-iTYRu1N^wq88^@Escg2M944 zxU!ZnELZFUAD_hSgvx{;f)inEM`1-U-}D_slK(x4=R5J-0%R^x159o)4zL1d^IqY6 z*81LQoo8!ok{S$`mOcT(>R1ZS>)+yjhIdUH@Kj2iH1QMm%b`B@2sRcOl%F14av1Dg zWW)D^mub=hd4aTN;63Bos!D1?k+pqgZ|*ggq9xbaXDbUUS5i5LC#hjNKPT`v8P@AJ2nSvQDf3_@1J8L;L`E;8H;KJgVH~Q-<$(Doi75bAQ!87Y+3| zy1Ryy?&*xD-je4E;=LARMq>4SOI6@chJRO_Z9oLXOt0sFrDuLiL!avQ{+SYf;Jk#$ zftUId03lOBI<&#@M82m}Y0N%ONTa9w>-h1`-(q-md7(M;(LcWY#9?S(+Trfrvi3m` zmdYt|@mDTy#_~Gby5{2KQd57f#nqxmrpr3XOOYlkfqR)Ki0Us_E=UB2Lp5H0C*G9dZVU2Ygr#J&7>fe@vlYp1AN%_qMr zkEHrB3m8Lxrg?R_@+j(?(=h+_oplW^oB#(~kNxfK0gqS=6+WKRNImr;+gp#Hjq+Ms zgEK|Xcdis6STWz`d$(t1)SsVzp!|S{DM*{+!1DJOmg3!7Q|mCy^vPW?dAJ$thl}Skk3n!i%YMP^2_0X#m*C!pM(rgS@e$68gS-xYIWV6 zbz&}a&{K$N2oBe8oXPhpJD|`!kf6c9Af`aREIEX&i^Qrdy1!9^U zAg2$WUo#MVER+uL4pJWF?GG{*(lmLAayX_QFQl@(+r0y-7xzM*#N2g{b~p+s zdr4+qChjT5>`ztubuvb=P0i0z`>z()5kH(A_QddM0@6AZFB)%L-YyBDk>rltB*w( z=E2m|r9k#yW?=bD^TQ4~eB~_X5$77~U!$}_&U#)dRRsm1Nze?5_=RcUq_OdTG@mO~ zlb7VEfB;;2yH(&?g|!Lr3d=v#rq|LwfVY>V@>H&(3*A=)e-M9cS=g4>wq?}zYG$uV zuJSW0_3dAW=k%j1UfguXvqOLi*`HK2szj~v7D-t&|K+2{(roWfH%9I-J^>HdI9}75 zHUCi8*HXmK2=u@}&jbH{U|L(%lxMU~c6aC9W3Mq4kIu=w#&5E&iyX7NS)VvYV&Q*9 zxxcpKZNV?2rT*BN!Yz~*wA2WPG7{_Dw-N55(%qoVfl)vt@Lr)jh)phT%IZx%qP0F(>pIKr~cNnP#<$je&(Y3Kp-t>*Vt zpobymfAY>91`^>#JeYy~D)FDcdcPKT;NP(Y1xmmiR(L=G^Q2%BFn&@&N;}+eO*J#I z2Zd8?Wa)-5M7dOb2yU~12u~0LePK1FZhVPv^5b1%hO@L`l(CMo%ZIwJ$h!#?VAXAJ z@Q?J-b=%_GQVvQ+IT%m8P*wk!{=9khwPIinoCwEbddASbyos&UXNoJ8Xwy`jFikwj zn9IeY+ElgAxq+M8u32lV^w_3=%)F0gtj}5Qdl^lc>(LZI#b4OJY^C{mLj#%aBs^p7 zjOyQDFTiffIFQ+3|O@ z+VHwuqfgz?>(V0kbQZ-$y2Z$}_KHNC(lOt(VeOkH3~8iG<;jqjMuTrI7D?68!PImI z{>t3>v4`M8rAO0|Z=*U(lgmu=c^yjeYiL1TcCKUBv*nydPia$o;hMKP!HM2n^WG%C zpZcE*gpJmd#pl#$#2nOVnwgvmgAQfRWncTJo~)Azk@{RZPi(w>I~ zOu|;~{k-7h>m<)Rk4trP_m5SNp)v2{6DxPCEOVe=Yx)^IWEpR~?Ye#(!Ns-4bd&mw z8!s`%LD_J#$&I7w^2glytZP%-mDhBPYqrRUAiTBTNTbz_*u>|JpNMO;KYVs!l^ynT zwzmRIZ<9-B*T>e5x}+J{)&?(5mAp>olfXubCyPslK!uQ%{WX(pYxB5#BVR`9)t+{b zh)z~Ob>pQG(d_j-c1DGbd*!olzG)%0eMuF?)t86J(1Dx${Pqp(Rj1`a=MRnOgSlhT z^-A4OmIaNBHzCt_TK`UusTZECz?gMQyVq{}*dMybwD@%_d8U&kI;y=5tQ~clN~`U?tB>AH=KQ*wV_AtZH{ONxif+tW za!=fwPF%13tc3%tXIeI!kMXiXBdx0pm;9JJ>+HLfU4^ay#4g)A|3FzM&;LKTApf&H z{-0PQ6GXy6DWFt_{|Ygrp1c{@u?Udpzp*&~_p(X=ZH$6pkAgWk2p|EmDhq83J`c8$ z{@-ef3`5%0wpr)~7@l~NSP(w_?%oV!V>jaYT)Vm52|_aZ3N=W(`go$U0yWxmcD^A< zqc{I#;qJIltgyLUlV_X;&U}kk;cB5RFJB9-8fB5m}J^)+% zNZxXpo@ab^M(?th;}+iM*4?N2%_aCOY-Su!;n=~dV_lg7ZSA8!t`nc?u}4-U+g7xD zU^73c@kE#Twi^Ok;C3z1g%Q1|L<#i_N^vw6eUe|6v`m65VB^4{Y;TvN3Oi$!B2Pt`_2vVg6PND zG#jqCH!2_eEE?OJrgjz?Mb0*Kr5anev5&M&qCZfEY<17pb%3sQ){_J5LAs!rlROst zr&65?fpu2{7$@cZDmi ztsu5;oj!Q#pn8d&8j{wg+26pKu$ZK~HMX{4+PS8Gw7r^WCRS(JItRP1%ir9$;YtHI z8oReH5a8f!U*YUR2B^B8cFdS&|Ke;1{seC0yms+(9!KbjkGwiIQs}uiTt({yfNEwF zKP`L*a+QEIkf#JkTH$YZSANsbS0s(Co>^B)3@eR%Ec4`c6%Sv~EI#=1-=Kl?3mm3-HJ0Y^AlU=ux>x7-7ZCabSUZyZO22!Q2GCnM9c7dyH< z?-|*q?*ZF)bdc$DCL%p4PE5eC*gJ#OeXoN~XAt&?ZjPs&aN5E;AzD`+l99Zvalnn% zvq^xf^;b`Oe0JQ7zKmYC)zi=hl2X2r8~wC(%U z&4aFCpp(>gSK&K1iq29TYXi%%K%`rTFKozmPAVH8~sN|BVLZlhCZU`Jx9l;=jU~D}6Bv z)(%>`3Hq-*{NK&d`+qFM`;H{c{$HfQ_!c6VcG0wjjsa!NA3y(}FekDV4!-M@OnD{P zg&2fZSgIe=EVT?zdJayyjYoFkUct9d=2NRx#>`~VC|oVmM> zC8z342JGPjEOox2DVKL4M2R_9rUil*K%GO9V{NmR(XKW(g^Rs4`2$QJ8{Dk4(Oz+E z?U=az_PA@g9hxWGI(}vPG3naa_lZ~4VPoyNo3h z&7%y(Xm!E3#?5^)@do_QVoqM60ldKR6$jH6_SQXQ&yKTDCSeV-z#O#l2TU&)br79v zzao&beZi1_BLgN#dnWtrGS^a|l(c=N21VdyFk}1HdKKDkb$z7Jmm~YE!0=NLN3+F# z>jO;ARp%wn-&oVl;eOf|?AoWzblbnue&w>=Y1>q2qi4$6#eXZ*bHLrwH_&gxp+4My z7q?g3(S1`&Bj;*ID)&qz&O;ugU)5p%k#`U$ZVZ|C?)f@MR0UjwweRqiyAXy|5YBTi zVZjdZw?0|xuCH-7WPtMeZ~|`f0Q=t*-7h{bwoZv#f$?{cj;rzNRlu=GY7wICW<%Uh z-w#=YTLtY6;_EN*Rd+DZ+C5OvgQEBDy_SYpXk+&YM;#(QFHhcDD-mR89<8hSq@i_% zPx`jF9Q#o$v+(C(A=|y=E?jrz&3}X1fM{9xW|Q9_(%~Ptv<_Rs!A zf^kRZf^&n1o?b&d_?gE=#xYKg^-HG6ww%LNs}SO^$8mv{E-9`x$3ak78j*DmWYYQx zmN${7)#h3p;Jx2heR8OQvgshsrEzB-x=Qy`?INzpW79eMSIiBGhZqSdMhjS*&)}K? z2EbqOwb;JYf4!Njw10XP(QG-jp^N$K#rxyPlHXBc^_64#>bL)i$6np(cG8Y8j_0fY zws41gTDMy>!+p@^liBK0{&U;&LiEWFO5W9Q|MRP;_JuGz$PUz(d$#O5?Xlr&>{(@h zAL+aPoU!-}wDSS_3*(JOUk*JS-H94>G>`EJL)~*P1nks7tbwQ#AlY!H104~7eWsRg zbDoyIwf8+MGmBNgp`(+Vd<@Gs1<)z6foF+S0FtlUamJ^m>?(=t^keCa?h8OcAvY${ z;r53SsQ}}{)0(VWkJ6cHU?;-B8vVyy>?;E9matJw@T^yxZwPI(tpI%c(Li96~= z`-dIJGtXMv!kUjoo_+JRyz6t5!*B@N4h}vdZA-^F)Ec#-Ta`ZU|cf4FbU1~X`Td%5@Z^Y!zoj-r8b z2g#u4(RuHw+;(|@cZlDQPpU}EEh7jP97h#;ZAf6uj1lY5;ArmMkZ9tVnFc1Ek|j8i zSC@sc`LkDjJ373-nolN&_W9)0lf_7e{PyLhpiHOT!oFNh4r}>~?2yh`$;Qc+ppTKp zwKUpAx1;6CXPS`v&U1ZkT$BoF!hlk8H(49rALRi$O7u{bd}W3o^i8B6 z17-E;SV)jDsdXG!F?ndVTGYKa-jfzACb;F&_@qKDK#9Ld3Ar17>|jdVu}QbO?GqES zrD-YWk43$vd`US~4?cqYH8d5rx#A~Fd@(3CC>2{n$GJW!TY-MRCD|DOyJ4y=4&Myo zrC(&>27AF3>5^qLaKq+?BmO*o__)%iXe`KaNx0WUEtNI@+g9^0K*!5)S>jxR@EI&D zpeZfCj?GTi)xt`fYm*+LGmTaw57j~=72<7EqNSuSf0XG4HzTDI@_aM1LmGsVW~ok| zf$TEEXAC+beTE~@HRd6NCN6rM{FV-*yGJVxCRn^+DG|Vac+vR=(Lf_o&oT)9G^s^< z>($VXZ-sgIODj{%O)-Z;s{L4P8uy-lEQiR4ORe)_u?4-Jjxd{Xu7 z@Z_;c=LIuFGbwXM7K#|jRLX}@El7rgP3<4-(`WQa&e&3kF{;*4W-$0nbw+>Z&~4|> z<-t{Ysb1Y&V!bNTe>Rvf7uqJKH&Eh4^2OFkS7KCrSE%{l=|%};85CQ2wlnJQ+J=q5R9 zP-ncHI(w|F;h|)~t?l)%<`kJdD<%W&A3_()r}Cs7MKG3>j_h-wJf733mef2gyP33C;r6|0qWxifja6 z>oUR4+9q%aDmZZ6z+KL`^Qg!~5v+|762zGMEEBcO$P4p-lQm+x$g`~T2{h7NhN+=1Nq5f`^s%PP0;5GV5w9<|}3@R`G&LYeMNylY#qzBk_GW%)kH=>F}2S%wUWv0WtKDe%h{4 z3yHgQ;%HR4Vyd}uQ7tESjB9mBDcNNdmS6{ro88B^piqujXg?IG8=O7D(URIUE;<=T z8oG4yk@`5g{oGB+wc)fo@#5TtpC|(l&n0}sgmWDUMyZ)bw81QwS3nopnKL<)Ebj2~ zo@(9hzERDG6j?<^nC2y8VbXeBFE(2P4IxjmP|fq|pBjTTx5n!tXK96RZCirejIMtp zxe-`>P_T{`xUUh3^vA4dy!TgI=hoQRQ_HVoF8c9n?Ev1=s$s;}XFyK;>=ByZu@(Jp zUO_Bb-f(wr1Z&nW=jv5BkJ~SnVK4WQTnQl74yVaPT`rDuA+M+;$K&15aYl$vwtBAHik}nK_in zqjgxTj2&kF1U9@SeZQZDtQcb9sl@&y?@ z0EF^MgeR{RWpOt)s9I8){(}e(C$Yvo>;SHoN&3mBu{Pdpf|C;8nSVd zC|rO7gz5h!qt;NESX0c?sY;d$4OTHRIr{2lr>I`BN5{UsYVe5*$b0bVGS;M!6jdO2 z2WO|i0)#dMEOEyA#4ifx&m3r37^YU>&*<$kh0Kc^|D>cU;q32-_q%^%`r?jfsk(^N zJmHl7&X@=RugQN|qTeAbPw9_WZE4{ob$T`XYd1J!D+51isN02I+{ZR;w%+3PS-cU53H>?3KUqjQvn+WkTuWwVy@jsl@8|Jy>s1^nH+%vwmG#@U1&YTZX%J?G9Ye9w zX#6+9kDdgg{O_eU)UZ>NE6EwEWN3WQCaZ*R>ijA$B3fkd*$F5PNxgI!P1XpB!EQ-W z^5EP*vI>B4L z^xDB>+r%txa~RpXMfz^VN(>s&OMi{^8MkiE_EO0-+U`r&w30a^?gMxe zxu=Oo28XOKWjx|@)a#$sS_TzrWN+yxhw2futL*YF|H?BaBPTMZ`H}O{qb*t)Q=)`Y*EG7dGwYS6Nh-oI6-Y@3E$msjr6JrYTzKhlog&70b-7_WQBD)2DHL{P z4V*6WwR^{k9TLna{vNgAU_kh+&0VWc^mg;F{gqOQTD^v=*I|H;p*NtGr`0D9SB;ew zj2!b!IWhkSs(iCh?H7H4-oV;w71T_k{8Z35) z9;H=Gyq4B1qDB{wdW2^uj(N`|`gcfP_-@TkjFd3WBT7%VHe9ULkJTND=@Ka%%Qtq( z)?l+dIiwvuY0*T%$419T$0w64$`C0m;7?zyQ-P9@s~4q|buBBi)S9FhQ%{!Cs-j>1 z*EkY?l`+-SRx2^i9P*u5(ZLz3u96NM9pW%)#4pLD46X%iEfzV5RThqhNP$d8`ZQyq z3S3A6H8m}zoy^dx>_JFM*kd8JUDT@hEa1E80@LLj|L8$+mrQ0+8-I<)xslc|TKU7n zBMhu~$Xm|g+`4dQb|0a_s)=cM`D9)G(8YF2M(+C3-} zTgbLb#qt48SDWeuz5(R$`7hn@)hG(cOLSj$nvgnLW_PiEw)Qi4jFX$J(c-e1iK|26 zqe7!HqYe$XHe6A*C)Ey`LTeAV)WXzs$R}2hc}cr5l}3hYP@Ir%$DIAF$b=0_ddc)I zgpzj2#y?2SgJUFxt#o0ezETU-XLf{6$&-a;PhPlK#ipRRQZO!**M2jM zmpd%BFr{fgU1Fu9GV+JBvk6<5B!Y>}hMWCrEV({`T<~{y{Z6L8Q;dhgu(066!c4Ze-N-_4jB`pA3Ap=2{gN^vB*6ScAC)>fo&#zZU(+n|_@;k9`y%3^W+v9Dz*k8Y*QX|iv+YOcfAO`0;*b-*asCP+JFtY2%Cv=4f$e8HPJ9X{{O^)pt( zI|CpV_o-r+gS+oJsG8FJtGo5;a$eiZR63>hCg_mqmlmaE;g{mce=;UQr%R?s8;_x5 z;ZZ7sjTApI3f)hd;e^s;S0yoPE=CWQ&PTX1Y!OEzSOxr*?}z$<3e&Xz)OT=LYkm0{ zPE%z%WcEO>g6_i$*c=HL?~sV`n2a!+!i|d!~O@(m`@_8vS zvW+?Prk3mlPZz-Iq(J)+o2qib6ldJyjR@YVu+gpZ4yykcC%l=`^{U zl={YQ<7b)3Khy49OWggtO>9cOkI;?u&S~)AA@cITxV=Q3213H=;Wvo&@)+|c336y| zy{WI>e&Y9R73xj2fj*7?sC0CD`1o}OI?~fLwTO~a4u9je=%DX$_3DODW4l~n0Z9f$ z+k^7yZh7Xc>JX%~riJ}&x3YpWcE*(2H^c)3^)O*L|EJf@(s-yHIOo?NArvg%m}>tb ze9(S~-G9>}MP?rpWfnG&Fsny$vNVg(J3He~)FYpZ=>0CClyuiC27%Whl&G*gd#zcZ zxI(pL<36isgOoFhG>$~YZG9G2T>Kmg&w15zo{)H^+HT zzN_-cNO*YW97zhf)N!k(KZnV(Rm`dC?Gf$cToX;BLs5El)!o%-)%0mv7X?gB^Vup; z%t_;|Dpla~z8x$}Wd-5_g)>&0nVkZ!Q)b*54ee1$*73aB>A`=ieyw3-oVy~r>TH+f zXY&bmh%ywHNDd&saxw~$SY!03sI<-jgf~sRLd{|t>D*F(Hy`eWC@7eA#gK6+R^lws zk73dz&Lcz_51FtI$`tXJD$cLwats~rSiBY%Kpj)~&$8t_GS?MpOCrfmj&9YOZ>}VYI*yacxaA3 zVD~ajnuV+T$-|O&O0ClXtQlD4OLo|D8^AW|BYYF}(W-~yY=o4G;w#jujMQXBDpRKq z#^S_JS%i2S;ddL-Cj>aHVT@s&yPTZOnQ{@oZxmVge4n z7Z&w<&8`}m#U_I1{XE70gHXJ*!MTKaoga#!BW<=0^Mn7?y!h3PnJT-aIPp)Zew*|- z4jfVQ`%2f^9*TI8D33wnQcC*13w#v`o=H@)7(JisB(CD^cVM@FMueh85*Z{U@b_)ujq?k#OM)T{ng? zVMc=t41B+Tl_F#0S>jmvmT%a}jQ2K9{%h+gT%0)-Vms0Vl&C={Nu()7_O3QLjR@-0 zG;$`U7(ZOvlDsoxAcgZ`K)P5 zo-=TzW<~i0J%C6)sp#ky%8$XQ$^YE z2F8k`%#yh^6ehobdDDwY3H}9UGbnrb`<=Rak_{+i*<88Yad3@a*qD`}762(?)Xizj61C zOiZ-auXt+d`8~Fe7XIy58X+fKZ}`>q!$ReYpy6$W*=lBTH}2bSLvTNTqsZxBP-T`< zMD=QDuqF@4yLlo+dyDCBfnBdl{`y&cYQ(pHCK5Y+hcky9Vsv3vfm|j-!NuWUp=walHi|TSxh!IZ)A8( zM^0{=-mSfJDde1CwZ3p61p(PSTQe`7)FaOCC39@*e0FB7f2e{^inT$d6B$tw8xi9j z6Wc&TQ-O~4RcTV0MbUaz>}#CyOY2j~Xr!i|?OSWinrUF=n?v69dS`3QnV8Pqmv*N0 zTe;VJ`}#kK6&)Gxy<+ZQjDPb9Z{wEAVyrQf@gw?mu8~wOOHyt3n>I;gb z>`7^8u4(pI!Upg36jydenEGS`g&d9|kvqeIh&vI5FEEReS?jNGZfa3K<7ZaF7Z}0~M)y zOq~`_Se=Ze6Q4@8)5eNKu2_XaOQ*UOoG#7but#Jgd96DGWan`T)BC8`RcN28)IXh^-W$}vTzl%^28>hU9|4O#dQX96Z1-L z=#F6dDs~a^GnS0dhbIP!=K1d)#Oz&NTQ*_K*j2ZN)`TF7d`sqn2vngX(qrMW2nEoK ztmX_1%j(66c6&~bl+@JpF7lq*o&n<9d5J=5$rnFODj^4Y@D0#|T(zxxp6y9e0qKxI z%6Gaiad(mH1Eic&r+3d`JzDLho^S~*=X9LslAiRlLC>BkS)JY4w6JnqtS>t|CAT}+ zv^GY`+IsY`rzF~GM^x_9Yqco~Yo3*UV9@xad5N4_Ta=iWn3oE|hl&*Xp<EUbsq(ITJ1X^llGIbz`(MR!i+qg`kNn~?#GFnUk%F~X2iD}1#mKKuNQAL%{?~GV}-Kk4q>=+I+ujMW_+Jbo6#el zBSKLZ>T9}j#xO^iI=83BiNyLihtbijH|$JKXIO`h?ump3wj0e#Ok-A(NOg|1NO$P~ z)03&r4;>B##W74`@JJ8BNZB#$Z|sjitkt4zXF)M@mY1Vp4!_;FKn<*p|eaV&YjjE$=FYqKhj|9~qXimHqIOuAU$^Y zWGc0aX0$AyINWDe$J#VzqRBFIW@d%?pqVkdTpC4^!lNixhzzWP22vFy zKVN7bJi?r3q%z6sno7sNjV(Bx#EwjPc8fIb`qXAsjI^O|cBtklk`{V@Rp@<^CVnDx zWtT#-a8D?Msb0m*53##{-9(a?tr8I)M)xW8is6bB=S-oDJY!>Ell9RQuYOTFFHz8BMn^e?2`s?hOxIPuKcQeXi_mFHNBD^F2CR z=7ov2a1Gzs%L=EHQzA`kK9FU46UF>Zo*wM`K^L<)IEUF7EL(T~^ws&nWyG>+(-l{( z8$Ugfoku2+qW=`iQQ3dfgxpK_dMV3CRP{ z3A#ad=tcHFNn2YWq;wlVFX4-^#Fm_FPI0kpnm9lzA2Vys<^qEzmu~mCL?!E?P-N0@ z^3I*J?1_mwossToO?f6s50j~fgzb81N?KZ0fRu5nu3Sz=MpsXE=bW4jI#Xu!<>V-Y z!K+f7>~h(mYuB`tv~azhMhbTNQc~=+rth`GSI|@1lcr54pFt{O32U<@0!K&+$svrE z5D_7Sm?dD+niwT(GD&(#Xy_DQZZBysX)om`iA0k~tcje`Sd`c~Q?0JZB#@bv$t1Ix zG=U8XMRd(6l)9qKOr>6-RD|0D%?hPoxkuTc6e%MaK`Bg)Sdxl*DTgShDOn|WO6kl; zV*~F#T{u1Aez@=*@60bwr9uZm=Z(zEHvK^iE#ksRn1*a@5r{c5s1jzj;%L7>N52bt zvcnVV^sf@a9}2UDj~*%FL*5J>KEm+Icu4Qfw&SflXLQ|4P5khjw;lk`tLg>YMxnJmll(l&<~4W3N9KM`sNOX>`WY4 z+~bvduIKtsxbiSzp=!s?U-ts3yhd>PG&{1if=#bT!!B;NO?g;*>acP4G1V%W^g{4UZ?t}dOr1W4DNzE0XsdRc(<-Qm+~va)H$ z&Vp>xjZ63G%d@6sEy!ZCxX#%{S)4VaD2vXbWu+8|Ayx?rt%8YR6_L-#3I%{z_@fLC zNR}|gefqDcXlp@}J6rgwUeMTxK;-YL=zu+(@$zYxv$XM;kkcsPZv=#fh}2Nw&PZ7) z{VR%ax1&_}fA~XM<6ln*!$T+iAWihm`lViBo;v)6AUn4k9py{&Os9wWdAT~`)Ond4 z=G#S~#6`g`{vTuS9^ce;W)1JlIY)P$qx;pmOBRxB$&xKgwy_Tmp$g^VGL%6CgG(r- zG{fypGYm}$r3|H%g5M0yP)fn2Ook?zKn(#mNr4}wX(pwC$uN9OCLs*Nq%;l0P17{N z*7o=9eI(mt=8x}JY{^14srTN`Wj$-H{n7gE9rL!%SsV~v-G~-5zekp(i%sTc51nm(6oX zSTJ2GEa%=Njb!7MIj;^bKYfmT^lDZ1ZnuKpMek! zU*T}fpwp?oUCP{Cz<%s^^L34NN>UOVp&q*%-Hke+Qy@JZ?2wJ+-3BNc&KQt{4WNM~ zwQz{Ws5*+uh5&>5hXJP$Z}3_`DK{9fQEWq|R3+u48KRS=<%R;@uAit`tH|A?`FU<4 z(k<;xDzUCs#oQaRs^Q99OiQ=3rd)xAsRAomCx&XQmMeo5Cgq7z(mi!~Eou zHE0T=%iQ9<}l+V%db^FM0?4}y_Iejhx+;#Eb$6`qnB|? zm{u{)A|GrguN_;^c@u6Oy^D=x*3ClqdDyod8W*jH{irQPK7Qx!W88uR+vnpBvH}RK zNqtlJ35z=p5CSoffXihuI>i@DgrY&8Kj?S4ye}~RRqt_6f==GQFsKS?Y009~8G}b$Wnzz>8?t6YvguIX(7z zoxsKxxIUq*bBw-QF3+VQ0e02zu7A58FRedXf2RKZdTws`VEAYluL)laza4%*%z^rF zxE^4;pU(7ApL4Bqz=-<-0>z3Y0{_4X!{lis5Az!TWU1dLGwF>=|glELWw=60dT=3i|3l~#}pM!5*X zPc8nW_SeC(nJtK}bL;nwp4(SxgRwpP|ME+F7Ow~hkBy$gog;_QcRQwSE6w;zbo}n- z)!hD(<@5vox)Ry20e=8bASp%u_+NKda9{n=w)td`Jj);X(idkuyrFUD3)^4V4phKR z{#$iZ_y;z20J^{o^gY?4x&MCMeKt`vI1D;nv8_$z;%O^lC6RA`aD~=jLqa2cPP^Bu>4Z*(WeLiLAv*dX> z6qoAbY{HzAvN`soO)9nx!K^%|EM}o6+nz<9Y%<%PeJ1lq9Z*LH7f9dI5j7a19WC6nL?|RC{E2kp@x<=LSVFMi1dX8y)ii$E z5NwsrW#8I5SXam6wFn|K%tM|PaP=kj==PWR>conX7;5~h+K7>D=`=0md)LuTUYp%g zY^N6LYBQ7a z+P_!0_v>m_R?u3Tpt93AT3@Z~>gmauoTwduu`NtFQ}wCE!T1-D(H-;X!;d!i*C)}Q z@0@=HrUNnZySmfH*lO20!7WO>Hy)-f%KJ_pmgEO;-;A<;h+t|^u z4BHWUX4T&Ufx-AUgdYP-jnf9waF=Y*^A^2XvOu?4tD@odd7O&Ja9{}b4MN_|nihw{ zZEl!Sj~PO!!_X59HhFwjtDB~L+2eINd_F6S&OV=oPlbnIaj+auvxiucJ)kJ%dOut? zA}Q6ELYY*53aw2+F%Hu)n2ybj9gUrdU5xQ!Y)x!;>|pF-?Cse5F_jL)q}bZn*%&9H z_Ys0@s%dLEI9z+v6!!CWPa09LlIt zLWgk(_R4xuHmlX5L7J58^X`WH5G=?+n(P}gph;>9H1#(PG#zUa47jPOAr()>t&WH_ zGDIQFXo9|3Dyy&x^HIP{JaXb9KLqo#whRhV0XZ=!&@Y#jffWX<8LMo?APNJ~OjM5c zMLB=5tB4*i?k*lIo+*wM`9LvKL}JljL|xz_KqByiGXPtoMF5IXD;LNOG{CtHOB+y6 z0~8z54M>L@ylzo+QwC_eY%KeH0XY;e1!&_Epuseku8~+30l~UzX^>_ykJbkYA((xt z0iqM7rSfh6Yt=Bhm}KoQEhp2;Zj)~3q}xh?nJ(OxZfEI}iP~W@c*0kSG*zN^OAuGz zWKjwV3a8Ur;tsyEvy#|ZNkI3eJu??-j#M=Ez;;Rkn)tk~I% z`jWZr_vO(S@9yQ)l?1xN{VVCt=iA^5$QT*9diQhOmgm2>@V(9C+AV~*(tP9AkKqyW z@(V9;Z4drs$5;Pm^PRl_0`FM8>K);`zyx;7lBCrFtXA`SqY(%^4_{!2%;G^A7->4y z10y4F==EAj01||2;N$Qj#4>~;^h0FD5GqVQfid}X_3Iyt$ z&bm6Q{WSa%FaZx-4tQW18$M;?O}ySBS%%<4C#{mGRs-6-pAscev|6Va=r6_q%d$o< zV;loO4-|0%fbFub9E*h_QpBh5@J^OJ92d|8=o>;H06XPS`Ai5>@F^YI9eO{+8$x=6 zK|?h>1#GcsTxty?%2>;G31~8!&6MPROmkf`tl>2D*O;3eMA@cIk9SSgnQX4wix-p~ zoJ+eUN<>X7C{5Z_q+e2es36^DBXd?%E15i3$TT@v_mijbuv+itTNQv%QjIrC2*wiV zH#hH+56UyD{}MWWAN?0 zN%$9gfBt_~?%TQkKh7*ZwrekWW8q$+d2#-nVR(b2$gSx>1$^XpsyBt%K*gkfwD+k4 z5%{8PcR782r{C$L&= z&z`6OP%%uM16CbNqmqL?7%en&?J5UcFyP9#23*%&oalm*FW}qk>-P=#c=|Ns8}MEC z@uCmT1xo>v02BfATf3|Wtw*h#Xq{_aYF%SJW4&m7+d5`di_%hQjr6#5M!G1yEsaTP zog{nxrKLs~FhbGjH(oTpZG7Lzo3K%KxJxb{uu4XwWCcE#5Jtf;8})fT6tWDIyy#4E2d(@*D1F=wpW{}H?ECZwdSgCZ0$0uiy+NM5|VdT3EnZc}l9Jl^vmyRyNv7T5|}57(=VYsl^u5)T9Sza}eaDTu-hq*Pk26336_8?riQ-juUhK9Mb1fVge=-TDxe4 z9&EL0{dM6w266^L7oY__ihuOMz$WmFI)W~*&UAx)+dgU{Wmf*&y$xQUM^TyFPKlBzL_bVJAWQ+CvcSPhs#G- zlc(VVp{vror-CjCZHtVH(L0Y;-X;5+sS511O_k19gto=TMd(m}~Y@sR=q?eo!IA!N%=Org+#ZHm3+)tGaqG+^OjEr|eUl&tMQW$RrbSovxn#L=kIo)&-J6tclLZtmXHs~4W#W^;v6^&+wcvt z{l<;a{d)ipn#rG4D}^6dGo}wjAU?sFp^Z|M26a?y_J!jjBYyTB4>~31&*3uQuIhMt zpN|CHUMf`kf~<*%I$Wnx#j406m8jKClBl)I>9W~c=XE=Sp@`p0^N-gV^7}(hFNZ`O z^e9R-fM6X)$i$Rr?XtVf%>}T=W4I1@s=uLJ1`bq(2teU-*5o)#sbH_R0+hc{mEU|y zuvVz)E=`L5hJqFaMp&S11?BwwFY+~LcOYDE#>$A`S!5hQ#{Fd10NJ&l3y@uK{pe$G zJ=sM9^XK#rJT)K;Zrl6h6TAm*CmTiseU-)Na3Aie44^);xey{7h zMpw$7m9j%{$%%{$06%51(CGA#tcyhKEncqKQk05AaLK7)2IE4ZqmeFEBYg0AxmohX ze9FYq5Q~Jvc9$cO$u>7;8?%l1V6%U^f4(0BzvK`2u@3wFzy%ZrE`WJTLDNr3OrhVN zEo%~D%pY4C!@6{$D}gBLH8*iE@qU6g;8-G-@bGpy5HHzftEXhQTRm)s?JJu+bVqm! z#bQfK9@DXP9*Q`h=hY2-gEHJq^KdPHmcPVfhKV`j3=`|^{S-Q&5In0)1SZgBnXYPC zFiv-wfV_GY)~BM)RgkM%)OE80*ipP)$STyQJH;x(MKOco1igi^fB(0UIE4=;fM8|& zL=}Y!{gM(Eql$#7jB+1V#?*pZoa~d>Fn=+A25a%-pr(@ILeu z{ffQP{M6IN$DVwSdtu9*;QqX6UFYa^I0GI@xXCiI zd?s9d1SWRC1bp<|RqeyCU)?pYuYYkr^(!G2)g9r7AOrGXD!31P27DHL4&IhcGe6tl ztgAyPocnBEu=PkiKZj*77t9_T2D9OU=7Xd9O!amRry2ge<7kqHA(-vm)s%X^HsnzGfbmJ^_ zE5o+hr_IG4&tFVs1y*Z5-wZy}%y5RL8SJ6-Sqe9Np-f?kOw(`^H@CE=gqD`plpZhP zW2Lht)KqFJ8M;0*_cQ1-bHyHi57ObD9)l#!nl-z1YG>EfuBlzKXB(p7_TseeaIw3) z7{*ihhPt}6$K!S)1l(>rZ(ul;v1}0yPzMZ>0XeaO!L+fGfz9K+{*nQt(^IAdX!R|Y zr%chFQD0Oe#dd-2)?BSL%P9k?2?Ew+aJDu!uLiI2+PKO{RwScUx#+syaiEJvHf6t> z9CSEwC&yx2ExOV8cBdNU6lzwX3VKzwr678K$reLfkXJzy(3#0Yf9TS=b zib_Ep%%uv@Gg*!IBjFitB#+$Xs3JOXTLv4AkNfdIG}#B0jEV$AkUfI-Tp5 zopxzS-Wy6SUoh*l&Hc}Gk_+%WIlFcA>SJ4Gl@>j@>9L(VcO1soUOEEr5Hk*~SiWfe zydRt-umf!&sIs4IpA&#RD26uu==*yQZ6|f)EeK&(mMkSNpIAC)^`lRRq{}-FAhdk# zu7CdfJU&r5@mL7Xfx{6mIZcfGwFQTUmcKW02hJzYVqr5n(zAT|qLl!Gm&Q!0>B6^w z2mI-0w8=m2WL@C$6KYQFz(eqhvesxds*P%6oz^l0mk&x*TDn~Bl(jCGXo6|eZqr56 z+omxSZ<5XKlF4L|Y&|w~)&|empkxc!GPcb&&SsN%po4m>(;1LtkrcU$BW+n~*=@mo zOWM+9!4{yF)B!ctVYOOo&?*E_oHoogEH$h#aE9vu&IL!6$!PERbb#iG14Rvvvz~Zp? zcp?#^V<_1w`+PpH==QtQZtTKtcWX;~3$w7Hl}sD88+zkQnbC>M1p1*?u@k<{)k5BY5(B=Sr=0S?7FmZ9jQ$4?I#ihdRmC z+_df)2Riq-gYR>X4BVM>T5mlvf73hr_6gr3uk9os?z~PSR}n&TkFXrd6*qdPatvL) zz7y*I&zEAcJJ23mu>>}M(oa4>bNZxRXSqv202%T})n(y0kU$8eK@PNnb~td#;cz<5 zW}}U63LAV-)>yS#BXGN29GjOIi>;IjkxM4Cbo=DIl9v`wb#)*ZjM5U;n6?^o>2%I$ z<)#+$fPRw*WO_CzA~Y ziGf4;cA73sZctQ3P7@^%JmB?rhY7x@Px&Z4r znJi`!7@*K4a^qNc@4DXg)y-68an%Uo_ritaAqCdJo9a)fLE8mN;8K!UPP(lK-qH** zWI2r5icNqDIeSaX#9X|-1{CtSN!yS*Yt&F5IBPF{_|^GO=*=5f&aa#&H_^846`LNL z^$-g8teUfTaWDFtj~5FY_upD|Kx^K!cr#hPcQ4skIgdJ&5AsL8dF0S}j+-+>i{=xq zf91vnJ09*%ZP~SO(~6y2M-F|25I1juv<1I0`WW_JA&0Lp2zX32Q}_oE0=MMQSKY9r zUZ~!n#%tAZl^v?=(1~o&g+KPmdO|m0b3%+rMEG-rH5_DTRsX6Bb)CO`x|IQU|4cYfhNx zJ#$=Zp4kmBB`U*yHlytVdX5wDlTN#vJbn0<+Act@|D4sSuei;74v>67hJ)L`YpQJG z{`<|Fm){%xfV@PGaOyd0orrrKu0X!ZpUEfWP4Yph=fjWx6TZdFVQ6yrJ_v#)7?zD< zdP*=BoRY@AWGp1GWa|@sZf^j3X+~HCd_YT8626GpoQpJtLP-UCizGu0O(CYQZfepe zV)d~hICZexkRF1aC(8C92oAxi$Egs4)@xy%SZV+bz*L{1u61I)zrL#;>!tcYeNR0G z^-#j~R1xg*mFm58wcNllP4SWmq?7Ca$1055rcv(? z#lES^r@SYoe`-$2!Z&3dQN+DA=w|@W#5%D9qb!r4s_JE0gD~G()nhX%J&yyhz@bB! zN1M!cJGuMZ>qhgXXP?x%)g;0RvC5HD31vb8M=p%seRhCc!Xa|(pMJ<`$pJEx`{elT z_kUWMP6Fg*0cjU6bRupLUP01<1*7kh{hc#m0lnP&ozWw)DE{~T`$y*_lPe1gHv$aQ zgRIW0l*j!Z;n9G9?s=#2k(wZC&HQ2p^Ko zvL;4JJ}M|-timcj6j7!k5m=P<qIcug_W8Dn_eu@l&fvdqr*!`uG5ueqiJzb)PtZ;OkmR zO+KEp*J$3kaGT!Fkqd}Zlm6^}0ro)%`AAHjP>Z^kBN5A~l!3rQV$zG!{ zf03Cx2j4)Q-~YZPUR zIuL?J913}x75uh#q&sA7SpZF-37FcMZOarhwQUjG{q5=Yx$R5a*R%`t3;J|-`@!~$ z?Qgfg->xy^_K9PCvg~#nbS7$eC~L~1Xp$|;QO>0&FoW72NZzvvCJJoU&M61~9&ruR z7DH#cpkVLCbdj=EDWH&6j7De`P6u!~(T69 zPh&Ja_ehnG#_DMX#X~TG;bF)jkI`)(e(VXOdB^%af=?h@5z>;zf(#Ft5h7PFY+ALj z(`Y2$B)^)mFu!aSc@Do!nxFalJ5Y1qOcKDM(QCZwpa1n=eqGU%EP00$<}Ws*r{FM> z7R(=gj})d)hmW9}^X6CHA;aXum^T)SL=I)w{t~A5>>&%@GkKr>F}|?}V2~dRs%8p5 z0Zt}DcFK-AeO*}ZkA%avU?5=gyIhh3TWnwmK6C;?n^{G{ElH}c)^>}I%MMT75S(_R z9FT$m>KouGOCE?lk|*d1>aoLSa{=IzTu8_JU8mtRPzGVf)DOdg>?n(oqmeTatjA&m z8aRK%AJJNjnjzSAs%$js)mpul`iE)Cdf6K<>9J*qaaU=Kz&-dF9>yG|HGI_+^WFfi z!~lg$RpSmgYXg_UQuZf*d7BYRm9kv%3Q#^wiZ;?wOU2Z%FQ;T;YU~ChQL96M zu$7}asOG0yySR6(l9BA#M{a1XP(66VZq<%_b^kB3B{+)^)Q{fdq`Pmx>~bg#Z+Kn! zN#dJ-Gx`WQK%NkUB@67_HQ0|%l0W}TwgavjA%k~TO&7=te0bGMC$~@wMC(|q>bmd@ zt+gTi8BoE+gOZ*~98csd7%QtJFvh(yP(hk|03ubEwNiY~NQQ(i-P@00sdN`HgHmjXZ@>_k) z2#sc5lhg1sWmA#G=!5m&;-RMe-qL-$#!?Csj0!6p4$i;snZH*lo|t##~RNzUTPF1 z+}Jp!A=IGoabls62^5OOU^1y2kHY!MQMj%wif>c1Kj^_Gs(>`Lb-)b+_&&|to2&ByC3V;40t#25CPkYB0#_YwOy+wv&g&F@Bz-rmav`#e3!!v7 z(rr_<`?3hA(tSxKFY!b;6a?+R$UdI2LTWPagYKT_$67R*ZT|xmCC23QCJJhCp5{Rt8NH> z;dx(U4EiiX@Jq*yk|a?fyUE0PJXBqE!k!A*jg)9?(D;mYyV0lNvJFwzlWTZ65a1IT zA;VnwBJqZJRoL2K=j}Xj;wZD>>n;bQ{sv0#TGMc}fu~Q7Hei1=9qo$ZhG;_+m?TNi zT+%|Ig<7q}APE5hi2}?BJwl(*FK_~l5u(Fg5(U42bXf2PK!9#UZ+XlI)4nx6G}pJ( zx5l^IcgA~!8qPgxw01?>|3*b&)S*r-&U_1_);JI z{@%)Eykqpy{iBa^F_fxYuC$><!dr>X`6%Y(DtpPpOUcLxa#lr-LVc2OwPY+#&!V4}Zc2eX_q(+Q7RM1F+qxaMpto68w)Gl%-PwcIi8EcG6kL~YN5;&@#nA)NC1ot0|3j% z9mwKl2$4gIV|^r&)oZlcbjm`%OV+28%Kx`?I%VK(HtcXn5-`gtGktk>c})t6DSs-R znwvVB;&mVuNM%xTYHg}Nbt!c{r3R@U_QgQzSn7I8WlFstht#Vu9mf_Nm+O+HIGrfO z10m|?(J@%|dFdP?mMqc7=Ouf|>x|KVO01b8X0X#~Ff`KF4CS<;%P^M#$0`do=5bpr z8ohqE2EMI%Uo)n`8o4f5TC0H?gsFP8mtn=`V!BYAq^VFUpYbUhvn6Kz?fN8eJEhmM z>FjtRTg|B135__be%bU)8N4b6Zj=yCN2^ugcXa}rZ>44IB;=9lxJ*G4ORQ%tUO4jZrJBSv3L_d&)T)Vzx<*FUaW0|d; z3;CBvKF(H#=dD_?oSQi^V+^1L3#Fa-<4-o=ccGiSgHDrMfCFaoU#eTeDUfEfvFYdw zvexVE^i8|(zD$Bz(aK>_rBbV5Ds7TX4u{|X zUayy^W2tO3)Hep2S__3-OG`$|48et`4DqI>86NC=0e*=}TTen5Poz?fL-5P8D95EZ zYK1zkDU)ewEihq4m(h34oS zXn}=OWzYfLTwBL911x|txNmG2Oau3^=c%eBqm@d^!qG7OrYH!*4!OA;X=`rV(}t7N zelQKSPy5O=#7%>dX^%|XI_<-0+@)#Pry-pKzUUZnpojzZIQkuknmx)5fpDp9TGZi) zPHW?={#-h@J9jY0<){rxjvj-YA)|*q`aV6<>#g)0IN~KMYus3_Pp+%60Tj{Cx~lb4 zRmEPb(kCe&Sd*7zqY)E^gkmig1O}+b27^b-Db5BQ8^a)vYurSv{bae` zWU_?EUBqNLQnuMN54zxp3+{G7B)a^rwCiyfXTdJILCMypYHUXN?fXi-|*rJbu? zqvf=<>{X?CE$vlUl2!WMWc!5LP_AYUUZv+L#9Fs>Td}mvjqepxPO+s@Vk#{%t8Rd- zWWdx~>|Se91ZiVphSWx9#tJf&DZ$j@MG{%XpFRiIA0U5*Q{baBLS!}}|1~ZBtZuLr5xaOI&3hd(XR4NQCb&iPN zpGa8Z22l*f8iwG~;}*qdZZH^R4P>1qo*IJ7Pu9gS&bn*Uok6QLMxVyugR)zW$73;r zJCaC*tPa0FXbXlyX_HB85EbdE2-{?_tmAo1Nz*o4o!jFcQgC+_WS2x}fQoqtr!`%g zxf-mX_K#~gBi2weVNC<3eI`Q`ABSh)7{qDV1?R#w@F;vA3h+~_zHUNbS~b;CyvJ(W zAnTm0gQ|Hh+$qpVp}hBYRh%+OO~t14HK)^iR8)$s+=PP40x;idu5Juer7J0Xcu0r& z_!xff^W?XeVPr-J`NM@9#I>KXFK&Q4f7 z@D~46su>MA0@vcq`MKu;8gf!Bvrmaeg?lp0R{3~)w{yiK>$RdR(5D5No}@AB0;NBuQyw* z>VVhh3xr;P%Ybui__)&<2oAxOr_}0tgt6eJ&8JxoMC^8JDCCl~TC-a15?pLW1;Gb= zOakZyK9-WKRsWKyC(35Cm-!1CfgX0tuCmd{*Su=Syu1Z_Wxc87W$N|8GQtWNi75SS zfcBKtY0J8olM`UVB!2DWHJ_}ts}?_O6WnGgqSh<^4>??fI^vlA=SdFR6iP-kXyyTQ zV=wxstunJB@Cy!;AsB;)OLeXUgWwSs z4|LecvwO(>Uj5xSX3Ssr8#o2NxW3Xxw#qV`jyA0)kA4I>W(j#)bxn8% zOaYCc8Gb|7G0CK-p&{W)(xRs>sngZfY5citmdm8moW*2vxLk&aKNyTqTdUd zq%O(&Lrnxk=oz$>qXN(Y9SDMqlnG?86KCk0#v3nXf^6;mAP9?~%=D`c;9}q7pn;qE zNe3L*f*lUOiEaf8FhN=Nl)qwuhb<>8=PlS`IqE;-zv#zkxBs9Y`9ZpODYIywP@*K2 z)xHN%ngj(eRgA!^dtd@!SgM$}SCy0Wbkj=&Zl~|r4z;piLNz(DJ;oIk^b_JI?UB|9 zuG!Cl26wD z2l-aM8UEsO<=^H_KQx0oUujqbbrApa!t*B{evbREfBCchzb@|Cx^V~j*`25FUp{@+ zg=fCsGkx>!|AY%FZ<2vo9q{kb?I%y4O&zPqgz?1EgH2r9Ad;7a-(e8$AJKInx#{^P$0y*(B>vKkT0~-0=c^!ki=$x zb64}+W=?EQH+MC!X@0!#ko{Am`Y+&<578DWLr)}4OetxNu}c3>o}gH|7Nh<#n0st;4{3;_wbwf zenw=x&TH24$M|6$^AmT9m?zOXlC^wc8kgj*ThhC(kQ^V|zsTC1Qv!#R^ z=CPE`rr#{yu3nduzBlt^np*R%Re%9uT2;m{CHmXKCXRp{CG%<CgZd9#7R{KgF>F9-GZMO#_!Qcc(8<)C;Zvma*aE z7DlOEB}%vi4cmS~ptp6@wL{siww`ckTLi~NW@SNYFuGt$A1Hx7_8?(b~w zUlyBT@g~ADdftUPFRT4f= zx!NEDWm)HP1)`~FeZ49}=i0}y#+anpE*R9m2$usLFwq$()~N!4Y$`1_^P96cU~E0|KJXo7Q;jcR};9Kco92L?K5$IQ&hsFO-6tkY3ttvXFh71>+{ z>VP`K_*RKJvebdGPII;Db&}{+RUFoeEhP(P~^@vD+vn%{Hnsq1?4<(IeTvrb|3l~ngWl5LjZg{|2@ zbAPQlvTD&*7364&htFhyRc&GNL$4& z*HRa!#V);>Wg@-aXq1#ozuu-2KIp+lxjs=c(&4v}nm`&gcEL{HkuFn!dakfkSR=eG z2qJsBTR13O6y6q8^zYIFy-nt#An33F=%nmq8OYk|wQ5z8Ld|YTf#qsTGTFVg#^S1~ zz!W{QVxp@^OiU6#0k^T=J%`sp9U~ApwA!%AY!2}BHY8b4`RQ-TR92}1EU8tK#?HBzfx4#^IIJ!6;c!*-4uuenTSO5HJ)O(sc8BQVloolbH|%ByMD z8W#dCxYl*dHSEGJb~NH8SJggz9FiW_+tqwzdV6zj>9z6MFmu!1dyRU3*r zX)QZ0tK9Y>*mL1i9KXT7uzf(!XM2S)B3i2Ws*tvY>o-vaJwr#(Z4 z-XVAOcIdl&)oV0bNA7TD;epD-^A=a0dg8Swp15>t4|zd7eU z-45kYDCF}6TrXBTpcdI!79G1C$cP<|Ks?F};cR7<#UL8!EouRSR5BzIagQf*8n%Nn zRkQ;UnBY`dR~AL+#-gax=qN2BSf&`s8j6ynHD@$f!XAxBgQN8DMQwZ>$LVrOW!T61 zWenHiV;JG8p$&U<`b(H47}{8kU!^oI)R{D7C{*uSsCHTtRMl!XR-Fgc?$c0=MVXoC z1Z-lux5;+=kM1eTv<&qCPnsa%pxqHcv-T&OxYBFnCAbh?>u#)kNPa-pR{lMaf`5cx z`~CmzKbbGU`5pZH{UbN`b3-FHIj?(k)1kZ2B>+i4w!b`Im^bGMLe6|Iu)Jr^nU~k} z%$)O2KYHu*Pr9=(GJ19N-A5il+sHUe8RMW@p;ee|cIGu{v-o&r)>g-03s;p741833j$POXTrS|lMvKKsXXf=~ z(b8p^YguY}+_Kwp&~nCd(ek!ME3z-?7h@Jdhb`mg4Q;ZctfK5Z{XsoCsz0N@sK*XA4UzfzH2M^CnXb0b#S9#oXC}(ai%x zg~G{3c~>@zA4dE8M$cCs6*A<==w`ebeQory?c2GRD{q{AlYBJ2^y-E4@G*4AyZEX3 zPV(`SBt;?sgJWYF)hyvBzz)110RA{ANiIq-3;-T39~1=j3-BR;$A$;7-$P&b0xdmG zUL3&CY7GH)oS@h1hSbZoeX#8CDPhd-@H-^LQv0bgghmQp(O-V5tf%Q+Pt&`ergy!N z;b9NImfy@{!1wV3{4xG4&l@q1>`FdU%j`BjOcnUYsy?oEcL^!K%(*IdlwdYV~=f=BRZqWN5AK_jm*DKvS&=6S$I1nIz{{K3#98du#@PZIE zSI}ya(`ob7Q8VM6(Lxq*@gWho>+BaavaSU9Mo%Y_VwkQMfb;K{ODRqXSV6M2DjYM5XBF z=&|Uf=x|gp;wZfbE>K^JM(fy+kqTYgPLzYeIyTm+10G8BuCv*do=Gg(HL_?h03CBm zp{^IzJ3%FlO4WtwU87jU&`W&;`6)_a@;DEX$fx-({vdyp=XIEu)7cVFO)+^oBIiMz z6*fy1TzKLtv!&}M)q_;lGwz~J%fjqrPlnpSVEy2h-!dwsOS`74qfo zDNm@08jYcf?C#zxN!hTx!0*{Va(MrA?!@MkZQYMOT6tsj@>Lrayx9o5QOER1uR5rD26YQVA^06iBQFoSXxU^t8G{UW95&2+d zH&nyHPZq*Q$WFikiTqaeu<&zWW;*5&%>T5`say?cf?qm8Z%D3M1T7f^)UE6bgSH^g zwuImUHbJlf7Z=emDxqDJbq0fI6J0QlU9{GBxg0c_v<;TsUZ&>~1hqS$rnO8%8Pr{> zL)Ytu>(H6Hi*-nJLtULa5OCLFg9HX31WS2qMO4|7cZTWAdsMhrAZfm z)hV~m1Y@PN4kEt}(raff>hSoTGrjA^@0?+0cS0kxzDCt&rbUyrT2=3d+Ql;yBAOig zQ>dCkDK^N;+EV1-OvRYB#(<~i+Y~h6jl1T223_2L_X4?>yOB-~3$FwFrcd!r?emO%7Y?&PGgKn*JykM_(=Yzeax8^6_XT&`R578~CmpUU48cuDP! zjd9_gq*4xh-ed}zq)E!XS_41Xz0SsV3*3;(>}@M-iU)*4AMbij?L4<~*WG=P!wW0& z-opq{;@5uo6j_A0ktKL}R6f=aU|??g?%oUFO2K8%r{3vdq7oV zz{_qsNX2EV-5yWs=}_NfjK3X+UyH*yy_HCeLl26}7I!Hw>!eaVN!2z~XUDt3FIFkt zEwZ5;i3DSTKtL~+C?Py^vK*BBq9n2?;guw-)y~XctX7ZN<#Z_(vqs@aF_Y?JPAEJ3 zoroFC23>U}(FqMsoL22t(Yr-Cra)0q`(u?>=Cv&FkMWQPX@&6g8@BLS8ti-5Q__@T z;8H`xl;9wpPlBW}6q;ZH)Bv`1>nPP!8UNEx8LvYjn0kazpz-^6BJqI5pJ4y%kuHUd{ z@1w5-_@92V@!UE7gOR>Nuo14`4m+II?o#8Togp82dOIPd?Ry{D(LcHbpCwnx2Xm;5 zXG~OG7g|6Tw1I9g1Iz?-z&x}>w(9kHgP0Y~R)b1a)M_;OVm3@ChnjFhLpt4Up3y=L z4D+)+^uc?7@#k;}Xaf>_h?ahXfdHm_01gUG^m5=}a9)(YFE(>3edzq$6l!~z06zFd zS!0!~R&JVkj)S5`hD2wq&6^jxozD3WOr!3Ha`)%r)M(XO{@mwgdt)(YA|X1V4m+Lh z+3q3OdZIk5C)_gxTL;VZ63MA2%2sPbn(nU#kcMrtsoYSPY{225lohkki9vRV5}^zN z&`6XBk{K-DU!ebhqkRAU4|H~Rx3zWW^WEJtg>jLNr(N$UgR_LO{D4f~H?O=Ez<<=j zzt(9x+S^O?pR$#^+UK^TOuO8^x&3TAcdUK5 z9kq{7oT^)p?!a*)*`>X`O4#b1NLn?=H|38K_Hv5AA(t~bCe<^^$(L4FUE*@-NsS5y{vp|VS)j}WHA#ADcaGDj}Ginfo*w(KO4befv=ttDN2piJtPjt*aW~S4T&Gi)Lp+EloSg{GI6QmGcK9Yb*QE=AC5G z&X%GtgZ6K$q&S4m)4v~Gg-+AI;9n#2;j^R5X-LHfCOz-{>_gW1GujG^=FG`#y`i61 z;`quBS3ita&4#8sYb#Gayc+dswH@;o?8A#IgEKnOjLHk0^WZfy3?(u=x`5n;0=Ww? zc#`~4^{~*z;%qbgdlqN=25~w}ho@qL+voOS&lEUiO2F%EqOUo!qD8a_Hj^QX8?xC3 zjPt7IW*Un7WSy+4kLsgPhmui-Cr?Rcn)S^r>jv~n5G@`rdnJ1{sk53|Cs|8&yTr-2guumIz-4tfd zlaR2o&`Ip@UBKP5btug1QZ~;CY`0@-wsOJ~_E??t6@$qT^0AAq{G#X=u*cx{8$6hc zD%(aYtNb3nr%oGEDmQ(Q?HH%tq3jqrTDD655KQa4^k^+DuzMtW@26gp^dU@_xVpMj z4We8`G*`>%u+~gtrQTdJo7u%>?f*a4SP4=!?|&xu7)O8C^-e0iYLJOSB3CxSxZi*E z6VrG6@5@*710H{!t=7W5f_!%&e`I7cTv8cE(jH{4+=0vbD;N6Fd75(R;;dXHyl}T0 zM?Tno>(=%UDjVj_LmYV>AmALss;k0JfDJ^U>!;BAB3uD90KFCq7DSqYLCNFZ?M@Uv)K@h>e+392AxqOnQ6k3fEl(^$7LyM6AiF{4RrixkZqpo z<*A0KJ*wOzNQlSoI>TiDZlETrI^^SA@Ny^h1_$?n}*t znUY=L_+{UUk3|of)l~mfIL>{0r0~}V_dmQbk%w#lwelx8jMi5^M(V>zstltocUSU1 z{hP-VU;g4A@~8Jk-okUf^|cu@;U;)?L_iDr;S*$af92_&00HCJRMp4Ak3bsS2fra( zbwynGG#H@6sy^9Ztx7*Bi^Ayv4Q|_A*{eKyI7x1Re`+oer z939t;!oC0UXsS(fj|iU9?vaUDu6g0VwVMkxsnrIa!nTuLdWl(@|0?@|{S zO;eU;fq(%wSJq}(#%RK_EdMNHfo2({S(A7f%~G(A|Nr+rl5EoK_xzqGwk*jud3?U- z`+hHhrMoKSS~=y(skLqC#x%K#kwP>Inj1T{jg8t)jHQi9QxgNy zpc~u=HiKQ@1@I2I0hDS=lrvR_@?`ZZfMGBKWF`cFUOzQ^{WS6Pn3{cKk`LvvehMxS zl!Z86h7sm5h-U{PAQCC}In?tjQci&tzreY3e~wlsfm6zI^O9wpJ~f}}o}4Gjouq_V zS_&k~{>c){rleOAKyoCXvvil~YxJ@|rQOMEoAfDtphST$@vI~oJoE7cyr$7;F0Sg= z7={+EV>C#7WBv(B1B`?ukZKsylS_6Pl-3-mXbMSp@7(p8lPy4bm>7qlqr`p{scx<lh4Du8&KS}ZZ;Tat8=6)L+xHOf&RMT~ z7yC0%RU$;L5^OqMIvEMLlE$pef^Cs>ELQ8XH}lP1O1KJS0itV9No%kFRAazK=2kYi zdJ<%Dt&;W`jlgL%wmIwV_8LkUIwv@twf4HY$Q0~6RY)WyXa}&_>Vhse71+}iYTR`R zw>wdX^|E^V6l_0NXv}0{mUK)q8LLm%r`47$*SxVAX>fD1&Z5y#K?{{eqt+8?ndCJ}lmVnlZ?TGvEIf!-~&|6X-Q~0G?E7#QkFb-UpsIw(}7F z1{{WG6W`f!>+KK4Un+W6TAqO`uI; zsrHkDph}t1QZ2k7g)!=NRqYt2Qk~FXGSxQnmMkgL1z7P^q+3~o+kmv#V5ntmwG`)C z;~?_QEt3V0vmru{fQE+pc)Xqjh^f%tZjA#Sr+|32~{XEB9{_6pX-sh`fR12S>{@pPAne}#?F`!gg0(DA+0H{-0 z^v1eaqnwZlH6RSX02*ee1yw^sUA(5X(}PJ8IjgZXHQiw|Pr*MExFnxUrfqtov8BU} zof%SC=mneC3#uW9tE(MdLCR&wP8Jwlx?*6{JXz4|QN_xW3T_}bic{wfnHnKh2XxSe z(>gLB&=q3bNn$a0DT*}IVo*?XhI}-dPKGU3%M>-($<$hjvomgKro=MP4sE!jo&0!D z!EJ>eYr=|lv_P)K-Lj+Q;g%yUvn?#w;qHicJlt`l<3tC`b)4ux>a?|`qoc)|X4EzA zP6y;1P}}PmavHcr6 z$>a}S+ldbEeB+Hb-q=}Ov-9fFUw--F{hQ&g{oD6#-v{J?6>rIZ&;AXN1E1taLonL# zpipJh>yaZEtWx{^)zvlb8ZBowTeVuGAa#jS$)YJZcm_AbaV$a7ow2d55jWz-X1Uwz zB}kQYh$XM<1i4%eO8tDAxPVL+>LWykCnLBDUbkBTf}S8UGC{M)=E$2poH=ji9F8h~ z1-{ZcS+H8c9Af`m!Ds}jrce|49hpKb1OVg+MHab3gQ1O~=R>cAu7p?+0wHyRz`c

slU_BVqMKA4K%rsg75 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

$mkbe~Wvlma>3N6)~-Ga1!G zP%h|shzPd?gI^1XzBWVB{8)8$AOQSMmvaUtE@moReKT{rSyqO=rs~_(htBswOAqYr zIo>nZLmlWjhwnfSlnsd>=<5-=T%w*nAkcQDKnK&oc2Eq}5sj9Xl=8_yDNamFO7x_X z)dMYV#1W@n{Q_f%e4R*EU6I*5FvyP&7OQ&|z1NH0iv+DS?`HNDl;*Emt&6zL^GW5G z2+n+XBx&h9zd27#{O_5~74BNRrd?mXroV#Jtj!lDXcDz5Xzt}nx@wX;FO;J#x!3;{ zKA!M%-+KK(j&la#zx+k+!`#@<*UUo01f;oa&*s$|R`pLjxyvFrGXeX#GZWm=3GN20 zpMWE8WIv&l`~~YCcrt-r%>@%1I(Gk|rmK4stl<9rFFV>E``=Iuop9$Ee2!}y<34A% z?^yMhYi55%H**Jnu|klzw)^DClP7myzs^-1<~}(LAc)NUK=g+2CqM;uT#`zaO6syD()1OmNC1hrcHr@zQTObV!HO&K7!%fs?M z`EI#DLCNLw1c7?CI`g&|sz~E?=1IbQNJ8uV5L*3RTK#;5tuSQWXvLJ%IjdmO3V{^@W7x{&DeA}AM9`|JWmwk`{I1W zB;VrW+v1Fn*V9I#MS9v4)@*Rs7Uhlg4z;@+8=4c(Mi{BZg7Y;PZY{vZ5j76Aj>4r3 zwVyiujo;ja(MB(K<6r)RyPERA)W1EyEF13bfz#ReyWBx|pA*7QIXTqA5aM3tK0H*P z5`NgT)-tm4Wo|$BP9*gyI>zQc={s>1eRKa|?svcbpUr(;15eL5(jB&TexMyr$?^>sa+Y8r7B-FI0=6R4ml{o-NKw~V_%RFn*irTbOQ~2Ji)2(R#j>dw714$w zqzR<3I4vYyv`U@z3=wC$lyQiO&O_>%Ooaf%nOc5FAyS5KB6!HAJhn{uu@jCu;YKG^ zHDE;Bt_B)E=xx~8aG>FMgHVOh#5T|isC%{WK<)8bbPvJj5p*_yT7+srgHxan1%s+k zZ)hlVAap!*GbB6^x*0;@5LAVrj0zd~tkh`K>h)TF?@sDrNDnvaA!!zFDxUFqXPt$5 z$vnm=k1HTsi9hw{A1-n#8z2+t1pm8WsWUHSkVx`AQ3ZKqQb!d%qKJ}bBverTEIx}7 z&RPfJ3#6#tmG@aF7|7RXeTZ_zwGPS=FL(1jYll$e;cc9G=Cc=iRto$wDRgoFA`yR* z(>3&5AAMS?du8QLZ>jSB9Ls$w_-OWe6TMz)&WfApfba_rde2OUVuDTgtB?M@AALAD zwPpQ|gM(9B)*V5A2S4RLeSh-CnTdlfE5vPsny{tgFkH3u44uK{RghSJn8iv8M@M$EINJO|g62XTrDiCeNDXrP%YpPTT1U5&= zfgFxzLGqh*u&&NXLwW{2c7YYR3CCZiO1s?w4}qK^83ll#t`5i0B&dT4){t?zYHK6D z%F0NjicYd}V>+3vi4n?g4T!-w$N+}OS}?Gdb!2KZHJXxus>)Uss-mi@BoeH6YnM?9 zN+t^^Jpr;K6e5ua16o+AOqJH_Jvv6I!^}c^1}LFYY0INyWQ+#_59_(*p-hygw8X~i zHd}2tg|*?@exAZNNK%zTcrQ3TCJPmRXkdPdSvUgnRe6;6@KF~ediYU&$o$bjB(#Yy zy>OE81t5J2t#L4e=!ydtFYo2BkC--uz$M?q57uKW0U#xtO?pmqbd|pr$ zn`P*c*`w49$8fi1UOcgV>c(f!vFzE~m*H9<0(R~{MK23~2vooTtOUGY1!8a=tCOmv z%3vU1@l{npODGnzD8+J2gcpDcIDFAt#*`7GQ5&G)Fo3`@cMmw=s>?1_Nu;`(fH+ho zF6b4|7Nu6tFd9aK*{-${tu|gd10QEwSc|39BX$>fH^EK;XfPi>lD%Ek!Y0mlt&4ZNicJ z{X?+j5LSXjEAIDusD9Ws#+}b@w{W+ITSnKN-+@k!Z@nJxnuf0)I+PWjd41iBXX)3+ zMt9z(eu2!n_s~1s%M;vN6WLXV(O^q%%Z)aQ@$0zl+*l)QL8hJ?+-Lsa2e2jgxnSp( zv)iw1;Kq(^-nr)pv8|QCnMu zmx_<|Ht%XZ(281Ho4i#)e?H{Ms{B=csHzXuBQ;fDFKUXa$Z?y`V^NsgVd0k4<&2wg zX?0ri(5~aHUs7ye#$sZk@Z;!Q6aiudJ{qNWN8wNuPFBOAYIqJkkI*E72M|1t&LKo* za?dkwGaob5Bw>cW%|HetE*Ms=OEWmoS!K$!N_RkaPWQI%W1ZlD?l^f!>sYHjt;4VA z#IG>fOh{$wH4T|In$DSSn%*{jY!bh1g3)TkBy=W|F2SJcs7TVpn4#HxrwKAmP}O8> zI^IM{sU`?T5>g`RGqO1e3`t-<|FuiP5+upn%kWFPz!K}==H#vn-mF`>bYP=SjO zVH^dl6Z{iRRsI*mK^9SkxgsPZCUU~#yY4Ca*lXOhRCi^|_Uu9K4RjFWUvuYC-w`yL zn?$MH3+T{&mWyv&(cd*ZEO z*!a%zozv4h@!jl8a0@)>F>w>zR%-J;?*2Y>bo0)!rBx@PQ+_?O9VJX%YX+CvI?&* z;V7?@2?NSF6Q6;PTx#^z)b#mh;G@s50k6j+X>TQGdpl?)u6kW__dqx3g0-wOGt|DZ z9Zj~wjomQZ4M8{4J=skusP^vm?jBJOlkS;;wa;W4LBntZY9Q=dZArSJyrJA>t%)a+ zakj*oX5#jEI8Mb$>QUxPgCvu*CvPQbkQ`1T88JU+RoaqtJgJK(b(F~9s&tV(8x4~b zyOU||B>Dj$LN=}%sAxHjH||(QRcWhisytVDv-0iAk1Iu$thOXw$tu)o+}Q1n!snwm zqevCCMMKfvD6NRHT60>}3^h2ZMp}TQzZ`Go%4jo?lN*6#SNcHuW}0HKhI6oNiPdVu847k+x3O+-+J<$JY&MBVf|0+<%sJ8XqMIU0g#S09 z`9mhKz>l(!e?&ur1DlFYI#{cO`2KF%jLXeUgBLHso)Brt6(L?cWDz&v7Jx!rdRKY= z1S5ipq zj%=ZJqp{o${(@yY_n+Q!dG^FpW4otLFE_b%E z5ysFodTD&ymh8(h&i@*!?-38f7h`v-4BT0+D+Z6i{;M!`CEGUq+Dl7cy>OK` zp@&QlI$SPuZ&9-=#p zjql(jYpQ#LurD|qoD5Qgp9BNUI(T*Rr+4wWGB()=OvQZg0A__OapUXcQ5%d86B#jz(3F z9e51Mz+=!wJr)SaBq|C2$5tp*cz>(-xgZZNEz0Aiyko91)E;?ConL?QD>MR9+8I^HcP`s3?vqWEypc8eAe_XXHJ z-+*7#JaXtAI?=+dS5wdoifbLhdEF1(6?epI@=iiEi<;y4TvHI&x*RV2p8Wn4IEY|S zzOdm0uW=m+?tW+WHmPpU(k&GY>mTnu6HI+<=VoZ-=#!e2-CbR$o!*0R2jaRA+&Kl$ zOkqc%DXxDC8!a#E>0fz%1bJUE{*G?^RH*sUlV7aAe6Y)Z>A|L+^P%P{+A`wlh6 z#wO^;$G`qq_T3MJ-95~f@41uT+x*+Z@x&`|qVIvnN12uVeQzB0g}5uUVeM-8!CPY%8}1JU+aJ zWm-qN&o*ouwNZB5o@Y#H55D*K$vtakENPd|X7_mPHlIsiv|232lJmN2Iz%$bYQ~h- z=@bTo%4jp9w~eID+GiX#?lw*ug)*a2A(PEBo>dAAxv#sB!2`=WR+kY2KofU+Ev3Oo zVht^N7S@3bK=_ZQVA2Tn(z|FxF8~dbJTUYnXA54>pOn*^_(HjOo)wO%Vx5#&cn*D( z=QZ->(MN?TCJ!!J>}7%R8l?CUAgtP4P9F2O(2lm8p>}5Xpc|)V*Pas8&#tAX)}I)j z8reU)ZEDNDJ>&3=Rc$95`_P8ro@0r1bP{d3H~DFfUbYOa=eBWoKe@j2TH^ znq&;IjF8E6sHgy1&ssA|CH`j)X{ZC5Ql&cf1Qwe<81Z?FZV_~J=54I{ATVQ)RMb;c=w&`6uQOraj&I2uHQHh z$B0kIA4Ts9e*z4^4m_X|cC)1_A!Sg=WC5R#uBfaO)7G*whuEOjYV9Q$4sQnK7+2zU zJB1Q41@$!U+nOB|6><{Bn4^rBW-fy%)|;^gtN{f^Ksd{tM}xLXY9ZZWEEz%q#|uLD~dSZ6f4cB z*|LiCLbPu^tIl9j!Y&2Xrx;eCTMDSilQ8qPn)!QPIU`XpnOLA#R~Y6m$jtKWssgIg zm}iDZ2`YC{yw5Xx@!Hp@qYQ;@#4)jf;zc+dRFw4pE8?|eRFCqJ8Qp+i$WBPn%G}?~ z!2i_~^G z+56nxWo%wP1m>1j!JzyDXVpSfm)$>3{dwZ=&io|%@c<(Z3XlzU^_2a(0+HYi=n;)|F*4Ngz zrqg1~`B^nB(lS~B4vzxZKTXqBOcl<6LN$@(3|xI7<+aVguRr5v-0ljC#YvJMhtXtO zs#K{SVjjYFEO<_KtAJXa@~gI~!(4Sz1GNuuJ;-marYPHBpbN$taabs**xEMf`&l zv{WP(%d4YNIgs+v_gmI?YnL#yB4+5qV4vW=--sROBV zspnHSQ^FK$E=#9anK7M8)nF)FHB&uYJzBlH`h4}ZYLTqk0i29;(n%>Pr?aer5F#-& z(5))7m7(6Ux63{*qsl;NfsYCa#zeI|6qwI$)J4Im{CHliDQYb8IHkM;ge6f$wQXylp$wj~?1!(X`L}WNYFnjrOA`wmG#ZN;-$sfNm!82z`sZwN&;OG=D z=T&Gt6*NJQ*78c_5x=mUbXOsHPksjAwZW5-(E7>k zyIoFh?2BMyq`vHDKl%RG{gL{J|2yBvUZ8eY2PS)xR5V*MbaHg_OkdwV?)vO~YVsJh zBRh61I|@Hf-~D{qErAl2o#=n%19)}n!kTM4zgWBG^p4Rj=r54IqoM7@`M#QnUPmj( zb(+n8EtCl5+cloeCnqwk9e?)ZMC9~pitfwwakq2X^XDhHMtB{a-a2t`@9L*dZr*cZ zADkT9x^Cyr!PR41H*5zKFq6o-1UP^XG{beQqN$-KSrtk8>Z&4s_p|U(P!14$^rFK- zV=DY5Lrp^y<;BnYfC@gwYJ7%rDyUGj21~8hX1~8STt`a&V6e{L(Cp`Z=v2)cn-N1b zH&^HYsK81Hbr&)XO}x8=@BioPP2iil(mc_#TwTdpuNF(PENio@-IlDymgVi*7$Y0U zHpVP67!09O6h*NWlTK4~a8ndRQ8f6`G))tlFc~I~O4A8tjN?gCfv#fG43!GJ3@@F^ zWD;JQm!?w*@vBOw2}sw|=Uhn^N%i{$?Oq7?eCPYl_x%@ttBFa~h3lxLXJfb_8jF%o z+A=S-!Whrl)2$4V6JlB!*$o#YV=biQTn<;nHRu|1ZF8}}#k&Swl))Y+udXL{0m+Xo{A^o{u2|zYAl?}rA}o(m^e*bjD@@Crf`QqNe`c3 z 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

8|`O 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%0Awt;HbH71cDE5{){obYwtNYH-uT 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
  • D& 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

    b0gk0 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 delta 49635 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 diff --git a/EWARM/Modbus.ewp b/EWARM/Modbus.ewp index 6817707..63a8cd1 100644 --- a/EWARM/Modbus.ewp +++ b/EWARM/Modbus.ewp @@ -226,6 +226,7 @@ CCDefines USE_HAL_DRIVER STM32F407xx + PLSR_DEBUG_TIMING=1 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 0, "ST-LINK parse count must be positive") + observed = {} + pattern = re.compile( + r"(?im)^\s*0x([0-9a-f]{8})\s*:\s*" + r"((?:[0-9a-f]{8}(?:\s+|$))+)", + ) + for match in pattern.finditer(output): + line_address = int(match.group(1), 16) + for offset, value in enumerate(re.findall( + r"[0-9a-f]{8}", match.group(2), flags=re.IGNORECASE)): + observed[line_address + offset * 4] = int(value, 16) + words = [] + for offset in range(count): + word_address = address + offset * 4 + require(word_address in observed, + "ST-LINK output did not contain address 0x%08X" + % word_address) + words.append(observed[word_address]) + return words class X45Fixture: @@ -138,6 +208,22 @@ class X45Fixture: ) return result.stdout + def read_words(self, address, count): + require(count > 0, "ST-LINK read count must be positive") + output = self._run("-r32", hex(address), str(count * 4)) + return parse_stlink_words(output, address, count) + + def write_words(self, address, values): + require(values, "ST-LINK write values must not be empty") + arguments = [] + for offset, value in enumerate(values): + arguments.extend(( + "-w32", + hex(address + offset * 4), + hex(value & 0xFFFFFFFF), + )) + self._run(*arguments) + def prepare(self): self._run( "-w32", hex(GPIOE_CLOCK_BIT), "1", @@ -244,6 +330,137 @@ class Status: error: int +@dataclasses.dataclass +class Diagnostic: + flags: int + reason: int + segment: int + output_mode: int + direction_positive: bool + expected_pulses: int + actual_pulses: int + count_error: int + requested_hz: int + expected_timer_hz: int + active_timer_hz: int + request_error_hz: int + sample_count: int + mismatch_count: int + maximum_frequency_error_hz: int + first_mismatch_sample: int + + +@dataclasses.dataclass +class PersistenceLiveStats: + attempts: int + successful: int + timeouts: int + maximum_attempt_seconds: float + elapsed_seconds: float + + +@dataclasses.dataclass(frozen=True) +class IrqCycleStats: + count: tuple + last_cycles: tuple + maximum_cycles: tuple + + +@dataclasses.dataclass(frozen=True) +class ProducerCycleStats: + item_count: int + total_cycles: int + maximum_item_cycles: int + + @property + def average_cycles(self): + require(self.item_count > 0, + "producer timing did not record any generated item") + return self.total_cycles / float(self.item_count) + + +@dataclasses.dataclass(frozen=True) +class FinalArmCycleStats: + queue_count: tuple + job_last_cycles: tuple + job_maximum_cycles: tuple + queue_to_stop_last_cycles: tuple + queue_to_stop_maximum_cycles: tuple + + +class TimingFixture: + IRQ_SYMBOLS = ( + "PlsrIrqCount", + "PlsrIrqLastCycles", + "PlsrIrqMaxCycles", + ) + PRODUCER_SYMBOLS = ( + "PlsrProfileProducerItemCount", + "PlsrProfileProducerTotalCycles", + "PlsrProfileProducerMaxItemCycles", + ) + FINAL_ARM_SYMBOLS = ( + "PlsrFinalArmQueueCount", + "PlsrFinalArmJobLastCycles", + "PlsrFinalArmJobMaxCycles", + "PlsrFinalArmQueueToStopLastCycles", + "PlsrFinalArmQueueToStopMaxCycles", + ) + + def __init__(self, probe, map_path): + self.probe = probe + try: + map_text = Path(map_path).read_text( + encoding="utf-8", errors="replace") + except OSError as error: + raise TestFailure("could not read IAR map %s: %s" + % (map_path, error)) from error + self.addresses = { + symbol: parse_iar_map_symbol_address(map_text, symbol) + for symbol in (self.IRQ_SYMBOLS + self.PRODUCER_SYMBOLS + + self.FINAL_ARM_SYMBOLS) + } + + def reset(self): + for symbol in self.IRQ_SYMBOLS: + self.probe.write_words(self.addresses[symbol], [0] * 4) + for symbol in self.PRODUCER_SYMBOLS: + self.probe.write_words(self.addresses[symbol], [0]) + for symbol in self.FINAL_ARM_SYMBOLS: + self.probe.write_words(self.addresses[symbol], [0] * 4) + + def read(self): + irq = IrqCycleStats( + count=tuple(self.probe.read_words( + self.addresses["PlsrIrqCount"], 4)), + last_cycles=tuple(self.probe.read_words( + self.addresses["PlsrIrqLastCycles"], 4)), + maximum_cycles=tuple(self.probe.read_words( + self.addresses["PlsrIrqMaxCycles"], 4)), + ) + producer = ProducerCycleStats( + item_count=self.probe.read_words( + self.addresses["PlsrProfileProducerItemCount"], 1)[0], + total_cycles=self.probe.read_words( + self.addresses["PlsrProfileProducerTotalCycles"], 1)[0], + maximum_item_cycles=self.probe.read_words( + self.addresses["PlsrProfileProducerMaxItemCycles"], 1)[0], + ) + final_arm = FinalArmCycleStats( + queue_count=tuple(self.probe.read_words( + self.addresses["PlsrFinalArmQueueCount"], 4)), + job_last_cycles=tuple(self.probe.read_words( + self.addresses["PlsrFinalArmJobLastCycles"], 4)), + job_maximum_cycles=tuple(self.probe.read_words( + self.addresses["PlsrFinalArmJobMaxCycles"], 4)), + queue_to_stop_last_cycles=tuple(self.probe.read_words( + self.addresses["PlsrFinalArmQueueToStopLastCycles"], 4)), + queue_to_stop_maximum_cycles=tuple(self.probe.read_words( + self.addresses["PlsrFinalArmQueueToStopMaxCycles"], 4)), + ) + return irq, producer, final_arm + + class RtuClient: def __init__(self, port, baud, slave, timeout): self.port_name = port @@ -306,11 +523,30 @@ class RtuClient: if not waiting: time.sleep(0.0005) + waiting = self.serial_port.in_waiting + if waiting: + response.extend(self.serial_port.read(waiting)) + if len(response) >= 2 and response[1] == (pdu[0] | 0x80): + expected_length = 5 + elif pdu[0] == 0x03 and len(response) >= 3: + expected_length = response[2] + 5 + elif pdu[0] in (0x06, 0x10): + expected_length = 8 + self.last_request_finished = time.monotonic() - require(response, "no Modbus response to %s" % request.hex(" ")) - require(expected_length is not None, "response header is incomplete") + if not response: + raise RtuTimeout("no Modbus response to %s" % request.hex(" ")) + if expected_length is None: + raise RtuTimeout( + "Modbus response header timed out: %s" % response.hex(" ") + ) + if len(response) < expected_length: + raise RtuTimeout( + "Modbus response timed out after %d/%d bytes: %s" + % (len(response), expected_length, response.hex(" ")) + ) require(len(response) == expected_length, - "incomplete or oversized Modbus response: %s" % response.hex(" ")) + "oversized Modbus response: %s" % response.hex(" ")) require(len(response) >= 5, "short Modbus response: %s" % response.hex(" ")) received_crc = response[-2] | (response[-1] << 8) require( @@ -402,6 +638,93 @@ def read_status(client): ) +def parse_diagnostic(words): + require(len(words) == DIAGNOSTIC_WORDS, + "diagnostic register count must be %d" % DIAGNOSTIC_WORDS) + mode_direction = words[3] + return Diagnostic( + flags=words[0], + reason=words[1], + segment=words[2], + output_mode=mode_direction & 0xFF, + direction_positive=bool(mode_direction & 0x0100), + expected_pulses=join_u32(words[4], words[5]), + actual_pulses=join_u32(words[6], words[7]), + count_error=join_i32(words[8], words[9]), + requested_hz=join_u32(words[10], words[11]), + expected_timer_hz=join_u32(words[12], words[13]), + active_timer_hz=join_u32(words[14], words[15]), + request_error_hz=join_i32(words[16], words[17]), + sample_count=join_u32(words[18], words[19]), + mismatch_count=join_u32(words[20], words[21]), + maximum_frequency_error_hz=join_u32(words[22], words[23]), + first_mismatch_sample=join_u32(words[24], words[25]), + ) + + +def read_diagnostic(client): + return parse_diagnostic( + client.read_holding(DIAGNOSTIC_BASE, DIAGNOSTIC_WORDS) + ) + + +def clear_diagnostic(client): + client.write_single(DIAGNOSTIC_CONTROL, DIAGNOSTIC_CLEAR) + diagnostic = read_diagnostic(client) + require(diagnostic.flags == 0, "diagnostic CLEAR did not clear flags") + require(diagnostic.reason == 0, "diagnostic CLEAR did not clear reason") + require(diagnostic.first_mismatch_sample == 0xFFFFFFFF, + "diagnostic CLEAR first mismatch sentinel is invalid") + + +def require_diagnostic_pass(diagnostic, expected_pulses, expected_mode, + direction_positive, label, expected_segment=1): + require((diagnostic.flags & DIAG_COMPLETE_PASS) == DIAG_COMPLETE_PASS, + "%s diagnostic checks incomplete or failed: flags=0x%04X" + % (label, diagnostic.flags)) + require(not (diagnostic.flags & DIAG_MONITORING), + "%s diagnostic remained active" % label) + require(not (diagnostic.flags & DIAG_FAULT_LATCHED), + "%s diagnostic latched fault %d" % (label, diagnostic.reason)) + require(diagnostic.reason == 0, "%s diagnostic reason is %d" + % (label, diagnostic.reason)) + require(diagnostic.segment == expected_segment, + "%s diagnostic segment expected %d, got %d" + % (label, expected_segment, diagnostic.segment)) + require(diagnostic.output_mode == expected_mode, + "%s diagnostic output mode expected %d, got %d" + % (label, expected_mode, diagnostic.output_mode)) + require(diagnostic.direction_positive == direction_positive, + "%s diagnostic direction mismatch" % label) + require(diagnostic.expected_pulses == expected_pulses, + "%s diagnostic expected pulse count %d, got %d" + % (label, expected_pulses, diagnostic.expected_pulses)) + require(diagnostic.actual_pulses == expected_pulses, + "%s diagnostic actual pulse count %d, got %d" + % (label, expected_pulses, diagnostic.actual_pulses)) + require(diagnostic.count_error == 0, + "%s diagnostic count error %d" % (label, diagnostic.count_error)) + require(diagnostic.requested_hz > 0, + "%s diagnostic requested frequency is zero" % label) + require(diagnostic.expected_timer_hz > 0, + "%s diagnostic expected timer frequency is zero" % label) + require(diagnostic.active_timer_hz == diagnostic.expected_timer_hz, + "%s diagnostic active/expected frequency %d/%d" + % (label, diagnostic.active_timer_hz, + diagnostic.expected_timer_hz)) + require(diagnostic.sample_count > 0, + "%s diagnostic did not capture curve samples" % label) + require(diagnostic.mismatch_count == 0, + "%s diagnostic curve mismatch count %d" + % (label, diagnostic.mismatch_count)) + require(diagnostic.maximum_frequency_error_hz == 0, + "%s diagnostic maximum active frequency error %d Hz" + % (label, diagnostic.maximum_frequency_error_hz)) + require(diagnostic.first_mismatch_sample == 0xFFFFFFFF, + "%s diagnostic first mismatch sample is %d" + % (label, diagnostic.first_mismatch_sample)) + + def wait_for_status(client, predicate, timeout, description): deadline = time.monotonic() + timeout last_status = None @@ -441,6 +764,14 @@ def expect_exception(operation, expected_code, label): raise TestFailure("%s did not return a Modbus exception" % label) +def expect_test_failure(operation, label): + try: + operation() + except TestFailure: + return + raise TestFailure("%s unexpectedly passed" % label) + + def make_common( position_mode=0, segment_count=1, @@ -496,7 +827,24 @@ def configure(client, common, segment_1, segment_2=None): client.write_multiple(SEGMENT_2_BASE, segment_2) +def configure_segments(client, common, segments): + require(1 <= len(segments) <= 10, + "segment configuration count must be 1..10") + client.write_multiple(CONFIG_BASE, common) + for index, segment in enumerate(segments): + client.write_multiple(SEGMENT_1_BASE + index * 0x10, segment) + + +def configure_pulse_dir(client, common, segment_1, segment_2=None): + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) + require(client.read_holding(OUTPUT_MODE, 1) == [OUTPUT_PULSE_DIR], + "PULSE/DIR output mode readback failed") + configure(client, common, segment_1, segment_2) + clear_diagnostic(client) + + def restore_default_configuration(client): + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) common = make_common( default_hz=1000, start_hz=100, @@ -535,10 +883,19 @@ def test_fixed_map_and_exceptions(client): segment = client.read_holding(SEGMENT_1_BASE, SEGMENT_WORDS) status = read_status(client) control = client.read_holding(CONTROL, 1) + output_mode = client.read_holding(OUTPUT_MODE, 1) + diagnostic = read_diagnostic(client) + diagnostic_control = client.read_holding(DIAGNOSTIC_CONTROL, 1) require(len(common) == COMMON_WORDS, "common map read failed") require(len(segment) == SEGMENT_WORDS, "segment map read failed") require(0 <= status.state <= STATUS_ERROR, "status enum is out of range") require(control == [0], "control register must read as zero") + require(output_mode[0] in (OUTPUT_PULSE_DIR, OUTPUT_AB), + "output mode is out of range") + require(diagnostic.output_mode in (OUTPUT_PULSE_DIR, OUTPUT_AB), + "diagnostic output mode is out of range") + require(diagnostic_control == [0], + "diagnostic control register must read as zero") require(client.read_holding(0x100F, 1) == [0], "reserved word is not zero") require(client.read_holding(0x1108, 1) == [0], "segment padding is not zero") @@ -577,25 +934,64 @@ def test_fixed_map_and_exceptions(client): EX_ILLEGAL_VALUE, "combined control command", ) + expect_exception( + lambda: client.read_holding(0x11FF, 2), + EX_ILLEGAL_ADDRESS, + "range crossing into output mode", + ) + expect_exception( + lambda: client.read_holding(0x2119, 2), + EX_ILLEGAL_ADDRESS, + "range crossing diagnostic end", + ) + expect_exception( + lambda: client.write_single(DIAGNOSTIC_BASE, 0), + EX_ILLEGAL_ADDRESS, + "diagnostic write", + ) + expect_exception( + lambda: client.write_single(DIAGNOSTIC_CONTROL, 2), + EX_ILLEGAL_VALUE, + "invalid diagnostic command", + ) + expect_exception( + lambda: client.write_single(OUTPUT_MODE, 2), + EX_ILLEGAL_VALUE, + "invalid output mode", + ) def test_positive_negative_and_absolute_zero(client): clear_position(client) common = make_common(position_mode=0, start_hz=500) - configure(client, common, make_segment(500, 25)) + configure_pulse_dir(client, common, make_segment(500, 25)) command(client, COMMAND_START) status = wait_terminal(client, 3.0) require(status.state == STATUS_COMPLETED, "positive move did not complete") require(status.position == 25, "positive accumulation expected 25") + require_diagnostic_pass( + read_diagnostic(client), + 25, + OUTPUT_PULSE_DIR, + True, + "positive move", + ) - configure(client, common, make_segment(500, -10)) + configure_pulse_dir(client, common, make_segment(500, -10)) command(client, COMMAND_START) status = wait_terminal(client, 3.0) require(status.state == STATUS_COMPLETED, "negative move did not complete") require(status.position == 15, "negative accumulation expected 15") + require_diagnostic_pass( + read_diagnostic(client), + 10, + OUTPUT_PULSE_DIR, + False, + "negative move", + ) absolute = make_common(position_mode=1, start_hz=500) - configure(client, absolute, make_segment(500, 15)) + configure_pulse_dir(client, absolute, make_segment(500, 15)) before = read_status(client) command(client, COMMAND_START) status = wait_terminal(client, 1.0) @@ -603,6 +999,160 @@ def test_positive_negative_and_absolute_zero(client): require(status.position == before.position, "absolute zero changed position") +def test_ten_segments_in_sequence(client): + clear_position(client) + common = make_common( + segment_count=10, + default_hz=1000, + start_hz=1000, + stop_hz=1000, + ) + pulse_counts = [100 + index for index in range(10)] + segments = [make_segment(1000, pulses) for pulses in pulse_counts] + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) + configure_segments(client, common, segments) + clear_diagnostic(client) + require(client.read_holding(CONFIG_BASE + 0x09, 2) == [10, 1], + "ten-segment count/start readback mismatch") + + command(client, COMMAND_START) + for segment_number in range(1, 11): + wait_for_status( + client, + lambda item, expected=segment_number: + item.segment == expected and item.state in ACTIVE_STATES, + 2.0, + "sequential segment %d" % segment_number, + ) + + status = wait_terminal(client, 3.0) + expected_position = sum(pulse_counts) + require(status.state == STATUS_COMPLETED, + "ten-segment sequence did not complete") + require(status.position == expected_position, + "ten-segment sequence position expected %d, got %d" + % (expected_position, status.position)) + require_diagnostic_pass( + read_diagnostic(client), + pulse_counts[-1], + OUTPUT_PULSE_DIR, + True, + "ten-segment sequence final segment", + expected_segment=10, + ) + + +def test_start_segment_ten(client): + clear_position(client) + common = make_common( + segment_count=10, + start_segment=10, + default_hz=1000, + start_hz=1000, + stop_hz=1000, + ) + segment_ten_pulses = 200 + segments = [make_segment(1000, 11 + index) for index in range(9)] + segments.append(make_segment(1000, segment_ten_pulses)) + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) + configure_segments(client, common, segments) + clear_diagnostic(client) + require(client.read_holding(CONFIG_BASE + 0x09, 2) == [10, 10], + "startSegment=10 readback mismatch") + + command(client, COMMAND_START) + wait_for_status( + client, + lambda item: item.segment == 10 and item.state in ACTIVE_STATES, + 2.0, + "startSegment=10 active segment", + ) + status = wait_terminal(client, 3.0) + require(status.state == STATUS_COMPLETED, + "startSegment=10 move did not complete") + require(status.position == segment_ten_pulses, + "startSegment=10 executed an earlier segment: position=%d" + % status.position) + require_diagnostic_pass( + read_diagnostic(client), + segment_ten_pulses, + OUTPUT_PULSE_DIR, + True, + "startSegment=10", + expected_segment=10, + ) + + +def test_direction_output_and_polarity_matrix(client): + pulse_count = 25 + direction_delay_ms = 500 + + for direction_output in range(4): + for negative_logic in range(2): + for direction in (1, -1): + label = "Y%d DIR %s %s logic" % ( + direction_output + 12, + "positive" if direction > 0 else "negative", + "negative" if negative_logic else "positive", + ) + clear_position(client) + common = make_common( + default_hz=500, + start_hz=500, + stop_hz=500, + ) + common[0x01] = direction_output + common[0x05] = direction_delay_ms + common[0x06] = negative_logic + target = direction * pulse_count + segment = make_segment(500, target) + configure_pulse_dir(client, common, segment) + + common_readback = client.read_holding(CONFIG_BASE, COMMON_WORDS) + segment_readback = client.read_holding( + SEGMENT_1_BASE, SEGMENT_WORDS) + require(common_readback[0x01] == direction_output, + "%s direction output readback mismatch" % label) + require(common_readback[0x05] == direction_delay_ms, + "%s direction delay readback mismatch" % label) + require(common_readback[0x06] == negative_logic, + "%s direction polarity readback mismatch" % label) + require(join_i32(segment_readback[2], segment_readback[3]) + == target, + "%s signed target readback mismatch" % label) + + command(client, COMMAND_START) + before_pulses = wait_for_status( + client, + lambda item: item.state == STATUS_ACCELERATING + and item.segment == 1, + 0.25, + "%s direction-delay state" % label, + ) + require(before_pulses.segment == 1, + "%s direction delay selected wrong segment" % label) + require(before_pulses.position == 0, + "%s counted a logical pulse during direction delay" + % label) + require(before_pulses.frequency_hz == 0, + "%s reported a pulse frequency during direction delay" + % label) + + status = wait_terminal(client, 3.0) + require(status.state == STATUS_COMPLETED, + "%s did not complete" % label) + require(status.position == target, + "%s position expected %d, got %d" + % (label, target, status.position)) + require_diagnostic_pass( + read_diagnostic(client), + pulse_count, + OUTPUT_PULSE_DIR, + direction > 0, + label, + ) + + def test_all_outputs_at_100khz(client): for output in range(4): clear_position(client) @@ -613,7 +1163,7 @@ def test_all_outputs_at_100khz(client): ) common[0x00] = output common[0x01] = output - configure(client, common, make_segment(100000, 1000)) + configure_pulse_dir(client, common, make_segment(100000, 1000)) command(client, COMMAND_START) status = wait_terminal(client, 2.0) require(status.state == STATUS_COMPLETED, @@ -621,6 +1171,13 @@ def test_all_outputs_at_100khz(client): require(status.position == 1000, "output %d count expected 1000, got %d" % (output, status.position)) + require_diagnostic_pass( + read_diagnostic(client), + 1000, + OUTPUT_PULSE_DIR, + True, + "output %d 100 kHz" % output, + ) def test_short_final_profiles(client): @@ -633,7 +1190,7 @@ def test_short_final_profiles(client): stop_hz=100, deceleration_ms=1000, ) - configure(client, common, make_segment(100000, 10)) + configure_pulse_dir(client, common, make_segment(100000, 10)) command(client, COMMAND_START) status = wait_terminal(client, 2.0) require(status.state == STATUS_COMPLETED, @@ -644,11 +1201,234 @@ def test_short_final_profiles(client): require(status.position == 10, "short curve %d count expected 10, got %d" % (curve_mode, status.position)) + require_diagnostic_pass( + read_diagnostic(client), + 10, + OUTPUT_PULSE_DIR, + True, + "short curve %d" % curve_mode, + ) + + +def test_long_millisecond_ramp(client): + pulses = 65535 + label = "65,535-pulse 1 ms ramp" + clear_position(client) + common = make_common( + curve_mode=2, + default_hz=100000, + start_hz=1000, + stop_hz=1000, + acceleration_ms=100, + deceleration_ms=100, + ) + configure_pulse_dir(client, common, make_segment(100000, pulses)) + command(client, COMMAND_START) + status = wait_terminal(client, 5.0) + require(status.state == STATUS_COMPLETED, + "%s did not complete" % label) + require(status.position == pulses, + "%s expected %d pulses, got %d" + % (label, pulses, status.position)) + diagnostic = read_diagnostic(client) + require(frequency_matches(diagnostic.requested_hz, 1000), + "%s final requested frequency expected 1000 Hz, got %d Hz" + % (label, diagnostic.requested_hz)) + require_diagnostic_pass( + diagnostic, + pulses, + OUTPUT_PULSE_DIR, + True, + label, + ) + + +def require_irq_cycle_budget(stats, expected_outputs, label): + for output in expected_outputs: + require(stats.count[output] > 0, + "%s output Y%d recorded no IRQ samples" % (label, output)) + maximum = stats.maximum_cycles[output] + require(maximum > 0, + "%s output Y%d recorded a zero IRQ maximum" + % (label, output)) + require(maximum < IRQ_CYCLE_BUDGET_100KHZ, + "%s output Y%d IRQ maximum %d cycles exceeds < %d budget" + % (label, output, maximum, IRQ_CYCLE_BUDGET_100KHZ)) + print("INFO %s Y%d irq_count=%d last=%d max=%d cycles" + % (label, output, stats.count[output], + stats.last_cycles[output], maximum)) + + +def require_producer_cycle_budget(stats, label): + average = stats.average_cycles + require(stats.total_cycles >= stats.maximum_item_cycles, + "%s producer timing counters are inconsistent" % label) + require(average < IRQ_CYCLE_BUDGET_100KHZ, + "%s producer average %.2f cycles/item exceeds < %d budget" + % (label, average, IRQ_CYCLE_BUDGET_100KHZ)) + print("INFO %s producer_items=%d total=%d average=%.2f max=%d cycles" + % (label, stats.item_count, stats.total_cycles, + average, stats.maximum_item_cycles)) + + +def require_no_producer_activity(stats, label): + require(stats.item_count == 0, + "%s unexpectedly generated %d short-profile items" + % (label, stats.item_count)) + require(stats.total_cycles == 0, + "%s unexpectedly recorded %d producer cycles" + % (label, stats.total_cycles)) + require(stats.maximum_item_cycles == 0, + "%s unexpectedly recorded a %d-cycle producer maximum" + % (label, stats.maximum_item_cycles)) + print("INFO %s producer_items=0 total=0 max=0 cycles" % label) + + +def require_final_arm_cycle_budget(stats, expected_outputs, label): + for output in expected_outputs: + require(stats.queue_count[output] > 0, + "%s output Y%d queued no final-arm jobs" % (label, output)) + job_maximum = stats.job_maximum_cycles[output] + latency_maximum = stats.queue_to_stop_maximum_cycles[output] + require(job_maximum > 0, + "%s output Y%d recorded a zero final-arm job maximum" + % (label, output)) + require(latency_maximum > 0, + "%s output Y%d recorded a zero queue-to-stop maximum" + % (label, output)) + require(job_maximum < IRQ_CYCLE_BUDGET_100KHZ, + "%s output Y%d final-arm job maximum %d cycles exceeds < %d budget" + % (label, output, job_maximum, + IRQ_CYCLE_BUDGET_100KHZ)) + require(latency_maximum < IRQ_CYCLE_BUDGET_100KHZ, + "%s output Y%d queue-to-stop maximum %d cycles exceeds < %d budget" + % (label, output, latency_maximum, + IRQ_CYCLE_BUDGET_100KHZ)) + print( + "INFO %s Y%d final_arm_count=%d job_last=%d job_max=%d " + "queue_to_stop_last=%d queue_to_stop_max=%d cycles" + % (label, output, stats.queue_count[output], + stats.job_last_cycles[output], job_maximum, + stats.queue_to_stop_last_cycles[output], latency_maximum)) + + +def test_ab_100khz_timing_paths(client): + pulses_per_case = 100000 + for output, direction in ((0, 1), (2, -1)): + target = direction * pulses_per_case + label = "AB Y%d/Y%d %s timing" % ( + output, + output + 1, + "positive" if direction > 0 else "negative", + ) + clear_position(client) + configure_ab( + client, + output, + make_common( + default_hz=100000, + start_hz=100000, + stop_hz=100000, + ), + make_segment(100000, target), + ) + clear_diagnostic(client) + command(client, COMMAND_START) + wait_for_status( + client, + lambda item: item.state in ACTIVE_STATES + and abs(item.position) >= 100 + and frequency_matches(item.frequency_hz, 100000), + 2.0, + "%s initial 100 kHz" % label, + ) + + # Both writes are committed at an AB zero boundary. The first measures + # PlsrAbLoadAndStart while the incoming cycle is still 100 kHz; the + # second returns the final gate path to the worst-case 10 us period. + client.write_multiple(SEGMENT_1_BASE, split_u32(80000)) + wait_for_status( + client, + lambda item: item.state in ACTIVE_STATES + and frequency_matches(item.frequency_hz, 80000), + 2.0, + "%s dynamic 80 kHz" % label, + ) + client.write_multiple(SEGMENT_1_BASE, split_u32(100000)) + wait_for_status( + client, + lambda item: item.state in ACTIVE_STATES + and frequency_matches(item.frequency_hz, 100000), + 2.0, + "%s restored 100 kHz" % label, + ) + status = wait_terminal(client, 3.0) + require(status.state == STATUS_COMPLETED, + "%s did not complete" % label) + require(status.position == target, + "%s position expected %d, got %d" + % (label, target, status.position)) + require_diagnostic_pass( + read_diagnostic(client), + pulses_per_case, + OUTPUT_AB, + direction > 0, + label, + ) + + +def run_timing(client, timing, keep_config): + snapshot = ( + client.read_holding(OUTPUT_MODE, 1)[0], + client.read_holding(CONFIG_BASE, COMMON_WORDS), + client.read_holding(SEGMENT_1_BASE, SEGMENT_WORDS), + client.read_holding(SEGMENT_2_BASE, SEGMENT_WORDS), + ) + try: + timing.reset() + run_case("timing_constant_100khz_four_outputs", + lambda: test_all_outputs_at_100khz(client)) + irq, _, _ = timing.read() + require_irq_cycle_budget(irq, range(4), "constant 100 kHz") + + timing.reset() + run_case("timing_short_final_profiles", + lambda: test_short_final_profiles(client)) + irq, producer, _ = timing.read() + require_irq_cycle_budget(irq, (0,), "10-pulse profiles") + require_producer_cycle_budget(producer, "10-pulse profiles") + + timing.reset() + run_case("timing_long_millisecond_ramp", + lambda: test_long_millisecond_ramp(client)) + irq, producer, _ = timing.read() + require_irq_cycle_budget(irq, (0,), "65,535-pulse 1 ms ramp") + require_no_producer_activity(producer, "65,535-pulse 1 ms ramp") + + timing.reset() + run_case("timing_ab_100khz_reload_and_fast_gate", + lambda: test_ab_100khz_timing_paths(client)) + irq, _, final_arm = timing.read() + require_irq_cycle_budget( + irq, (0, 2), "AB 100 kHz reload and fast gate") + require_final_arm_cycle_budget( + final_arm, (0, 2), "AB 100 kHz final arm") + finally: + if keep_config: + cleanup_preserving_primary_error( + lambda: safe_stop(client), + "timing motion stop", + ) + else: + cleanup_preserving_primary_error( + lambda: restore_configuration(client, snapshot), + "timing configuration restore", + ) def test_wait_time(client): clear_position(client) - configure( + configure_pulse_dir( client, make_common(start_hz=500), make_segment(500, 10, wait_type=WAIT_TIME, wait_time_ms=120), @@ -666,11 +1446,18 @@ def test_wait_time(client): observed_wait = time.monotonic() - waiting_at require(status.state == STATUS_COMPLETED, "WAIT_TIME did not complete") require(observed_wait >= 0.050, "WAIT_TIME completed implausibly early") + require_diagnostic_pass( + read_diagnostic(client), + 10, + OUTPUT_PULSE_DIR, + True, + "WAIT_TIME", + ) def test_act_time(client): clear_position(client) - configure( + configure_pulse_dir( client, make_common(start_hz=1000), make_segment(1000, 2000, wait_type=ACT_TIME, act_time_ms=80), @@ -683,7 +1470,7 @@ def test_act_time(client): def test_dynamic_frequency_and_repeated_stop(client): clear_position(client) - configure( + configure_pulse_dir( client, make_common(start_hz=500, deceleration_ms=150), make_segment(500, 3000), @@ -722,7 +1509,7 @@ def test_future_segment_frequency_applies_on_arrival(client): common = make_common(segment_count=2, start_hz=400) segment_1 = make_segment(400, 200) segment_2 = make_segment(700, 200) - configure(client, common, segment_1, segment_2) + configure_pulse_dir(client, common, segment_1, segment_2) command(client, COMMAND_START) wait_for_status( client, @@ -744,6 +1531,14 @@ def test_future_segment_frequency_applies_on_arrival(client): ) status = wait_terminal(client, 3.0) require(status.state == STATUS_COMPLETED, "two-segment move did not complete") + require_diagnostic_pass( + read_diagnostic(client), + 200, + OUTPUT_PULSE_DIR, + True, + "updated segment 2 frequency", + expected_segment=2, + ) def test_subsequent_future_frequency_rebuilds_handoff(client): @@ -755,7 +1550,7 @@ def test_subsequent_future_frequency_rebuilds_handoff(client): ) segment_1 = make_segment(400, 200) segment_2 = make_segment(700, 200) - configure(client, common, segment_1, segment_2) + configure_pulse_dir(client, common, segment_1, segment_2) command(client, COMMAND_START) wait_for_status( client, @@ -784,6 +1579,14 @@ def test_subsequent_future_frequency_rebuilds_handoff(client): "subsequent two-segment move did not complete") require(status.position == 400, "subsequent two-segment position expected 400") + require_diagnostic_pass( + read_diagnostic(client), + 200, + OUTPUT_PULSE_DIR, + True, + "subsequent segment 2 frequency", + expected_segment=2, + ) def require_fixture_level(fixture, input_selection, expected, label): @@ -817,7 +1620,11 @@ def test_wait_signal_input(client, fixture, input_selection): stop_hz=1000, ) common[0x02] = input_selection - configure(client, common, make_segment(1000, 50, wait_type=WAIT_SIGNAL)) + configure_pulse_dir( + client, + common, + make_segment(1000, 50, wait_type=WAIT_SIGNAL), + ) command(client, COMMAND_START) waiting = wait_for_status( client, @@ -833,6 +1640,13 @@ def test_wait_signal_input(client, fixture, input_selection): status = wait_terminal(client, 2.0) require(status.state == STATUS_COMPLETED, "WAIT_SIGNAL did not complete") require(status.position == 50, "WAIT_SIGNAL changed completed position") + require_diagnostic_pass( + read_diagnostic(client), + 50, + OUTPUT_PULSE_DIR, + True, + "X%d WAIT_SIGNAL" % (input_selection + 4), + ) fixture.drive(input_selection, False) @@ -845,7 +1659,11 @@ def test_ext_signal_input(client, fixture, input_selection, wait_type): stop_hz=1000, ) common[0x03] = input_selection - configure(client, common, make_segment(1000, 5000, wait_type=wait_type)) + configure_pulse_dir( + client, + common, + make_segment(1000, 5000, wait_type=wait_type), + ) command(client, COMMAND_START) wait_for_status( client, @@ -871,7 +1689,7 @@ def test_ext_or_complete_natural(client, fixture, input_selection): stop_hz=1000, ) common[0x03] = input_selection - configure( + configure_pulse_dir( client, common, make_segment(1000, 50, wait_type=EXT_OR_COMPLETE), @@ -882,15 +1700,24 @@ def test_ext_or_complete_natural(client, fixture, input_selection): "EXT_OR_COMPLETE natural branch did not complete") require(status.position == 50, "EXT_OR_COMPLETE natural branch expected 50 pulses") + require_diagnostic_pass( + read_diagnostic(client), + 50, + OUTPUT_PULSE_DIR, + True, + "X%d EXT_OR_COMPLETE natural" % (input_selection + 4), + ) def run_x45(client, fixture, keep_config): snapshot = ( + client.read_holding(OUTPUT_MODE, 1)[0], client.read_holding(CONFIG_BASE, COMMON_WORDS), client.read_holding(SEGMENT_1_BASE, SEGMENT_WORDS), client.read_holding(SEGMENT_2_BASE, SEGMENT_WORDS), ) try: + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) fixture.prepare() run_case("x45_electrical_scan", lambda: test_x45_electrical_scan(fixture)) @@ -920,32 +1747,295 @@ def run_x45(client, fixture, keep_config): ) finally: try: - fixture.all_off() + cleanup_preserving_primary_error( + fixture.all_off, + "X4/X5 output shutdown", + ) finally: try: - safe_stop(client) - if not keep_config: - restore_configuration(client, snapshot) + if keep_config: + cleanup_preserving_primary_error( + lambda: safe_stop(client), + "X4/X5 motion stop", + ) + else: + cleanup_preserving_primary_error( + lambda: restore_configuration(client, snapshot), + "X4/X5 configuration restore", + ) finally: - fixture.release() + cleanup_preserving_primary_error( + fixture.release, + "X4/X5 fixture release", + ) def safe_stop(client): + status = read_status(client) + if status.state in ACTIVE_STATES: + command(client, COMMAND_STOP) + wait_terminal(client, 3.0) + + +def cleanup_preserving_primary_error(cleanup, label, warning_stream=None): + primary_error = sys.exc_info()[1] try: - status = read_status(client) - if status.state in ACTIVE_STATES: - command(client, COMMAND_STOP) - wait_terminal(client, 3.0) - except (ModbusException, TestFailure, serial.SerialException): - pass + cleanup() + except Exception as cleanup_error: + if primary_error is None: + raise + message = "%s failed during error cleanup: %s: %s" % ( + label, + type(cleanup_error).__name__, + cleanup_error, + ) + if hasattr(primary_error, "add_note"): + primary_error.add_note(message) + if warning_stream is None: + warning_stream = sys.stderr + print("WARN: %s" % message, file=warning_stream) def restore_configuration(client, snapshot): safe_stop(client) command(client, COMMAND_CLEAR) - client.write_multiple(CONFIG_BASE, snapshot[0]) - client.write_multiple(SEGMENT_1_BASE, snapshot[1]) - client.write_multiple(SEGMENT_2_BASE, snapshot[2]) + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) + client.write_multiple(CONFIG_BASE, snapshot[1]) + segments = snapshot[2] if len(snapshot) == 3 else snapshot[2:] + for index, segment in enumerate(segments): + client.write_multiple(SEGMENT_1_BASE + index * 0x10, segment) + client.write_single(OUTPUT_MODE, snapshot[0]) + + +def snapshot_ab_configuration(client): + return ( + client.read_holding(OUTPUT_MODE, 1)[0], + client.read_holding(CONFIG_BASE, COMMON_WORDS), + client.read_holding(SEGMENT_1_BASE, SEGMENT_WORDS), + ) + + +def restore_ab_configuration(client, snapshot): + safe_stop(client) + command(client, COMMAND_CLEAR) + # PULSE/DIR accepts every pulse output, so use it while restoring a + # possible Y1/Y3 configuration that would be invalid in AB mode. + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) + client.write_multiple(CONFIG_BASE, snapshot[1]) + client.write_multiple(SEGMENT_1_BASE, snapshot[2]) + client.write_single(OUTPUT_MODE, snapshot[0]) + clear_diagnostic(client) + + +def configure_ab(client, output, common, segment): + require(output in (0, 2), "AB output must select Y0/Y1 or Y2/Y3") + common = list(common) + common[0x00] = output + client.write_multiple(CONFIG_BASE, common) + client.write_multiple(SEGMENT_1_BASE, segment) + client.write_single(OUTPUT_MODE, OUTPUT_AB) + require(client.read_holding(OUTPUT_MODE, 1) == [OUTPUT_AB], + "AB output mode readback failed") + + +def run_isolated_ab_case(client, name, function): + def isolated(): + snapshot = snapshot_ab_configuration(client) + try: + function() + finally: + cleanup_preserving_primary_error( + lambda: restore_ab_configuration(client, snapshot), + "%s configuration restore" % name, + ) + + run_case(name, isolated) + + +def test_ab_completed_motion(client, output, frequency_hz, pulses, curve_mode, + start_hz, stop_hz, acceleration_ms, + deceleration_ms, timeout, label): + clear_position(client) + configure_ab( + client, + output, + make_common( + curve_mode=curve_mode, + default_hz=frequency_hz, + start_hz=start_hz, + stop_hz=stop_hz, + acceleration_ms=acceleration_ms, + deceleration_ms=deceleration_ms, + ), + make_segment(frequency_hz, pulses), + ) + clear_diagnostic(client) + command(client, COMMAND_START) + status = wait_terminal(client, timeout) + require(status.state == STATUS_COMPLETED, + "%s did not complete" % label) + require(status.position == pulses, + "%s position expected %d, got %d" + % (label, pulses, status.position)) + diagnostic = read_diagnostic(client) + require_diagnostic_pass( + diagnostic, + abs(pulses), + OUTPUT_AB, + pulses >= 0, + label, + ) + print( + "INFO %s pair=Y%d/Y%d direction=%s requested=%dHz " + "timer=%dHz pulses=%d samples=%d" + % ( + label, + output, + output + 1, + "positive" if pulses >= 0 else "negative", + frequency_hz, + diagnostic.active_timer_hz, + diagnostic.actual_pulses, + diagnostic.sample_count, + ) + ) + + +def test_ab_stop(client): + expected_pulses = 50000 + clear_position(client) + configure_ab( + client, + 0, + make_common( + default_hz=2000, + start_hz=500, + stop_hz=500, + acceleration_ms=100, + deceleration_ms=100, + ), + make_segment(2000, expected_pulses), + ) + clear_diagnostic(client) + command(client, COMMAND_START) + wait_for_status( + client, + lambda item: item.state in ACTIVE_STATES and item.position >= 10, + 3.0, + "AB STOP active motion", + ) + expect_exception( + lambda: client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR), + EX_DEVICE_BUSY, + "AB output mode write while busy", + ) + command(client, COMMAND_STOP) + status = wait_terminal(client, 4.0) + require(status.state == STATUS_STOPPED, "AB STOP did not enter STOPPED") + require(0 < status.position < expected_pulses, + "AB STOP did not cut the active move") + diagnostic = read_diagnostic(client) + require(not (diagnostic.flags & DIAG_MONITORING), + "AB STOP diagnostic remained active") + require(not (diagnostic.flags & DIAG_FAULT_LATCHED), + "AB STOP latched diagnostic fault %d" % diagnostic.reason) + require(not (diagnostic.flags & DIAG_COUNT_CHECKED), + "AB STOP incorrectly marked incomplete count as checked") + require(diagnostic.expected_pulses == expected_pulses, + "AB STOP diagnostic target mismatch") + require(0 < diagnostic.actual_pulses < expected_pulses, + "AB STOP diagnostic actual count is implausible") + require(diagnostic.output_mode == OUTPUT_AB, + "AB STOP diagnostic mode mismatch") + require(diagnostic.direction_positive, + "AB STOP diagnostic direction mismatch") + + +def test_ab_dynamic_frequency(client): + expected_pulses = 6000 + clear_position(client) + configure_ab( + client, + 2, + make_common( + default_hz=800, + start_hz=800, + stop_hz=800, + ), + make_segment(800, -expected_pulses), + ) + clear_diagnostic(client) + command(client, COMMAND_START) + wait_for_status( + client, + lambda item: item.state in ACTIVE_STATES and item.position <= -10 + and frequency_matches(item.frequency_hz, 800), + 3.0, + "AB dynamic initial frequency", + ) + client.write_multiple(SEGMENT_1_BASE, split_u32(3200)) + dynamic = wait_for_status( + client, + lambda item: item.state in ACTIVE_STATES + and frequency_matches(item.frequency_hz, 3200), + 3.0, + "AB dynamic updated frequency", + ) + print("INFO AB dynamic frequency requested=3200 actual=%d" + % dynamic.frequency_hz) + status = wait_terminal(client, 6.0) + require(status.state == STATUS_COMPLETED, + "AB dynamic-frequency move did not complete") + require(status.position == -expected_pulses, + "AB dynamic-frequency position mismatch") + require_diagnostic_pass( + read_diagnostic(client), + expected_pulses, + OUTPUT_AB, + False, + "AB dynamic frequency", + ) + + +def run_ab(client): + cases = ( + ( + "ab_y0_y1_positive_1hz_linear_short", + lambda: test_ab_completed_motion( + client, 0, 1, 1, 0, 1, 1, 0, 0, 5.0, + "AB Y0/Y1 positive 1 Hz linear short", + ), + ), + ( + "ab_y0_y1_negative_typical_s_curve", + lambda: test_ab_completed_motion( + client, 0, 2500, -1200, 1, 250, 250, 80, 80, 5.0, + "AB Y0/Y1 negative typical S curve", + ), + ), + ( + "ab_y2_y3_positive_100khz_sine", + lambda: test_ab_completed_motion( + client, 2, 100000, 5000, 2, 1000, 1000, 20, 20, 4.0, + "AB Y2/Y3 positive 100 kHz sine", + ), + ), + ( + "ab_y2_y3_negative_typical_linear", + lambda: test_ab_completed_motion( + client, 2, 5000, -600, 0, 500, 500, 20, 20, 4.0, + "AB Y2/Y3 negative typical linear", + ), + ), + ) + for name, function in cases: + run_isolated_ab_case(client, name, function) + run_isolated_ab_case(client, "ab_stop", lambda: test_ab_stop(client)) + run_isolated_ab_case( + client, + "ab_dynamic_frequency", + lambda: test_ab_dynamic_frequency(client), + ) def run_smoke(client): @@ -954,16 +2044,24 @@ def run_smoke(client): def run_all(client, keep_config): snapshot = ( + client.read_holding(OUTPUT_MODE, 1)[0], client.read_holding(CONFIG_BASE, COMMON_WORDS), - client.read_holding(SEGMENT_1_BASE, SEGMENT_WORDS), - client.read_holding(SEGMENT_2_BASE, SEGMENT_WORDS), + [client.read_holding(SEGMENT_1_BASE + index * 0x10, SEGMENT_WORDS) + for index in range(10)], ) try: + client.write_single(OUTPUT_MODE, OUTPUT_PULSE_DIR) run_smoke(client) run_case( "positive_negative_absolute_zero", lambda: test_positive_negative_and_absolute_zero(client), ) + run_case("ten_segments_sequence", + lambda: test_ten_segments_in_sequence(client)) + run_case("start_segment_ten", + lambda: test_start_segment_ten(client)) + run_case("direction_output_polarity_matrix", + lambda: test_direction_output_and_polarity_matrix(client)) run_case("all_outputs_100khz", lambda: test_all_outputs_at_100khz(client)) run_case("short_final_profiles", @@ -984,31 +2082,232 @@ def run_all(client, keep_config): ) finally: if keep_config: - safe_stop(client) + cleanup_preserving_primary_error( + lambda: safe_stop(client), + "motion stop", + ) else: - restore_configuration(client, snapshot) + cleanup_preserving_primary_error( + lambda: restore_configuration(client, snapshot), + "configuration restore", + ) -def persistence_prepare(client): - clear_position(client) - configure( - client, - make_common(start_hz=500), - make_segment(500, 7), +def validate_persistence_live_parameters(duration_seconds, interval_seconds): + require(math.isfinite(duration_seconds), + "persistence-live duration must be finite") + require(duration_seconds >= PERSISTENCE_LIVE_MIN_DURATION_SECONDS, + "persistence-live duration must be at least %.1f seconds" + % PERSISTENCE_LIVE_MIN_DURATION_SECONDS) + require(math.isfinite(interval_seconds), + "persistence-live interval must be finite") + require(0.0 < interval_seconds <= PERSISTENCE_LIVE_MAX_INTERVAL_SECONDS, + "persistence-live interval must be > 0 and <= %.3f seconds" + % PERSISTENCE_LIVE_MAX_INTERVAL_SECONDS) + + +def require_persistence_live_stats(stats, duration_seconds, label): + require(stats.attempts > 0, "%s made no FC03 attempts" % label) + require(stats.successful >= 0 and stats.timeouts >= 0, + "%s contains a negative counter" % label) + require(stats.attempts == stats.successful + stats.timeouts, + "%s counters are inconsistent" % label) + require(stats.timeouts == 0, + "%s had %d FC03 timeout(s)" % (label, stats.timeouts)) + require(stats.successful == stats.attempts, + "%s did not complete every FC03 request" % label) + require(math.isfinite(stats.maximum_attempt_seconds) + and stats.maximum_attempt_seconds >= 0.0, + "%s maximum attempt latency is invalid" % label) + require(stats.elapsed_seconds >= duration_seconds, + "%s probe ran %.3f s, expected at least %.3f s" + % (label, stats.elapsed_seconds, duration_seconds)) + + +def probe_persistence_live_window(client, duration_seconds, interval_seconds): + validate_persistence_live_parameters(duration_seconds, interval_seconds) + start = time.monotonic() + deadline = start + duration_seconds + next_request = start + attempts = 0 + successful = 0 + timeouts = 0 + maximum_attempt_seconds = 0.0 + reads = ( + (STATUS_BASE, STATUS_WORDS), + (PERSISTENCE_LIVE_CONFIG_ADDRESS, 1), + ) + + while True: + now = time.monotonic() + if now >= deadline: + break + if now < next_request: + time.sleep(min(next_request - now, deadline - now)) + now = time.monotonic() + if now >= deadline: + break + + address, quantity = reads[attempts % len(reads)] + request_started = time.monotonic() + attempts += 1 + try: + client.read_holding(address, quantity) + except RtuTimeout: + timeouts += 1 + else: + successful += 1 + attempt_seconds = time.monotonic() - request_started + maximum_attempt_seconds = max( + maximum_attempt_seconds, + attempt_seconds, + ) + + next_request += interval_seconds + if next_request < time.monotonic(): + next_request = time.monotonic() + + elapsed_seconds = time.monotonic() - start + return PersistenceLiveStats( + attempts=attempts, + successful=successful, + timeouts=timeouts, + maximum_attempt_seconds=maximum_attempt_seconds, + elapsed_seconds=elapsed_seconds, ) - command(client, COMMAND_START) - status = wait_terminal(client, 3.0) - require(status.state == STATUS_COMPLETED, "persistence move did not complete") - require(status.position == 7, "persistence position expected 7") - time.sleep(1.2) - require(read_status(client).position == 7, "position changed before reset") - print("PREPARED: release COM, reset/power-cycle the MCU, then run verify phase") + + +def print_persistence_live_result(label, stats, config_value): + print( + "INFO persistence-live window=%s attempts=%d successful=%d " + "timeouts=%d max_attempt_ms=%.3f elapsed_s=%.3f " + "config_0x%04X=%d" + % ( + label, + stats.attempts, + stats.successful, + stats.timeouts, + stats.maximum_attempt_seconds * 1000.0, + stats.elapsed_seconds, + PERSISTENCE_LIVE_CONFIG_ADDRESS, + config_value, + ) + ) + + +def persistence_live(client, duration_seconds, interval_seconds): + validate_persistence_live_parameters(duration_seconds, interval_seconds) + original = client.read_holding(PERSISTENCE_LIVE_CONFIG_ADDRESS, 1)[0] + changed = (original + 1) & 0xFFFF + original_timeout = client.timeout + client.timeout = min( + original_timeout, + PERSISTENCE_LIVE_REQUEST_TIMEOUT_SECONDS, + ) + print( + "INFO persistence-live duration_s=%.3f interval_ms=%.3f " + "request_timeout_ms=%.3f" + % ( + duration_seconds, + interval_seconds * 1000.0, + client.timeout * 1000.0, + ) + ) + + def restore_original_configuration(): + client.write_single(PERSISTENCE_LIVE_CONFIG_ADDRESS, original) + restore_stats = probe_persistence_live_window( + client, + duration_seconds, + interval_seconds, + ) + restore_readback = client.read_holding( + PERSISTENCE_LIVE_CONFIG_ADDRESS, + 1, + )[0] + print_persistence_live_result( + "restore", + restore_stats, + restore_readback, + ) + require_persistence_live_stats( + restore_stats, + duration_seconds, + "persistence-live restore window", + ) + require(restore_readback == original, + "persistence-live original config was not restored") + + try: + try: + client.write_single(PERSISTENCE_LIVE_CONFIG_ADDRESS, changed) + change_stats = probe_persistence_live_window( + client, + duration_seconds, + interval_seconds, + ) + change_readback = client.read_holding( + PERSISTENCE_LIVE_CONFIG_ADDRESS, + 1, + )[0] + print_persistence_live_result( + "change", + change_stats, + change_readback, + ) + require_persistence_live_stats( + change_stats, + duration_seconds, + "persistence-live change window", + ) + require(change_readback == changed, + "persistence-live changed config readback mismatch") + finally: + cleanup_preserving_primary_error( + restore_original_configuration, + "persistence-live configuration restore", + ) + finally: + client.timeout = original_timeout + + +def persistence_prepare(client, motion_timeout=3.0, settle_seconds=1.2, + announce=True): + snapshot = snapshot_ab_configuration(client) + prepared = False + try: + clear_position(client) + configure_ab( + client, + 0, + make_common(start_hz=500), + make_segment(500, 7), + ) + command(client, COMMAND_START) + status = wait_terminal(client, motion_timeout) + require(status.state == STATUS_COMPLETED, + "persistence move did not complete") + require(status.position == 7, "persistence position expected 7") + time.sleep(settle_seconds) + require(read_status(client).position == 7, + "position changed before reset") + prepared = True + finally: + if not prepared: + cleanup_preserving_primary_error( + lambda: restore_ab_configuration(client, snapshot), + "persistence preparation restore", + ) + if announce: + print("PREPARED: release COM, reset/power-cycle the MCU, then run verify phase") def persistence_verify(client, cleanup): status = read_status(client) require(status.state == STATUS_IDLE, "post-reset state must be IDLE") require(status.position == 7, "post-reset position expected 7") + require(client.read_holding(OUTPUT_MODE, 1) == [OUTPUT_AB], + "AB output mode was not restored after reset") segment = client.read_holding(SEGMENT_1_BASE, SEGMENT_WORDS) require(join_u32(segment[0], segment[1]) == 500, "frequency was not restored") require(join_i32(segment[2], segment[3]) == 7, "pulse target was not restored") @@ -1031,6 +2330,8 @@ def defaults_verify(client): status = read_status(client) require(status.state == STATUS_IDLE, "default state must be IDLE") require(status.position == 0, "default position must be zero") + require(client.read_holding(OUTPUT_MODE, 1) == [OUTPUT_PULSE_DIR], + "default output mode must be PULSE/DIR") common = client.read_holding(CONFIG_BASE, COMMON_WORDS) require(common[0x05] == 10, "default direction delay expected 10 ms") require(join_u32(common[0x0B], common[0x0C]) == 1000, @@ -1049,7 +2350,78 @@ def defaults_verify(client): "default segment %d pulse count mismatch" % (index + 1)) +class _PersistenceSelfTestClient: + def __init__(self, complete_on_start): + self.complete_on_start = complete_on_start + self.output_mode = OUTPUT_PULSE_DIR + self.common = make_common(default_hz=1234) + self.segment = make_segment(2345, -17) + self.state = STATUS_IDLE + self.position = 41 + self.calls = [] + + def read_holding(self, address, quantity): + self.calls.append(("read", address, quantity)) + if address == OUTPUT_MODE and quantity == 1: + return [self.output_mode] + if address == CONFIG_BASE and quantity == COMMON_WORDS: + return list(self.common) + if address == SEGMENT_1_BASE and quantity == SEGMENT_WORDS: + return list(self.segment) + if address == STATUS_BASE and quantity == STATUS_WORDS: + return ( + split_i32(self.position) + + split_u32(500) + + [self.state, 1 if self.state in ACTIVE_STATES else 0, ERROR_NONE] + ) + if address == DIAGNOSTIC_BASE and quantity == DIAGNOSTIC_WORDS: + words = [0] * DIAGNOSTIC_WORDS + words[24:26] = [0xFFFF, 0xFFFF] + return words + raise AssertionError("unexpected self-test read 0x%04X/%d" + % (address, quantity)) + + def write_single(self, address, value): + self.calls.append(("single", address, value)) + if address == OUTPUT_MODE: + self.output_mode = value + elif address == DIAGNOSTIC_CONTROL: + require(value == DIAGNOSTIC_CLEAR, + "self-test diagnostic command mismatch") + elif address == CONTROL: + if value == COMMAND_CLEAR: + self.state = STATUS_IDLE + self.position = 0 + elif value == COMMAND_START: + if self.complete_on_start: + self.state = STATUS_COMPLETED + self.position = 7 + else: + self.state = STATUS_RUNNING + self.position = 1 + elif value == COMMAND_STOP: + self.state = STATUS_STOPPED + else: + raise AssertionError("unexpected self-test control command") + else: + raise AssertionError("unexpected self-test single write 0x%04X" + % address) + + def write_multiple(self, address, values): + self.calls.append(("multiple", address, list(values))) + if address == CONFIG_BASE: + self.common = list(values) + elif address == SEGMENT_1_BASE: + self.segment = list(values) + else: + raise AssertionError("unexpected self-test multiple write 0x%04X" + % address) + + def self_test(): + def raise_error(error): + raise error + payload = bytes.fromhex("01 01 00 00 00 01") require(crc16(payload) == 0xCAFD, "CRC reference vector failed") require(append_crc(payload) == bytes.fromhex("01 01 00 00 00 01 FD CA"), @@ -1060,9 +2432,298 @@ def self_test(): require(frequency_matches(1199, 1200), "frequency tolerance rejected 1 Hz") require(not frequency_matches(1198, 1200), "frequency tolerance accepted excessive error") - sample = "\n0x42408214 : 00000001 \n" + sample = ( + "\n0x42408214 : 00000001 00000002 00000003 00000004 \n" + "0x42408224 : 00000005 \n" + ) require(parse_stlink_word(sample, X4_INPUT_BIT) == 1, "ST-LINK read parser failed") + require(parse_stlink_words(sample, X4_INPUT_BIT, 5) + == [1, 2, 3, 4, 5], + "ST-LINK multi-word parser failed") + map_sample = ( + "PlsrIrqCount 0x2000'4d80 0x10 Data Gb object.o\n" + "PlsrProfileProducerItemCount\n" + " 0x2000'61c0 0x4 Data Gb object.o\n" + ) + require(parse_iar_map_symbol_address(map_sample, "PlsrIrqCount") + == 0x20004D80, + "IAR map symbol parser failed") + require(parse_iar_map_symbol_address( + map_sample, "PlsrProfileProducerItemCount") == 0x200061C0, + "IAR wrapped map symbol parser failed") + passing_irq_stats = IrqCycleStats( + count=(1, 2, 3, 4), + last_cycles=(100, 200, 300, 400), + maximum_cycles=(1679, 1200, 900, 800), + ) + require_irq_cycle_budget( + passing_irq_stats, range(4), "timing self-test pass") + expect_test_failure( + lambda: require_irq_cycle_budget( + dataclasses.replace( + passing_irq_stats, + maximum_cycles=(IRQ_CYCLE_BUDGET_100KHZ, 1200, 900, 800), + ), + (0,), + "timing self-test reject", + ), + "IRQ cycle budget equality", + ) + passing_final_arm_stats = FinalArmCycleStats( + queue_count=(2, 0, 2, 0), + job_last_cycles=(700, 0, 800, 0), + job_maximum_cycles=(900, 0, 950, 0), + queue_to_stop_last_cycles=(1000, 0, 1100, 0), + queue_to_stop_maximum_cycles=(1200, 0, 1300, 0), + ) + require_final_arm_cycle_budget( + passing_final_arm_stats, (0, 2), "final-arm timing self-test pass") + for invalid_stats, label in ( + (dataclasses.replace( + passing_final_arm_stats, + job_maximum_cycles=(IRQ_CYCLE_BUDGET_100KHZ, 0, 950, 0)), + "final-arm job budget equality"), + (dataclasses.replace( + passing_final_arm_stats, + queue_to_stop_maximum_cycles=(1200, 0, + IRQ_CYCLE_BUDGET_100KHZ, 0)), + "final-arm latency budget equality"), + (dataclasses.replace( + passing_final_arm_stats, queue_count=(0, 0, 2, 0)), + "final-arm missing job"), + ): + expect_test_failure( + lambda item=invalid_stats: require_final_arm_cycle_budget( + item, (0, 2), "final-arm timing self-test reject"), + label, + ) + passing_producer_stats = ProducerCycleStats( + item_count=4, + total_cycles=6719, + maximum_item_cycles=1679, + ) + require_producer_cycle_budget( + passing_producer_stats, "producer timing self-test pass") + expect_test_failure( + lambda: require_producer_cycle_budget( + dataclasses.replace( + passing_producer_stats, + total_cycles=IRQ_CYCLE_BUDGET_100KHZ * 4, + maximum_item_cycles=IRQ_CYCLE_BUDGET_100KHZ, + ), + "producer timing self-test reject", + ), + "producer cycle budget equality", + ) + no_producer_stats = ProducerCycleStats( + item_count=0, + total_cycles=0, + maximum_item_cycles=0, + ) + require_no_producer_activity( + no_producer_stats, "long-ramp producer self-test pass") + for invalid_stats, label in ( + (dataclasses.replace(no_producer_stats, item_count=1), + "long-ramp producer item count"), + (dataclasses.replace(no_producer_stats, total_cycles=1), + "long-ramp producer total cycles"), + (dataclasses.replace(no_producer_stats, maximum_item_cycles=1), + "long-ramp producer maximum cycles"), + ): + expect_test_failure( + lambda item=invalid_stats: require_no_producer_activity( + item, "long-ramp producer self-test reject"), + label, + ) + diagnostic_words = [ + DIAG_COMPLETE_PASS, 0, 3, 0x0101, + 0x5678, 0x1234, 0x5678, 0x1234, + 0, 0, 0x86A0, 1, 0x869F, 1, 0x869F, 1, + 0xFFFF, 0xFFFF, 0x4321, 0x0002, 0, 0, 0, 0, + 0xFFFF, 0xFFFF, + ] + diagnostic = parse_diagnostic(diagnostic_words) + require(DIAGNOSTIC_BASE == 0x2100 and DIAGNOSTIC_WORDS == 26, + "diagnostic address or length changed") + require(OUTPUT_MODE == 0x1200 and DIAGNOSTIC_CONTROL == 0x3100, + "enhanced configuration/control address changed") + require(diagnostic.output_mode == OUTPUT_AB, + "diagnostic mode parser failed") + require(diagnostic.direction_positive, + "diagnostic direction parser failed") + require(diagnostic.expected_pulses == 0x12345678, + "diagnostic expected count parser failed") + require(diagnostic.actual_pulses == 0x12345678, + "diagnostic actual count parser failed") + require(diagnostic.requested_hz == 100000, + "diagnostic requested frequency parser failed") + require(diagnostic.request_error_hz == -1, + "diagnostic signed frequency error parser failed") + require(diagnostic.sample_count == 0x00024321, + "diagnostic sample count parser failed") + require(diagnostic.first_mismatch_sample == 0xFFFFFFFF, + "diagnostic sentinel parser failed") + require((DIAG_COMPLETE_PASS & DIAG_FAULT_LATCHED) == 0, + "diagnostic pass mask includes fault bit") + + for expected_error in ( + ModbusException(0x03, EX_DEVICE_BUSY), + serial.SerialException("self-test serial failure"), + ): + class ReadFailureClient: + def read_holding(self, address, quantity): + raise expected_error + + try: + safe_stop(ReadFailureClient()) + except Exception as actual_error: + require(actual_error is expected_error, + "safe_stop replaced the original communication error") + else: + raise TestFailure("safe_stop swallowed a communication error") + + primary_error = TestFailure("primary board-test failure") + cleanup_error = ModbusException(0x06, EX_DEVICE_BUSY) + cleanup_warning = io.StringIO() + caught_error = None + try: + try: + raise primary_error + finally: + cleanup_preserving_primary_error( + lambda: raise_error(cleanup_error), + "self-test configuration restore", + cleanup_warning, + ) + except TestFailure as error: + caught_error = error + require(caught_error is primary_error, + "cleanup failure replaced the primary board-test failure") + require("self-test configuration restore failed during error cleanup" + in cleanup_warning.getvalue(), + "cleanup failure warning omitted its operation context") + if hasattr(primary_error, "add_note"): + require(any("self-test configuration restore" in note + for note in getattr(primary_error, "__notes__", ())), + "cleanup failure was not attached to the primary exception") + + cleanup_error = serial.SerialException("standalone cleanup failure") + try: + cleanup_preserving_primary_error( + lambda: raise_error(cleanup_error), + "self-test standalone cleanup", + io.StringIO(), + ) + except serial.SerialException as error: + require(error is cleanup_error, + "standalone cleanup failure was replaced") + else: + raise TestFailure("standalone cleanup failure was swallowed") + + validate_persistence_live_parameters( + PERSISTENCE_LIVE_MIN_DURATION_SECONDS, + PERSISTENCE_LIVE_MAX_INTERVAL_SECONDS, + ) + invalid_live_parameters = ( + (PERSISTENCE_LIVE_MIN_DURATION_SECONDS - 0.001, 0.05, + "short persistence-live duration"), + (float("nan"), 0.05, "NaN persistence-live duration"), + (float("inf"), 0.05, "infinite persistence-live duration"), + (PERSISTENCE_LIVE_MIN_DURATION_SECONDS, 0.0, + "zero persistence-live interval"), + (PERSISTENCE_LIVE_MIN_DURATION_SECONDS, + PERSISTENCE_LIVE_MAX_INTERVAL_SECONDS + 0.001, + "long persistence-live interval"), + (PERSISTENCE_LIVE_MIN_DURATION_SECONDS, float("nan"), + "NaN persistence-live interval"), + ) + for duration_seconds, interval_seconds, label in invalid_live_parameters: + expect_test_failure( + lambda duration=duration_seconds, interval=interval_seconds: + validate_persistence_live_parameters(duration, interval), + label, + ) + + passing_live_stats = PersistenceLiveStats( + attempts=50, + successful=50, + timeouts=0, + maximum_attempt_seconds=0.012, + elapsed_seconds=PERSISTENCE_LIVE_MIN_DURATION_SECONDS, + ) + require_persistence_live_stats( + passing_live_stats, + PERSISTENCE_LIVE_MIN_DURATION_SECONDS, + "persistence-live self-test pass", + ) + failing_live_stats = ( + (dataclasses.replace(passing_live_stats, successful=49, timeouts=1), + "persistence-live timeout stats"), + (dataclasses.replace(passing_live_stats, successful=49), + "persistence-live inconsistent stats"), + (dataclasses.replace(passing_live_stats, attempts=0, successful=0), + "persistence-live empty stats"), + (dataclasses.replace(passing_live_stats, elapsed_seconds=2.499), + "persistence-live short elapsed stats"), + (dataclasses.replace(passing_live_stats, + maximum_attempt_seconds=float("nan")), + "persistence-live invalid latency stats"), + ) + for stats, label in failing_live_stats: + expect_test_failure( + lambda item=stats: require_persistence_live_stats( + item, + PERSISTENCE_LIVE_MIN_DURATION_SECONDS, + "persistence-live self-test reject", + ), + label, + ) + + failed_prepare = _PersistenceSelfTestClient(complete_on_start=False) + original_common = list(failed_prepare.common) + original_segment = list(failed_prepare.segment) + try: + persistence_prepare( + failed_prepare, + motion_timeout=0.0, + settle_seconds=0.0, + announce=False, + ) + except TestFailure: + pass + else: + raise TestFailure("failed persistence prepare unexpectedly succeeded") + controls = [call[2] for call in failed_prepare.calls + if call[:2] == ("single", CONTROL)] + require(COMMAND_STOP in controls, + "failed persistence prepare did not issue STOP") + require(failed_prepare.output_mode == OUTPUT_PULSE_DIR, + "failed persistence prepare did not restore output mode") + require(failed_prepare.common == original_common, + "failed persistence prepare did not restore common config") + require(failed_prepare.segment == original_segment, + "failed persistence prepare did not restore segment config") + + successful_prepare = _PersistenceSelfTestClient(complete_on_start=True) + persistence_prepare( + successful_prepare, + motion_timeout=0.1, + settle_seconds=0.0, + announce=False, + ) + controls = [call[2] for call in successful_prepare.calls + if call[:2] == ("single", CONTROL)] + require(COMMAND_STOP not in controls, + "successful persistence prepare issued STOP") + require(successful_prepare.output_mode == OUTPUT_AB, + "successful persistence prepare did not retain AB mode") + require(join_u32(successful_prepare.segment[0], + successful_prepare.segment[1]) == 500, + "successful persistence prepare did not retain frequency") + require(join_i32(successful_prepare.segment[2], + successful_prepare.segment[3]) == 7, + "successful persistence prepare did not retain pulse target") print("Self-test passed; no serial port was opened") @@ -1071,7 +2732,10 @@ def print_preflight(args): print(" - Firmware containing the PLSR 0x1000/0x2000/0x3000 map is flashed.") print(" - RS-485 is %d baud, 8E1, slave %d on %s." % (args.baud, args.slave, args.port)) - print(" - Y0 pulse and Y12 direction outputs are safe to toggle.") + if args.phase == "ab": + print(" - Y0/Y1 and Y2/Y3 AB output pairs are safe to toggle.") + else: + print(" - Configured pulse, direction, and AB-pair outputs are safe to toggle.") print(" - No other program has the COM port open.") print("Run smoke only:") print(" py -B HostComputer\\plsr_modbus_product_test.py --run --phase smoke") @@ -1079,6 +2743,12 @@ def print_preflight(args): print(" py -B HostComputer\\plsr_modbus_product_test.py --run --allow-motion") print("Run X4/X5 loopback tests:") print(" py -B HostComputer\\plsr_modbus_product_test.py --run --phase x45 --allow-motion") + print("Run AB output and diagnostic matrix:") + print(" py -B HostComputer\\plsr_modbus_product_test.py --run --phase ab --allow-motion") + print("Run DWT ISR/producer timing acceptance:") + print(" py -B HostComputer\\plsr_modbus_product_test.py --run --phase timing --allow-motion") + print("Run persistence communication-window test:") + print(" py -B HostComputer\\plsr_modbus_product_test.py --run --phase persistence-live") print("Run offline checks:") print(" py -B HostComputer\\plsr_modbus_product_test.py --self-test") @@ -1092,20 +2762,34 @@ def parse_arguments(): parser.add_argument("--stlink-cli", default=DEFAULT_STLINK_CLI) parser.add_argument("--stlink-id", type=int, default=0) parser.add_argument("--stlink-timeout", type=float, default=20.0) + parser.add_argument("--iar-map", default=DEFAULT_IAR_MAP) parser.add_argument( "--phase", - choices=("smoke", "all", "x45", "persistence-prepare", - "persistence-verify", "defaults-verify"), + choices=("smoke", "all", "ab", "x45", "timing", "persistence-prepare", + "persistence-verify", "persistence-live", + "defaults-verify"), default="all", ) parser.add_argument("--run", action="store_true", help="open the serial port and execute the selected phase") parser.add_argument("--allow-motion", action="store_true", - help="confirm that pulse and direction outputs may toggle") + help="confirm that configured motion outputs may toggle") parser.add_argument("--keep-config", action="store_true", - help="do not restore the three modified config blocks") + help="retain matrix config; AB phase always restores each case") parser.add_argument("--cleanup", action="store_true", help="CLEAR position after persistence verification") + parser.add_argument( + "--persistence-duration", + type=float, + default=PERSISTENCE_LIVE_DEFAULT_DURATION_SECONDS, + help="seconds to probe each persistence-live window (minimum 2.5)", + ) + parser.add_argument( + "--persistence-interval", + type=float, + default=PERSISTENCE_LIVE_DEFAULT_INTERVAL_SECONDS, + help="seconds between persistence-live FC03 requests (maximum 0.1)", + ) parser.add_argument("--self-test", action="store_true", help="run offline CRC/word tests without opening a port") return parser.parse_args() @@ -1126,7 +2810,8 @@ def main(): print_preflight(args) return 0 - motion_phase = args.phase in ("all", "x45", "persistence-prepare") + motion_phase = args.phase in ( + "all", "ab", "x45", "timing", "persistence-prepare") if motion_phase and not args.allow_motion: raise TestFailure("motion phase requires --allow-motion") @@ -1137,6 +2822,8 @@ def main(): run_smoke(client) elif args.phase == "all": run_all(client, args.keep_config) + elif args.phase == "ab": + run_ab(client) elif args.phase == "x45": fixture = X45Fixture( args.stlink_cli, @@ -1144,10 +2831,24 @@ def main(): args.stlink_timeout, ) run_x45(client, fixture, args.keep_config) + elif args.phase == "timing": + probe = X45Fixture( + args.stlink_cli, + args.stlink_id, + args.stlink_timeout, + ) + timing = TimingFixture(probe, args.iar_map) + run_timing(client, timing, args.keep_config) elif args.phase == "persistence-prepare": persistence_prepare(client) elif args.phase == "persistence-verify": persistence_verify(client, args.cleanup) + elif args.phase == "persistence-live": + persistence_live( + client, + args.persistence_duration, + args.persistence_interval, + ) else: defaults_verify(client) print("PASS phase=%s" % args.phase) diff --git a/Middlewares/Third_Party/Micrium/Config/app_cfg.h b/Middlewares/Third_Party/Micrium/Config/app_cfg.h index 7059bcf..9d31e9b 100644 --- a/Middlewares/Third_Party/Micrium/Config/app_cfg.h +++ b/Middlewares/Third_Party/Micrium/Config/app_cfg.h @@ -9,13 +9,12 @@ #define APP_TASK_TEST_PRIO 6u /* - * 任务栈大小的单位是OS_STK元素。当前OS_STK为32位, - * 所以每个256元素的任务栈实际占用1024字节RAM。 + * 任务栈大小的单位是OS_STK元素。当前OS_STK为32位。 */ -#define APP_TASK_START_STK_SIZE 256u +#define APP_TASK_START_STK_SIZE 512u #define APP_TASK_TEST_STK_SIZE 256u /* The short-profile pulse IRQ needs more than the port's 128-word default. */ -#define OS_CPU_EXCEPT_STK_SIZE 256u +#define OS_CPU_EXCEPT_STK_SIZE 512u #endif diff --git a/Modbus/Inc/modbus_rtu_slave.h b/Modbus/Inc/modbus_rtu_slave.h index 7c38bad..0e68a8b 100644 --- a/Modbus/Inc/modbus_rtu_slave.h +++ b/Modbus/Inc/modbus_rtu_slave.h @@ -13,6 +13,7 @@ extern "C" { HAL_StatusTypeDef ModbusSlaveInit(UART_HandleTypeDef *huart, uint8_t slaveAddress); void ModbusSlavePoll(void); +uint8_t ModbusSlaveIsIdle(void); void ModbusSlaveOnRxEvent(UART_HandleTypeDef *huart, uint16_t size); void ModbusSlaveOnTxComplete(UART_HandleTypeDef *huart); void ModbusSlaveOnUartError(UART_HandleTypeDef *huart); diff --git a/Modbus/Src/modbus_rtu_slave.c b/Modbus/Src/modbus_rtu_slave.c index e08adb0..8a536cf 100644 --- a/Modbus/Src/modbus_rtu_slave.c +++ b/Modbus/Src/modbus_rtu_slave.c @@ -39,6 +39,7 @@ static volatile uint32_t ModbusRxLastByteCycle; static volatile uint16_t ModbusRxFrameLength; static volatile uint8_t ModbusRxFrameReady; static volatile uint8_t ModbusTxBusy; +static volatile uint32_t ModbusLastActivityCycle; static uint32_t ModbusRtuCharCycles; static uint32_t ModbusRtuT15Cycles; @@ -451,6 +452,7 @@ HAL_StatusTypeDef ModbusSlaveInit(UART_HandleTypeDef *huart, ModbusRxFrameReady = 0U; ModbusTxBusy = 0U; ModbusRtuTimingInit(huart->Init.BaudRate); + ModbusLastActivityCycle = DWT->CYCCNT; return ModbusStartReceive(); } @@ -496,6 +498,42 @@ void ModbusSlavePoll(void) } } +uint8_t ModbusSlaveIsIdle(void) +{ + uint32_t primask; + uint32_t now; + uint8_t isIdle = 0U; + + if ((ModbusUart == NULL) || (ModbusUart->hdmarx == NULL)) + { + return 0U; + } + + primask = ModbusEnterCritical(); + if ((ModbusRxAssemblyLength == 0U) + && (ModbusRxAssemblyInvalid == 0U) + && (ModbusRxFrameReady == 0U) + && (ModbusTxBusy == 0U) + && (ModbusUart->RxState == HAL_UART_STATE_BUSY_RX) + && ((ModbusUart->Instance->CR3 & USART_CR3_DMAR) != 0U) + && ((ModbusUart->hdmarx->Instance->CR & DMA_SxCR_EN) != 0U) + && (__HAL_DMA_GET_COUNTER(ModbusUart->hdmarx) + == MODBUS_RTU_ADU_SIZE_MAX) + && ((ModbusUart->Instance->SR + & (USART_SR_PE | USART_SR_FE | USART_SR_NE | USART_SR_ORE + | USART_SR_IDLE | USART_SR_RXNE)) == 0U)) + { + now = DWT->CYCCNT; + if ((uint32_t)(now - ModbusLastActivityCycle) + >= ModbusRtuT35Cycles) + { + isIdle = 1U; + } + } + ModbusExitCritical(primask); + return isIdle; +} + void ModbusSlaveOnRxEvent(UART_HandleTypeDef *huart, uint16_t size) { HAL_UART_RxEventTypeTypeDef eventType; @@ -510,6 +548,8 @@ void ModbusSlaveOnRxEvent(UART_HandleTypeDef *huart, uint16_t size) return; } + now = DWT->CYCCNT; + ModbusLastActivityCycle = now; eventType = HAL_UARTEx_GetRxEventType(huart); if (eventType == HAL_UART_RXEVENT_HT) { @@ -524,7 +564,6 @@ void ModbusSlaveOnRxEvent(UART_HandleTypeDef *huart, uint16_t size) return; } - now = DWT->CYCCNT; lastByteCycle = now; if (eventType == HAL_UART_RXEVENT_IDLE) { @@ -571,6 +610,7 @@ void ModbusSlaveOnTxComplete(UART_HandleTypeDef *huart) return; } + ModbusLastActivityCycle = DWT->CYCCNT; ModbusTxBusy = 0U; (void)ModbusStartReceive(); } @@ -582,6 +622,7 @@ void ModbusSlaveOnUartError(UART_HandleTypeDef *huart) return; } + ModbusLastActivityCycle = DWT->CYCCNT; ModbusTxBusy = 0U; ModbusRxAssemblyLength = 0U; ModbusRxAssemblyInvalid = 0U; diff --git a/PLSR/Inc/plsr.h b/PLSR/Inc/plsr.h index 12f5cf2..47474e5 100644 --- a/PLSR/Inc/plsr.h +++ b/PLSR/Inc/plsr.h @@ -13,6 +13,11 @@ extern "C" { #define PLSR_STATUS_LAST_ADDRESS (0x2006U) #define PLSR_CONTROL_ADDRESS (0x3000U) +#define PLSR_OUTPUT_MODE_ADDRESS (0x1200U) +#define PLSR_DIAGNOSTIC_FIRST_ADDRESS (0x2100U) +#define PLSR_DIAGNOSTIC_LAST_ADDRESS (0x2119U) +#define PLSR_DIAGNOSTIC_CONTROL_ADDRESS (0x3100U) + typedef enum { PLSR_MB_NOT_HANDLED = 0, @@ -53,6 +58,7 @@ typedef enum uint8_t PlsrInit(void); void PlsrPoll1ms(void); +void PlsrServicePersistence(void); PLSR_MB_RESULT PlsrModbusReadHolding(uint16_t startAddress, uint16_t quantity, @@ -63,6 +69,7 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, /* Called by the selected output timer update interrupt once per pulse. */ void PlsrPulseTimerIrq(uint8_t pulseOutput); +void PlsrFinalArmJobIrq(uint8_t pulseOutput); #ifdef PLSR_HOST_TEST uint64_t PlsrTestDivideU64ByU32(uint64_t dividend, @@ -74,19 +81,52 @@ void PlsrTestEmitPulseOnCriticalEntry(void); void PlsrTestEmitPulseAfterCriticalEntries(uint8_t entriesToSkip); void PlsrTestEmitPulseOnCriticalExit(void); void PlsrTestLatchPulseOnCriticalEntry(void); +void PlsrTestLatchAbFinalQuarterOnNextStopArm(void); +void PlsrTestCompleteAbCycleOnNextQueueCommit(void); void PlsrTestServicePendingPulse(void); +void PlsrTestServiceFinalArmJob(void); +void PlsrTestDeferFinalArmJob(uint8_t defer); void PlsrTestFailNextStart(void); +void PlsrTestStaleNextFrequencyAtUpdate(void); void PlsrTestFailNextFrequencyAtUpdate(void); +void PlsrTestFailNextStopRequest(void); +void PlsrTestEmitAbQuarters(uint32_t quarterCount); uint8_t PlsrTestPulseIsActive(void); uint32_t PlsrTestOutputFrequency(void); uint32_t PlsrTestQueuedFrequency(void); uint8_t PlsrTestDirectionLevel(void); +uint8_t PlsrTestDirectionPinLevel(uint8_t directionOutput); +uint32_t PlsrTestDirectionWriteCount(uint8_t directionOutput); +uint32_t PlsrTestDirectionTransitionCount(uint8_t directionOutput); +uint8_t PlsrTestAbPhase(void); +uint32_t PlsrTestAbTransitionCount(void); +uint32_t PlsrTestAbFastGateCount(void); +uint32_t PlsrTestAbCleanupCount(void); +void PlsrTestInjectCountOffset(int32_t offset); +void PlsrTestInjectActiveFrequencyOffset(int32_t offsetHz); +void PlsrTestInjectCurveMismatch(void); +void PlsrTestForceProfileQueueEmpty(void); +uint16_t PlsrTestProfileQueueCount(void); +uint32_t PlsrTestProfileQueueGeneration(void); +uint32_t PlsrTestProfileQueueReadIndex(void); +uint32_t PlsrTestProfileQueueWriteIndex(void); +uint32_t PlsrTestProfileQueueHeadFrequency(void); +uint16_t PlsrTestProfileProducerNextPeriod(void); +uint16_t PlsrTestActiveProfileNextPeriod(void); +uint32_t PlsrTestLastGateEvent(void); +uint32_t PlsrTestLastDiagnosticFinishEvent(void); void PlsrTestSetPosition(int32_t position, uint8_t positionValid); void PlsrTestClearPersistentStorage(void); void PlsrTestResetSaveCount(void); uint32_t PlsrTestSaveCount(void); #endif +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) +extern volatile uint32_t PlsrProfileProducerItemCount; +extern volatile uint32_t PlsrProfileProducerTotalCycles; +extern volatile uint32_t PlsrProfileProducerMaxItemCycles; +#endif + #ifdef __cplusplus } #endif diff --git a/PLSR/Src/plsr.c b/PLSR/Src/plsr.c index 9445eb3..a26bc9c 100644 --- a/PLSR/Src/plsr.c +++ b/PLSR/Src/plsr.c @@ -29,9 +29,27 @@ #define PLSR_COMMAND_STOP (0x0002U) #define PLSR_COMMAND_CLEAR (0x0004U) +#define PLSR_DIAG_FLAG_MONITORING (0x0001U) +#define PLSR_DIAG_FLAG_COUNT_CHECKED (0x0002U) +#define PLSR_DIAG_FLAG_COUNT_PASS (0x0004U) +#define PLSR_DIAG_FLAG_FREQUENCY_CHECKED (0x0008U) +#define PLSR_DIAG_FLAG_FREQUENCY_PASS (0x0010U) +#define PLSR_DIAG_FLAG_CURVE_CHECKED (0x0020U) +#define PLSR_DIAG_FLAG_CURVE_PASS (0x0040U) +#define PLSR_DIAG_FLAG_FAULT_LATCHED (0x0080U) + +#define PLSR_DIAG_REASON_NONE (0U) +#define PLSR_DIAG_REASON_COUNT (1U) +#define PLSR_DIAG_REASON_FREQUENCY (2U) +#define PLSR_DIAG_REASON_CURVE (3U) +#define PLSR_DIAG_REASON_INVALID_SAMPLE (4U) + #define PLSR_CONFIG_SAVE_DELAY_MS (1000U) #define PLSR_POSITION_CHECKPOINT_MS (10U) -#define PLSR_SHORT_PROFILE_MAX_PULSES (65535UL) +#define PLSR_PROFILE_QUEUE_CAPACITY (256U) +#define PLSR_PROFILE_QUEUE_MASK (PLSR_PROFILE_QUEUE_CAPACITY - 1U) +#define PLSR_SHORT_PROFILE_MAX_PULSES \ + ((uint32_t)PLSR_PROFILE_QUEUE_CAPACITY + 2UL) #define PLSR_Q32_ONE (4294967296ULL) typedef struct @@ -68,10 +86,35 @@ typedef struct volatile uint8_t active; } PLSR_SHORT_PROFILE; +typedef struct +{ + PLSR_PLATFORM_TIMER_SETTING setting; + uint32_t requestedFrequencyHz; +} PLSR_PROFILE_ENTRY; + +typedef struct +{ + PLSR_PROFILE_ENTRY entries[PLSR_PROFILE_QUEUE_CAPACITY]; + PLSR_SHORT_PROFILE producerProfile; + volatile uint32_t readIndex; + volatile uint32_t writeIndex; + volatile uint32_t generation; + uint32_t producerEpoch; + uint8_t producerSegment; + uint8_t preparedHandoffBank; + volatile uint8_t active; + volatile uint8_t generatorComplete; +} PLSR_PROFILE_QUEUE; + typedef struct { uint64_t magnitude; uint32_t firstFrequencyHz; + uint32_t secondFrequencyHz; + uint32_t firstRequestedFrequencyHz; + uint32_t secondRequestedFrequencyHz; + PLSR_PLATFORM_TIMER_SETTING firstSetting; + PLSR_PLATFORM_TIMER_SETTING secondSetting; PLSR_SHORT_PROFILE profile; uint8_t nextSegment; uint8_t positive; @@ -99,6 +142,25 @@ typedef struct volatile uint8_t state; } PLSR_COMMAND_MAILBOX; +typedef struct +{ + uint16_t flags; + uint16_t reason; + uint16_t lastSegment; + uint16_t modeDirection; + uint32_t expectedCycles; + uint32_t observedCycles; + int32_t countError; + uint32_t requestedHz; + uint32_t expectedTimerHz; + uint32_t activeTimerHz; + int32_t requestErrorHz; + uint32_t curveSampleCount; + uint32_t curveMismatchCount; + uint32_t curveMaxAbsErrorHz; + uint32_t firstMismatchSample; +} PLSR_DIAGNOSTIC; + static const uint16_t PlsrSineProgressQ16[65] = { 0U, 39U, 158U, 355U, 630U, 982U, 1411U, 1915U, @@ -171,10 +233,16 @@ static volatile PLSR_STATUS PlsrRunStatus = PLSR_STATUS_UNINITIALIZED; static PLSR_ERROR PlsrError = PLSR_ERROR_NONE; static PLSR_RAMP PlsrRamp; static PLSR_SHORT_PROFILE PlsrShortProfile; +static PLSR_PROFILE_QUEUE PlsrProfileQueue; static PLSR_HANDOFF_PLAN PlsrHandoffPlan; static PLSR_HANDOFF_PLAN PlsrPreparedHandoffPlans[2][PLSR_SEGMENT_COUNT_MAX]; static volatile uint8_t PlsrPreparedHandoffBank; +#ifdef PLSR_HOST_TEST +static uint32_t PlsrHostTestEventSequence; +static uint32_t PlsrHostTestLastGateEvent; +static uint32_t PlsrHostTestLastDiagnosticFinishEvent; +#endif static uint8_t PlsrInitialized; static volatile uint8_t PlsrCurrentSegment; static uint8_t PlsrDirectionDelayActive; @@ -186,6 +254,7 @@ static volatile uint8_t PlsrExtPreviousLevel; static volatile uint8_t PlsrExtEdgePending; static volatile uint8_t PlsrStopRequested; static volatile uint8_t PlsrStopPulsesRemaining; +static volatile uint8_t PlsrAbStopArmed; static volatile uint8_t PlsrBoundaryRampStarted; static uint8_t PlsrLastDirectionValid; static uint8_t PlsrLastDirectionOutput; @@ -194,6 +263,16 @@ static uint8_t PlsrPersistenceDirty; static uint16_t PlsrPersistenceDelayMs; static uint8_t PlsrPositionCheckpointElapsedMs; static PLSR_COMMAND_MAILBOX PlsrCommandMailbox; +static volatile PLSR_DIAGNOSTIC PlsrDiagnostic; +static volatile uint64_t PlsrDiagnosticSegmentCounterBase; +static volatile uint32_t PlsrDiagnosticQueuedExpectedHz; +static volatile uint16_t PlsrDiagnosticFailedChecks; + +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) +volatile uint32_t PlsrProfileProducerItemCount; +volatile uint32_t PlsrProfileProducerTotalCycles; +volatile uint32_t PlsrProfileProducerMaxItemCycles; +#endif static uint8_t PlsrIsBusy(void); static void PlsrSetDefaults(PLSR_CONFIG *config); @@ -223,24 +302,50 @@ static void PlsrEnterError(PLSR_ERROR error); static void PlsrMarkPersistenceDirty(uint16_t delayMs); static void PlsrCheckpointPosition(uint8_t wasBusy); static void PlsrPollPositionCheckpoint(void); -static uint8_t PlsrTrySubsequentHandoff(void); +static PLSR_PLATFORM_QUEUE_RESULT PlsrTrySubsequentHandoff(void); static uint8_t PlsrPrepareShortProfile(PLSR_SHORT_PROFILE *profile, uint8_t segmentNumber, uint32_t startFrequencyHz, uint32_t targetFrequencyHz, uint64_t pulseCount); static uint32_t PlsrShortProfileTakeFrequency(PLSR_SHORT_PROFILE *profile); -static uint8_t PlsrAdvanceShortProfile(uint8_t pulseOutput); +static void PlsrProfileQueueReset(void); +static uint8_t PlsrProfileQueueBegin( + const PLSR_SHORT_PROFILE *producerProfile, + uint32_t producerEpoch, + uint8_t producerSegment, + uint8_t preparedHandoffBank); +static uint8_t PlsrProfileQueueFill(void); +static PLSR_PLATFORM_QUEUE_RESULT PlsrProfileQueueCommitNext( + uint8_t pulseOutput); +static uint8_t PlsrPrepareFutureHandoffQueue(void); static void PlsrCopyShortProfile(PLSR_SHORT_PROFILE *destination, const PLSR_SHORT_PROFILE *source); static void PlsrInvalidateHandoffPlans(void); static uint8_t PlsrBuildHandoffPlanBank( const PLSR_CONFIG *frequencyConfig); static uint8_t PlsrSelectPreparedHandoffPlan(PLSR_HANDOFF_PLAN *plan); -static uint8_t PlsrPrimeHandoff(void); +static PLSR_PLATFORM_QUEUE_RESULT PlsrPrimeHandoff(void); static uint8_t PlsrBuildHandoffPlan(uint8_t sourceSegment, const PLSR_CONFIG *frequencyConfig, PLSR_HANDOFF_PLAN *plan); +static void PlsrDiagnosticReset(void); +static void PlsrDiagnosticBeginSegment(uint8_t segmentNumber, + uint64_t expectedCycles, + uint8_t directionPositive); +static void PlsrDiagnosticFinishSegment(uint8_t completedNormally); +static uint8_t PlsrDiagnosticStartPulse(uint8_t pulseOutput, + uint32_t requestedFirstHz, + uint32_t requestedQueuedHz, + uint32_t *actualFirstHz, + uint32_t *actualQueuedHz); +static PLSR_PLATFORM_QUEUE_RESULT PlsrDiagnosticQueueFrequency( + uint8_t pulseOutput, + uint32_t requestedHz, + uint32_t *actualHz); +static void PlsrDiagnosticCheckActiveFrequency(uint32_t activeHz); +static uint8_t PlsrArmFinalAbBoundaryLocked(void); +static uint8_t PlsrQueueFinalAbBoundaryFromIrq(void); static uint8_t PlsrIsBusy(void) { @@ -266,6 +371,417 @@ static uint16_t PlsrHighWord(uint32_t value) return (uint16_t)(value >> 16U); } +static uint8_t PlsrFinalAbBoundaryRequired(void) +{ + uint8_t finalBoundary; + + if (PlsrActiveConfig.outputMode != PLSR_OUTPUT_AB) + { + return 0U; + } + + finalBoundary = ((PlsrCutRequested != 0U) + || ((PlsrStopRequested != 0U) + && (PlsrStopPulsesRemaining == 1U)) + || ((PlsrRemainingPulses == 1UL) + && (PlsrHandoffPlan.valid == 0U))) ? 1U : 0U; + return ((PlsrPulseActive != 0U) && (finalBoundary != 0U)) ? 1U : 0U; +} + +static uint8_t PlsrCompleteFinalAbArmLocked(void) +{ + PLSR_PLATFORM_STOP_RESULT result; + uint8_t pulseOutput = (uint8_t)PlsrActiveConfig.pulseOutput; + + result = PlsrPlatformRequestStopLocked(pulseOutput, 1U); + if (result == PLSR_PLATFORM_STOP_PENDING) + { + PlsrQueuedFrequencyHz = PlsrCurrentFrequencyHz; + PlsrDiagnosticQueuedExpectedHz = PlsrCurrentFrequencyHz; + PlsrDeferredFrequencyHz = PlsrCurrentFrequencyHz; + PlsrDeferredFrequencyPending = 0U; + PlsrFrequencyUpdatePending = 0U; + PlsrShortProfile.active = 0U; + PlsrHandoffPlan.valid = 0U; + PlsrRamp.active = 0U; + return 1U; + } + PlsrTimerErrorPending = 1U; + PlsrPlatformStopPulse(pulseOutput); + PlsrAbStopArmed = 0U; + PlsrPulseActive = 0U; + PlsrBoundaryFrequencyHz = PlsrCurrentFrequencyHz; + PlsrBoundaryWasCut = (PlsrCutRequested != 0U) ? 1U : 0U; + PlsrCutRequested = 0U; + PlsrCurrentFrequencyHz = 0UL; + PlsrQueuedFrequencyHz = 0UL; + PlsrBoundaryPending = 1U; + return 0U; +} + +static uint8_t PlsrArmFinalAbBoundaryLocked(void) +{ + if (PlsrFinalAbBoundaryRequired() == 0U) + { + return 1U; + } + if (PlsrAbStopArmed != 0U) + { + return 1U; + } + PlsrAbStopArmed = 1U; + return PlsrCompleteFinalAbArmLocked(); +} + +static uint8_t PlsrQueueFinalAbBoundaryFromIrq(void) +{ + uint32_t criticalState; + + if ((PlsrFinalAbBoundaryRequired() == 0U) + || (PlsrAbStopArmed != 0U)) + { + return 1U; + } + PlsrAbStopArmed = 1U; + if (PlsrPlatformQueueFinalArmFromIrq( + (uint8_t)PlsrActiveConfig.pulseOutput) != 0U) + { + return 1U; + } + criticalState = PlsrPlatformEnterCritical(); + if ((PlsrAbStopArmed == 0U) + || (PlsrFinalAbBoundaryRequired() == 0U)) + { + PlsrPlatformExitCritical(criticalState); + return 1U; + } + { + uint8_t result = PlsrCompleteFinalAbArmLocked(); + + PlsrPlatformExitCritical(criticalState); + return result; + } +} + +void PlsrFinalArmJobIrq(uint8_t pulseOutput) +{ + uint32_t criticalState = PlsrPlatformEnterCritical(); + + if ((PlsrAbStopArmed == 0U) || (PlsrPulseActive == 0U) + || (pulseOutput != (uint8_t)PlsrActiveConfig.pulseOutput) + || (PlsrFinalAbBoundaryRequired() == 0U)) + { + if ((PlsrPulseActive != 0U) + && (pulseOutput == (uint8_t)PlsrActiveConfig.pulseOutput)) + { + PlsrAbStopArmed = 0U; + } + PlsrPlatformExitCritical(criticalState); + return; + } + (void)PlsrCompleteFinalAbArmLocked(); + PlsrPlatformExitCritical(criticalState); +} + +static uint32_t PlsrAbsDifferenceU32(uint32_t first, uint32_t second) +{ + return (first >= second) ? (first - second) : (second - first); +} + +static int32_t PlsrDifferenceI32(uint32_t first, uint32_t second) +{ + int64_t difference = (int64_t)first - (int64_t)second; + + if (difference > INT32_MAX) + { + return INT32_MAX; + } + if (difference < INT32_MIN) + { + return INT32_MIN; + } + return (int32_t)difference; +} + +static void PlsrDiagnosticLatch(uint16_t reason) +{ + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_FAULT_LATCHED; + if (PlsrDiagnostic.reason == PLSR_DIAG_REASON_NONE) + { + PlsrDiagnostic.reason = reason; + } +} + +static void PlsrDiagnosticReset(void) +{ + (void)memset((void *)&PlsrDiagnostic, 0, sizeof(PlsrDiagnostic)); + PlsrDiagnostic.firstMismatchSample = 0xFFFFFFFFUL; + PlsrDiagnosticSegmentCounterBase = 0UL; + PlsrDiagnosticQueuedExpectedHz = 0UL; + PlsrDiagnosticFailedChecks = 0U; +} + +static void PlsrDiagnosticBeginSegment(uint8_t segmentNumber, + uint64_t expectedCycles, + uint8_t directionPositive) +{ + if (expectedCycles > 0xFFFFFFFFUL) + { + PlsrDiagnostic.expectedCycles = 0xFFFFFFFFUL; + PlsrDiagnosticLatch(PLSR_DIAG_REASON_INVALID_SAMPLE); + } + else + { + PlsrDiagnostic.expectedCycles = (uint32_t)expectedCycles; + } + PlsrDiagnostic.flags &= (uint16_t)~(PLSR_DIAG_FLAG_COUNT_CHECKED + | PLSR_DIAG_FLAG_COUNT_PASS); + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_MONITORING; + PlsrDiagnostic.lastSegment = segmentNumber; + PlsrDiagnostic.modeDirection = + (uint16_t)(PlsrActiveConfig.outputMode + | ((uint16_t)directionPositive << 8U)); + PlsrDiagnostic.observedCycles = 0UL; + PlsrDiagnostic.countError = 0L; + PlsrDiagnosticSegmentCounterBase = PlsrPlatformObservedPulses( + (uint8_t)PlsrActiveConfig.pulseOutput); +} + +static void PlsrDiagnosticFinishSegment(uint8_t completedNormally) +{ + uint64_t now; + uint64_t observed; + uint32_t observedCycles; + uint32_t expectedCycles; + + if ((PlsrDiagnostic.flags & PLSR_DIAG_FLAG_MONITORING) == 0U) + { + return; + } +#ifdef PLSR_HOST_TEST + PlsrHostTestEventSequence++; + PlsrHostTestLastDiagnosticFinishEvent = PlsrHostTestEventSequence; +#endif + now = PlsrPlatformObservedPulses( + (uint8_t)PlsrActiveConfig.pulseOutput); + observed = (now >= PlsrDiagnosticSegmentCounterBase) + ? (now - PlsrDiagnosticSegmentCounterBase) : 0UL; + if (observed > 0xFFFFFFFFUL) + { + PlsrDiagnostic.observedCycles = 0xFFFFFFFFUL; + PlsrDiagnosticFailedChecks |= PLSR_DIAG_FLAG_COUNT_PASS; + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_COUNT_PASS; + PlsrDiagnosticLatch(PLSR_DIAG_REASON_INVALID_SAMPLE); + } + else + { + PlsrDiagnostic.observedCycles = (uint32_t)observed; + } + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_MONITORING; + if (completedNormally == 0U) + { + PlsrDiagnostic.countError = 0L; + PlsrDiagnostic.flags &= (uint16_t)~(PLSR_DIAG_FLAG_COUNT_CHECKED + | PLSR_DIAG_FLAG_COUNT_PASS); + return; + } + + observedCycles = PlsrDiagnostic.observedCycles; + expectedCycles = PlsrDiagnostic.expectedCycles; + PlsrDiagnostic.countError = + PlsrDifferenceI32(observedCycles, expectedCycles); + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_COUNT_CHECKED; + if (PlsrDiagnostic.countError != 0L) + { + PlsrDiagnosticFailedChecks |= PLSR_DIAG_FLAG_COUNT_PASS; + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_COUNT_PASS; + PlsrDiagnosticLatch(PLSR_DIAG_REASON_COUNT); + } + else if ((PlsrDiagnosticFailedChecks & PLSR_DIAG_FLAG_COUNT_PASS) == 0U) + { + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_COUNT_PASS; + } +} + +static void PlsrDiagnosticRecordFrequency(uint32_t requestedHz, + uint32_t expectedHz, + uint32_t actualHz) +{ + uint32_t error = PlsrAbsDifferenceU32(actualHz, expectedHz); + + PlsrDiagnostic.requestedHz = requestedHz; + PlsrDiagnostic.expectedTimerHz = expectedHz; + PlsrDiagnostic.activeTimerHz = actualHz; + /* Request error is divider quantization, not a diagnostic deviation. */ + PlsrDiagnostic.requestErrorHz = PlsrDifferenceI32(expectedHz, requestedHz); + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_FREQUENCY_CHECKED; + if (actualHz != expectedHz) + { + PlsrDiagnosticFailedChecks |= PLSR_DIAG_FLAG_FREQUENCY_PASS; + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_FREQUENCY_PASS; + PlsrDiagnosticLatch(PLSR_DIAG_REASON_FREQUENCY); + } + else if ((PlsrDiagnosticFailedChecks + & PLSR_DIAG_FLAG_FREQUENCY_PASS) == 0U) + { + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_FREQUENCY_PASS; + } + if (error > PlsrDiagnostic.curveMaxAbsErrorHz) + { + PlsrDiagnostic.curveMaxAbsErrorHz = error; + } +} + +static void PlsrDiagnosticRecordCurveSample(uint32_t expectedHz, + uint32_t actualHz) +{ + uint32_t error = PlsrAbsDifferenceU32(expectedHz, actualHz); + + if (PlsrDiagnostic.curveSampleCount != 0xFFFFFFFFUL) + { + PlsrDiagnostic.curveSampleCount++; + } + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_CURVE_CHECKED; + if (error == 0UL) + { + if ((PlsrDiagnosticFailedChecks & PLSR_DIAG_FLAG_CURVE_PASS) == 0U) + { + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_CURVE_PASS; + } + } + else + { + PlsrDiagnosticFailedChecks |= PLSR_DIAG_FLAG_CURVE_PASS; + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_CURVE_PASS; + if (PlsrDiagnostic.curveMismatchCount != 0xFFFFFFFFUL) + { + PlsrDiagnostic.curveMismatchCount++; + } + if (PlsrDiagnostic.firstMismatchSample == 0xFFFFFFFFUL) + { + PlsrDiagnostic.firstMismatchSample = + PlsrDiagnostic.curveSampleCount; + } + if (error > PlsrDiagnostic.curveMaxAbsErrorHz) + { + PlsrDiagnostic.curveMaxAbsErrorHz = error; + } + PlsrDiagnosticLatch(PLSR_DIAG_REASON_CURVE); + } +} + +static uint8_t PlsrDiagnosticStartPulse(uint8_t pulseOutput, + uint32_t requestedFirstHz, + uint32_t requestedQueuedHz, + uint32_t *actualFirstHz, + uint32_t *actualQueuedHz) +{ + PLSR_PLATFORM_TIMER_SETTING firstSetting; + PLSR_PLATFORM_TIMER_SETTING queuedSetting; + + if ((PlsrPlatformBuildTimerSetting( + pulseOutput, (uint8_t)PlsrActiveConfig.outputMode, + requestedFirstHz, &firstSetting) == 0U) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, (uint8_t)PlsrActiveConfig.outputMode, + requestedQueuedHz, &queuedSetting) == 0U) + || (PlsrPlatformStartPrepared(pulseOutput, &firstSetting, + &queuedSetting, actualFirstHz, + actualQueuedHz) == 0U)) + { + PlsrDiagnosticFinishSegment(0U); + return 0U; + } + PlsrDiagnosticRecordFrequency(requestedFirstHz, + firstSetting.actualFrequencyHz, + *actualFirstHz); + PlsrDiagnosticRecordCurveSample(firstSetting.actualFrequencyHz, + *actualFirstHz); + PlsrDiagnosticQueuedExpectedHz = queuedSetting.actualFrequencyHz; + return 1U; +} + +static PLSR_PLATFORM_QUEUE_RESULT PlsrDiagnosticQueueFrequency( + uint8_t pulseOutput, + uint32_t requestedHz, + uint32_t *actualHz) +{ + uint32_t expectedHz; + PLSR_PLATFORM_QUEUE_RESULT result; + + if (PlsrPlatformExpectedFrequency( + pulseOutput, (uint8_t)PlsrActiveConfig.outputMode, + requestedHz, &expectedHz) == 0U) + { + PlsrDiagnosticFinishSegment(0U); + return PLSR_PLATFORM_QUEUE_FAILED; + } + result = PlsrPlatformQueueFrequency(pulseOutput, requestedHz, actualHz); + if (result == PLSR_PLATFORM_QUEUE_FAILED) + { + PlsrDiagnosticFinishSegment(0U); + return result; + } + if (result == PLSR_PLATFORM_QUEUE_STALE) + { + return result; + } + + PlsrDiagnosticRecordFrequency(requestedHz, expectedHz, *actualHz); + PlsrDiagnosticQueuedExpectedHz = expectedHz; + return PLSR_PLATFORM_QUEUE_APPLIED; +} + +static void PlsrDiagnosticCheckActiveFrequency(uint32_t activeHz) +{ + uint16_t platformFault = PlsrPlatformDiagnosticFault(); + uint32_t observedHz = activeHz; + + if (platformFault == PLSR_DIAG_REASON_FREQUENCY) + { + observedHz = PlsrPlatformActiveFrequency( + (uint8_t)PlsrActiveConfig.pulseOutput); + if (observedHz == 0UL) + { + observedHz = activeHz; + } + PlsrDiagnosticFailedChecks |= PLSR_DIAG_FLAG_FREQUENCY_PASS; + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_FREQUENCY_CHECKED; + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_FREQUENCY_PASS; + PlsrDiagnosticLatch(PLSR_DIAG_REASON_FREQUENCY); + } + if ((platformFault != PLSR_DIAG_REASON_NONE) + && (PlsrDiagnosticQueuedExpectedHz != 0UL)) + { + PlsrDiagnostic.activeTimerHz = observedHz; + if (platformFault == PLSR_DIAG_REASON_CURVE) + { + if (PlsrDiagnostic.curveSampleCount != 0xFFFFFFFFUL) + { + PlsrDiagnostic.curveSampleCount++; + } + PlsrDiagnostic.flags |= PLSR_DIAG_FLAG_CURVE_CHECKED; + PlsrDiagnostic.flags &= (uint16_t)~PLSR_DIAG_FLAG_CURVE_PASS; + PlsrDiagnosticFailedChecks |= PLSR_DIAG_FLAG_CURVE_PASS; + if (PlsrDiagnostic.curveMismatchCount != 0xFFFFFFFFUL) + { + PlsrDiagnostic.curveMismatchCount++; + } + if (PlsrDiagnostic.firstMismatchSample == 0xFFFFFFFFUL) + { + PlsrDiagnostic.firstMismatchSample = + PlsrDiagnostic.curveSampleCount; + } + PlsrDiagnosticLatch(PLSR_DIAG_REASON_CURVE); + } + else if (platformFault == PLSR_DIAG_REASON_FREQUENCY) + { + PlsrDiagnosticRecordCurveSample(PlsrDiagnosticQueuedExpectedHz, + observedHz); + } + } +} + static void PlsrSetDefaults(PLSR_CONFIG *config) { uint8_t index; @@ -287,6 +803,7 @@ static void PlsrSetDefaults(PLSR_CONFIG *config) config->stopSpeedHz = 100UL; config->accelerationTimeMs = 100U; config->decelerationTimeMs = 100U; + config->outputMode = PLSR_OUTPUT_PULSE_DIR; for (index = 0U; index < PLSR_SEGMENT_COUNT_MAX; index++) { @@ -310,6 +827,9 @@ static uint8_t PlsrConfigIsValid(const PLSR_CONFIG *config, || (config->directionNegativeLogic > 1U) || (config->curveMode > 2U) || (config->positionMode > PLSR_POSITION_ABSOLUTE) + || (config->outputMode > PLSR_OUTPUT_AB) + || ((config->outputMode == PLSR_OUTPUT_AB) + && ((config->pulseOutput & 1U) != 0U)) || (config->segmentCount == 0U) || (config->segmentCount > PLSR_SEGMENT_COUNT_MAX) || (config->startSegment == 0U) @@ -549,9 +1069,13 @@ static uint8_t PlsrAddressIsProduct(uint16_t address) { return (((address >= PLSR_CONFIG_FIRST_ADDRESS) && (address <= PLSR_CONFIG_LAST_ADDRESS)) + || (address == PLSR_OUTPUT_MODE_ADDRESS) || ((address >= PLSR_STATUS_FIRST_ADDRESS) && (address <= PLSR_STATUS_LAST_ADDRESS)) - || (address == PLSR_CONTROL_ADDRESS)) ? 1U : 0U; + || ((address >= PLSR_DIAGNOSTIC_FIRST_ADDRESS) + && (address <= PLSR_DIAGNOSTIC_LAST_ADDRESS)) + || (address == PLSR_CONTROL_ADDRESS) + || (address == PLSR_DIAGNOSTIC_CONTROL_ADDRESS)) ? 1U : 0U; } static PLSR_MB_RESULT PlsrClassifyRange(uint16_t startAddress, @@ -718,6 +1242,11 @@ static uint8_t PlsrApplyFrequencyPair(uint32_t requestedFirstFrequencyHz, if (PlsrPulseActive != 0U) { + if (PlsrAbStopArmed != 0U) + { + PlsrPlatformExitCritical(criticalState); + return 1U; + } if (PlsrHandoffPlan.valid != 0U) { PlsrPlatformExitCritical(criticalState); @@ -735,11 +1264,10 @@ static uint8_t PlsrApplyFrequencyPair(uint32_t requestedFirstFrequencyHz, hardwareQueuedFrequencyHz = candidatePlan.firstFrequencyHz; haveCandidatePlan = 1U; } - if (PlsrPlatformStartPulse((uint8_t)PlsrActiveConfig.pulseOutput, - hardwareFirstFrequencyHz, - hardwareQueuedFrequencyHz, - &actualFirstFrequencyHz, - &actualQueuedFrequencyHz) == 0U) + if (PlsrDiagnosticStartPulse( + (uint8_t)PlsrActiveConfig.pulseOutput, + hardwareFirstFrequencyHz, hardwareQueuedFrequencyHz, + &actualFirstFrequencyHz, &actualQueuedFrequencyHz) == 0U) { PlsrPlatformExitCritical(criticalState); return 0U; @@ -751,6 +1279,14 @@ static uint8_t PlsrApplyFrequencyPair(uint32_t requestedFirstFrequencyHz, { PlsrHandoffPlan.magnitude = candidatePlan.magnitude; PlsrHandoffPlan.firstFrequencyHz = actualQueuedFrequencyHz; + PlsrHandoffPlan.secondFrequencyHz = + candidatePlan.secondFrequencyHz; + PlsrHandoffPlan.firstRequestedFrequencyHz = + candidatePlan.firstRequestedFrequencyHz; + PlsrHandoffPlan.secondRequestedFrequencyHz = + candidatePlan.secondRequestedFrequencyHz; + PlsrHandoffPlan.firstSetting = candidatePlan.firstSetting; + PlsrHandoffPlan.secondSetting = candidatePlan.secondSetting; PlsrCopyShortProfile(&PlsrHandoffPlan.profile, &candidatePlan.profile); PlsrHandoffPlan.nextSegment = candidatePlan.nextSegment; @@ -760,6 +1296,11 @@ static uint8_t PlsrApplyFrequencyPair(uint32_t requestedFirstFrequencyHz, } PlsrQueuedFrequencyHz = actualQueuedFrequencyHz; + if (PlsrArmFinalAbBoundaryLocked() == 0U) + { + PlsrPlatformExitCritical(criticalState); + return 0U; + } PlsrPlatformExitCritical(criticalState); return 1U; } @@ -788,24 +1329,31 @@ static uint8_t PlsrStopDrainPulseCount(void) return (currentFrequencyHz == queuedFrequencyHz) ? 1U : 2U; } -static uint8_t PlsrCommitDeferredFrequency(uint8_t pulseOutput) +static PLSR_PLATFORM_QUEUE_RESULT PlsrCommitDeferredFrequency( + uint8_t pulseOutput) { uint32_t requestedFrequencyHz; uint32_t actualFrequencyHz; + PLSR_PLATFORM_QUEUE_RESULT result; if (PlsrDeferredFrequencyPending == 0U) { - return 1U; + return PLSR_PLATFORM_QUEUE_APPLIED; } requestedFrequencyHz = PlsrDeferredFrequencyHz; - PlsrDeferredFrequencyPending = 0U; - if (PlsrPlatformQueueFrequency(pulseOutput, requestedFrequencyHz, - &actualFrequencyHz) == 0U) + result = PlsrDiagnosticQueueFrequency(pulseOutput, requestedFrequencyHz, + &actualFrequencyHz); + if (result != PLSR_PLATFORM_QUEUE_APPLIED) { - return 0U; + return result; + } + if ((PlsrDeferredFrequencyPending != 0U) + && (PlsrDeferredFrequencyHz == requestedFrequencyHz)) + { + PlsrDeferredFrequencyPending = 0U; } PlsrQueuedFrequencyHz = actualFrequencyHz; - return 1U; + return PLSR_PLATFORM_QUEUE_APPLIED; } static uint8_t PlsrRampAdvance(uint32_t expectedEpoch) @@ -869,6 +1417,7 @@ static uint8_t PlsrRampAdvance(uint32_t expectedEpoch) else { PlsrStopPulsesRemaining = PlsrStopDrainPulseCount(); + (void)PlsrArmFinalAbBoundaryLocked(); } } PlsrPlatformExitCritical(criticalState); @@ -948,12 +1497,26 @@ static uint64_t PlsrRemainingSnapshot(void) return remaining; } -static uint64_t PlsrRampPulseEstimate(uint32_t fromHz, uint32_t toHz) +static uint64_t PlsrRampPulseEstimate(uint32_t fromHz, + uint32_t toHz, + uint32_t rateBoundHz) { uint32_t duration = PlsrRampDurationMs(fromHz, toHz); uint64_t sum = (uint64_t)fromHz + toHz; + uint64_t estimate = (sum * duration + 1999UL) / 2000UL + 2UL; + uint64_t reserve = ((uint64_t)rateBoundHz + 999UL) / 1000UL; + + if ((duration != 0UL) && (fromHz > toHz)) + { + /* A 1 ms held deceleration step can exceed the ideal ramp area. */ + reserve += ((uint64_t)(fromHz - toHz) + 999UL) / 1000UL; + } + if (UINT64_MAX - estimate < reserve) + { + return UINT64_MAX; + } - return (sum * duration + 1999UL) / 2000UL + 2UL; + return estimate + reserve; } static uint16_t PlsrShortProfileRampTime(uint32_t fromHz, uint32_t toHz) @@ -1829,44 +2392,207 @@ static void PlsrCopyShortProfile(PLSR_SHORT_PROFILE *destination, destination->active = source->active; } -static void PlsrInvalidateHandoffPlans(void) +static uint16_t PlsrProfileQueueCount(void) +{ + uint32_t writeIndex = PlsrProfileQueue.writeIndex; + uint32_t readIndex = PlsrProfileQueue.readIndex; + + return (uint16_t)(writeIndex - readIndex); +} + +static void PlsrProfileQueueReset(void) { - uint8_t bank; - uint8_t index; uint32_t criticalState = PlsrPlatformEnterCritical(); - PlsrHandoffPlan.valid = 0U; - for (bank = 0U; bank < 2U; bank++) - { - for (index = 0U; index < PLSR_SEGMENT_COUNT_MAX; index++) - { - PlsrPreparedHandoffPlans[bank][index].valid = 0U; - } + PlsrProfileQueue.generation++; + PlsrProfileQueue.readIndex = 0U; + PlsrProfileQueue.writeIndex = 0U; + PlsrProfileQueue.active = 0U; + PlsrProfileQueue.generatorComplete = 0U; + PlsrProfileQueue.producerEpoch = 0UL; + PlsrProfileQueue.producerSegment = 0U; + PlsrProfileQueue.preparedHandoffBank = 0U; + PlsrProfileQueue.producerProfile.active = 0U; + PlsrPlatformExitCritical(criticalState); +} + +static uint8_t PlsrProfileQueueBegin( + const PLSR_SHORT_PROFILE *producerProfile, + uint32_t producerEpoch, + uint8_t producerSegment, + uint8_t preparedHandoffBank) +{ + uint32_t criticalState = PlsrPlatformEnterCritical(); + + PlsrProfileQueue.generation++; + PlsrProfileQueue.readIndex = 0U; + PlsrProfileQueue.writeIndex = 0U; + PlsrProfileQueue.producerEpoch = producerEpoch; + PlsrProfileQueue.producerSegment = producerSegment; + PlsrProfileQueue.preparedHandoffBank = preparedHandoffBank; + PlsrProfileQueue.generatorComplete = 0U; + PlsrCopyShortProfile(&PlsrProfileQueue.producerProfile, + producerProfile); + PlsrProfileQueue.active = + ((producerProfile->active != 0U) + && (producerProfile->nextPeriod < producerProfile->pulseCount)) + ? 1U : 0U; + if (PlsrProfileQueue.active == 0U) + { + PlsrProfileQueue.generatorComplete = 1U; } PlsrPlatformExitCritical(criticalState); + return 1U; } -static uint8_t PlsrAdvanceShortProfile(uint8_t pulseOutput) +static void PlsrProfileQueueInvalidateGeneration(void) { - uint32_t requestedFrequencyHz; - uint32_t actualFrequencyHz; + uint32_t criticalState = PlsrPlatformEnterCritical(); - if ((PlsrShortProfile.active == 0U) - || (PlsrShortProfile.nextPeriod >= PlsrShortProfile.pulseCount)) + PlsrProfileQueue.generation++; + PlsrProfileQueue.active = 0U; + PlsrProfileQueue.generatorComplete = 0U; + PlsrProfileQueue.readIndex = 0U; + PlsrProfileQueue.writeIndex = 0U; + PlsrPlatformExitCritical(criticalState); +} + +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) \ + && !defined(PLSR_HOST_TEST) +static uint32_t PlsrProfileTimingNow(void) +{ + return *((volatile uint32_t *)0xE0001004UL); +} + +static void PlsrProfileRecordProducerCycles(uint32_t startCycles) +{ + uint32_t elapsed = PlsrProfileTimingNow() - startCycles; + uint32_t total = PlsrProfileProducerTotalCycles; + + if (PlsrProfileProducerItemCount != 0xFFFFFFFFUL) { - return 1U; + PlsrProfileProducerItemCount++; } + PlsrProfileProducerTotalCycles = + (elapsed > (0xFFFFFFFFUL - total)) ? 0xFFFFFFFFUL + : total + elapsed; + if (elapsed > PlsrProfileProducerMaxItemCycles) + { + PlsrProfileProducerMaxItemCycles = elapsed; + } +} +#endif - requestedFrequencyHz = - PlsrShortProfileTakeFrequency(&PlsrShortProfile); - PlsrDeferredFrequencyPending = 0U; - if (PlsrPlatformQueueFrequency(pulseOutput, - requestedFrequencyHz, - &actualFrequencyHz) == 0U) +static uint8_t PlsrProfileQueueFill(void) +{ + PLSR_SHORT_PROFILE candidate; + PLSR_PROFILE_ENTRY entry; + uint32_t generation; + uint32_t producerEpoch; + uint32_t criticalState; + uint32_t writeIndex; +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) \ + && !defined(PLSR_HOST_TEST) + uint32_t startCycles; +#endif + + while (1) { - return 0U; + criticalState = PlsrPlatformEnterCritical(); + if ((PlsrProfileQueue.active == 0U) + || (PlsrProfileQueue.generatorComplete != 0U) + || (PlsrProfileQueueCount() >= PLSR_PROFILE_QUEUE_CAPACITY)) + { + PlsrPlatformExitCritical(criticalState); + return 1U; + } + generation = PlsrProfileQueue.generation; + producerEpoch = PlsrProfileQueue.producerEpoch; + PlsrCopyShortProfile(&candidate, + &PlsrProfileQueue.producerProfile); + PlsrPlatformExitCritical(criticalState); + +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) \ + && !defined(PLSR_HOST_TEST) + startCycles = PlsrProfileTimingNow(); +#endif + entry.requestedFrequencyHz = + PlsrShortProfileTakeFrequency(&candidate); + if (PlsrPlatformBuildTimerSetting( + (uint8_t)PlsrActiveConfig.pulseOutput, + (uint8_t)PlsrActiveConfig.outputMode, + entry.requestedFrequencyHz, &entry.setting) == 0U) + { + return 0U; + } + + criticalState = PlsrPlatformEnterCritical(); + if ((PlsrProfileQueue.active == 0U) + || (PlsrProfileQueue.generation != generation) + || (PlsrProfileQueue.producerEpoch != producerEpoch) + || (PlsrProfileQueueCount() >= PLSR_PROFILE_QUEUE_CAPACITY)) + { + PlsrPlatformExitCritical(criticalState); + continue; + } + writeIndex = PlsrProfileQueue.writeIndex; + PlsrProfileQueue.entries[writeIndex & PLSR_PROFILE_QUEUE_MASK] = entry; + PlsrCopyShortProfile(&PlsrProfileQueue.producerProfile, &candidate); + PlsrProfileQueue.writeIndex = writeIndex + 1UL; + if ((candidate.active == 0U) + || (candidate.nextPeriod >= candidate.pulseCount)) + { + PlsrProfileQueue.generatorComplete = 1U; + } + PlsrPlatformExitCritical(criticalState); +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) \ + && !defined(PLSR_HOST_TEST) + PlsrProfileRecordProducerCycles(startCycles); +#endif } +} + +static PLSR_PLATFORM_QUEUE_RESULT PlsrProfileQueueCommitNext( + uint8_t pulseOutput) +{ + const PLSR_PROFILE_ENTRY *entry; + uint32_t readIndex; + uint32_t nextReadIndex; + uint32_t writeIndex; + uint32_t actualFrequencyHz; + PLSR_PLATFORM_QUEUE_RESULT result; + + if (PlsrProfileQueue.active == 0U) + { + return PLSR_PLATFORM_QUEUE_APPLIED; + } + readIndex = PlsrProfileQueue.readIndex; + if (readIndex == PlsrProfileQueue.writeIndex) + { + if (PlsrProfileQueue.generatorComplete != 0U) + { + PlsrProfileQueue.active = 0U; + PlsrShortProfile.active = 0U; + return PLSR_PLATFORM_QUEUE_APPLIED; + } + return PLSR_PLATFORM_QUEUE_FAILED; + } + + entry = &PlsrProfileQueue.entries[readIndex & PLSR_PROFILE_QUEUE_MASK]; + result = PlsrPlatformLoadPreparedFromIrq(pulseOutput, &entry->setting, + &actualFrequencyHz); + if (result != PLSR_PLATFORM_QUEUE_APPLIED) + { + return result; + } + nextReadIndex = readIndex + 1UL; + PlsrProfileQueue.readIndex = nextReadIndex; + PlsrDeferredFrequencyPending = 0U; PlsrQueuedFrequencyHz = actualFrequencyHz; + PlsrDiagnosticRecordFrequency(entry->requestedFrequencyHz, + entry->setting.actualFrequencyHz, + actualFrequencyHz); + PlsrDiagnosticQueuedExpectedHz = entry->setting.actualFrequencyHz; if (actualFrequencyHz > PlsrCurrentFrequencyHz) { PlsrRunStatus = PLSR_STATUS_ACCELERATING; @@ -1879,7 +2605,30 @@ static uint8_t PlsrAdvanceShortProfile(uint8_t pulseOutput) { PlsrRunStatus = PLSR_STATUS_RUNNING; } - return 1U; + writeIndex = PlsrProfileQueue.writeIndex; + if ((nextReadIndex == writeIndex) + && (PlsrProfileQueue.generatorComplete != 0U)) + { + PlsrProfileQueue.active = 0U; + } + return PLSR_PLATFORM_QUEUE_APPLIED; +} + +static void PlsrInvalidateHandoffPlans(void) +{ + uint8_t bank; + uint8_t index; + uint32_t criticalState = PlsrPlatformEnterCritical(); + + PlsrHandoffPlan.valid = 0U; + for (bank = 0U; bank < 2U; bank++) + { + for (index = 0U; index < PLSR_SEGMENT_COUNT_MAX; index++) + { + PlsrPreparedHandoffPlans[bank][index].valid = 0U; + } + } + PlsrPlatformExitCritical(criticalState); } static void PlsrMaybePlanBoundaryRamp(uint32_t expectedEpoch) @@ -1890,7 +2639,13 @@ static void PlsrMaybePlanBoundaryRamp(uint32_t expectedEpoch) uint8_t hasNext; uint32_t targetHz; uint32_t criticalState; + uint32_t currentHz; + uint32_t queuedHz; + uint32_t deferredHz; + uint32_t rateBoundHz; + uint8_t deferredPending; uint64_t estimate; + uint64_t candidateEstimate; uint64_t remaining; if ((PlsrPulseActive == 0U) || (PlsrBoundaryRampStarted != 0U) @@ -1916,7 +2671,47 @@ static void PlsrMaybePlanBoundaryRamp(uint32_t expectedEpoch) } } - estimate = PlsrRampPulseEstimate(PlsrCurrentFrequencyHz, targetHz); + criticalState = PlsrPlatformEnterCritical(); + currentHz = PlsrCurrentFrequencyHz; + queuedHz = PlsrQueuedFrequencyHz; + deferredHz = PlsrDeferredFrequencyHz; + deferredPending = PlsrDeferredFrequencyPending; + if ((PlsrSegmentEpoch != expectedEpoch) + || (PlsrBoundaryPending != 0U) + || (PlsrPulseActive == 0U) + || (PlsrBoundaryRampStarted != 0U) + || (PlsrShortProfile.active != 0U) + || (PlsrHandoffPlan.valid != 0U) + || (PlsrStopRequested != 0U) + || (PlsrAbStopArmed != 0U)) + { + PlsrPlatformExitCritical(criticalState); + return; + } + PlsrPlatformExitCritical(criticalState); + + rateBoundHz = (currentHz > queuedHz) ? currentHz : queuedHz; + if ((deferredPending != 0U) && (deferredHz > rateBoundHz)) + { + rateBoundHz = deferredHz; + } + estimate = PlsrRampPulseEstimate(currentHz, targetHz, rateBoundHz); + candidateEstimate = PlsrRampPulseEstimate(queuedHz, targetHz, + rateBoundHz); + if (candidateEstimate > estimate) + { + estimate = candidateEstimate; + } + if (deferredPending != 0U) + { + candidateEstimate = PlsrRampPulseEstimate(deferredHz, targetHz, + rateBoundHz); + if (candidateEstimate > estimate) + { + estimate = candidateEstimate; + } + } + criticalState = PlsrPlatformEnterCritical(); remaining = PlsrRemainingPulses; if ((PlsrSegmentEpoch != expectedEpoch) @@ -1925,7 +2720,8 @@ static void PlsrMaybePlanBoundaryRamp(uint32_t expectedEpoch) || (PlsrBoundaryRampStarted != 0U) || (PlsrShortProfile.active != 0U) || (PlsrHandoffPlan.valid != 0U) - || (PlsrStopRequested != 0U)) + || (PlsrStopRequested != 0U) + || (PlsrAbStopArmed != 0U)) { PlsrPlatformExitCritical(criticalState); return; @@ -1951,6 +2747,9 @@ static uint8_t PlsrBeginSegmentOutput(uint32_t startFrequencyHz) PlsrActiveConfig.segments[PlsrCurrentSegment - 1U].frequencyHz; uint32_t firstFrequencyHz; uint32_t secondFrequencyHz; + uint32_t profileEpoch; + uint8_t profileSegment; + uint8_t profileHandoffBank; PlsrSegmentClockStarted = 1U; PlsrSegmentElapsedMs = 0UL; @@ -1966,6 +2765,19 @@ static uint8_t PlsrBeginSegmentOutput(uint32_t startFrequencyHz) (PlsrShortProfile.nextPeriod < PlsrShortProfile.pulseCount) ? PlsrShortProfileTakeFrequency(&PlsrShortProfile) : firstFrequencyHz; + profileEpoch = PlsrSegmentEpoch; + profileSegment = PlsrCurrentSegment; + profileHandoffBank = PlsrPreparedHandoffBank; + (void)PlsrProfileQueueBegin(&PlsrShortProfile, + profileEpoch, + profileSegment, + profileHandoffBank); + if (PlsrProfileQueueFill() == 0U) + { + PlsrProfileQueueReset(); + PlsrShortProfile.active = 0U; + return 0U; + } if (secondFrequencyHz > firstFrequencyHz) { PlsrRunStatus = PLSR_STATUS_ACCELERATING; @@ -1982,12 +2794,15 @@ static uint8_t PlsrBeginSegmentOutput(uint32_t startFrequencyHz) secondFrequencyHz, PlsrSegmentEpoch) == 0U) { + PlsrProfileQueueReset(); PlsrShortProfile.active = 0U; return 0U; } return 1U; } + PlsrProfileQueueReset(); + PlsrRampStart(startFrequencyHz, targetFrequencyHz); if (PlsrRamp.active == 0U) @@ -2004,6 +2819,10 @@ static uint8_t PlsrBeginSegmentOutput(uint32_t startFrequencyHz) { return 0U; } + if (PlsrPrepareFutureHandoffQueue() == 0U) + { + return 0U; + } return 1U; } @@ -2044,6 +2863,7 @@ static uint8_t PlsrStartSegment(uint8_t segmentNumber, PlsrBoundaryWasCut = 0U; PlsrCutRequested = 0U; PlsrStopPulsesRemaining = 0U; + PlsrAbStopArmed = 0U; PlsrFrequencyUpdatePending = 0U; PlsrDeferredFrequencyPending = 0U; PlsrCurrentFrequencyHz = 0UL; @@ -2051,6 +2871,12 @@ static uint8_t PlsrStartSegment(uint8_t segmentNumber, PlsrHandoffPlan.valid = 0U; PlsrShortProfile.active = 0U; PlsrShortProfile.nextPeriod = 0U; + if ((allowCarry == 0U) || (PlsrProfileQueue.active == 0U) + || (PlsrProfileQueue.producerEpoch != PlsrSegmentEpoch) + || (PlsrProfileQueue.producerSegment != segmentNumber)) + { + PlsrProfileQueueReset(); + } PlsrDirectionDelayActive = 0U; PlsrDirectionDelayRemainingMs = 0U; PlsrExtEdgePending = 0U; @@ -2071,6 +2897,8 @@ static uint8_t PlsrStartSegment(uint8_t segmentNumber, PlsrBoundaryFrequencyHz = (allowCarry != 0U) ? carryFrequencyHz : 0UL; PlsrBoundaryWasCut = 1U; PlsrBoundaryPending = 1U; + PlsrDiagnosticBeginSegment(segmentNumber, 0UL, positive); + PlsrDiagnosticFinishSegment(1U); return 1U; } @@ -2080,11 +2908,14 @@ static uint8_t PlsrStartSegment(uint8_t segmentNumber, PlsrRunStatus = PLSR_STATUS_RUNNING; PlsrBoundaryFrequencyHz = 0UL; PlsrBoundaryPending = 1U; + PlsrDiagnosticBeginSegment(segmentNumber, 0UL, positive); + PlsrDiagnosticFinishSegment(1U); return 1U; } directionLevel = positive; - if (PlsrActiveConfig.directionNegativeLogic != 0U) + if ((PlsrActiveConfig.outputMode == PLSR_OUTPUT_PULSE_DIR) + && (PlsrActiveConfig.directionNegativeLogic != 0U)) { directionLevel ^= 1U; } @@ -2095,10 +2926,13 @@ static uint8_t PlsrStartSegment(uint8_t segmentNumber, if (PlsrPlatformPrepare((uint8_t)PlsrActiveConfig.pulseOutput, (uint8_t)PlsrActiveConfig.directionOutput, - directionLevel) == 0U) + directionLevel, + (uint8_t)PlsrActiveConfig.outputMode, + positive) == 0U) { return 0U; } + PlsrDiagnosticBeginSegment(segmentNumber, magnitude, positive); PlsrLastDirectionValid = 1U; PlsrLastDirectionOutput = (uint8_t)PlsrActiveConfig.directionOutput; PlsrLastDirectionLevel = directionLevel; @@ -2113,7 +2947,8 @@ static uint8_t PlsrStartSegment(uint8_t segmentNumber, startFrequencyHz = PlsrActiveConfig.startSpeedHz; } - if ((directionChanged != 0U) + if ((PlsrActiveConfig.outputMode == PLSR_OUTPUT_PULSE_DIR) + && (directionChanged != 0U) && (PlsrActiveConfig.directionDelayMs != 0U)) { PlsrDirectionDelayActive = 1U; @@ -2181,9 +3016,11 @@ static void PlsrFinishCompleted(void) PlsrExtEdgePending = 0U; PlsrStopRequested = 0U; PlsrStopPulsesRemaining = 0U; + PlsrAbStopArmed = 0U; PlsrSeamlessHandoffPending = 0U; PlsrDeferredFrequencyPending = 0U; PlsrShortProfile.active = 0U; + PlsrProfileQueueReset(); PlsrHandoffPlan.valid = 0U; PlsrTimerErrorPending = 0U; PlsrRamp.active = 0U; @@ -2196,6 +3033,7 @@ static void PlsrFinishCompleted(void) static void PlsrFinishStopped(void) { + PlsrDiagnosticFinishSegment(0U); PlsrPlatformStopPulse((uint8_t)PlsrActiveConfig.pulseOutput); PlsrRemainingPulses = 0UL; PlsrPulseActive = 0U; @@ -2211,9 +3049,11 @@ static void PlsrFinishStopped(void) PlsrExtEdgePending = 0U; PlsrStopRequested = 0U; PlsrStopPulsesRemaining = 0U; + PlsrAbStopArmed = 0U; PlsrSeamlessHandoffPending = 0U; PlsrDeferredFrequencyPending = 0U; PlsrShortProfile.active = 0U; + PlsrProfileQueueReset(); PlsrHandoffPlan.valid = 0U; PlsrTimerErrorPending = 0U; PlsrRamp.active = 0U; @@ -2226,6 +3066,7 @@ static void PlsrFinishStopped(void) static void PlsrEnterError(PLSR_ERROR error) { + PlsrDiagnosticFinishSegment(0U); PlsrPlatformStopPulse((uint8_t)PlsrActiveConfig.pulseOutput); PlsrRemainingPulses = 0UL; PlsrPulseActive = 0U; @@ -2241,9 +3082,11 @@ static void PlsrEnterError(PLSR_ERROR error) PlsrExtEdgePending = 0U; PlsrStopRequested = 0U; PlsrStopPulsesRemaining = 0U; + PlsrAbStopArmed = 0U; PlsrSeamlessHandoffPending = 0U; PlsrDeferredFrequencyPending = 0U; PlsrShortProfile.active = 0U; + PlsrProfileQueueReset(); PlsrHandoffPlan.valid = 0U; PlsrTimerErrorPending = 0U; PlsrRamp.active = 0U; @@ -2333,6 +3176,28 @@ static uint8_t PlsrBuildHandoffPlan(uint8_t sourceSegment, plan->firstFrequencyHz = PlsrShortProfileTakeFrequency(&plan->profile); } + plan->secondFrequencyHz = plan->firstFrequencyHz; + if ((plan->profile.active != 0U) + && (plan->profile.nextPeriod < plan->profile.pulseCount)) + { + plan->secondFrequencyHz = + PlsrShortProfileTakeFrequency(&plan->profile); + } + plan->firstRequestedFrequencyHz = plan->firstFrequencyHz; + plan->secondRequestedFrequencyHz = plan->secondFrequencyHz; + if ((PlsrPlatformBuildTimerSetting( + (uint8_t)PlsrActiveConfig.pulseOutput, + (uint8_t)PlsrActiveConfig.outputMode, + plan->firstFrequencyHz, &plan->firstSetting) == 0U) + || (PlsrPlatformBuildTimerSetting( + (uint8_t)PlsrActiveConfig.pulseOutput, + (uint8_t)PlsrActiveConfig.outputMode, + plan->secondFrequencyHz, &plan->secondSetting) == 0U)) + { + return 0U; + } + plan->firstFrequencyHz = plan->firstSetting.actualFrequencyHz; + plan->secondFrequencyHz = plan->secondSetting.actualFrequencyHz; plan->nextSegment = nextSegment; plan->positive = positive; plan->valid = 1U; @@ -2377,6 +3242,7 @@ static uint8_t PlsrSelectPreparedHandoffPlan(PLSR_HANDOFF_PLAN *plan) || (PlsrStopRequested != 0U) || (PlsrCountOverflowPending != 0U) || (PlsrCutRequested != 0U) + || (PlsrAbStopArmed != 0U) || (currentSegment == 0U) || (currentSegment > PlsrActiveConfig.segmentCount)) { @@ -2392,6 +3258,11 @@ static uint8_t PlsrSelectPreparedHandoffPlan(PLSR_HANDOFF_PLAN *plan) plan->magnitude = prepared->magnitude; plan->firstFrequencyHz = prepared->firstFrequencyHz; + plan->secondFrequencyHz = prepared->secondFrequencyHz; + plan->firstRequestedFrequencyHz = prepared->firstRequestedFrequencyHz; + plan->secondRequestedFrequencyHz = prepared->secondRequestedFrequencyHz; + plan->firstSetting = prepared->firstSetting; + plan->secondSetting = prepared->secondSetting; PlsrCopyShortProfile(&plan->profile, &prepared->profile); plan->nextSegment = prepared->nextSegment; plan->positive = prepared->positive; @@ -2399,79 +3270,147 @@ static uint8_t PlsrSelectPreparedHandoffPlan(PLSR_HANDOFF_PLAN *plan) return 1U; } -static uint8_t PlsrPrimeHandoff(void) +static uint8_t PlsrPrepareFutureHandoffQueue(void) +{ + const PLSR_HANDOFF_PLAN *prepared; + uint8_t currentSegment = PlsrCurrentSegment; + uint8_t preparedBank = PlsrPreparedHandoffBank; + + PlsrProfileQueueReset(); + if ((currentSegment == 0U) + || (currentSegment > PlsrActiveConfig.segmentCount) + || (PlsrActiveConfig.sendMode != PLSR_SEND_SUBSEQUENT)) + { + return 1U; + } + prepared = &PlsrPreparedHandoffPlans[preparedBank][currentSegment - 1U]; + if ((prepared->valid == 0U) || (prepared->profile.active == 0U) + || (prepared->profile.nextPeriod >= prepared->profile.pulseCount)) + { + return 1U; + } + (void)PlsrProfileQueueBegin(&prepared->profile, + PlsrSegmentEpoch + 1UL, + prepared->nextSegment, + preparedBank); + if (PlsrProfileQueueFill() == 0U) + { + PlsrProfileQueueReset(); + return 0U; + } + return 1U; +} + +static PLSR_PLATFORM_QUEUE_RESULT PlsrPrimeHandoff(void) { PLSR_HANDOFF_PLAN candidatePlan; uint32_t actualFrequencyHz; + PLSR_PLATFORM_QUEUE_RESULT result; PlsrHandoffPlan.valid = 0U; + if (PlsrAbStopArmed != 0U) + { + return PLSR_PLATFORM_QUEUE_FAILED; + } if (PlsrSelectPreparedHandoffPlan(&candidatePlan) == 0U) { - return 0U; + return PLSR_PLATFORM_QUEUE_FAILED; } PlsrDeferredFrequencyPending = 0U; - if (PlsrPlatformQueueFrequency( - (uint8_t)PlsrActiveConfig.pulseOutput, - candidatePlan.firstFrequencyHz, &actualFrequencyHz) == 0U) + result = PlsrPlatformLoadPreparedFromIrq( + (uint8_t)PlsrActiveConfig.pulseOutput, + &candidatePlan.firstSetting, &actualFrequencyHz); + if (result != PLSR_PLATFORM_QUEUE_APPLIED) { - PlsrTimerErrorPending = 1U; - return 0U; + if (result == PLSR_PLATFORM_QUEUE_FAILED) + { + PlsrTimerErrorPending = 1U; + } + return result; } + PlsrDiagnosticRecordFrequency(candidatePlan.firstRequestedFrequencyHz, + candidatePlan.firstSetting.actualFrequencyHz, + actualFrequencyHz); + PlsrDiagnosticQueuedExpectedHz = + candidatePlan.firstSetting.actualFrequencyHz; PlsrQueuedFrequencyHz = actualFrequencyHz; PlsrHandoffPlan.magnitude = candidatePlan.magnitude; PlsrHandoffPlan.firstFrequencyHz = actualFrequencyHz; + PlsrHandoffPlan.secondFrequencyHz = candidatePlan.secondFrequencyHz; + PlsrHandoffPlan.firstRequestedFrequencyHz = + candidatePlan.firstRequestedFrequencyHz; + PlsrHandoffPlan.secondRequestedFrequencyHz = + candidatePlan.secondRequestedFrequencyHz; + PlsrHandoffPlan.firstSetting = candidatePlan.firstSetting; + PlsrHandoffPlan.secondSetting = candidatePlan.secondSetting; PlsrCopyShortProfile(&PlsrHandoffPlan.profile, &candidatePlan.profile); PlsrHandoffPlan.nextSegment = candidatePlan.nextSegment; PlsrHandoffPlan.positive = candidatePlan.positive; PlsrHandoffPlan.valid = 1U; - return 1U; + return PLSR_PLATFORM_QUEUE_APPLIED; } -static uint8_t PlsrTrySubsequentHandoff(void) +static PLSR_PLATFORM_QUEUE_RESULT PlsrTrySubsequentHandoff(void) { - uint32_t requestedQueuedFrequencyHz; uint32_t actualQueuedFrequencyHz; uint32_t currentFrequencyHz; uint32_t queuedFrequencyHz; uint8_t nextSegment = PlsrHandoffPlan.nextSegment; uint64_t magnitude = PlsrHandoffPlan.magnitude; uint8_t positive = PlsrHandoffPlan.positive; + PLSR_PLATFORM_QUEUE_RESULT result; if ((PlsrHandoffPlan.valid == 0U) || (PlsrActiveConfig.sendMode != PLSR_SEND_SUBSEQUENT) || (PlsrStopRequested != 0U) || (PlsrCountOverflowPending != 0U) || (PlsrCutRequested != 0U) + || (PlsrAbStopArmed != 0U) || (PlsrCurrentFrequencyHz != PlsrHandoffPlan.firstFrequencyHz) || (nextSegment == 0U) || (nextSegment > PlsrActiveConfig.segmentCount)) { - return 0U; + return PLSR_PLATFORM_QUEUE_FAILED; } - - PlsrCopyShortProfile(&PlsrShortProfile, - &PlsrHandoffPlan.profile); - requestedQueuedFrequencyHz = PlsrCurrentFrequencyHz; - if ((PlsrShortProfile.active != 0U) - && (PlsrShortProfile.nextPeriod < PlsrShortProfile.pulseCount)) + if ((PlsrHandoffPlan.profile.active != 0U) + && ((PlsrProfileQueue.active == 0U) + || (PlsrProfileQueue.producerEpoch != PlsrSegmentEpoch + 1UL) + || (PlsrProfileQueue.producerSegment != nextSegment) + || (PlsrProfileQueue.preparedHandoffBank + != PlsrPreparedHandoffBank))) { - requestedQueuedFrequencyHz = - PlsrShortProfileTakeFrequency(&PlsrShortProfile); + PlsrTimerErrorPending = 1U; + return PLSR_PLATFORM_QUEUE_FAILED; } + PlsrDeferredFrequencyPending = 0U; - if (PlsrPlatformQueueFrequency( - (uint8_t)PlsrActiveConfig.pulseOutput, - requestedQueuedFrequencyHz, &actualQueuedFrequencyHz) == 0U) + result = PlsrPlatformLoadPreparedFromIrq( + (uint8_t)PlsrActiveConfig.pulseOutput, + &PlsrHandoffPlan.secondSetting, &actualQueuedFrequencyHz); + if (result == PLSR_PLATFORM_QUEUE_STALE) + { + return result; + } + if (result == PLSR_PLATFORM_QUEUE_FAILED) { PlsrShortProfile.active = 0U; PlsrHandoffPlan.valid = 0U; PlsrTimerErrorPending = 1U; - return 0U; + return result; } + PlsrCopyShortProfile(&PlsrShortProfile, + &PlsrHandoffPlan.profile); + PlsrDiagnosticRecordFrequency( + PlsrHandoffPlan.secondRequestedFrequencyHz, + PlsrHandoffPlan.secondSetting.actualFrequencyHz, + actualQueuedFrequencyHz); + PlsrDiagnosticQueuedExpectedHz = + PlsrHandoffPlan.secondSetting.actualFrequencyHz; PlsrQueuedFrequencyHz = actualQueuedFrequencyHz; + PlsrDiagnosticFinishSegment(1U); PlsrSegmentEpoch++; PlsrCurrentSegment = nextSegment; PlsrRemainingPulses = magnitude; @@ -2489,12 +3428,18 @@ static uint8_t PlsrTrySubsequentHandoff(void) PlsrExtEdgePending = 0U; PlsrExtPreviousLevel = PlsrPlatformReadInput((uint8_t)PlsrActiveConfig.extInput); + PlsrDiagnosticBeginSegment(nextSegment, magnitude, positive); PlsrSeamlessHandoffPending = 1U; PlsrHandoffPlan.valid = 0U; if (PlsrRemainingPulses == 1UL) { - (void)PlsrPrimeHandoff(); + result = PlsrPrimeHandoff(); + if (result == PLSR_PLATFORM_QUEUE_STALE) + { + return result; + } } + (void)PlsrQueueFinalAbBoundaryFromIrq(); queuedFrequencyHz = PlsrQueuedFrequencyHz; currentFrequencyHz = PlsrCurrentFrequencyHz; if (PlsrShortProfile.active != 0U) @@ -2516,7 +3461,7 @@ static uint8_t PlsrTrySubsequentHandoff(void) { PlsrRunStatus = PLSR_STATUS_RUNNING; } - return 1U; + return PLSR_PLATFORM_QUEUE_APPLIED; } static void PlsrHandleBoundary(uint8_t extEdge) @@ -2524,14 +3469,17 @@ static void PlsrHandleBoundary(uint8_t extEdge) const PLSR_SEGMENT_CONFIG *segment; uint8_t wasCut = PlsrBoundaryWasCut; + PlsrPlatformStopPulse((uint8_t)PlsrActiveConfig.pulseOutput); PlsrBoundaryPending = 0U; PlsrBoundaryWasCut = 0U; PlsrPulseActive = 0U; PlsrCurrentFrequencyHz = 0UL; PlsrQueuedFrequencyHz = 0UL; PlsrShortProfile.active = 0U; + PlsrProfileQueueReset(); PlsrHandoffPlan.valid = 0U; PlsrDeferredFrequencyPending = 0U; + PlsrAbStopArmed = 0U; PlsrCheckpointPosition(1U); if (PlsrTimerErrorPending != 0U) @@ -2634,6 +3582,7 @@ static void PlsrRequestCut(uint32_t expectedEpoch) else if (PlsrPulseActive != 0U) { PlsrCutRequested = 1U; + (void)PlsrArmFinalAbBoundaryLocked(); } else { @@ -2682,18 +3631,40 @@ static void PlsrPollWaiting(uint8_t extEdge) } } -static void PlsrPollPersistence(void) +static void PlsrPollPersistenceDelay(void) +{ + if ((PlsrPersistenceDirty != 0U) + && (PlsrIsBusy() == 0U) + && (PlsrPersistenceDelayMs != 0U)) + { + PlsrPersistenceDelayMs--; + } +} + +void PlsrServicePersistence(void) { PLSR_PERSIST_PAYLOAD payload; + PLSR_PLATFORM_SERVICE_RESULT serviceResult; uint32_t criticalState; - if ((PlsrPersistenceDirty == 0U) || (PlsrIsBusy() != 0U)) + if (PlsrIsBusy() != 0U) + { + return; + } + serviceResult = PlsrPlatformServicePersistence(); + if (serviceResult == PLSR_PLATFORM_SERVICE_FAILED) + { + PlsrRunStatus = PLSR_STATUS_ERROR; + PlsrError = PLSR_ERROR_INTERNAL; + return; + } + if ((serviceResult == PLSR_PLATFORM_SERVICE_DEFERRED) + || (PlsrPersistenceDirty == 0U)) { return; } if (PlsrPersistenceDelayMs != 0U) { - PlsrPersistenceDelayMs--; return; } @@ -2750,6 +3721,7 @@ uint8_t PlsrInit(void) (void)memset(&PlsrActiveConfig, 0, sizeof(PlsrActiveConfig)); (void)memset(&PlsrRamp, 0, sizeof(PlsrRamp)); (void)memset(&PlsrShortProfile, 0, sizeof(PlsrShortProfile)); + (void)memset(&PlsrProfileQueue, 0, sizeof(PlsrProfileQueue)); (void)memset(&PlsrHandoffPlan, 0, sizeof(PlsrHandoffPlan)); (void)memset(PlsrPreparedHandoffPlans, 0, sizeof(PlsrPreparedHandoffPlans)); @@ -2780,10 +3752,22 @@ uint8_t PlsrInit(void) PlsrExtEdgePending = 0U; PlsrStopRequested = 0U; PlsrStopPulsesRemaining = 0U; + PlsrAbStopArmed = 0U; PlsrLastDirectionValid = 0U; PlsrPositionCheckpointElapsedMs = 0U; PlsrCommandMailbox.command = 0U; PlsrCommandMailbox.state = PLSR_COMMAND_MAILBOX_EMPTY; + PlsrDiagnosticReset(); +#ifdef PLSR_HOST_TEST + PlsrHostTestEventSequence = 0UL; + PlsrHostTestLastGateEvent = 0UL; + PlsrHostTestLastDiagnosticFinishEvent = 0UL; +#endif +#if defined(PLSR_DEBUG_TIMING) && (PLSR_DEBUG_TIMING != 0) + PlsrProfileProducerItemCount = 0UL; + PlsrProfileProducerTotalCycles = 0UL; + PlsrProfileProducerMaxItemCycles = 0UL; +#endif PlsrError = PLSR_ERROR_NONE; PlsrRunStatus = PLSR_STATUS_IDLE; PlsrInitialized = 1U; @@ -2869,7 +3853,9 @@ static void PlsrExecuteStart(void) if (PlsrStartSegment((uint8_t)PlsrActiveConfig.startSegment, 0U, 0UL) == 0U) { - PlsrEnterError(PLSR_ERROR_INVALID_RESOURCE); + PlsrEnterError((PlsrTimerErrorPending != 0U) + ? PLSR_ERROR_TIMER + : PLSR_ERROR_INVALID_RESOURCE); } } @@ -2892,6 +3878,7 @@ static uint8_t PlsrExecuteStop(void) PlsrStopRequested = 1U; PlsrStopPulsesRemaining = 0U; PlsrShortProfile.active = 0U; + PlsrProfileQueueInvalidateGeneration(); PlsrHandoffPlan.valid = 0U; PlsrInvalidateHandoffPlans(); if (PlsrBoundaryPending != 0U) @@ -2922,6 +3909,7 @@ static uint8_t PlsrExecuteStop(void) return 1U; } PlsrStopPulsesRemaining = PlsrStopDrainPulseCount(); + (void)PlsrArmFinalAbBoundaryLocked(); } PlsrPlatformExitCritical(criticalState); return 1U; @@ -2950,6 +3938,7 @@ static void PlsrExecuteClear(void) PlsrDirectionDelayRemainingMs = 0U; PlsrExtEdgePending = 0U; PlsrShortProfile.active = 0U; + PlsrProfileQueueReset(); PlsrHandoffPlan.valid = 0U; PlsrInvalidateHandoffPlans(); PlsrDeferredFrequencyPending = 0U; @@ -3040,14 +4029,14 @@ void PlsrPoll1ms(void) { PlsrExtEdgePending = 0U; PlsrHandleBoundary(extEdge); - PlsrPollPersistence(); + PlsrPollPersistenceDelay(); return; } if (PlsrIsBusy() == 0U) { PlsrExtEdgePending = 0U; - PlsrPollPersistence(); + PlsrPollPersistenceDelay(); return; } @@ -3118,11 +4107,13 @@ void PlsrPoll1ms(void) newTargetHz = PlsrFrequencyUpdateTargetHz; if ((PlsrStopRequested == 0U) && (PlsrFrequencyUpdatePending != 0U) + && (PlsrAbStopArmed == 0U) && (PlsrFrequencyUpdateSegment == activeSegmentNumber)) { PlsrFrequencyUpdatePending = 0U; activeSegment->frequencyHz = newTargetHz; PlsrShortProfile.active = 0U; + PlsrProfileQueueInvalidateGeneration(); PlsrBoundaryRampStarted = 0U; PlsrRampStart(PlsrCurrentFrequencyHz, newTargetHz); if (PlsrRamp.active == 0U) @@ -3167,6 +4158,7 @@ void PlsrPoll1ms(void) { PlsrStopPulsesRemaining = PlsrStopDrainPulseCount(); } + (void)PlsrArmFinalAbBoundaryLocked(); PlsrPlatformExitCritical(criticalState); return; } @@ -3193,7 +4185,8 @@ void PlsrPulseTimerIrq(uint8_t pulseOutput) { uint32_t positionBits; uint32_t completedFrequencyHz; - uint32_t activeFrequencyHz; + uint64_t remainingPulses; + PLSR_PLATFORM_QUEUE_RESULT queueResult; if ((PlsrPulseActive == 0U) || (pulseOutput != (uint8_t)PlsrActiveConfig.pulseOutput)) @@ -3202,13 +4195,12 @@ void PlsrPulseTimerIrq(uint8_t pulseOutput) } completedFrequencyHz = PlsrCurrentFrequencyHz; - activeFrequencyHz = PlsrPlatformActiveFrequency(pulseOutput); - if (activeFrequencyHz == 0UL) + PlsrDiagnosticCheckActiveFrequency(completedFrequencyHz); + PlsrCurrentFrequencyHz = PlsrPlatformActiveFrequency(pulseOutput); + if (PlsrCurrentFrequencyHz == 0UL) { - PlsrTimerErrorPending = 1U; - return; + PlsrCurrentFrequencyHz = PlsrQueuedFrequencyHz; } - PlsrCurrentFrequencyHz = activeFrequencyHz; if ((PlsrStopRequested != 0U) && (PlsrRamp.active == 0U) && (PlsrStopPulsesRemaining != 0U)) { @@ -3221,7 +4213,7 @@ void PlsrPulseTimerIrq(uint8_t pulseOutput) positionBits = (uint32_t)PlsrPosition; if (PlsrCountPositive != 0U) { - if (PlsrPosition == INT32_MAX) + if (positionBits == (uint32_t)INT32_MAX) { PlsrPositionValid = 0U; PlsrCountOverflowPending = 1U; @@ -3230,7 +4222,7 @@ void PlsrPulseTimerIrq(uint8_t pulseOutput) } else { - if (PlsrPosition == INT32_MIN) + if (positionBits == (uint32_t)INT32_MIN) { PlsrPositionValid = 0U; PlsrCountOverflowPending = 1U; @@ -3240,25 +4232,39 @@ void PlsrPulseTimerIrq(uint8_t pulseOutput) PlsrPosition = (int32_t)positionBits; PlsrPositionCheckpointDirty = 1U; - if (PlsrRemainingPulses != 0UL) + remainingPulses = PlsrRemainingPulses; + if (remainingPulses != 0UL) { - PlsrRemainingPulses--; + remainingPulses--; + PlsrRemainingPulses = remainingPulses; } - if ((PlsrRemainingPulses == 0UL) || (PlsrCutRequested != 0U) + if ((remainingPulses == 0UL) || (PlsrCutRequested != 0U) || (PlsrCountOverflowPending != 0U)) { - if ((PlsrRemainingPulses == 0UL) - && (PlsrTrySubsequentHandoff() != 0U)) + if (remainingPulses == 0UL) { - return; + queueResult = PlsrTrySubsequentHandoff(); + if (queueResult != PLSR_PLATFORM_QUEUE_FAILED) + { + return; + } } + PlsrPlatformGateFromIrq(pulseOutput); +#ifdef PLSR_HOST_TEST + PlsrHostTestEventSequence++; + PlsrHostTestLastGateEvent = PlsrHostTestEventSequence; +#endif + PlsrDiagnosticFinishSegment( + ((remainingPulses == 0UL) + && (PlsrCutRequested == 0U) + && (PlsrCountOverflowPending == 0U)) ? 1U : 0U); PlsrShortProfile.active = 0U; PlsrHandoffPlan.valid = 0U; PlsrBoundaryFrequencyHz = completedFrequencyHz; PlsrBoundaryWasCut = (PlsrCutRequested != 0U) ? 1U : 0U; PlsrCutRequested = 0U; - PlsrPlatformStopPulse(pulseOutput); + PlsrAbStopArmed = 0U; PlsrPulseActive = 0U; PlsrCurrentFrequencyHz = 0UL; PlsrQueuedFrequencyHz = 0UL; @@ -3266,42 +4272,72 @@ void PlsrPulseTimerIrq(uint8_t pulseOutput) return; } - if ((PlsrShortProfile.active != 0U) - && (PlsrAdvanceShortProfile(pulseOutput) == 0U)) + if (PlsrShortProfile.active != 0U) { - PlsrTimerErrorPending = 1U; - PlsrShortProfile.active = 0U; - PlsrHandoffPlan.valid = 0U; - PlsrBoundaryFrequencyHz = completedFrequencyHz; - PlsrBoundaryWasCut = 0U; - PlsrCutRequested = 0U; - PlsrPlatformStopPulse(pulseOutput); - PlsrPulseActive = 0U; - PlsrCurrentFrequencyHz = 0UL; - PlsrQueuedFrequencyHz = 0UL; - PlsrBoundaryPending = 1U; - return; + queueResult = PlsrProfileQueueCommitNext(pulseOutput); + if (queueResult == PLSR_PLATFORM_QUEUE_STALE) + { + return; + } + if (queueResult == PLSR_PLATFORM_QUEUE_FAILED) + { + PlsrDiagnosticFinishSegment(0U); + PlsrTimerErrorPending = 1U; + PlsrShortProfile.active = 0U; + PlsrHandoffPlan.valid = 0U; + PlsrBoundaryFrequencyHz = completedFrequencyHz; + PlsrBoundaryWasCut = 0U; + PlsrCutRequested = 0U; + PlsrPlatformGateFromIrq(pulseOutput); + PlsrAbStopArmed = 0U; + PlsrPulseActive = 0U; + PlsrCurrentFrequencyHz = 0UL; + PlsrQueuedFrequencyHz = 0UL; + PlsrBoundaryPending = 1U; + return; + } } if ((PlsrShortProfile.active == 0U) - && (PlsrRemainingPulses == 1UL)) + && (remainingPulses == 1UL) + && (PlsrActiveConfig.sendMode == PLSR_SEND_SUBSEQUENT)) { - (void)PlsrPrimeHandoff(); + if (PlsrPrimeHandoff() == PLSR_PLATFORM_QUEUE_STALE) + { + return; + } } if ((PlsrShortProfile.active == 0U) && (PlsrHandoffPlan.valid == 0U) - && (PlsrCommitDeferredFrequency(pulseOutput) == 0U)) + && (PlsrDeferredFrequencyPending != 0U)) { - PlsrTimerErrorPending = 1U; - PlsrBoundaryFrequencyHz = completedFrequencyHz; - PlsrBoundaryWasCut = 0U; - PlsrCutRequested = 0U; - PlsrPlatformStopPulse(pulseOutput); - PlsrPulseActive = 0U; - PlsrCurrentFrequencyHz = 0UL; - PlsrQueuedFrequencyHz = 0UL; - PlsrBoundaryPending = 1U; + queueResult = PlsrCommitDeferredFrequency(pulseOutput); + if (queueResult == PLSR_PLATFORM_QUEUE_STALE) + { + return; + } + if (queueResult == PLSR_PLATFORM_QUEUE_FAILED) + { + PlsrDiagnosticFinishSegment(0U); + PlsrTimerErrorPending = 1U; + PlsrBoundaryFrequencyHz = completedFrequencyHz; + PlsrBoundaryWasCut = 0U; + PlsrCutRequested = 0U; + PlsrPlatformGateFromIrq(pulseOutput); + PlsrAbStopArmed = 0U; + PlsrPulseActive = 0U; + PlsrCurrentFrequencyHz = 0UL; + PlsrQueuedFrequencyHz = 0UL; + PlsrBoundaryPending = 1U; + return; + } + } + if ((PlsrActiveConfig.outputMode == PLSR_OUTPUT_AB) + && (PlsrQueueFinalAbBoundaryFromIrq() == 0U)) + { + return; } + } PLSR_MB_RESULT PlsrModbusReadHolding(uint16_t startAddress, @@ -3314,6 +4350,7 @@ PLSR_MB_RESULT PlsrModbusReadHolding(uint16_t startAddress, int32_t position; uint32_t frequency; uint16_t statusWords[7]; + uint16_t diagnosticWords[26]; if (values == NULL) { @@ -3335,6 +4372,34 @@ PLSR_MB_RESULT PlsrModbusReadHolding(uint16_t startAddress, statusWords[4] = (uint16_t)PlsrRunStatus; statusWords[5] = PlsrCurrentSegment; statusWords[6] = (uint16_t)PlsrError; + diagnosticWords[0] = PlsrDiagnostic.flags; + diagnosticWords[1] = PlsrDiagnostic.reason; + diagnosticWords[2] = PlsrDiagnostic.lastSegment; + diagnosticWords[3] = PlsrDiagnostic.modeDirection; + diagnosticWords[4] = PlsrLowWord(PlsrDiagnostic.expectedCycles); + diagnosticWords[5] = PlsrHighWord(PlsrDiagnostic.expectedCycles); + diagnosticWords[6] = PlsrLowWord(PlsrDiagnostic.observedCycles); + diagnosticWords[7] = PlsrHighWord(PlsrDiagnostic.observedCycles); + diagnosticWords[8] = PlsrLowWord((uint32_t)PlsrDiagnostic.countError); + diagnosticWords[9] = PlsrHighWord((uint32_t)PlsrDiagnostic.countError); + diagnosticWords[10] = PlsrLowWord(PlsrDiagnostic.requestedHz); + diagnosticWords[11] = PlsrHighWord(PlsrDiagnostic.requestedHz); + diagnosticWords[12] = PlsrLowWord(PlsrDiagnostic.expectedTimerHz); + diagnosticWords[13] = PlsrHighWord(PlsrDiagnostic.expectedTimerHz); + diagnosticWords[14] = PlsrLowWord(PlsrDiagnostic.activeTimerHz); + diagnosticWords[15] = PlsrHighWord(PlsrDiagnostic.activeTimerHz); + diagnosticWords[16] = + PlsrLowWord((uint32_t)PlsrDiagnostic.requestErrorHz); + diagnosticWords[17] = + PlsrHighWord((uint32_t)PlsrDiagnostic.requestErrorHz); + diagnosticWords[18] = PlsrLowWord(PlsrDiagnostic.curveSampleCount); + diagnosticWords[19] = PlsrHighWord(PlsrDiagnostic.curveSampleCount); + diagnosticWords[20] = PlsrLowWord(PlsrDiagnostic.curveMismatchCount); + diagnosticWords[21] = PlsrHighWord(PlsrDiagnostic.curveMismatchCount); + diagnosticWords[22] = PlsrLowWord(PlsrDiagnostic.curveMaxAbsErrorHz); + diagnosticWords[23] = PlsrHighWord(PlsrDiagnostic.curveMaxAbsErrorHz); + diagnosticWords[24] = PlsrLowWord(PlsrDiagnostic.firstMismatchSample); + diagnosticWords[25] = PlsrHighWord(PlsrDiagnostic.firstMismatchSample); PlsrPlatformExitCritical(criticalState); for (index = 0U; index < quantity; index++) @@ -3346,15 +4411,29 @@ PLSR_MB_RESULT PlsrModbusReadHolding(uint16_t startAddress, { values[index] = PlsrReadConfigWord(&PlsrShadowConfig, address); } + else if (address == PLSR_OUTPUT_MODE_ADDRESS) + { + values[index] = PlsrShadowConfig.outputMode; + } else if ((address >= PLSR_STATUS_FIRST_ADDRESS) && (address <= PLSR_STATUS_LAST_ADDRESS)) { values[index] = statusWords[address - PLSR_STATUS_FIRST_ADDRESS]; } + else if ((address >= PLSR_DIAGNOSTIC_FIRST_ADDRESS) + && (address <= PLSR_DIAGNOSTIC_LAST_ADDRESS)) + { + values[index] = + diagnosticWords[address - PLSR_DIAGNOSTIC_FIRST_ADDRESS]; + } else if (address == PLSR_CONTROL_ADDRESS) { values[index] = 0U; } + else if (address == PLSR_DIAGNOSTIC_CONTROL_ADDRESS) + { + values[index] = 0U; + } else { return PLSR_MB_ILLEGAL_ADDRESS; @@ -3378,6 +4457,7 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, uint8_t drainedToDifferentSegment = 0U; uint8_t segmentBeforeDrain; uint32_t drainedSegmentTargetHz = 0UL; + PLSR_PLATFORM_QUEUE_RESULT queueResult; if (values == NULL) { @@ -3395,6 +4475,35 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, return PLSR_MB_ILLEGAL_ADDRESS; } + if ((startAddress >= PLSR_DIAGNOSTIC_FIRST_ADDRESS) + && (startAddress <= PLSR_DIAGNOSTIC_LAST_ADDRESS)) + { + return PLSR_MB_ILLEGAL_ADDRESS; + } + + if (startAddress == PLSR_DIAGNOSTIC_CONTROL_ADDRESS) + { + if (quantity != 1U) + { + return PLSR_MB_ILLEGAL_ADDRESS; + } + if ((values[0] != 0U) && (values[0] != 1U)) + { + return PLSR_MB_ILLEGAL_VALUE; + } + if ((values[0] != 0U) && (PlsrIsBusy() != 0U)) + { + return PLSR_MB_DEVICE_BUSY; + } + if (values[0] != 0U) + { + criticalState = PlsrPlatformEnterCritical(); + PlsrDiagnosticReset(); + PlsrPlatformExitCritical(criticalState); + } + return PLSR_MB_OK; + } + if (startAddress == PLSR_CONTROL_ADDRESS) { if (quantity != 1U) @@ -3412,6 +4521,30 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, } } + if (startAddress == PLSR_OUTPUT_MODE_ADDRESS) + { + if (quantity != 1U) + { + return PLSR_MB_ILLEGAL_ADDRESS; + } + if (PlsrIsBusy() != 0U) + { + return PLSR_MB_DEVICE_BUSY; + } + PlsrCandidateConfig = PlsrShadowConfig; + PlsrCandidateConfig.outputMode = values[0]; + if (PlsrConfigIsValid(&PlsrCandidateConfig, 0U) == 0U) + { + return PLSR_MB_ILLEGAL_VALUE; + } + criticalState = PlsrPlatformEnterCritical(); + PlsrShadowConfig = PlsrCandidateConfig; + PlsrPlatformExitCritical(criticalState); + PlsrPlatformCheckpointConfig(&PlsrShadowConfig); + PlsrMarkPersistenceDirty(PLSR_CONFIG_SAVE_DELAY_MS); + return PLSR_MB_OK; + } + if ((startAddress < PLSR_CONFIG_FIRST_ADDRESS) || ((uint32_t)startAddress + quantity - 1UL > PLSR_CONFIG_LAST_ADDRESS)) @@ -3507,6 +4640,7 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, if ((frequencyChanged != 0U) && (index + 1U == PlsrCurrentSegment) && (PlsrStopRequested == 0U) + && (PlsrAbStopArmed == 0U) && (PlsrRunStatus != PLSR_STATUS_WAITING)) { PlsrFrequencyUpdateTargetHz = @@ -3517,11 +4651,21 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, } PlsrPreparedHandoffBank = handoffBank; PlsrHandoffPlan.valid = 0U; + PlsrProfileQueueInvalidateGeneration(); + if ((drainedToDifferentSegment == 0U) + && (PlsrPulseActive != 0U) + && (PlsrAbStopArmed == 0U) + && (PlsrShortProfile.active == 0U) + && (PlsrRemainingPulses == 1UL)) + { + (void)PlsrPrimeHandoff(); + } if ((drainedToDifferentSegment != 0U) && (PlsrPulseActive != 0U) && (PlsrCurrentSegment != 0U) && (PlsrCurrentSegment <= PlsrActiveConfig.segmentCount) && (PlsrStopRequested == 0U) + && (PlsrAbStopArmed == 0U) && (PlsrRunStatus != PLSR_STATUS_WAITING) && (PlsrCurrentFrequencyHz != drainedSegmentTargetHz)) { @@ -3530,28 +4674,32 @@ PLSR_MB_RESULT PlsrModbusWriteHolding(uint16_t startAddress, PlsrFrequencyUpdateSegment = PlsrCurrentSegment; PlsrFrequencyUpdatePending = 1U; } - if ((PlsrPulseActive != 0U) - && (PlsrShortProfile.active == 0U) - && (PlsrRemainingPulses == 1UL)) - { - (void)PlsrPrimeHandoff(); - } } PlsrPlatformExitCritical(criticalState); + if ((updateActiveFrequencies != 0U) + && (PlsrPulseActive != 0U) + && (PlsrAbStopArmed == 0U) + && (PlsrFrequencyUpdatePending == 0U) + && (PlsrPrepareFutureHandoffQueue() == 0U)) + { + PlsrTimerErrorPending = 1U; + } if ((drainedToDifferentSegment != 0U) + && (PlsrAbStopArmed == 0U) && (PlsrFrequencyUpdatePending != 0U)) { uint32_t drainEpoch = PlsrSegmentEpoch; uint32_t actualDrainFrequencyHz; - if (PlsrPlatformQueueFrequency( - (uint8_t)PlsrActiveConfig.pulseOutput, - drainedSegmentTargetHz, &actualDrainFrequencyHz) == 0U) + queueResult = PlsrDiagnosticQueueFrequency( + (uint8_t)PlsrActiveConfig.pulseOutput, + drainedSegmentTargetHz, &actualDrainFrequencyHz); + if (queueResult == PLSR_PLATFORM_QUEUE_FAILED) { PlsrTimerErrorPending = 1U; } - else + else if (queueResult == PLSR_PLATFORM_QUEUE_APPLIED) { uint32_t currentEpoch; uint8_t updateSegment; @@ -3596,4 +4744,70 @@ void PlsrTestSetPosition(int32_t position, uint8_t positionValid) PlsrPlatformExitCritical(criticalState); PlsrPlatformCheckpointPosition(position, PlsrPositionValid, 0U); } + +void PlsrTestSetDiagnosticCurveCounts(uint32_t sampleCount, + uint32_t mismatchCount) +{ + PlsrDiagnostic.curveSampleCount = sampleCount; + PlsrDiagnostic.curveMismatchCount = mismatchCount; +} + +void PlsrTestForceProfileQueueEmpty(void) +{ + PlsrProfileQueue.readIndex = PlsrProfileQueue.writeIndex; + PlsrProfileQueue.generatorComplete = 0U; + PlsrProfileQueue.active = 1U; +} + +uint16_t PlsrTestProfileQueueCount(void) +{ + return PlsrProfileQueueCount(); +} + +uint32_t PlsrTestProfileQueueGeneration(void) +{ + return PlsrProfileQueue.generation; +} + +uint32_t PlsrTestProfileQueueReadIndex(void) +{ + return PlsrProfileQueue.readIndex; +} + +uint32_t PlsrTestProfileQueueWriteIndex(void) +{ + return PlsrProfileQueue.writeIndex; +} + +uint32_t PlsrTestProfileQueueHeadFrequency(void) +{ + uint32_t readIndex = PlsrProfileQueue.readIndex; + + if (readIndex == PlsrProfileQueue.writeIndex) + { + return 0UL; + } + return PlsrProfileQueue + .entries[readIndex & PLSR_PROFILE_QUEUE_MASK].requestedFrequencyHz; +} + +uint16_t PlsrTestProfileProducerNextPeriod(void) +{ + return PlsrProfileQueue.producerProfile.nextPeriod; +} + +uint16_t PlsrTestActiveProfileNextPeriod(void) +{ + return PlsrShortProfile.nextPeriod; +} + +uint32_t PlsrTestLastGateEvent(void) +{ + return PlsrHostTestLastGateEvent; +} + +uint32_t PlsrTestLastDiagnosticFinishEvent(void) +{ + return PlsrHostTestLastDiagnosticFinishEvent; +} #endif diff --git a/PLSR/Src/plsr_internal.h b/PLSR/Src/plsr_internal.h index 54d56c2..044ff9f 100644 --- a/PLSR/Src/plsr_internal.h +++ b/PLSR/Src/plsr_internal.h @@ -6,6 +6,9 @@ #define PLSR_SEGMENT_COUNT_MAX (10U) #define PLSR_FREQUENCY_MAX_HZ (100000UL) +#define PLSR_OUTPUT_PULSE_DIR (0U) +#define PLSR_OUTPUT_AB (1U) + typedef struct { uint32_t frequencyHz; @@ -35,6 +38,8 @@ typedef struct uint16_t accelerationTimeMs; uint16_t decelerationTimeMs; PLSR_SEGMENT_CONFIG segments[PLSR_SEGMENT_COUNT_MAX]; + /* Kept at the end so version-2 persisted configurations remain a prefix. */ + uint16_t outputMode; } PLSR_CONFIG; typedef struct diff --git a/PLSR/Src/plsr_platform.h b/PLSR/Src/plsr_platform.h index e7b45cd..013a507 100644 --- a/PLSR/Src/plsr_platform.h +++ b/PLSR/Src/plsr_platform.h @@ -4,29 +4,92 @@ #include "plsr_internal.h" #include +typedef enum +{ + PLSR_PLATFORM_STOP_COMPLETE = 0, + PLSR_PLATFORM_STOP_PENDING, + PLSR_PLATFORM_STOP_FORCED_FAULT +} PLSR_PLATFORM_STOP_RESULT; + +typedef enum +{ + PLSR_PLATFORM_QUEUE_FAILED = 0, + PLSR_PLATFORM_QUEUE_APPLIED, + PLSR_PLATFORM_QUEUE_STALE +} PLSR_PLATFORM_QUEUE_RESULT; + +typedef enum +{ + PLSR_PLATFORM_SERVICE_FAILED = 0, + PLSR_PLATFORM_SERVICE_READY, + PLSR_PLATFORM_SERVICE_DEFERRED +} PLSR_PLATFORM_SERVICE_RESULT; + +typedef struct +{ + uint32_t actualFrequencyHz; + uint16_t prescaler; + uint16_t pairPrescaler; + uint16_t period; + uint16_t compare; +} PLSR_PLATFORM_TIMER_SETTING; + uint8_t PlsrPlatformInit(void); uint8_t PlsrPlatformPrepare(uint8_t pulseOutput, uint8_t directionOutput, - uint8_t directionLevel); + uint8_t directionLevel, + uint8_t outputMode, + uint8_t directionPositive); uint8_t PlsrPlatformStartPulse(uint8_t pulseOutput, uint32_t firstFrequencyHz, uint32_t queuedFrequencyHz, uint32_t *actualFirstFrequencyHz, uint32_t *actualQueuedFrequencyHz); -uint8_t PlsrPlatformQueueFrequency(uint8_t pulseOutput, - uint32_t frequencyHz, - uint32_t *actualFrequencyHz); +uint8_t PlsrPlatformBuildTimerSetting( + uint8_t pulseOutput, + uint8_t outputMode, + uint32_t requestedFrequencyHz, + PLSR_PLATFORM_TIMER_SETTING *setting); +uint8_t PlsrPlatformStartPrepared( + uint8_t pulseOutput, + const PLSR_PLATFORM_TIMER_SETTING *firstSetting, + const PLSR_PLATFORM_TIMER_SETTING *queuedSetting, + uint32_t *actualFirstFrequencyHz, + uint32_t *actualQueuedFrequencyHz); +PLSR_PLATFORM_QUEUE_RESULT PlsrPlatformLoadPreparedFromIrq( + uint8_t pulseOutput, + const PLSR_PLATFORM_TIMER_SETTING *setting, + uint32_t *actualFrequencyHz); +void PlsrPlatformGateFromIrq(uint8_t pulseOutput); +PLSR_PLATFORM_QUEUE_RESULT PlsrPlatformQueueFrequency( + uint8_t pulseOutput, + uint32_t frequencyHz, + uint32_t *actualFrequencyHz); void PlsrPlatformDrainPendingPulse(uint8_t pulseOutput); uint32_t PlsrPlatformActiveFrequency(uint8_t pulseOutput); +uint8_t PlsrPlatformExpectedFrequency(uint8_t pulseOutput, + uint8_t outputMode, + uint32_t requestedFrequencyHz, + uint32_t *actualFrequencyHz); +uint64_t PlsrPlatformObservedPulses(uint8_t pulseOutput); +/* Returns 0, PLSR diagnostic reason 2 (frequency), or 3 (curve/order). */ +uint16_t PlsrPlatformDiagnosticFault(void); +/* Caller must hold the platform critical section. */ +PLSR_PLATFORM_STOP_RESULT PlsrPlatformRequestStopLocked( + uint8_t pulseOutput, + uint8_t requireZeroBoundary); +uint8_t PlsrPlatformQueueFinalArmFromIrq(uint8_t pulseOutput); void PlsrPlatformStopPulse(uint8_t pulseOutput); uint8_t PlsrPlatformReadInput(uint8_t inputSelection); uint8_t PlsrPlatformLoad(PLSR_PERSIST_PAYLOAD *payload); +PLSR_PLATFORM_SERVICE_RESULT PlsrPlatformServicePersistence(void); uint8_t PlsrPlatformSave(const PLSR_PERSIST_PAYLOAD *payload); void PlsrPlatformCheckpointConfig(const PLSR_CONFIG *config); void PlsrPlatformCheckpointPosition(int32_t position, uint8_t positionValid, uint8_t wasBusy); +void PlsrPlatformForceSafeOutputsFromFault(void); uint32_t PlsrPlatformEnterCritical(void); void PlsrPlatformExitCritical(uint32_t state); diff --git a/PLSR/Src/plsr_platform_f407.c b/PLSR/Src/plsr_platform_f407.c index ee899dd..291d2f7 100644 --- a/PLSR/Src/plsr_platform_f407.c +++ b/PLSR/Src/plsr_platform_f407.c @@ -1,6 +1,20 @@ #include "plsr_platform.h" #include "plsr.h" +static uint8_t PlsrFlashNeedsStartupRecovery( + uint8_t haveValidRecord, + uint8_t sectorAHasProgrammedSlot, + uint32_t sectorAFirstErasedAddress, + uint8_t sectorBHasProgrammedSlot, + uint32_t sectorBFirstErasedAddress) +{ + return ((haveValidRecord == 0U) + && (sectorAHasProgrammedSlot != 0U) + && (sectorBHasProgrammedSlot != 0U) + && (sectorAFirstErasedAddress == 0UL) + && (sectorBFirstErasedAddress == 0UL)) ? 1U : 0U; +} + #ifdef PLSR_HOST_TEST #include @@ -8,27 +22,84 @@ static uint8_t PlsrHostPulseActive[4]; static uint32_t PlsrHostFrequency[4]; static uint32_t PlsrHostQueuedFrequency[4]; +static PLSR_PLATFORM_TIMER_SETTING PlsrHostActiveSetting[4]; +static PLSR_PLATFORM_TIMER_SETTING PlsrHostQueuedSetting[4]; static uint8_t PlsrHostUpdatePending[4]; +static uint8_t PlsrHostOutputMode[4]; +static uint8_t PlsrHostDirectionPositive[4]; +static uint8_t PlsrHostAbQuarter[4]; +static uint8_t PlsrHostAbPhase[4]; +static uint32_t PlsrHostAbTransitions[4]; +static uint8_t PlsrHostAbStopPending[4]; +static uint8_t PlsrHostAbFastGated[4]; +static uint32_t PlsrHostAbFastGateCount; +static uint32_t PlsrHostAbCleanupCount; +static uint64_t PlsrHostObservedPulses[4]; static uint8_t PlsrHostInputs[2]; static uint8_t PlsrHostSelectedPulse; static uint8_t PlsrHostDirectionLevel; +static uint8_t PlsrHostDirectionPinLevel[4]; +static uint32_t PlsrHostDirectionWriteCount[4]; +static uint32_t PlsrHostDirectionTransitionCount[4]; static uint8_t PlsrHostEmitPulseOnCriticalEntry; static uint8_t PlsrHostEmitPulseOnCriticalExit; static uint8_t PlsrHostLatchPulseOnCriticalEntry; static uint8_t PlsrHostCriticalEntriesToSkip; +static uint8_t PlsrHostLatchAbFinalQuarterOnStopArm; +static uint8_t PlsrHostCompleteAbCycleOnQueueCommit; +static uint32_t PlsrHostCriticalDepth; static uint8_t PlsrHostFailNextStart; +static uint8_t PlsrHostStaleNextFrequencyAtUpdate; static uint8_t PlsrHostFailNextFrequencyAtUpdate; +static uint8_t PlsrHostFailNextStopRequest; +static uint8_t PlsrHostFinalArmJobPending; +static uint8_t PlsrHostFinalArmJobOwner; +static uint8_t PlsrHostDeferFinalArmJob; +static int32_t PlsrHostCountOffset; +static int32_t PlsrHostFrequencyOffsetHz; +static uint8_t PlsrHostCurveMismatchPending; +static uint16_t PlsrHostDiagnosticFault; static PLSR_PERSIST_PAYLOAD PlsrHostPersistentPayload; static uint8_t PlsrHostPersistentValid; static uint32_t PlsrHostSaveCount; +static void PlsrHostServiceFinalArmJob(void); + +static uint32_t PlsrHostOffsetFrequency(uint32_t frequencyHz) +{ + int64_t adjusted = (int64_t)frequencyHz + + (int64_t)PlsrHostFrequencyOffsetHz; + + if (adjusted < 1) + { + adjusted = 1; + } + if (adjusted > (int64_t)PLSR_FREQUENCY_MAX_HZ) + { + adjusted = (int64_t)PLSR_FREQUENCY_MAX_HZ; + } + return (uint32_t)adjusted; +} + static void PlsrHostLatchPulse(uint8_t pulseOutput) { if ((pulseOutput <= 3U) && (PlsrHostPulseActive[pulseOutput] != 0U)) { - PlsrHostFrequency[pulseOutput] = - PlsrHostQueuedFrequency[pulseOutput]; + if (PlsrHostCurveMismatchPending != 0U) + { + PlsrHostCurveMismatchPending = 0U; + PlsrHostDiagnosticFault = 3U; + } + else if ((PlsrHostOutputMode[pulseOutput] != PLSR_OUTPUT_AB) + || (PlsrHostAbStopPending[pulseOutput] == 0U)) + { + PlsrHostFrequency[pulseOutput] = + PlsrHostQueuedFrequency[pulseOutput]; + PlsrHostActiveSetting[pulseOutput] = + PlsrHostQueuedSetting[pulseOutput]; + } + PlsrHostObservedPulses[pulseOutput]++; PlsrHostUpdatePending[pulseOutput] = 1U; } } @@ -39,42 +110,140 @@ static void PlsrHostServicePendingPulse(uint8_t pulseOutput) && (PlsrHostUpdatePending[pulseOutput] != 0U)) { PlsrHostUpdatePending[pulseOutput] = 0U; + if ((PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrHostAbStopPending[pulseOutput] != 0U) + && (PlsrHostAbFastGated[pulseOutput] == 0U)) + { + PlsrHostAbFastGated[pulseOutput] = 1U; + PlsrHostPulseActive[pulseOutput] = 0U; + PlsrHostAbFastGateCount++; + } PlsrPulseTimerIrq(pulseOutput); } + if (PlsrHostDeferFinalArmJob == 0U) + { + PlsrHostServiceFinalArmJob(); + } +} + +static void PlsrHostServiceFinalArmJob(void) +{ + uint8_t owner; + + if (PlsrHostFinalArmJobPending == 0U) + { + return; + } + owner = PlsrHostFinalArmJobOwner; + PlsrHostFinalArmJobPending = 0U; + PlsrHostFinalArmJobOwner = 0xFFU; + PlsrFinalArmJobIrq(owner); +} + +static uint8_t PlsrHostAdvanceAbQuarter(uint8_t pulseOutput) +{ + static const uint8_t positivePhase[4] = {0U, 2U, 3U, 1U}; + static const uint8_t negativePhase[4] = {0U, 1U, 3U, 2U}; + + if ((pulseOutput > 3U) + || (PlsrHostPulseActive[pulseOutput] == 0U) + || (PlsrHostOutputMode[pulseOutput] != PLSR_OUTPUT_AB)) + { + return 0U; + } + PlsrHostAbQuarter[pulseOutput] = + (uint8_t)((PlsrHostAbQuarter[pulseOutput] + 1U) & 3U); + PlsrHostAbPhase[pulseOutput] = + (PlsrHostDirectionPositive[pulseOutput] != 0U) + ? positivePhase[PlsrHostAbQuarter[pulseOutput]] + : negativePhase[PlsrHostAbQuarter[pulseOutput]]; + PlsrHostAbTransitions[pulseOutput]++; + if (PlsrHostAbQuarter[pulseOutput] != 0U) + { + return 0U; + } + PlsrHostLatchPulse(pulseOutput); + return 1U; } uint8_t PlsrPlatformInit(void) { + uint8_t index; + (void)memset(PlsrHostPulseActive, 0, sizeof(PlsrHostPulseActive)); (void)memset(PlsrHostFrequency, 0, sizeof(PlsrHostFrequency)); (void)memset(PlsrHostQueuedFrequency, 0, sizeof(PlsrHostQueuedFrequency)); + (void)memset(PlsrHostActiveSetting, 0, + sizeof(PlsrHostActiveSetting)); + (void)memset(PlsrHostQueuedSetting, 0, + sizeof(PlsrHostQueuedSetting)); (void)memset(PlsrHostUpdatePending, 0, sizeof(PlsrHostUpdatePending)); + (void)memset(PlsrHostOutputMode, 0, sizeof(PlsrHostOutputMode)); + (void)memset(PlsrHostDirectionPositive, 0, + sizeof(PlsrHostDirectionPositive)); + (void)memset(PlsrHostAbQuarter, 0, sizeof(PlsrHostAbQuarter)); + (void)memset(PlsrHostAbPhase, 0, sizeof(PlsrHostAbPhase)); + (void)memset(PlsrHostAbTransitions, 0, + sizeof(PlsrHostAbTransitions)); + (void)memset(PlsrHostAbStopPending, 0, + sizeof(PlsrHostAbStopPending)); + (void)memset(PlsrHostAbFastGated, 0, + sizeof(PlsrHostAbFastGated)); + PlsrHostAbFastGateCount = 0UL; + PlsrHostAbCleanupCount = 0UL; + (void)memset(PlsrHostObservedPulses, 0, + sizeof(PlsrHostObservedPulses)); PlsrHostSelectedPulse = 0U; PlsrHostDirectionLevel = 0U; + for (index = 0U; index < 4U; index++) + { + PlsrHostDirectionPinLevel[index] = 1U; + PlsrHostDirectionWriteCount[index] = 0UL; + PlsrHostDirectionTransitionCount[index] = 0UL; + } PlsrHostEmitPulseOnCriticalEntry = 0U; PlsrHostEmitPulseOnCriticalExit = 0U; PlsrHostLatchPulseOnCriticalEntry = 0U; PlsrHostCriticalEntriesToSkip = 0U; + PlsrHostLatchAbFinalQuarterOnStopArm = 0U; + PlsrHostCompleteAbCycleOnQueueCommit = 0U; + PlsrHostCriticalDepth = 0UL; PlsrHostFailNextStart = 0U; + PlsrHostStaleNextFrequencyAtUpdate = 0U; PlsrHostFailNextFrequencyAtUpdate = 0U; + PlsrHostFailNextStopRequest = 0U; + PlsrHostFinalArmJobPending = 0U; + PlsrHostFinalArmJobOwner = 0xFFU; + PlsrHostDeferFinalArmJob = 0U; + PlsrHostCountOffset = 0L; + PlsrHostFrequencyOffsetHz = 0L; + PlsrHostCurveMismatchPending = 0U; + PlsrHostDiagnosticFault = 0U; return 1U; } uint8_t PlsrPlatformPrepare(uint8_t pulseOutput, uint8_t directionOutput, - uint8_t directionLevel) + uint8_t directionLevel, + uint8_t outputMode, + uint8_t directionPositive) { uint8_t index; - (void)directionOutput; + uint8_t pinLevel; if (PlsrHostFailNextStart != 0U) { PlsrHostFailNextStart = 0U; return 0U; } - if ((pulseOutput > 3U) || (directionOutput > 3U)) + if ((pulseOutput > 3U) || (directionOutput > 3U) + || (outputMode > PLSR_OUTPUT_AB) + || ((outputMode == PLSR_OUTPUT_AB) + && ((pulseOutput & 1U) != 0U)) + || (PlsrHostAbStopPending[0] != 0U) + || (PlsrHostAbStopPending[2] != 0U)) { return 0U; } @@ -84,9 +253,24 @@ uint8_t PlsrPlatformPrepare(uint8_t pulseOutput, PlsrHostFrequency[index] = 0UL; PlsrHostQueuedFrequency[index] = 0UL; PlsrHostUpdatePending[index] = 0U; + pinLevel = ((outputMode == PLSR_OUTPUT_PULSE_DIR) + && (index == directionOutput) + && (directionLevel != 0U)) ? 0U : 1U; + PlsrHostDirectionWriteCount[index]++; + if (PlsrHostDirectionPinLevel[index] != pinLevel) + { + PlsrHostDirectionTransitionCount[index]++; + } + PlsrHostDirectionPinLevel[index] = pinLevel; } PlsrHostSelectedPulse = pulseOutput; PlsrHostDirectionLevel = (directionLevel != 0U) ? 1U : 0U; + PlsrHostOutputMode[pulseOutput] = outputMode; + PlsrHostDirectionPositive[pulseOutput] = + (directionPositive != 0U) ? 1U : 0U; + PlsrHostAbQuarter[pulseOutput] = 0U; + PlsrHostAbPhase[pulseOutput] = 0U; + PlsrHostAbFastGated[pulseOutput] = 0U; return 1U; } @@ -96,44 +280,180 @@ uint8_t PlsrPlatformStartPulse(uint8_t pulseOutput, uint32_t *actualFirstFrequencyHz, uint32_t *actualQueuedFrequencyHz) { - if ((pulseOutput > 3U) || (firstFrequencyHz == 0UL) - || (firstFrequencyHz > PLSR_FREQUENCY_MAX_HZ) - || (queuedFrequencyHz == 0UL) - || (queuedFrequencyHz > PLSR_FREQUENCY_MAX_HZ) - || (actualFirstFrequencyHz == NULL) - || (actualQueuedFrequencyHz == NULL)) + PLSR_PLATFORM_TIMER_SETTING firstSetting; + PLSR_PLATFORM_TIMER_SETTING queuedSetting; + + if ((pulseOutput > 3U) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, PlsrHostOutputMode[pulseOutput], + firstFrequencyHz, &firstSetting) == 0U) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, PlsrHostOutputMode[pulseOutput], + queuedFrequencyHz, &queuedSetting) == 0U)) + { + return 0U; + } + return PlsrPlatformStartPrepared(pulseOutput, &firstSetting, + &queuedSetting, + actualFirstFrequencyHz, + actualQueuedFrequencyHz); +} + +uint8_t PlsrPlatformBuildTimerSetting( + uint8_t pulseOutput, + uint8_t outputMode, + uint32_t requestedFrequencyHz, + PLSR_PLATFORM_TIMER_SETTING *setting) +{ + if ((pulseOutput > 3U) || (outputMode > PLSR_OUTPUT_AB) + || ((outputMode == PLSR_OUTPUT_AB) + && ((pulseOutput & 1U) != 0U)) + || (requestedFrequencyHz == 0UL) + || (requestedFrequencyHz > PLSR_FREQUENCY_MAX_HZ) + || (setting == NULL)) + { + return 0U; + } + setting->actualFrequencyHz = requestedFrequencyHz; + setting->prescaler = (outputMode == PLSR_OUTPUT_AB) ? 1U : 0U; + setting->pairPrescaler = 0U; + setting->period = (outputMode == PLSR_OUTPUT_AB) ? 3U : 1U; + setting->compare = (outputMode == PLSR_OUTPUT_AB) ? 2U : 1U; + return 1U; +} + +uint8_t PlsrPlatformStartPrepared( + uint8_t pulseOutput, + const PLSR_PLATFORM_TIMER_SETTING *firstSetting, + const PLSR_PLATFORM_TIMER_SETTING *queuedSetting, + uint32_t *actualFirstFrequencyHz, + uint32_t *actualQueuedFrequencyHz) +{ + if ((pulseOutput > 3U) || (firstSetting == NULL) + || (queuedSetting == NULL) || (actualFirstFrequencyHz == NULL) + || (actualQueuedFrequencyHz == NULL) + || (firstSetting->actualFrequencyHz == 0UL) + || (firstSetting->actualFrequencyHz > PLSR_FREQUENCY_MAX_HZ) + || (queuedSetting->actualFrequencyHz == 0UL) + || (queuedSetting->actualFrequencyHz > PLSR_FREQUENCY_MAX_HZ) + || (PlsrHostAbStopPending[pulseOutput] != 0U) + || (PlsrHostAbFastGated[pulseOutput] != 0U)) { return 0U; } PlsrHostPulseActive[pulseOutput] = 1U; - PlsrHostFrequency[pulseOutput] = firstFrequencyHz; - PlsrHostQueuedFrequency[pulseOutput] = queuedFrequencyHz; + PlsrHostFrequency[pulseOutput] = firstSetting->actualFrequencyHz; + PlsrHostQueuedFrequency[pulseOutput] = queuedSetting->actualFrequencyHz; + PlsrHostActiveSetting[pulseOutput] = *firstSetting; + PlsrHostQueuedSetting[pulseOutput] = *queuedSetting; PlsrHostUpdatePending[pulseOutput] = 0U; PlsrHostSelectedPulse = pulseOutput; - *actualFirstFrequencyHz = firstFrequencyHz; - *actualQueuedFrequencyHz = queuedFrequencyHz; + *actualFirstFrequencyHz = firstSetting->actualFrequencyHz; + *actualQueuedFrequencyHz = queuedSetting->actualFrequencyHz; return 1U; } -uint8_t PlsrPlatformQueueFrequency(uint8_t pulseOutput, - uint32_t frequencyHz, - uint32_t *actualFrequencyHz) +PLSR_PLATFORM_QUEUE_RESULT PlsrPlatformLoadPreparedFromIrq( + uint8_t pulseOutput, + const PLSR_PLATFORM_TIMER_SETTING *setting, + uint32_t *actualFrequencyHz) { if (PlsrHostFailNextFrequencyAtUpdate != 0U) { PlsrHostFailNextFrequencyAtUpdate = 0U; - return 0U; + return PLSR_PLATFORM_QUEUE_FAILED; } - if ((pulseOutput > 3U) || (frequencyHz == 0UL) - || (frequencyHz > PLSR_FREQUENCY_MAX_HZ) + if ((pulseOutput > 3U) || (setting == NULL) || (actualFrequencyHz == NULL) - || (PlsrHostPulseActive[pulseOutput] == 0U)) + || (setting->actualFrequencyHz == 0UL) + || (setting->actualFrequencyHz > PLSR_FREQUENCY_MAX_HZ)) { - return 0U; + return PLSR_PLATFORM_QUEUE_FAILED; } - PlsrHostQueuedFrequency[pulseOutput] = frequencyHz; - *actualFrequencyHz = frequencyHz; - return 1U; + if (PlsrHostStaleNextFrequencyAtUpdate != 0U) + { + PlsrHostStaleNextFrequencyAtUpdate = 0U; + return PLSR_PLATFORM_QUEUE_STALE; + } + if ((PlsrHostCompleteAbCycleOnQueueCommit != 0U) + && (PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB)) + { + PlsrHostCompleteAbCycleOnQueueCommit = 0U; + PlsrTestEmitAbQuarters(4UL); + } + if ((PlsrHostPulseActive[pulseOutput] == 0U) + || (PlsrHostAbStopPending[pulseOutput] != 0U) + || (PlsrHostAbFastGated[pulseOutput] != 0U)) + { + return PLSR_PLATFORM_QUEUE_STALE; + } + PlsrHostQueuedSetting[pulseOutput] = *setting; + PlsrHostQueuedFrequency[pulseOutput] = setting->actualFrequencyHz; + *actualFrequencyHz = setting->actualFrequencyHz; + return PLSR_PLATFORM_QUEUE_APPLIED; +} + +void PlsrPlatformGateFromIrq(uint8_t pulseOutput) +{ + if ((pulseOutput <= 3U) + && (PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrHostAbFastGated[pulseOutput] != 0U)) + { + return; + } + PlsrPlatformStopPulse(pulseOutput); +} + +PLSR_PLATFORM_QUEUE_RESULT PlsrPlatformQueueFrequency( + uint8_t pulseOutput, + uint32_t frequencyHz, + uint32_t *actualFrequencyHz) +{ + uint32_t criticalState; + PLSR_PLATFORM_TIMER_SETTING setting; + + if (PlsrHostFailNextFrequencyAtUpdate != 0U) + { + PlsrHostFailNextFrequencyAtUpdate = 0U; + return PLSR_PLATFORM_QUEUE_FAILED; + } + if ((pulseOutput > 3U) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, PlsrHostOutputMode[pulseOutput], frequencyHz, + &setting) == 0U) + || (actualFrequencyHz == NULL) + || (PlsrHostPulseActive[pulseOutput] == 0U) + || (PlsrHostAbStopPending[pulseOutput] != 0U) + || (PlsrHostAbFastGated[pulseOutput] != 0U)) + { + return PLSR_PLATFORM_QUEUE_FAILED; + } + if (PlsrHostStaleNextFrequencyAtUpdate != 0U) + { + PlsrHostStaleNextFrequencyAtUpdate = 0U; + return PLSR_PLATFORM_QUEUE_STALE; + } + + if ((PlsrHostCompleteAbCycleOnQueueCommit != 0U) + && (PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB)) + { + PlsrHostCompleteAbCycleOnQueueCommit = 0U; + PlsrTestEmitAbQuarters(4UL); + } + + criticalState = PlsrPlatformEnterCritical(); + if ((PlsrHostPulseActive[pulseOutput] == 0U) + || (PlsrHostAbStopPending[pulseOutput] != 0U) + || (PlsrHostAbFastGated[pulseOutput] != 0U)) + { + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_STALE; + } + PlsrHostQueuedFrequency[pulseOutput] = setting.actualFrequencyHz; + PlsrHostQueuedSetting[pulseOutput] = setting; + *actualFrequencyHz = setting.actualFrequencyHz; + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_APPLIED; } void PlsrPlatformDrainPendingPulse(uint8_t pulseOutput) @@ -143,17 +463,124 @@ void PlsrPlatformDrainPendingPulse(uint8_t pulseOutput) uint32_t PlsrPlatformActiveFrequency(uint8_t pulseOutput) { - return (pulseOutput <= 3U) ? PlsrHostFrequency[pulseOutput] : 0UL; + if (pulseOutput > 3U) + { + return 0UL; + } + return (PlsrHostFrequencyOffsetHz != 0L) + ? PlsrHostOffsetFrequency(PlsrHostFrequency[pulseOutput]) + : PlsrHostFrequency[pulseOutput]; +} + +uint8_t PlsrPlatformExpectedFrequency(uint8_t pulseOutput, + uint8_t outputMode, + uint32_t requestedFrequencyHz, + uint32_t *actualFrequencyHz) +{ + PLSR_PLATFORM_TIMER_SETTING setting; + + if (PlsrPlatformBuildTimerSetting(pulseOutput, outputMode, + requestedFrequencyHz, + &setting) == 0U) + { + return 0U; + } + *actualFrequencyHz = setting.actualFrequencyHz; + return 1U; +} + +uint64_t PlsrPlatformObservedPulses(uint8_t pulseOutput) +{ + int64_t observed; + + if (pulseOutput > 3U) + { + return 0UL; + } + observed = (int64_t)PlsrHostObservedPulses[pulseOutput] + + (int64_t)PlsrHostCountOffset; + return (observed > 0) ? (uint64_t)observed : 0UL; +} + +uint16_t PlsrPlatformDiagnosticFault(void) +{ + uint16_t fault = PlsrHostDiagnosticFault; + + PlsrHostDiagnosticFault = 0U; + return fault; +} + +PLSR_PLATFORM_STOP_RESULT PlsrPlatformRequestStopLocked( + uint8_t pulseOutput, + uint8_t requireZeroBoundary) +{ + if (pulseOutput > 3U) + { + return PLSR_PLATFORM_STOP_FORCED_FAULT; + } + if (PlsrHostFailNextStopRequest != 0U) + { + PlsrHostFailNextStopRequest = 0U; + PlsrPlatformStopPulse(pulseOutput); + return PLSR_PLATFORM_STOP_FORCED_FAULT; + } + if ((requireZeroBoundary != 0U) + && (PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrHostPulseActive[pulseOutput] != 0U) + && (PlsrHostAbFastGated[pulseOutput] == 0U)) + { + if (PlsrHostLatchAbFinalQuarterOnStopArm != 0U) + { + PlsrHostLatchAbFinalQuarterOnStopArm = 0U; + (void)PlsrHostAdvanceAbQuarter(pulseOutput); + } + PlsrHostQueuedFrequency[pulseOutput] = + PlsrHostFrequency[pulseOutput]; + PlsrHostAbStopPending[pulseOutput] = 1U; + return PLSR_PLATFORM_STOP_PENDING; + } + PlsrPlatformStopPulse(pulseOutput); + return PLSR_PLATFORM_STOP_COMPLETE; +} + +uint8_t PlsrPlatformQueueFinalArmFromIrq(uint8_t pulseOutput) +{ + if ((pulseOutput > 2U) || ((pulseOutput & 1U) != 0U) + || (PlsrHostOutputMode[pulseOutput] != PLSR_OUTPUT_AB) + || (PlsrHostPulseActive[pulseOutput] == 0U) + || (PlsrHostAbFastGated[pulseOutput] != 0U)) + { + return 0U; + } + PlsrHostFinalArmJobOwner = pulseOutput; + PlsrHostFinalArmJobPending = 1U; + return 1U; } void PlsrPlatformStopPulse(uint8_t pulseOutput) { if (pulseOutput <= 3U) { + if ((PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && ((PlsrHostAbStopPending[pulseOutput] != 0U) + || (PlsrHostAbFastGated[pulseOutput] != 0U))) + { + PlsrHostAbCleanupCount++; + } PlsrHostPulseActive[pulseOutput] = 0U; PlsrHostFrequency[pulseOutput] = 0UL; PlsrHostQueuedFrequency[pulseOutput] = 0UL; PlsrHostUpdatePending[pulseOutput] = 0U; + PlsrHostAbQuarter[pulseOutput] = 0U; + PlsrHostAbPhase[pulseOutput] = 0U; + PlsrHostAbStopPending[pulseOutput] = 0U; + PlsrHostAbFastGated[pulseOutput] = 0U; + PlsrHostFrequencyOffsetHz = 0L; + if (PlsrHostFinalArmJobOwner == pulseOutput) + { + PlsrHostFinalArmJobPending = 0U; + PlsrHostFinalArmJobOwner = 0xFFU; + } } } @@ -172,6 +599,21 @@ uint8_t PlsrPlatformLoad(PLSR_PERSIST_PAYLOAD *payload) return 1U; } +void PlsrPlatformForceSafeOutputsFromFault(void) +{ + uint8_t index; + + for (index = 0U; index < 4U; index++) + { + PlsrPlatformStopPulse(index); + } +} + +PLSR_PLATFORM_SERVICE_RESULT PlsrPlatformServicePersistence(void) +{ + return PLSR_PLATFORM_SERVICE_READY; +} + uint8_t PlsrPlatformSave(const PLSR_PERSIST_PAYLOAD *payload) { if (payload == NULL) @@ -205,6 +647,8 @@ void PlsrPlatformCheckpointPosition(int32_t position, uint32_t PlsrPlatformEnterCritical(void) { + uint32_t previousDepth = PlsrHostCriticalDepth; + if (PlsrHostEmitPulseOnCriticalEntry != 0U) { if (PlsrHostCriticalEntriesToSkip != 0U) @@ -215,7 +659,10 @@ uint32_t PlsrPlatformEnterCritical(void) { PlsrHostEmitPulseOnCriticalEntry = 0U; PlsrHostLatchPulse(PlsrHostSelectedPulse); - PlsrHostServicePendingPulse(PlsrHostSelectedPulse); + if (previousDepth == 0UL) + { + PlsrHostServicePendingPulse(PlsrHostSelectedPulse); + } } } if (PlsrHostLatchPulseOnCriticalEntry != 0U) @@ -223,12 +670,21 @@ uint32_t PlsrPlatformEnterCritical(void) PlsrHostLatchPulseOnCriticalEntry = 0U; PlsrHostLatchPulse(PlsrHostSelectedPulse); } - return 0UL; + PlsrHostCriticalDepth++; + return previousDepth; } void PlsrPlatformExitCritical(uint32_t state) { (void)state; + if (PlsrHostCriticalDepth != 0UL) + { + PlsrHostCriticalDepth--; + } + if (PlsrHostCriticalDepth != 0UL) + { + return; + } if (PlsrHostEmitPulseOnCriticalExit != 0U) { PlsrHostEmitPulseOnCriticalExit = 0U; @@ -247,6 +703,16 @@ void PlsrTestSetInput(uint8_t inputSelection, uint8_t level) void PlsrTestEmitPulses(uint32_t pulseCount) { + if (PlsrHostOutputMode[PlsrHostSelectedPulse] == PLSR_OUTPUT_AB) + { + while ((pulseCount != 0UL) + && (PlsrHostPulseActive[PlsrHostSelectedPulse] != 0U)) + { + PlsrTestEmitAbQuarters(4UL); + pulseCount--; + } + return; + } while ((pulseCount != 0UL) && (PlsrHostPulseActive[PlsrHostSelectedPulse] != 0U)) { @@ -278,6 +744,16 @@ void PlsrTestLatchPulseOnCriticalEntry(void) PlsrHostLatchPulseOnCriticalEntry = 1U; } +void PlsrTestLatchAbFinalQuarterOnNextStopArm(void) +{ + PlsrHostLatchAbFinalQuarterOnStopArm = 1U; +} + +void PlsrTestCompleteAbCycleOnNextQueueCommit(void) +{ + PlsrHostCompleteAbCycleOnQueueCommit = 1U; +} + void PlsrTestServicePendingPulse(void) { PlsrHostServicePendingPulse(PlsrHostSelectedPulse); @@ -288,11 +764,51 @@ void PlsrTestFailNextStart(void) PlsrHostFailNextStart = 1U; } +void PlsrTestServiceFinalArmJob(void) +{ + PlsrHostServiceFinalArmJob(); +} + +void PlsrTestDeferFinalArmJob(uint8_t defer) +{ + PlsrHostDeferFinalArmJob = (defer != 0U) ? 1U : 0U; + if (PlsrHostDeferFinalArmJob == 0U) + { + PlsrHostServiceFinalArmJob(); + } +} + +void PlsrTestStaleNextFrequencyAtUpdate(void) +{ + PlsrHostStaleNextFrequencyAtUpdate = 1U; +} + void PlsrTestFailNextFrequencyAtUpdate(void) { PlsrHostFailNextFrequencyAtUpdate = 1U; } +void PlsrTestFailNextStopRequest(void) +{ + PlsrHostFailNextStopRequest = 1U; +} + +void PlsrTestEmitAbQuarters(uint32_t quarterCount) +{ + uint8_t pulseOutput = PlsrHostSelectedPulse; + + while ((quarterCount != 0UL) + && (PlsrHostPulseActive[pulseOutput] != 0U) + && (PlsrHostOutputMode[pulseOutput] == PLSR_OUTPUT_AB)) + { + if (PlsrHostAdvanceAbQuarter(pulseOutput) != 0U) + { + PlsrHostServicePendingPulse(pulseOutput); + } + quarterCount--; + } +} + uint8_t PlsrTestPulseIsActive(void) { return PlsrHostPulseActive[PlsrHostSelectedPulse]; @@ -313,6 +829,60 @@ uint8_t PlsrTestDirectionLevel(void) return PlsrHostDirectionLevel; } +uint8_t PlsrTestDirectionPinLevel(uint8_t directionOutput) +{ + return (directionOutput < 4U) + ? PlsrHostDirectionPinLevel[directionOutput] : 0U; +} + +uint32_t PlsrTestDirectionWriteCount(uint8_t directionOutput) +{ + return (directionOutput < 4U) + ? PlsrHostDirectionWriteCount[directionOutput] : 0UL; +} + +uint32_t PlsrTestDirectionTransitionCount(uint8_t directionOutput) +{ + return (directionOutput < 4U) + ? PlsrHostDirectionTransitionCount[directionOutput] : 0UL; +} + +uint8_t PlsrTestAbPhase(void) +{ + return PlsrHostAbPhase[PlsrHostSelectedPulse]; +} + +uint32_t PlsrTestAbTransitionCount(void) +{ + return PlsrHostAbTransitions[PlsrHostSelectedPulse]; +} + +uint32_t PlsrTestAbFastGateCount(void) +{ + return PlsrHostAbFastGateCount; +} + +uint32_t PlsrTestAbCleanupCount(void) +{ + return PlsrHostAbCleanupCount; +} + +void PlsrTestInjectCountOffset(int32_t offset) +{ + PlsrHostCountOffset = offset; +} + +void PlsrTestInjectActiveFrequencyOffset(int32_t offsetHz) +{ + PlsrHostFrequencyOffsetHz = offsetHz; + PlsrHostDiagnosticFault = 2U; +} + +void PlsrTestInjectCurveMismatch(void) +{ + PlsrHostCurveMismatchPending = 1U; +} + void PlsrTestClearPersistentStorage(void) { (void)memset(&PlsrHostPersistentPayload, 0, @@ -320,6 +890,10 @@ void PlsrTestClearPersistentStorage(void) (void)memset(PlsrHostInputs, 0, sizeof(PlsrHostInputs)); PlsrHostPersistentValid = 0U; PlsrHostSaveCount = 0UL; + PlsrHostCountOffset = 0L; + PlsrHostFrequencyOffsetHz = 0L; + PlsrHostCurveMismatchPending = 0U; + PlsrHostDiagnosticFault = 0U; } void PlsrTestResetSaveCount(void) @@ -332,22 +906,58 @@ uint32_t PlsrTestSaveCount(void) return PlsrHostSaveCount; } +uint8_t PlsrTestFlashNeedsStartupRecovery( + uint8_t haveValidRecord, + uint8_t sectorAHasProgrammedSlot, + uint32_t sectorAFirstErasedAddress, + uint8_t sectorBHasProgrammedSlot, + uint32_t sectorBFirstErasedAddress) +{ + return PlsrFlashNeedsStartupRecovery( + haveValidRecord, + sectorAHasProgrammedSlot, + sectorAFirstErasedAddress, + sectorBHasProgrammedSlot, + sectorBFirstErasedAddress); +} + #else #include "stm32f4xx_hal.h" #include #include -#define PLSR_ENABLE_IRQ_CYCLE_DIAG (0U) +#ifndef PLSR_DEBUG_TIMING +#define PLSR_DEBUG_TIMING (0U) +#endif #define PLSR_FLASH_SLOT_A_ADDRESS (0x080C0000UL) #define PLSR_FLASH_SLOT_B_ADDRESS (0x080E0000UL) +#define PLSR_FLASH_SECTOR_SIZE (0x00020000UL) #define PLSR_FLASH_MAGIC (0x50534C52UL) -#define PLSR_FLASH_VERSION (2U) +#define PLSR_FLASH_VERSION_V2 (2U) +#define PLSR_FLASH_VERSION (3U) #define PLSR_BACKUP_CONFIG_ADDRESS (BKPSRAM_BASE + 0x0100UL) #define PLSR_BACKUP_POSITION_ADDRESS (BKPSRAM_BASE + 0x0200UL) #define PLSR_BACKUP_CONFIG_MAGIC (0x50434647UL) #define PLSR_BACKUP_POSITION_MAGIC (0x50504F53UL) +#define PLSR_CONFIG_V2_SIZE (offsetof(PLSR_CONFIG, outputMode)) +#define PLSR_COUNTER_COUNT (2U) +#define PLSR_COUNTER_NONE (0xFFU) +#define PLSR_COUNTER_BLOCK_PULSES (65536UL) +#define PLSR_PLATFORM_FAULT_FREQUENCY (2U) +#define PLSR_PLATFORM_FAULT_CURVE (3U) +#define PLSR_TIMER_OC1_MODE_MASK (7UL << TIM_CCMR1_OC1M_Pos) +#define PLSR_TIMER_PWM1_MODE (6UL << TIM_CCMR1_OC1M_Pos) +#define PLSR_STRUCTURE_VERIFY_INTERVAL (64U) +#define PLSR_FREQUENCY_VERIFY_NONE (0U) +#define PLSR_FREQUENCY_VERIFY_NOW (1U) +#define PLSR_FREQUENCY_VERIFY_AB_AUX_IRQ (2U) +#define PLSR_QUEUE_WRITE_GUARD_COUNTS (64UL) +#define PLSR_FLASH_ERASE_NONE (0U) +#define PLSR_FLASH_ERASE_SECTOR_A (1U) +#define PLSR_FLASH_ERASE_SECTOR_B (2U) +#define PLSR_FLASH_ERASE_FAILED (3U) typedef struct { @@ -376,39 +986,108 @@ typedef struct typedef struct { - uint32_t magic; - uint16_t version; - uint16_t payloadSize; - uint32_t generation; - PLSR_PERSIST_PAYLOAD payload; - uint32_t crc32; -} PLSR_FLASH_RECORD; + uint32_t basePrescaler; + uint32_t pairPrescaler; + uint32_t period; + uint32_t compare; + uint32_t actualFrequencyHz; +} PLSR_AB_SETTING; typedef struct { - uint32_t magic; - PLSR_CONFIG config; - uint32_t crc32; -} PLSR_BACKUP_CONFIG_RECORD; + uint32_t cr1; + uint32_t ccmr1; + uint32_t ccer; + uint32_t psc; + uint32_t arr; + uint32_t ccr1; +} PLSR_TIMER_SNAPSHOT; typedef struct { uint32_t magic; + uint16_t version; + uint16_t payloadSize; uint32_t generation; +} PLSR_FLASH_HEADER; + +typedef struct +{ + uint8_t config[PLSR_CONFIG_V2_SIZE]; int32_t position; uint8_t positionValid; uint8_t wasBusy; uint16_t reserved; - uint32_t crc32; -} PLSR_BACKUP_POSITION_RECORD; +} PLSR_PERSIST_PAYLOAD_V2; -static const PLSR_TIMER_MAP PlsrTimerMap[4] = +typedef struct { - {TIM10, GPIOF, GPIO_PIN_6, 6U, GPIO_AF3_TIM10, - TIM1_UP_TIM10_IRQn, 168000000UL}, - {TIM13, GPIOF, GPIO_PIN_8, 8U, GPIO_AF9_TIM13, - TIM8_UP_TIM13_IRQn, 84000000UL}, - {TIM11, GPIOF, GPIO_PIN_7, 7U, GPIO_AF3_TIM11, + uint32_t magic; + uint16_t version; + uint16_t payloadSize; + uint32_t generation; + PLSR_PERSIST_PAYLOAD payload; + uint32_t crc32; +} PLSR_FLASH_RECORD; + +typedef struct +{ + uint32_t magic; + uint16_t version; + uint16_t payloadSize; + uint32_t generation; + PLSR_PERSIST_PAYLOAD_V2 payload; + uint32_t crc32; +} PLSR_FLASH_RECORD_V2; + +#define PLSR_FLASH_RECORD_STRIDE \ + ((uint32_t)sizeof(PLSR_FLASH_RECORD)) +#define PLSR_FLASH_SLOT_COUNT \ + (PLSR_FLASH_SECTOR_SIZE / PLSR_FLASH_RECORD_STRIDE) + +typedef char PLSR_FLASH_RECORD_SIZE_MUST_BE_228[ + (sizeof(PLSR_FLASH_RECORD) == 228U) ? 1 : -1]; + +typedef struct +{ + const PLSR_FLASH_HEADER *newest; + uint32_t firstErasedAddress; + uint8_t newestVersion; + uint8_t hasProgrammedSlot; +} PLSR_FLASH_SECTOR_SCAN; + +typedef struct +{ + uint32_t magic; + PLSR_CONFIG config; + uint32_t crc32; +} PLSR_BACKUP_CONFIG_RECORD; + +typedef struct +{ + uint32_t magic; + uint8_t config[PLSR_CONFIG_V2_SIZE]; + uint32_t crc32; +} PLSR_BACKUP_CONFIG_RECORD_V2; + +typedef struct +{ + uint32_t magic; + uint32_t generation; + int32_t position; + uint8_t positionValid; + uint8_t wasBusy; + uint16_t reserved; + uint32_t crc32; +} PLSR_BACKUP_POSITION_RECORD; + +static const PLSR_TIMER_MAP PlsrTimerMap[4] = +{ + {TIM10, GPIOF, GPIO_PIN_6, 6U, GPIO_AF3_TIM10, + TIM1_UP_TIM10_IRQn, 168000000UL}, + {TIM13, GPIOF, GPIO_PIN_8, 8U, GPIO_AF9_TIM13, + TIM8_UP_TIM13_IRQn, 84000000UL}, + {TIM11, GPIOF, GPIO_PIN_7, 7U, GPIO_AF3_TIM11, TIM1_TRG_COM_TIM11_IRQn, 168000000UL}, {TIM14, GPIOF, GPIO_PIN_9, 9U, GPIO_AF9_TIM14, TIM8_TRG_COM_TIM14_IRQn, 84000000UL} @@ -423,17 +1102,67 @@ static const PLSR_GPIO_MAP PlsrDirectionMap[4] = }; static PLSR_FLASH_RECORD PlsrFlashRecordBuffer; +static uint32_t PlsrFlashNewestAddress; +static uint32_t PlsrFlashNewestGeneration; +static uint32_t PlsrFlashNextErasedAddress[2]; +static uint8_t PlsrFlashJournalInitialized; +static uint8_t PlsrFlashReserveEraseState; static uint32_t PlsrBackupPositionGeneration; static uint32_t PlsrTimerActiveFrequencyHz[4]; static uint32_t PlsrTimerQueuedFrequencyHz[4]; +static PLSR_PLATFORM_TIMER_SETTING PlsrTimerActiveSetting[4]; +static PLSR_PLATFORM_TIMER_SETTING PlsrTimerQueuedSetting[4]; static uint32_t PlsrTimerQueueGeneration[4]; +static uint8_t PlsrTimerOutputMode[4]; +static uint8_t PlsrTimerDirectionPositive[4]; +static uint8_t PlsrTimerRunning[4]; +static uint8_t PlsrFrequencyVerifyPending[4]; +static uint8_t PlsrFrequencyVerifyPulseCount[4]; +static volatile uint8_t PlsrDeferredPulsePending[4]; +static volatile uint8_t PlsrAbVerifyOwner[4]; +static volatile uint8_t PlsrAbFinalArmJobOwner[4]; +static uint8_t PlsrTimerIrqActive[4]; +static PLSR_AB_SETTING PlsrAbActiveSetting[4]; +static PLSR_AB_SETTING PlsrAbPendingSetting[4]; +static uint8_t PlsrAbFrequencyPending[4]; +static uint8_t PlsrAbLagAxis[4]; +static uint8_t PlsrAbStructureVerified[4]; +static uint8_t PlsrAbCounterSourceAxis[4]; +static uint32_t PlsrAbCounterBoundary[4]; +static volatile uint8_t PlsrAbStopPending[4]; +static volatile uint8_t PlsrAbFastGated[4]; +static TIM_TypeDef * const PlsrCounters[PLSR_COUNTER_COUNT] = +{ + TIM9, TIM12 +}; +static uint8_t PlsrCounterOwner[PLSR_COUNTER_COUNT]; +static uint8_t PlsrCounterTriggerSourceAxis[PLSR_COUNTER_COUNT]; +static volatile uint64_t PlsrCounterOverflowPulses[PLSR_COUNTER_COUNT]; +static uint8_t PlsrCounterIndexByOutput[4]; +static uint64_t PlsrObservedPulseBase[4]; +static uint64_t PlsrObservedPulsePublished[4]; +static volatile uint16_t PlsrPlatformFaultPending; static void PlsrHandleTimerIrq(uint8_t pulseOutput); +static void PlsrCounterSuspend(uint8_t pulseOutput); +static void PlsrAbFastGate(uint8_t pulseOutput); -#if PLSR_ENABLE_IRQ_CYCLE_DIAG +static uint8_t PlsrFinalArmJobOutput(uint8_t pulseOutput) +{ + return (pulseOutput == 0U) ? 2U : 0U; +} + +#if PLSR_DEBUG_TIMING volatile uint32_t PlsrIrqCount[4]; volatile uint32_t PlsrIrqLastCycles[4]; volatile uint32_t PlsrIrqMaxCycles[4]; +volatile uint32_t PlsrFinalArmQueueCount[4]; +volatile uint32_t PlsrFinalArmJobLastCycles[4]; +volatile uint32_t PlsrFinalArmJobMaxCycles[4]; +volatile uint32_t PlsrFinalArmQueueToStopLastCycles[4]; +volatile uint32_t PlsrFinalArmQueueToStopMaxCycles[4]; +static volatile uint32_t PlsrFinalArmQueuedAt[4]; +static volatile uint8_t PlsrFinalArmQueueTimingPending[4]; #endif static uint32_t PlsrCrc32(const void *data, uint32_t length) @@ -460,28 +1189,294 @@ static uint8_t PlsrGenerationIsNewer(uint32_t first, uint32_t second) return ((int32_t)(first - second) > 0) ? 1U : 0U; } -static uint32_t PlsrFlashRecordCrc(const PLSR_FLASH_RECORD *record) +static uint32_t PlsrFlashRecordCrc(const void *record, + uint32_t payloadSize) { - const uint8_t *start = (const uint8_t *)&record->version; - uint32_t length = (uint32_t)(offsetof(PLSR_FLASH_RECORD, crc32) - - offsetof(PLSR_FLASH_RECORD, version)); + const PLSR_FLASH_HEADER *header = (const PLSR_FLASH_HEADER *)record; + const uint8_t *start = (const uint8_t *)&header->version; + uint32_t length = (uint32_t)(sizeof(header->version) + + sizeof(header->payloadSize) + + sizeof(header->generation)) + + payloadSize; return PlsrCrc32(start, length); } -static uint8_t PlsrFlashRecordIsValid(const PLSR_FLASH_RECORD *record) +static uint8_t PlsrFlashRecordVersion(const void *address) +{ + const PLSR_FLASH_HEADER *header = (const PLSR_FLASH_HEADER *)address; + + if (header->magic != PLSR_FLASH_MAGIC) + { + return 0U; + } + if ((header->version == PLSR_FLASH_VERSION) + && (header->payloadSize == sizeof(PLSR_PERSIST_PAYLOAD))) + { + const PLSR_FLASH_RECORD *record = + (const PLSR_FLASH_RECORD *)address; + + return (record->crc32 + == PlsrFlashRecordCrc(record, sizeof(record->payload))) + ? PLSR_FLASH_VERSION : 0U; + } + if ((header->version == PLSR_FLASH_VERSION_V2) + && (header->payloadSize == sizeof(PLSR_PERSIST_PAYLOAD_V2))) + { + const PLSR_FLASH_RECORD_V2 *record = + (const PLSR_FLASH_RECORD_V2 *)address; + + return (record->crc32 + == PlsrFlashRecordCrc(record, sizeof(record->payload))) + ? PLSR_FLASH_VERSION_V2 : 0U; + } + return 0U; +} + +static uint8_t PlsrFlashSlotIsErased(uint32_t address) +{ + const uint32_t *words = (const uint32_t *)address; + uint32_t index; + + for (index = 0UL; + index < (PLSR_FLASH_RECORD_STRIDE / sizeof(uint32_t)); + index++) + { + if (words[index] != 0xFFFFFFFFUL) + { + return 0U; + } + } + return 1U; +} + +static uint8_t PlsrFlashSectorIsErased(uint32_t address) +{ + const uint32_t *words = (const uint32_t *)address; + uint32_t index; + + for (index = 0UL; + index < (PLSR_FLASH_SECTOR_SIZE / sizeof(uint32_t)); index++) + { + if (words[index] != 0xFFFFFFFFUL) + { + return 0U; + } + } + return 1U; +} + +static void PlsrFlashScanSector(uint32_t sectorAddress, + PLSR_FLASH_SECTOR_SCAN *scan) +{ + uint32_t index; + + (void)memset(scan, 0, sizeof(*scan)); + for (index = 0UL; index < PLSR_FLASH_SLOT_COUNT; index++) + { + uint32_t slotAddress = sectorAddress + + index * PLSR_FLASH_RECORD_STRIDE; + const PLSR_FLASH_HEADER *header = + (const PLSR_FLASH_HEADER *)slotAddress; + uint8_t version = PlsrFlashRecordVersion(header); + uint8_t erased = PlsrFlashSlotIsErased(slotAddress); + + if ((version != 0U) + && ((scan->newest == NULL) + || (PlsrGenerationIsNewer(header->generation, + scan->newest->generation) != 0U))) + { + scan->newest = header; + scan->newestVersion = version; + } + if ((scan->firstErasedAddress == 0UL) && (erased != 0U)) + { + scan->firstErasedAddress = slotAddress; + } + if (erased == 0U) + { + scan->hasProgrammedSlot = 1U; + } + } + for (index = PLSR_FLASH_SLOT_COUNT * PLSR_FLASH_RECORD_STRIDE; + index < PLSR_FLASH_SECTOR_SIZE; index += sizeof(uint32_t)) + { + if (*(const uint32_t *)(sectorAddress + index) != 0xFFFFFFFFUL) + { + scan->hasProgrammedSlot = 1U; + } + } +} + +static const PLSR_FLASH_HEADER *PlsrFlashSelectNewest( + const PLSR_FLASH_SECTOR_SCAN *scanA, + const PLSR_FLASH_SECTOR_SCAN *scanB, + uint8_t *version, + uint32_t *sectorAddress) +{ + const PLSR_FLASH_SECTOR_SCAN *selectedScan; + + if (scanA->newest == NULL) + { + selectedScan = (scanB->newest != NULL) ? scanB : NULL; + } + else if ((scanB->newest != NULL) + && (PlsrGenerationIsNewer(scanB->newest->generation, + scanA->newest->generation) != 0U)) + { + selectedScan = scanB; + } + else + { + selectedScan = scanA; + } + + if (selectedScan == NULL) + { + *version = 0U; + *sectorAddress = 0UL; + return NULL; + } + *version = selectedScan->newestVersion; + *sectorAddress = (selectedScan == scanA) + ? PLSR_FLASH_SLOT_A_ADDRESS + : PLSR_FLASH_SLOT_B_ADDRESS; + return selectedScan->newest; +} + +static const PLSR_FLASH_HEADER *PlsrFlashInitializeJournal( + PLSR_FLASH_SECTOR_SCAN *scanA, + PLSR_FLASH_SECTOR_SCAN *scanB, + uint8_t *version, + uint32_t *sectorAddress) +{ + const PLSR_FLASH_HEADER *newest; + + PlsrFlashScanSector(PLSR_FLASH_SLOT_A_ADDRESS, scanA); + PlsrFlashScanSector(PLSR_FLASH_SLOT_B_ADDRESS, scanB); + newest = PlsrFlashSelectNewest(scanA, scanB, version, sectorAddress); + PlsrFlashNextErasedAddress[0] = scanA->firstErasedAddress; + PlsrFlashNextErasedAddress[1] = scanB->firstErasedAddress; + PlsrFlashNewestAddress = (uint32_t)newest; + PlsrFlashNewestGeneration = (newest != NULL) + ? newest->generation : 0UL; + PlsrFlashJournalInitialized = 1U; + return newest; +} + +static uint8_t PlsrFlashSectorIndex(uint32_t address) +{ + return (address >= PLSR_FLASH_SLOT_B_ADDRESS) ? 1U : 0U; +} + +static uint8_t PlsrFlashAddressIsJournalSlot(uint8_t sectorIndex, + uint32_t address) +{ + uint32_t sectorAddress = (sectorIndex == 0U) + ? PLSR_FLASH_SLOT_A_ADDRESS + : PLSR_FLASH_SLOT_B_ADDRESS; + uint32_t offset; + + if ((address < sectorAddress) + || (address >= sectorAddress + PLSR_FLASH_SECTOR_SIZE)) + { + return 0U; + } + offset = address - sectorAddress; + return ((offset % PLSR_FLASH_RECORD_STRIDE) == 0UL) + && ((offset / PLSR_FLASH_RECORD_STRIDE) + < PLSR_FLASH_SLOT_COUNT) ? 1U : 0U; +} + +static uint32_t PlsrFlashFindErasedAfter(uint8_t sectorIndex, + uint32_t address) +{ + uint32_t sectorAddress = (sectorIndex == 0U) + ? PLSR_FLASH_SLOT_A_ADDRESS + : PLSR_FLASH_SLOT_B_ADDRESS; + uint32_t firstIndex = ((address - sectorAddress) + / PLSR_FLASH_RECORD_STRIDE) + 1UL; + uint32_t index; + + for (index = firstIndex; index < PLSR_FLASH_SLOT_COUNT; index++) + { + uint32_t slotAddress = sectorAddress + + index * PLSR_FLASH_RECORD_STRIDE; + + if (PlsrFlashSlotIsErased(slotAddress) != 0U) + { + return slotAddress; + } + } + return 0UL; +} + +static uint8_t PlsrFlashEraseReserve(uint8_t sectorIndex) +{ + FLASH_EraseInitTypeDef erase; + uint32_t sectorError; + HAL_StatusTypeDef status; + + if (HAL_FLASH_Unlock() != HAL_OK) + { + (void)HAL_FLASH_Lock(); + return 0U; + } + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR + | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR + | FLASH_FLAG_PGSERR); + erase.TypeErase = FLASH_TYPEERASE_SECTORS; + erase.VoltageRange = FLASH_VOLTAGE_RANGE_3; + erase.Sector = (sectorIndex == 0U) ? FLASH_SECTOR_10 : FLASH_SECTOR_11; + erase.NbSectors = 1U; + status = HAL_FLASHEx_Erase(&erase, §orError); + if ((status == HAL_OK) + && (PlsrFlashSectorIsErased((sectorIndex == 0U) + ? PLSR_FLASH_SLOT_A_ADDRESS + : PLSR_FLASH_SLOT_B_ADDRESS) == 0U)) + { + status = HAL_ERROR; + } + if (HAL_FLASH_Lock() != HAL_OK) + { + (void)HAL_FLASH_Lock(); + status = HAL_ERROR; + } + return (status == HAL_OK) ? 1U : 0U; +} + +static uint8_t PlsrBackupConfigVersion(const void *address) { - return ((record->magic == PLSR_FLASH_MAGIC) - && (record->version == PLSR_FLASH_VERSION) - && (record->payloadSize == sizeof(PLSR_PERSIST_PAYLOAD)) - && (record->crc32 == PlsrFlashRecordCrc(record))) ? 1U : 0U; + const PLSR_BACKUP_CONFIG_RECORD *record = + (const PLSR_BACKUP_CONFIG_RECORD *)address; + + if (record->magic != PLSR_BACKUP_CONFIG_MAGIC) + { + return 0U; + } + if (record->crc32 == PlsrCrc32(&record->config, sizeof(record->config))) + { + return PLSR_FLASH_VERSION; + } + { + const PLSR_BACKUP_CONFIG_RECORD_V2 *oldRecord = + (const PLSR_BACKUP_CONFIG_RECORD_V2 *)address; + + return (oldRecord->crc32 + == PlsrCrc32(oldRecord->config, sizeof(oldRecord->config))) + ? PLSR_FLASH_VERSION_V2 : 0U; + } } -static uint8_t PlsrBackupConfigIsValid( - const PLSR_BACKUP_CONFIG_RECORD *record) +static void PlsrLoadV2Payload(PLSR_PERSIST_PAYLOAD *destination, + const PLSR_PERSIST_PAYLOAD_V2 *source) { - return ((record->magic == PLSR_BACKUP_CONFIG_MAGIC) - && (record->crc32 - == PlsrCrc32(&record->config, sizeof(record->config)))) ? 1U : 0U; + (void)memset(destination, 0, sizeof(*destination)); + (void)memcpy(&destination->config, source->config, + sizeof(source->config)); + destination->config.outputMode = PLSR_OUTPUT_PULSE_DIR; + destination->position = source->position; + destination->positionValid = source->positionValid; + destination->wasBusy = source->wasBusy; } static uint8_t PlsrBackupPositionIsValid( @@ -523,10 +1518,10 @@ static const PLSR_BACKUP_POSITION_RECORD *PlsrNewestBackupPosition(void) static void PlsrTimerStop(TIM_TypeDef *timer) { - timer->DIER &= ~TIM_DIER_UIE; + timer->DIER &= ~(TIM_DIER_UIE | TIM_DIER_CC1IE); timer->CR1 &= ~TIM_CR1_CEN; - timer->CCER &= ~TIM_CCER_CC1E; - timer->SR = ~TIM_SR_UIF; + timer->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + timer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); } static void PlsrTimerInitialize(TIM_TypeDef *timer) @@ -624,8 +1619,9 @@ static uint8_t PlsrTimerCalculate(uint8_t pulseOutput, setting->prescaler = prescalerDivider - 1UL; setting->period = periodCounts - 1UL; setting->compare = periodCounts / 2UL; + denominator = prescalerDivider * periodCounts; setting->actualFrequencyHz = - map->timerClockHz / (prescalerDivider * periodCounts); + (map->timerClockHz + denominator / 2UL) / denominator; return 1U; } @@ -637,96 +1633,856 @@ static void PlsrTimerWriteSetting(TIM_TypeDef *timer, timer->CCR1 = setting->compare; } -uint8_t PlsrPlatformInit(void) +static void PlsrTimerSnapshot(TIM_TypeDef *timer, + PLSR_TIMER_SNAPSHOT *snapshot) { - GPIO_InitTypeDef gpio; - uint8_t index; - const PLSR_BACKUP_POSITION_RECORD *positionRecord; - - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOF_CLK_ENABLE(); - __HAL_RCC_GPIOG_CLK_ENABLE(); - __HAL_RCC_GPIOH_CLK_ENABLE(); - __HAL_RCC_TIM10_CLK_ENABLE(); - __HAL_RCC_TIM11_CLK_ENABLE(); - __HAL_RCC_TIM13_CLK_ENABLE(); - __HAL_RCC_TIM14_CLK_ENABLE(); - __HAL_RCC_PWR_CLK_ENABLE(); - HAL_PWR_EnableBkUpAccess(); - __HAL_RCC_BKPSRAM_CLK_ENABLE(); - if (HAL_PWREx_EnableBkUpReg() != HAL_OK) - { - return 0U; - } - -#if PLSR_ENABLE_IRQ_CYCLE_DIAG - CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; - DWT->CYCCNT = 0UL; - DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; - (void)memset((void *)PlsrIrqCount, 0, sizeof(PlsrIrqCount)); - (void)memset((void *)PlsrIrqLastCycles, 0, sizeof(PlsrIrqLastCycles)); - (void)memset((void *)PlsrIrqMaxCycles, 0, sizeof(PlsrIrqMaxCycles)); -#endif - - HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 - | GPIO_PIN_9, GPIO_PIN_SET); - gpio.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9; - gpio.Mode = GPIO_MODE_OUTPUT_PP; - gpio.Pull = GPIO_NOPULL; - gpio.Speed = GPIO_SPEED_FREQ_HIGH; - gpio.Alternate = 0U; - HAL_GPIO_Init(GPIOH, &gpio); - - gpio.Mode = GPIO_MODE_INPUT; - gpio.Pull = GPIO_NOPULL; - gpio.Speed = GPIO_SPEED_FREQ_LOW; - gpio.Alternate = 0U; - gpio.Pin = GPIO_PIN_5; - HAL_GPIO_Init(GPIOB, &gpio); - gpio.Pin = GPIO_PIN_12; - HAL_GPIO_Init(GPIOG, &gpio); - - for (index = 0U; index < 4U; index++) - { - PlsrTimerActiveFrequencyHz[index] = 0UL; - PlsrTimerQueuedFrequencyHz[index] = 0UL; - PlsrTimerQueueGeneration[index] = 0UL; - PlsrTimerInitialize(PlsrTimerMap[index].timer); - PlsrPulsePinHoldIdle(index); - HAL_NVIC_SetPriority(PlsrTimerMap[index].irq, 1U, 0U); - HAL_NVIC_EnableIRQ(PlsrTimerMap[index].irq); - } - - positionRecord = PlsrNewestBackupPosition(); - PlsrBackupPositionGeneration = - (positionRecord == NULL) ? 0UL : positionRecord->generation; - return 1U; + snapshot->cr1 = timer->CR1; + snapshot->ccmr1 = timer->CCMR1; + snapshot->ccer = timer->CCER; + snapshot->psc = timer->PSC; + snapshot->arr = timer->ARR; + snapshot->ccr1 = timer->CCR1; } -uint8_t PlsrPlatformPrepare(uint8_t pulseOutput, - uint8_t directionOutput, - uint8_t directionLevel) +static uint8_t PlsrAbCalculate(uint8_t pulseOutput, + uint32_t frequencyHz, + PLSR_AB_SETTING *setting) { - uint8_t index; + const PLSR_TIMER_MAP *baseMap; + const PLSR_TIMER_MAP *pairMap; + uint64_t ratio; + uint64_t pairDivider; + uint64_t baseDivider; + uint64_t periodCounts; - if ((pulseOutput > 3U) || (directionOutput > 3U)) + if (((pulseOutput != 0U) && (pulseOutput != 2U)) + || (frequencyHz == 0UL) + || (frequencyHz > PLSR_FREQUENCY_MAX_HZ) + || (setting == NULL)) { return 0U; } - for (index = 0U; index < 4U; index++) + baseMap = &PlsrTimerMap[pulseOutput]; + pairMap = &PlsrTimerMap[pulseOutput + 1U]; + if ((pairMap->timerClockHz == 0UL) + || ((baseMap->timerClockHz % pairMap->timerClockHz) != 0UL)) { - PlsrPulsePinHoldIdle(index); - PlsrTimerStop(PlsrTimerMap[index].timer); - HAL_GPIO_WritePin(PlsrDirectionMap[index].port, - PlsrDirectionMap[index].pin, - GPIO_PIN_SET); + return 0U; } - if (directionLevel != 0U) + ratio = baseMap->timerClockHz / pairMap->timerClockHz; + pairDivider = ((uint64_t)pairMap->timerClockHz + + (uint64_t)frequencyHz * 65536UL - 1UL) + / ((uint64_t)frequencyHz * 65536UL); + if (pairDivider == 0UL) { - HAL_GPIO_WritePin(PlsrDirectionMap[directionOutput].port, - PlsrDirectionMap[directionOutput].pin, - GPIO_PIN_RESET); + pairDivider = 1UL; } + baseDivider = pairDivider * ratio; + if ((pairDivider > 65536UL) || (baseDivider > 65536UL)) + { + return 0U; + } + periodCounts = ((uint64_t)pairMap->timerClockHz + + ((uint64_t)frequencyHz * pairDivider) / 2UL) + / ((uint64_t)frequencyHz * pairDivider); + if ((periodCounts < 4UL) || (periodCounts > 65536UL)) + { + return 0U; + } + setting->basePrescaler = (uint32_t)(baseDivider - 1UL); + setting->pairPrescaler = (uint32_t)(pairDivider - 1UL); + setting->period = (uint32_t)(periodCounts - 1UL); + setting->compare = (uint32_t)(periodCounts / 2UL); + setting->actualFrequencyHz = + (uint32_t)(((uint64_t)pairMap->timerClockHz + + (pairDivider * periodCounts) / 2UL) + / (pairDivider * periodCounts)); + return 1U; +} + +static void PlsrAbHoldPairIdle(uint8_t pulseOutput) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + GPIO_TypeDef *port = PlsrTimerMap[pulseOutput].port; + uint32_t firstShift = (uint32_t)PlsrTimerMap[pulseOutput].pinIndex * 2UL; + uint32_t secondShift = (uint32_t)PlsrTimerMap[pairOutput].pinIndex * 2UL; + uint32_t mode = port->MODER; + + port->BSRR = (uint32_t)PlsrTimerMap[pulseOutput].pin + | (uint32_t)PlsrTimerMap[pairOutput].pin; + mode &= ~((3UL << firstShift) | (3UL << secondShift)); + mode |= (1UL << firstShift) | (1UL << secondShift); + port->MODER = mode; + __DSB(); +} + +static void PlsrAbReleasePair(uint8_t pulseOutput) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + GPIO_TypeDef *port = PlsrTimerMap[pulseOutput].port; + uint32_t firstAfrIndex = + (uint32_t)PlsrTimerMap[pulseOutput].pinIndex >> 3U; + uint32_t secondAfrIndex = + (uint32_t)PlsrTimerMap[pairOutput].pinIndex >> 3U; + uint32_t firstAfrShift = + ((uint32_t)PlsrTimerMap[pulseOutput].pinIndex & 7UL) * 4UL; + uint32_t secondAfrShift = + ((uint32_t)PlsrTimerMap[pairOutput].pinIndex & 7UL) * 4UL; + uint32_t firstShift = (uint32_t)PlsrTimerMap[pulseOutput].pinIndex * 2UL; + uint32_t secondShift = (uint32_t)PlsrTimerMap[pairOutput].pinIndex * 2UL; + uint32_t alternate; + uint32_t mode = port->MODER; + + alternate = port->AFR[firstAfrIndex]; + alternate &= ~(0xFUL << firstAfrShift); + alternate |= (uint32_t)PlsrTimerMap[pulseOutput].alternate + << firstAfrShift; + port->AFR[firstAfrIndex] = alternate; + alternate = port->AFR[secondAfrIndex]; + alternate &= ~(0xFUL << secondAfrShift); + alternate |= (uint32_t)PlsrTimerMap[pairOutput].alternate + << secondAfrShift; + port->AFR[secondAfrIndex] = alternate; + mode &= ~((3UL << firstShift) | (3UL << secondShift)); + mode |= (2UL << firstShift) | (2UL << secondShift); + port->MODER = mode; + __DSB(); +} + +static uint8_t PlsrAbStructureIsRunnable( + uint8_t pulseOutput, + const PLSR_TIMER_SNAPSHOT *base, + const PLSR_TIMER_SNAPSHOT *pair) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + uint8_t lagOutput = PlsrAbLagAxis[pulseOutput]; + + return ((((base->cr1 & TIM_CR1_CEN) != 0UL) + && ((pair->cr1 & TIM_CR1_CEN) != 0UL) + && ((base->ccer & TIM_CCER_CC1E) != 0UL) + && ((pair->ccer & TIM_CCER_CC1E) != 0UL) + && ((base->ccer & TIM_CCER_CC1P) != 0UL) + && ((pair->ccer & TIM_CCER_CC1P) != 0UL) + && ((base->ccmr1 & PLSR_TIMER_OC1_MODE_MASK) + == PLSR_TIMER_PWM1_MODE) + && ((pair->ccmr1 & PLSR_TIMER_OC1_MODE_MASK) + == PLSR_TIMER_PWM1_MODE) + && (base->arr == pair->arr) + && (base->ccr1 == pair->ccr1) + && (base->ccr1 == ((base->arr + 1UL) / 2UL)) + && ((base->psc + 1UL) == 2UL * (pair->psc + 1UL)) + && ((lagOutput == pulseOutput) || (lagOutput == pairOutput))) + ? 1U : 0U); +} + +static uint8_t PlsrAbTimersAreRunnable(uint8_t pulseOutput, + TIM_TypeDef *baseTimer, + TIM_TypeDef *pairTimer) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + uint8_t lagOutput = PlsrAbLagAxis[pulseOutput]; + uint32_t baseCr1 = baseTimer->CR1; + uint32_t pairCr1 = pairTimer->CR1; + uint32_t baseCcer = baseTimer->CCER; + uint32_t pairCcer = pairTimer->CCER; + uint32_t baseCcmr1 = baseTimer->CCMR1; + uint32_t pairCcmr1 = pairTimer->CCMR1; + uint32_t basePsc = baseTimer->PSC; + uint32_t pairPsc = pairTimer->PSC; + uint32_t baseCcr1 = baseTimer->CCR1; + uint32_t pairCcr1 = pairTimer->CCR1; + uint32_t baseArr = baseTimer->ARR; + uint32_t pairArr = pairTimer->ARR; + + return (((((baseCr1 & TIM_CR1_CEN) != 0UL) + && ((pairCr1 & TIM_CR1_CEN) != 0UL) + && ((baseCcer & (TIM_CCER_CC1E | TIM_CCER_CC1P)) + == (TIM_CCER_CC1E | TIM_CCER_CC1P)) + && ((pairCcer & (TIM_CCER_CC1E | TIM_CCER_CC1P)) + == (TIM_CCER_CC1E | TIM_CCER_CC1P)) + && ((baseCcmr1 & PLSR_TIMER_OC1_MODE_MASK) + == PLSR_TIMER_PWM1_MODE) + && ((pairCcmr1 & PLSR_TIMER_OC1_MODE_MASK) + == PLSR_TIMER_PWM1_MODE) + && (baseArr == pairArr) + && (baseCcr1 == pairCcr1) + && (baseCcr1 == ((baseArr + 1UL) / 2UL)) + && ((basePsc + 1UL) == 2UL * (pairPsc + 1UL)) + && ((lagOutput == pulseOutput) + || (lagOutput == pairOutput))) ? 1U : 0U)); +} + +static uint8_t PlsrAbStopBoundaryIsReachable( + uint8_t pulseOutput, + TIM_TypeDef *baseTimer, + TIM_TypeDef *pairTimer) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + uint8_t lagOutput = PlsrAbLagAxis[pulseOutput]; + uint32_t baseCr1 = baseTimer->CR1; + uint32_t pairCr1 = pairTimer->CR1; + uint32_t baseCcer = baseTimer->CCER; + uint32_t pairCcer = pairTimer->CCER; + uint32_t baseCcr1 = baseTimer->CCR1; + uint32_t pairCcr1 = pairTimer->CCR1; + uint32_t baseArr = baseTimer->ARR; + uint32_t pairArr = pairTimer->ARR; + + return (((((baseCr1 & TIM_CR1_CEN) != 0UL) + && ((pairCr1 & TIM_CR1_CEN) != 0UL) + && ((baseCcer & TIM_CCER_CC1E) != 0UL) + && ((pairCcer & TIM_CCER_CC1E) != 0UL) + && (baseCcr1 <= baseArr) + && (pairCcr1 <= pairArr) + && ((lagOutput == pulseOutput) + || (lagOutput == pairOutput))) ? 1U : 0U)); +} + +static void PlsrAbFastGate(uint8_t pulseOutput) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + TIM_TypeDef *baseTimer = PlsrTimerMap[pulseOutput].timer; + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + + PlsrAbStructureVerified[pulseOutput] = 0U; + baseTimer->CR1 &= ~TIM_CR1_CEN; + pairTimer->CR1 &= ~TIM_CR1_CEN; + PlsrCounterSuspend(pulseOutput); + __DMB(); +} + +#if defined(__ICCARM__) +#pragma inline=never +#endif +static void PlsrAbEnableTimerPair(TIM_TypeDef *firstTimer, + uint32_t firstCr1, + TIM_TypeDef *secondTimer, + uint32_t secondCr1) +{ + firstTimer->CR1 = firstCr1; + secondTimer->CR1 = secondCr1; +} + +static uint8_t PlsrAbCanFastGateAtZero(uint8_t pulseOutput) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + TIM_TypeDef *baseTimer = PlsrTimerMap[pulseOutput].timer; + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + uint32_t baseCr1 = baseTimer->CR1; + uint32_t pairCr1 = pairTimer->CR1; + uint32_t baseCcer = baseTimer->CCER; + uint32_t pairCcer = pairTimer->CCER; + uint32_t baseCcr = baseTimer->CCR1; + uint32_t pairCcr = pairTimer->CCR1; + uint32_t baseCnt = baseTimer->CNT; + uint32_t pairCnt = pairTimer->CNT; + + return ((((baseCr1 & TIM_CR1_CEN) != 0UL) + && ((pairCr1 & TIM_CR1_CEN) != 0UL) + && ((baseCcer & TIM_CCER_CC1E) != 0UL) + && ((pairCcer & TIM_CCER_CC1E) != 0UL) + && (baseCnt >= baseCcr) + && (pairCnt >= pairCcr)) ? 1U : 0U); +} + +static uint8_t PlsrCounterIndex(uint8_t pulseOutput, uint8_t outputMode) +{ + return (outputMode == PLSR_OUTPUT_AB) + ? (uint8_t)(pulseOutput >> 1U) + : (uint8_t)(pulseOutput & 1U); +} + +static uint64_t PlsrCounterCurrentRaw(uint8_t pulseOutput) +{ + uint8_t index = PlsrCounterIndexByOutput[pulseOutput]; + TIM_TypeDef *counter; + uint64_t overflowBefore; + uint64_t overflowAfter; + uint32_t statusBefore; + uint32_t statusAfter; + uint32_t count; + + if (index >= PLSR_COUNTER_COUNT) + { + return 0UL; + } + counter = PlsrCounters[index]; + for (;;) + { + overflowBefore = PlsrCounterOverflowPulses[index]; + statusBefore = counter->SR & TIM_SR_UIF; + count = (uint16_t)counter->CNT; + statusAfter = counter->SR & TIM_SR_UIF; + overflowAfter = PlsrCounterOverflowPulses[index]; + if ((overflowBefore == overflowAfter) + && (statusBefore == statusAfter)) + { + if (statusAfter != 0UL) + { + overflowAfter += PLSR_COUNTER_BLOCK_PULSES; + } + return overflowAfter + count; + } + } +} + +static uint64_t PlsrCounterSnapshot(uint8_t pulseOutput) +{ + uint64_t current = PlsrCounterCurrentRaw(pulseOutput); + uint64_t observed; + + if ((PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (current > 0UL)) + { + uint8_t sourceAxis = PlsrAbCounterSourceAxis[pulseOutput]; + uint8_t attempt; + + for (attempt = 0U; attempt < 2U; attempt++) + { + uint64_t verified; + + current = PlsrCounterCurrentRaw(pulseOutput); + if (sourceAxis <= 3U) + { + uint32_t sourceCount = PlsrTimerMap[sourceAxis].timer->CNT; + + verified = PlsrCounterCurrentRaw(pulseOutput); + if (current == verified) + { + if ((sourceCount + < PlsrAbCounterBoundary[pulseOutput]) + && (current > 0UL)) + { + current--; + } + break; + } + current = verified; + } + } + } + observed = PlsrObservedPulseBase[pulseOutput] + current; + if (observed < PlsrObservedPulsePublished[pulseOutput]) + { + observed = PlsrObservedPulsePublished[pulseOutput]; + } + else + { + PlsrObservedPulsePublished[pulseOutput] = observed; + } + return observed; +} + +static uint64_t PlsrCounterSnapshotStopped(uint8_t pulseOutput) +{ + uint8_t index = PlsrCounterIndexByOutput[pulseOutput]; + TIM_TypeDef *counter = PlsrCounters[index]; + uint64_t current = PlsrCounterOverflowPulses[index]; + uint64_t observed; + + current += (uint16_t)counter->CNT; + if ((counter->SR & TIM_SR_UIF) != 0UL) + { + current += PLSR_COUNTER_BLOCK_PULSES; + } + if ((PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (current > 0UL)) + { + uint8_t sourceAxis = PlsrAbCounterSourceAxis[pulseOutput]; + + if ((sourceAxis <= 3U) + && (PlsrTimerMap[sourceAxis].timer->CNT + < PlsrAbCounterBoundary[pulseOutput])) + { + current--; + } + } + observed = PlsrObservedPulseBase[pulseOutput] + current; + if (observed < PlsrObservedPulsePublished[pulseOutput]) + { + observed = PlsrObservedPulsePublished[pulseOutput]; + } + else + { + PlsrObservedPulsePublished[pulseOutput] = observed; + } + return observed; +} + +static void PlsrCounterStop(uint8_t pulseOutput) +{ + uint8_t index = PlsrCounterIndexByOutput[pulseOutput]; + + if (index < PLSR_COUNTER_COUNT) + { + TIM_TypeDef *counter = PlsrCounters[index]; + + if ((PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrAbFastGated[pulseOutput] != 0U)) + { + PlsrObservedPulseBase[pulseOutput] = + PlsrCounterSnapshotStopped(pulseOutput); + } + else + { + PlsrCounterSuspend(pulseOutput); + PlsrObservedPulseBase[pulseOutput] = + PlsrCounterSnapshot(pulseOutput); + } + PlsrObservedPulsePublished[pulseOutput] = + PlsrObservedPulseBase[pulseOutput]; + + counter->CR1 = 0UL; + counter->DIER = 0UL; + counter->SMCR = 0UL; + counter->SR = 0UL; + if (PlsrCounterOwner[index] == pulseOutput) + { + uint8_t sourceAxis = PlsrCounterTriggerSourceAxis[index]; + + if (sourceAxis <= 3U) + { + PlsrTimerMap[sourceAxis].timer->CR2 &= ~TIM_CR2_MMS; + } + PlsrCounterTriggerSourceAxis[index] = PLSR_COUNTER_NONE; + PlsrCounterOwner[index] = PLSR_COUNTER_NONE; + } + } + PlsrCounterIndexByOutput[pulseOutput] = PLSR_COUNTER_NONE; +} + +static uint8_t PlsrCounterConfigure(uint8_t pulseOutput, uint8_t outputMode) +{ + uint8_t index = PlsrCounterIndex(pulseOutput, outputMode); + uint8_t sourceAxis = (outputMode == PLSR_OUTPUT_AB) + ? ((pulseOutput == 0U) ? 0U : 3U) + : pulseOutput; + TIM_TypeDef *counter = PlsrCounters[index]; + TIM_TypeDef *sourceTimer = PlsrTimerMap[sourceAxis].timer; + uint32_t triggerSelection = ((pulseOutput & 2U) == 0U) + ? TIM_SMCR_TS_1 + : (TIM_SMCR_TS_1 | TIM_SMCR_TS_0); + + PlsrCounterStop(pulseOutput); + if ((PlsrCounterOwner[index] != PLSR_COUNTER_NONE) + && (PlsrCounterOwner[index] != pulseOutput)) + { + return 0U; + } + PlsrCounterOwner[index] = pulseOutput; + PlsrCounterTriggerSourceAxis[index] = sourceAxis; + PlsrCounterIndexByOutput[pulseOutput] = index; + PlsrCounterOverflowPulses[index] = 0UL; + counter->CR1 = 0UL; + counter->DIER = 0UL; + counter->SMCR = 0UL; + counter->PSC = 0UL; + counter->ARR = 0xFFFFUL; + counter->CNT = 0UL; + counter->EGR = TIM_EGR_UG; + counter->SR = 0UL; + sourceTimer->CR2 = (sourceTimer->CR2 & ~TIM_CR2_MMS) | TIM_CR2_MMS_1; + counter->SMCR = triggerSelection; + counter->DIER = TIM_DIER_UIE; + return 1U; +} + +static void PlsrCounterBegin(uint8_t pulseOutput) +{ + uint8_t index = PlsrCounterIndexByOutput[pulseOutput]; + + if (index < PLSR_COUNTER_COUNT) + { + TIM_TypeDef *counter = PlsrCounters[index]; + + counter->SMCR |= TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0; + counter->CR1 |= TIM_CR1_CEN; + } +} + +static void PlsrCounterSuspend(uint8_t pulseOutput) +{ + uint8_t index = PlsrCounterIndexByOutput[pulseOutput]; + + if (index < PLSR_COUNTER_COUNT) + { + PlsrCounters[index]->CR1 &= ~TIM_CR1_CEN; + PlsrCounters[index]->SMCR &= + ~(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0); + } +} + +static void PlsrAbLoadAndStart(uint8_t pulseOutput, + const PLSR_AB_SETTING *setting) +{ + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + uint8_t leadOutput = + (PlsrTimerDirectionPositive[pulseOutput] != 0U) + ? pulseOutput : pairOutput; + uint8_t lagOutput = (leadOutput == pulseOutput) + ? pairOutput : pulseOutput; + TIM_TypeDef *baseTimer = PlsrTimerMap[pulseOutput].timer; + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + TIM_TypeDef *counterSourceTimer; + TIM_TypeDef *otherTimer; + uint32_t periodCounts = setting->period + 1UL; + uint32_t leadStart = (periodCounts * 3UL) / 4UL + 1UL; + uint32_t lagStart = periodCounts / 2UL + 1UL; + uint32_t counterSourceCr1; + uint32_t otherCr1; + + if (leadStart >= periodCounts) + { + leadStart = periodCounts - 1UL; + } + if (lagStart >= periodCounts) + { + lagStart = periodCounts - 1UL; + } + PlsrAbStructureVerified[pulseOutput] = 0U; + PlsrAbLagAxis[pulseOutput] = lagOutput; + PlsrAbCounterSourceAxis[pulseOutput] = + (pulseOutput == 0U) ? pulseOutput : pairOutput; + PlsrAbCounterBoundary[pulseOutput] = + (PlsrAbCounterSourceAxis[pulseOutput] == leadOutput) + ? (leadStart - 1UL) : (periodCounts / 2UL); + + PlsrCounterSuspend(pulseOutput); + baseTimer->CR1 &= ~TIM_CR1_CEN; + pairTimer->CR1 &= ~TIM_CR1_CEN; + PlsrAbHoldPairIdle(pulseOutput); + baseTimer->CCER &= ~TIM_CCER_CC1E; + pairTimer->CCER &= ~TIM_CCER_CC1E; + baseTimer->DIER = 0UL; + pairTimer->DIER = 0UL; + baseTimer->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE; + pairTimer->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE; + baseTimer->PSC = setting->basePrescaler; + pairTimer->PSC = setting->pairPrescaler; + baseTimer->ARR = setting->period; + pairTimer->ARR = setting->period; + baseTimer->CCR1 = setting->compare; + pairTimer->CCR1 = setting->compare; + baseTimer->CR1 = TIM_CR1_ARPE | TIM_CR1_URS; + pairTimer->CR1 = TIM_CR1_ARPE | TIM_CR1_URS; + baseTimer->EGR = TIM_EGR_UG; + pairTimer->EGR = TIM_EGR_UG; + baseTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + pairTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + PlsrTimerMap[leadOutput].timer->CNT = leadStart; + PlsrTimerMap[lagOutput].timer->CNT = lagStart; + baseTimer->CCER = (baseTimer->CCER + & ~(TIM_CCER_CC1P | TIM_CCER_CC1E)) + | TIM_CCER_CC1P | TIM_CCER_CC1E; + pairTimer->CCER = (pairTimer->CCER + & ~(TIM_CCER_CC1P | TIM_CCER_CC1E)) + | TIM_CCER_CC1P | TIM_CCER_CC1E; + PlsrAbReleasePair(pulseOutput); + baseTimer->CCMR1 = TIM_CCMR1_OC1PE + | (6UL << TIM_CCMR1_OC1M_Pos); + pairTimer->CCMR1 = TIM_CCMR1_OC1PE + | (6UL << TIM_CCMR1_OC1M_Pos); + PlsrCounterBegin(pulseOutput); + counterSourceTimer = + PlsrTimerMap[PlsrAbCounterSourceAxis[pulseOutput]].timer; + otherTimer = + PlsrTimerMap[(PlsrAbCounterSourceAxis[pulseOutput] == pulseOutput) + ? pairOutput : pulseOutput].timer; + counterSourceCr1 = counterSourceTimer->CR1 | TIM_CR1_CEN; + otherCr1 = otherTimer->CR1 | TIM_CR1_CEN; + PlsrAbEnableTimerPair(counterSourceTimer, counterSourceCr1, + otherTimer, otherCr1); + baseTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + pairTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + PlsrTimerMap[lagOutput].timer->DIER |= TIM_DIER_CC1IE; + __DMB(); +} + +static void PlsrAbScheduleFrequencyVerify(uint8_t pulseOutput) +{ + uint8_t verifyOutput = + (PlsrAbLagAxis[pulseOutput] == pulseOutput) + ? (uint8_t)(pulseOutput + 1U) : pulseOutput; + TIM_TypeDef *verifyTimer = PlsrTimerMap[verifyOutput].timer; + + PlsrFrequencyVerifyPending[pulseOutput] = + PLSR_FREQUENCY_VERIFY_AB_AUX_IRQ; + PlsrAbVerifyOwner[verifyOutput] = pulseOutput; + verifyTimer->SR = ~TIM_SR_UIF; + verifyTimer->DIER |= TIM_DIER_UIE; + if (PlsrDeferredPulsePending[pulseOutput] != 0U) + { + verifyTimer->SR = ~TIM_SR_CC1IF; + verifyTimer->DIER |= TIM_DIER_CC1IE; + } + __DMB(); +} + +static uint32_t PlsrFrequencyFromSnapshot( + uint8_t pulseOutput, + const PLSR_TIMER_SNAPSHOT *snapshot) +{ + uint64_t divider = ((uint64_t)snapshot->psc + 1UL) + * ((uint64_t)snapshot->arr + 1UL); + + if (divider == 0UL) + { + return 0UL; + } + return (uint32_t)(((uint64_t)PlsrTimerMap[pulseOutput].timerClockHz + + divider / 2UL) + / divider); +} + +static uint32_t PlsrVerifyActiveFrequency(uint8_t pulseOutput) +{ + TIM_TypeDef *baseTimer = PlsrTimerMap[pulseOutput].timer; + PLSR_TIMER_SNAPSHOT baseSnapshot; + uint32_t activeFrequency = PlsrTimerActiveFrequencyHz[pulseOutput]; + + PlsrTimerSnapshot(baseTimer, &baseSnapshot); + + if (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + { + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + PLSR_TIMER_SNAPSHOT pairSnapshot; + uint8_t structureValid; + + PlsrTimerSnapshot(pairTimer, &pairSnapshot); + structureValid = PlsrAbStructureIsRunnable( + pulseOutput, &baseSnapshot, &pairSnapshot); + PlsrAbStructureVerified[pulseOutput] = structureValid; + + if (structureValid == 0U) + { + PlsrPlatformFaultPending = PLSR_PLATFORM_FAULT_CURVE; + } + if ((baseSnapshot.psc + != PlsrAbActiveSetting[pulseOutput].basePrescaler) + || (pairSnapshot.psc + != PlsrAbActiveSetting[pulseOutput].pairPrescaler) + || (baseSnapshot.arr + != PlsrAbActiveSetting[pulseOutput].period) + || (pairSnapshot.arr + != PlsrAbActiveSetting[pulseOutput].period) + || (baseSnapshot.ccr1 + != PlsrAbActiveSetting[pulseOutput].compare) + || (pairSnapshot.ccr1 + != PlsrAbActiveSetting[pulseOutput].compare)) + { + activeFrequency = PlsrFrequencyFromSnapshot(pairOutput, + &pairSnapshot); + if (PlsrPlatformFaultPending != PLSR_PLATFORM_FAULT_CURVE) + { + PlsrPlatformFaultPending = PLSR_PLATFORM_FAULT_FREQUENCY; + } + } + } + else + { + uint8_t structureValid = + ((((baseSnapshot.cr1 & TIM_CR1_CEN) != 0UL) + && ((baseSnapshot.ccer & TIM_CCER_CC1E) != 0UL) + && ((baseSnapshot.ccer & TIM_CCER_CC1P) == 0UL) + && ((baseSnapshot.ccmr1 & PLSR_TIMER_OC1_MODE_MASK) + == PLSR_TIMER_PWM1_MODE) + && (baseSnapshot.ccr1 + == ((baseSnapshot.arr + 1UL) / 2UL))) + ? 1U : 0U); + + if (structureValid == 0U) + { + PlsrPlatformFaultPending = PLSR_PLATFORM_FAULT_CURVE; + } + if ((baseSnapshot.psc + != PlsrTimerQueuedSetting[pulseOutput].prescaler) + || (baseSnapshot.arr + != PlsrTimerQueuedSetting[pulseOutput].period) + || (baseSnapshot.ccr1 + != PlsrTimerQueuedSetting[pulseOutput].compare)) + { + activeFrequency = PlsrFrequencyFromSnapshot(pulseOutput, + &baseSnapshot); + if (PlsrPlatformFaultPending != PLSR_PLATFORM_FAULT_CURVE) + { + PlsrPlatformFaultPending = PLSR_PLATFORM_FAULT_FREQUENCY; + } + } + } + if (activeFrequency == 0UL) + { + PlsrPlatformFaultPending = PLSR_PLATFORM_FAULT_FREQUENCY; + } + return activeFrequency; +} + +uint8_t PlsrPlatformInit(void) +{ + GPIO_InitTypeDef gpio; + uint8_t index; + const PLSR_BACKUP_POSITION_RECORD *positionRecord; + + PlsrFlashReserveEraseState = PLSR_FLASH_ERASE_NONE; + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_TIM10_CLK_ENABLE(); + __HAL_RCC_TIM11_CLK_ENABLE(); + __HAL_RCC_TIM13_CLK_ENABLE(); + __HAL_RCC_TIM14_CLK_ENABLE(); + __HAL_RCC_TIM9_CLK_ENABLE(); + __HAL_RCC_TIM12_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_BKPSRAM_CLK_ENABLE(); + if (HAL_PWREx_EnableBkUpReg() != HAL_OK) + { + return 0U; + } + +#if PLSR_DEBUG_TIMING + CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; + DWT->CYCCNT = 0UL; + DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; + (void)memset((void *)PlsrIrqCount, 0, sizeof(PlsrIrqCount)); + (void)memset((void *)PlsrIrqLastCycles, 0, sizeof(PlsrIrqLastCycles)); + (void)memset((void *)PlsrIrqMaxCycles, 0, sizeof(PlsrIrqMaxCycles)); + (void)memset((void *)PlsrFinalArmQueueCount, 0, + sizeof(PlsrFinalArmQueueCount)); + (void)memset((void *)PlsrFinalArmJobLastCycles, 0, + sizeof(PlsrFinalArmJobLastCycles)); + (void)memset((void *)PlsrFinalArmJobMaxCycles, 0, + sizeof(PlsrFinalArmJobMaxCycles)); + (void)memset((void *)PlsrFinalArmQueueToStopLastCycles, 0, + sizeof(PlsrFinalArmQueueToStopLastCycles)); + (void)memset((void *)PlsrFinalArmQueueToStopMaxCycles, 0, + sizeof(PlsrFinalArmQueueToStopMaxCycles)); + (void)memset((void *)PlsrFinalArmQueuedAt, 0, + sizeof(PlsrFinalArmQueuedAt)); + (void)memset((void *)PlsrFinalArmQueueTimingPending, 0, + sizeof(PlsrFinalArmQueueTimingPending)); +#endif + + HAL_GPIO_WritePin(GPIOH, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 + | GPIO_PIN_9, GPIO_PIN_SET); + gpio.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9; + gpio.Mode = GPIO_MODE_OUTPUT_PP; + gpio.Pull = GPIO_NOPULL; + gpio.Speed = GPIO_SPEED_FREQ_HIGH; + gpio.Alternate = 0U; + HAL_GPIO_Init(GPIOH, &gpio); + + gpio.Mode = GPIO_MODE_INPUT; + gpio.Pull = GPIO_NOPULL; + gpio.Speed = GPIO_SPEED_FREQ_LOW; + gpio.Alternate = 0U; + gpio.Pin = GPIO_PIN_5; + HAL_GPIO_Init(GPIOB, &gpio); + gpio.Pin = GPIO_PIN_12; + HAL_GPIO_Init(GPIOG, &gpio); + + for (index = 0U; index < 4U; index++) + { + PlsrTimerActiveFrequencyHz[index] = 0UL; + PlsrTimerQueuedFrequencyHz[index] = 0UL; + (void)memset(&PlsrTimerActiveSetting[index], 0, + sizeof(PlsrTimerActiveSetting[index])); + (void)memset(&PlsrTimerQueuedSetting[index], 0, + sizeof(PlsrTimerQueuedSetting[index])); + PlsrTimerQueueGeneration[index] = 0UL; + PlsrTimerOutputMode[index] = PLSR_OUTPUT_PULSE_DIR; + PlsrTimerDirectionPositive[index] = 1U; + PlsrTimerRunning[index] = 0U; + PlsrFrequencyVerifyPending[index] = 0U; + PlsrFrequencyVerifyPulseCount[index] = 0U; + PlsrDeferredPulsePending[index] = 0U; + PlsrAbVerifyOwner[index] = PLSR_COUNTER_NONE; + PlsrAbFinalArmJobOwner[index] = PLSR_COUNTER_NONE; + PlsrTimerIrqActive[index] = 0U; + PlsrAbFrequencyPending[index] = 0U; + PlsrAbLagAxis[index] = PLSR_COUNTER_NONE; + PlsrAbStructureVerified[index] = 0U; + PlsrAbCounterSourceAxis[index] = PLSR_COUNTER_NONE; + PlsrAbCounterBoundary[index] = 0UL; + PlsrAbStopPending[index] = 0U; + PlsrAbFastGated[index] = 0U; + PlsrCounterIndexByOutput[index] = PLSR_COUNTER_NONE; + PlsrObservedPulseBase[index] = 0UL; + PlsrObservedPulsePublished[index] = 0UL; + PlsrTimerInitialize(PlsrTimerMap[index].timer); + PlsrPulsePinHoldIdle(index); + HAL_NVIC_SetPriority(PlsrTimerMap[index].irq, 1U, 0U); + HAL_NVIC_EnableIRQ(PlsrTimerMap[index].irq); + } + for (index = 0U; index < PLSR_COUNTER_COUNT; index++) + { + PlsrCounterOwner[index] = PLSR_COUNTER_NONE; + PlsrCounterTriggerSourceAxis[index] = PLSR_COUNTER_NONE; + PlsrCounterOverflowPulses[index] = 0UL; + PlsrCounters[index]->CR1 = 0UL; + PlsrCounters[index]->DIER = 0UL; + PlsrCounters[index]->SMCR = 0UL; + PlsrCounters[index]->SR = 0UL; + } + PlsrPlatformFaultPending = 0U; + HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, 1U, 0U); + HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn); + HAL_NVIC_SetPriority(TIM8_BRK_TIM12_IRQn, 1U, 0U); + HAL_NVIC_EnableIRQ(TIM8_BRK_TIM12_IRQn); + + positionRecord = PlsrNewestBackupPosition(); + PlsrBackupPositionGeneration = + (positionRecord == NULL) ? 0UL : positionRecord->generation; + return 1U; +} + +uint8_t PlsrPlatformPrepare(uint8_t pulseOutput, + uint8_t directionOutput, + uint8_t directionLevel, + uint8_t outputMode, + uint8_t directionPositive) +{ + uint8_t index; + + if ((pulseOutput > 3U) || (directionOutput > 3U) + || (outputMode > PLSR_OUTPUT_AB) + || ((outputMode == PLSR_OUTPUT_AB) + && (pulseOutput != 0U) && (pulseOutput != 2U))) + { + return 0U; + } + if ((PlsrAbStopPending[0] != 0U) || (PlsrAbStopPending[2] != 0U)) + { + return 0U; + } + for (index = 0U; index < 4U; index++) + { + PlsrAbFinalArmJobOwner[index] = PLSR_COUNTER_NONE; + NVIC_ClearPendingIRQ(PlsrTimerMap[index].irq); + PlsrCounterStop(index); + PlsrPulsePinHoldIdle(index); + PlsrTimerStop(PlsrTimerMap[index].timer); + HAL_GPIO_WritePin(PlsrDirectionMap[index].port, + PlsrDirectionMap[index].pin, + ((outputMode == PLSR_OUTPUT_PULSE_DIR) + && (index == directionOutput) + && (directionLevel != 0U)) + ? GPIO_PIN_RESET : GPIO_PIN_SET); + PlsrTimerRunning[index] = 0U; + PlsrFrequencyVerifyPending[index] = 0U; + PlsrFrequencyVerifyPulseCount[index] = 0U; + PlsrDeferredPulsePending[index] = 0U; + PlsrAbVerifyOwner[index] = PLSR_COUNTER_NONE; + PlsrAbFrequencyPending[index] = 0U; + PlsrAbStructureVerified[index] = 0U; + PlsrAbFastGated[index] = 0U; + } + PlsrTimerOutputMode[pulseOutput] = outputMode; + PlsrTimerDirectionPositive[pulseOutput] = + (directionPositive != 0U) ? 1U : 0U; + PlsrPlatformFaultPending = 0U; return 1U; } @@ -736,167 +2492,769 @@ uint8_t PlsrPlatformStartPulse(uint8_t pulseOutput, uint32_t *actualFirstFrequencyHz, uint32_t *actualQueuedFrequencyHz) { - TIM_TypeDef *timer; - PLSR_TIMER_SETTING firstSetting; - PLSR_TIMER_SETTING queuedSetting; + PLSR_PLATFORM_TIMER_SETTING firstSetting; + PLSR_PLATFORM_TIMER_SETTING queuedSetting; - if ((actualFirstFrequencyHz == NULL) - || (actualQueuedFrequencyHz == NULL) - || (PlsrTimerCalculate(pulseOutput, firstFrequencyHz, - &firstSetting) == 0U) - || (PlsrTimerCalculate(pulseOutput, queuedFrequencyHz, - &queuedSetting) == 0U)) + if ((pulseOutput > 3U) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, PlsrTimerOutputMode[pulseOutput], + firstFrequencyHz, &firstSetting) == 0U) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, PlsrTimerOutputMode[pulseOutput], + queuedFrequencyHz, &queuedSetting) == 0U)) { return 0U; } - timer = PlsrTimerMap[pulseOutput].timer; - timer->DIER &= ~TIM_DIER_UIE; - timer->CR1 &= ~TIM_CR1_CEN; - timer->CCER &= ~TIM_CCER_CC1E; - timer->CNT = 0UL; - PlsrTimerWriteSetting(timer, &firstSetting); - timer->EGR = TIM_EGR_UG; - PlsrTimerWriteSetting(timer, &queuedSetting); - timer->SR = 0UL; - timer->CCER |= TIM_CCER_CC1E; - __DSB(); - timer->DIER |= TIM_DIER_UIE; - PlsrPulsePinRelease(pulseOutput); - timer->CR1 |= TIM_CR1_CEN; + return PlsrPlatformStartPrepared(pulseOutput, &firstSetting, + &queuedSetting, + actualFirstFrequencyHz, + actualQueuedFrequencyHz); +} + +static uint8_t PlsrPreparedSettingIsValid( + uint8_t pulseOutput, + uint8_t outputMode, + const PLSR_PLATFORM_TIMER_SETTING *setting) +{ + uint32_t periodCounts; + + if ((pulseOutput > 3U) || (setting == NULL) + || (setting->actualFrequencyHz == 0UL) + || (setting->actualFrequencyHz > PLSR_FREQUENCY_MAX_HZ)) + { + return 0U; + } + periodCounts = (uint32_t)setting->period + 1UL; + if (setting->compare != (uint16_t)(periodCounts / 2UL)) + { + return 0U; + } + if (outputMode == PLSR_OUTPUT_PULSE_DIR) + { + return ((periodCounts >= 2UL) + && (setting->pairPrescaler == 0U)) ? 1U : 0U; + } + if ((outputMode != PLSR_OUTPUT_AB) || ((pulseOutput & 1U) != 0U) + || (periodCounts < 4UL)) + { + return 0U; + } + return ((((uint32_t)setting->prescaler + 1UL) + == 2UL * ((uint32_t)setting->pairPrescaler + 1UL)) + ? 1U : 0U); +} + +static void PlsrPlatformToTimerSetting( + const PLSR_PLATFORM_TIMER_SETTING *source, + PLSR_TIMER_SETTING *destination) +{ + destination->prescaler = source->prescaler; + destination->period = source->period; + destination->compare = source->compare; + destination->actualFrequencyHz = source->actualFrequencyHz; +} + +static void PlsrPlatformToAbSetting( + const PLSR_PLATFORM_TIMER_SETTING *source, + PLSR_AB_SETTING *destination) +{ + destination->basePrescaler = source->prescaler; + destination->pairPrescaler = source->pairPrescaler; + destination->period = source->period; + destination->compare = source->compare; + destination->actualFrequencyHz = source->actualFrequencyHz; +} + +static uint8_t PlsrPlatformSettingsDiffer( + const PLSR_PLATFORM_TIMER_SETTING *first, + const PLSR_PLATFORM_TIMER_SETTING *second) +{ + return (((first->actualFrequencyHz != second->actualFrequencyHz) + || (first->prescaler != second->prescaler) + || (first->pairPrescaler != second->pairPrescaler) + || (first->period != second->period) + || (first->compare != second->compare)) ? 1U : 0U); +} + +uint8_t PlsrPlatformBuildTimerSetting( + uint8_t pulseOutput, + uint8_t outputMode, + uint32_t requestedFrequencyHz, + PLSR_PLATFORM_TIMER_SETTING *setting) +{ + PLSR_TIMER_SETTING timerSetting; + PLSR_AB_SETTING abSetting; + + if (setting == NULL) + { + return 0U; + } + if (outputMode == PLSR_OUTPUT_AB) + { + if (PlsrAbCalculate(pulseOutput, requestedFrequencyHz, + &abSetting) == 0U) + { + return 0U; + } + setting->actualFrequencyHz = abSetting.actualFrequencyHz; + setting->prescaler = (uint16_t)abSetting.basePrescaler; + setting->pairPrescaler = (uint16_t)abSetting.pairPrescaler; + setting->period = (uint16_t)abSetting.period; + setting->compare = (uint16_t)abSetting.compare; + return 1U; + } + if ((outputMode != PLSR_OUTPUT_PULSE_DIR) + || (PlsrTimerCalculate(pulseOutput, requestedFrequencyHz, + &timerSetting) == 0U)) + { + return 0U; + } + setting->actualFrequencyHz = timerSetting.actualFrequencyHz; + setting->prescaler = (uint16_t)timerSetting.prescaler; + setting->pairPrescaler = 0U; + setting->period = (uint16_t)timerSetting.period; + setting->compare = (uint16_t)timerSetting.compare; + return 1U; +} + +uint8_t PlsrPlatformStartPrepared( + uint8_t pulseOutput, + const PLSR_PLATFORM_TIMER_SETTING *firstSetting, + const PLSR_PLATFORM_TIMER_SETTING *queuedSetting, + uint32_t *actualFirstFrequencyHz, + uint32_t *actualQueuedFrequencyHz) +{ + uint8_t outputMode; + + if ((pulseOutput > 3U) || (actualFirstFrequencyHz == NULL) + || (actualQueuedFrequencyHz == NULL)) + { + return 0U; + } + outputMode = PlsrTimerOutputMode[pulseOutput]; + if ((PlsrPreparedSettingIsValid(pulseOutput, outputMode, + firstSetting) == 0U) + || (PlsrPreparedSettingIsValid(pulseOutput, outputMode, + queuedSetting) == 0U)) + { + return 0U; + } + if (outputMode == PLSR_OUTPUT_AB) + { + PLSR_AB_SETTING firstAbSetting; + PLSR_AB_SETTING queuedAbSetting; + + if ((PlsrAbStopPending[pulseOutput] != 0U) + || (PlsrAbFastGated[pulseOutput] != 0U) + || (PlsrCounterConfigure(pulseOutput, PLSR_OUTPUT_AB) == 0U)) + { + return 0U; + } + PlsrPlatformToAbSetting(firstSetting, &firstAbSetting); + PlsrPlatformToAbSetting(queuedSetting, &queuedAbSetting); + PlsrAbLoadAndStart(pulseOutput, &firstAbSetting); + PlsrAbActiveSetting[pulseOutput] = firstAbSetting; + PlsrAbPendingSetting[pulseOutput] = queuedAbSetting; + PlsrAbFrequencyPending[pulseOutput] = + ((firstSetting->prescaler != queuedSetting->prescaler) + || (firstSetting->pairPrescaler + != queuedSetting->pairPrescaler) + || (firstSetting->period != queuedSetting->period)) ? 1U : 0U; + } + else + { + TIM_TypeDef *timer = PlsrTimerMap[pulseOutput].timer; + PLSR_TIMER_SETTING firstTimerSetting; + PLSR_TIMER_SETTING queuedTimerSetting; + + if (PlsrCounterConfigure(pulseOutput, + PLSR_OUTPUT_PULSE_DIR) == 0U) + { + return 0U; + } + PlsrPlatformToTimerSetting(firstSetting, &firstTimerSetting); + PlsrPlatformToTimerSetting(queuedSetting, &queuedTimerSetting); + timer->DIER &= ~TIM_DIER_UIE; + timer->CR1 &= ~TIM_CR1_CEN; + timer->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + timer->CNT = 0UL; + PlsrTimerWriteSetting(timer, &firstTimerSetting); + timer->EGR = TIM_EGR_UG; + PlsrTimerWriteSetting(timer, &queuedTimerSetting); + timer->CNT = firstTimerSetting.compare; + timer->SR = 0UL; + timer->CCER = (timer->CCER + & ~(TIM_CCER_CC1E | TIM_CCER_CC1P)) + | TIM_CCER_CC1E; + __DSB(); + timer->DIER |= TIM_DIER_UIE; + PlsrPulsePinRelease(pulseOutput); + PlsrCounterBegin(pulseOutput); + timer->CR1 |= TIM_CR1_CEN; + } + PlsrTimerActiveSetting[pulseOutput] = *firstSetting; + PlsrTimerQueuedSetting[pulseOutput] = *queuedSetting; PlsrTimerActiveFrequencyHz[pulseOutput] = - firstSetting.actualFrequencyHz; + firstSetting->actualFrequencyHz; PlsrTimerQueuedFrequencyHz[pulseOutput] = - queuedSetting.actualFrequencyHz; + queuedSetting->actualFrequencyHz; PlsrTimerQueueGeneration[pulseOutput]++; - *actualFirstFrequencyHz = firstSetting.actualFrequencyHz; - *actualQueuedFrequencyHz = queuedSetting.actualFrequencyHz; + PlsrTimerRunning[pulseOutput] = 1U; + if (outputMode == PLSR_OUTPUT_AB) + { + PlsrAbScheduleFrequencyVerify(pulseOutput); + } + else + { + PlsrFrequencyVerifyPending[pulseOutput] = + PLSR_FREQUENCY_VERIFY_NOW; + } + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + *actualFirstFrequencyHz = firstSetting->actualFrequencyHz; + *actualQueuedFrequencyHz = queuedSetting->actualFrequencyHz; return 1U; } -uint8_t PlsrPlatformQueueFrequency(uint8_t pulseOutput, - uint32_t frequencyHz, - uint32_t *actualFrequencyHz) +PLSR_PLATFORM_QUEUE_RESULT PlsrPlatformLoadPreparedFromIrq( + uint8_t pulseOutput, + const PLSR_PLATFORM_TIMER_SETTING *setting, + uint32_t *actualFrequencyHz) +{ + uint8_t outputMode; + + if ((pulseOutput > 3U) || (actualFrequencyHz == NULL)) + { + return PLSR_PLATFORM_QUEUE_FAILED; + } + outputMode = PlsrTimerOutputMode[pulseOutput]; + if (PlsrPreparedSettingIsValid(pulseOutput, outputMode, + setting) == 0U) + { + return PLSR_PLATFORM_QUEUE_FAILED; + } + if ((PlsrTimerRunning[pulseOutput] == 0U) + || (PlsrAbStopPending[pulseOutput] != 0U) + || (PlsrAbFastGated[pulseOutput] != 0U)) + { + return PLSR_PLATFORM_QUEUE_STALE; + } + if (outputMode == PLSR_OUTPUT_AB) + { + PLSR_AB_SETTING pending; + + PlsrPlatformToAbSetting(setting, &pending); + PlsrAbPendingSetting[pulseOutput] = pending; + PlsrAbFrequencyPending[pulseOutput] = + ((setting->prescaler + != PlsrAbActiveSetting[pulseOutput].basePrescaler) + || (setting->pairPrescaler + != PlsrAbActiveSetting[pulseOutput].pairPrescaler) + || (setting->period + != PlsrAbActiveSetting[pulseOutput].period)) ? 1U : 0U; + } + else + { + TIM_TypeDef *timer = PlsrTimerMap[pulseOutput].timer; + + if ((timer->CR1 & TIM_CR1_CEN) == 0UL) + { + return PLSR_PLATFORM_QUEUE_STALE; + } + timer->PSC = setting->prescaler; + timer->ARR = setting->period; + timer->CCR1 = setting->compare; + __DMB(); + } + PlsrTimerQueuedSetting[pulseOutput] = *setting; + PlsrTimerQueuedFrequencyHz[pulseOutput] = setting->actualFrequencyHz; + PlsrTimerQueueGeneration[pulseOutput]++; + *actualFrequencyHz = setting->actualFrequencyHz; + return PLSR_PLATFORM_QUEUE_APPLIED; +} + +void PlsrPlatformGateFromIrq(uint8_t pulseOutput) +{ + if ((pulseOutput <= 3U) + && (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrAbFastGated[pulseOutput] != 0U)) + { + return; + } + PlsrPlatformStopPulse(pulseOutput); +} + +PLSR_PLATFORM_QUEUE_RESULT PlsrPlatformQueueFrequency( + uint8_t pulseOutput, + uint32_t frequencyHz, + uint32_t *actualFrequencyHz) { TIM_TypeDef *timer; - PLSR_TIMER_SETTING setting; - uint32_t counterBefore; - uint32_t counterAfter; - uint32_t counterFinal; + PLSR_PLATFORM_TIMER_SETTING setting; + uint32_t activePeriod; + uint32_t counter; uint32_t criticalState; - uint32_t generationBefore; uint32_t ownGeneration; - uint8_t wrappedWhileUpdatesDisabled; + uint8_t updatePending; if ((pulseOutput > 3U) || (actualFrequencyHz == NULL) - || (PlsrTimerCalculate(pulseOutput, frequencyHz, &setting) == 0U)) + || (PlsrPlatformBuildTimerSetting( + pulseOutput, PlsrTimerOutputMode[pulseOutput], frequencyHz, + &setting) == 0U)) { - return 0U; + return PLSR_PLATFORM_QUEUE_FAILED; + } + if (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + { + PLSR_AB_SETTING pending; + uint32_t criticalState; + + if ((PlsrTimerRunning[pulseOutput] == 0U) + || (PlsrAbStopPending[pulseOutput] != 0U) + || (PlsrAbFastGated[pulseOutput] != 0U)) + { + return PLSR_PLATFORM_QUEUE_STALE; + } + criticalState = PlsrPlatformEnterCritical(); + if ((PlsrTimerRunning[pulseOutput] == 0U) + || (PlsrAbStopPending[pulseOutput] != 0U) + || (PlsrAbFastGated[pulseOutput] != 0U)) + { + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_STALE; + } + PlsrPlatformToAbSetting(&setting, &pending); + PlsrAbPendingSetting[pulseOutput] = pending; + PlsrAbFrequencyPending[pulseOutput] = + ((pending.basePrescaler + != PlsrAbActiveSetting[pulseOutput].basePrescaler) + || (pending.pairPrescaler + != PlsrAbActiveSetting[pulseOutput].pairPrescaler) + || (pending.period + != PlsrAbActiveSetting[pulseOutput].period)) ? 1U : 0U; + PlsrTimerQueuedSetting[pulseOutput] = setting; + PlsrTimerQueuedFrequencyHz[pulseOutput] = setting.actualFrequencyHz; + PlsrTimerQueueGeneration[pulseOutput]++; + *actualFrequencyHz = setting.actualFrequencyHz; + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_APPLIED; } + timer = PlsrTimerMap[pulseOutput].timer; if ((timer->CR1 & TIM_CR1_CEN) == 0UL) { - return 0U; + return PLSR_PLATFORM_QUEUE_STALE; + } + + criticalState = PlsrPlatformEnterCritical(); + if ((timer->SR & TIM_SR_UIF) != 0UL) + { + *actualFrequencyHz = PlsrTimerQueuedFrequencyHz[pulseOutput]; + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_STALE; + } + activePeriod = PlsrTimerActiveSetting[pulseOutput].period; + counter = timer->CNT; + if ((counter > activePeriod) + || ((activePeriod - counter) < PLSR_QUEUE_WRITE_GUARD_COUNTS)) + { + *actualFrequencyHz = PlsrTimerQueuedFrequencyHz[pulseOutput]; + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_STALE; + } + + /* Preserve real update events and their TRGO pulse while replacing the + three preload registers. The near-wrap guard bounds the write window. */ + timer->PSC = setting.prescaler; + timer->ARR = setting.period; + timer->CCR1 = setting.compare; + __DMB(); + updatePending = ((timer->SR & TIM_SR_UIF) != 0UL) ? 1U : 0U; + PlsrTimerQueuedFrequencyHz[pulseOutput] = setting.actualFrequencyHz; + PlsrTimerQueuedSetting[pulseOutput] = setting; + PlsrTimerQueueGeneration[pulseOutput]++; + ownGeneration = PlsrTimerQueueGeneration[pulseOutput]; + if (updatePending != 0U) + { + *actualFrequencyHz = PlsrTimerQueuedFrequencyHz[pulseOutput]; + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_STALE; + } + *actualFrequencyHz = + (PlsrTimerQueueGeneration[pulseOutput] == ownGeneration) + ? setting.actualFrequencyHz + : PlsrTimerQueuedFrequencyHz[pulseOutput]; + if (PlsrTimerQueueGeneration[pulseOutput] != ownGeneration) + { + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_STALE; + } + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_QUEUE_APPLIED; +} + +void PlsrPlatformDrainPendingPulse(uint8_t pulseOutput) +{ + if (pulseOutput <= 3U) + { + if ((PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrDeferredPulsePending[pulseOutput] != 0U)) + { + uint8_t verifyOutput = + (PlsrAbLagAxis[pulseOutput] == pulseOutput) + ? (uint8_t)(pulseOutput + 1U) : pulseOutput; + TIM_TypeDef *verifyTimer = PlsrTimerMap[verifyOutput].timer; + + verifyTimer->DIER &= ~(TIM_DIER_UIE | TIM_DIER_CC1IE); + verifyTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + PlsrAbVerifyOwner[verifyOutput] = PLSR_COUNTER_NONE; + if (PlsrFrequencyVerifyPending[pulseOutput] + == PLSR_FREQUENCY_VERIFY_AB_AUX_IRQ) + { + PlsrFrequencyVerifyPending[pulseOutput] = + PLSR_FREQUENCY_VERIFY_NONE; + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + (void)PlsrVerifyActiveFrequency(pulseOutput); + } + PlsrDeferredPulsePending[pulseOutput] = 0U; + PlsrPulseTimerIrq(pulseOutput); + return; + } + PlsrHandleTimerIrq(pulseOutput); + } +} + +uint32_t PlsrPlatformActiveFrequency(uint8_t pulseOutput) +{ + if (pulseOutput > 3U) + { + return 0UL; + } + if ((PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrAbFastGated[pulseOutput] != 0U)) + { + PlsrFrequencyVerifyPending[pulseOutput] = + PLSR_FREQUENCY_VERIFY_NONE; + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + return PlsrTimerActiveFrequencyHz[pulseOutput]; + } + if (PlsrFrequencyVerifyPending[pulseOutput] + == PLSR_FREQUENCY_VERIFY_AB_AUX_IRQ) + { + return PlsrTimerActiveFrequencyHz[pulseOutput]; + } + if (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + { + PlsrFrequencyVerifyPulseCount[pulseOutput]++; + if (PlsrFrequencyVerifyPulseCount[pulseOutput] + >= PLSR_STRUCTURE_VERIFY_INTERVAL) + { + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + PlsrAbScheduleFrequencyVerify(pulseOutput); + } + return PlsrTimerActiveFrequencyHz[pulseOutput]; + } + if (PlsrFrequencyVerifyPending[pulseOutput] + == PLSR_FREQUENCY_VERIFY_NOW) + { + PlsrFrequencyVerifyPending[pulseOutput] = + PLSR_FREQUENCY_VERIFY_NONE; + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + return PlsrVerifyActiveFrequency(pulseOutput); + } + PlsrFrequencyVerifyPulseCount[pulseOutput]++; + if (PlsrFrequencyVerifyPulseCount[pulseOutput] + >= PLSR_STRUCTURE_VERIFY_INTERVAL) + { + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + return PlsrVerifyActiveFrequency(pulseOutput); + } + return PlsrTimerActiveFrequencyHz[pulseOutput]; +} + +uint8_t PlsrPlatformExpectedFrequency(uint8_t pulseOutput, + uint8_t outputMode, + uint32_t requestedFrequencyHz, + uint32_t *actualFrequencyHz) +{ + PLSR_PLATFORM_TIMER_SETTING setting; + + if (actualFrequencyHz == NULL) + { + return 0U; + } + if (PlsrPlatformBuildTimerSetting(pulseOutput, outputMode, + requestedFrequencyHz, + &setting) == 0U) + { + return 0U; + } + *actualFrequencyHz = setting.actualFrequencyHz; + return 1U; +} + +uint64_t PlsrPlatformObservedPulses(uint8_t pulseOutput) +{ + uint32_t criticalState; + uint64_t observed; + + if (pulseOutput > 3U) + { + return 0UL; + } + criticalState = PlsrPlatformEnterCritical(); + if (PlsrCounterIndexByOutput[pulseOutput] < PLSR_COUNTER_COUNT) + { + observed = ((PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrAbFastGated[pulseOutput] != 0U)) + ? PlsrCounterSnapshotStopped(pulseOutput) + : PlsrCounterSnapshot(pulseOutput); + } + else + { + observed = PlsrObservedPulseBase[pulseOutput]; + } + PlsrPlatformExitCritical(criticalState); + return observed; +} + +uint16_t PlsrPlatformDiagnosticFault(void) +{ + uint16_t fault = PlsrPlatformFaultPending; + + PlsrPlatformFaultPending = 0U; + return fault; +} + +PLSR_PLATFORM_STOP_RESULT PlsrPlatformRequestStopLocked( + uint8_t pulseOutput, + uint8_t requireZeroBoundary) +{ + if (pulseOutput > 3U) + { + return PLSR_PLATFORM_STOP_FORCED_FAULT; } - - criticalState = PlsrPlatformEnterCritical(); - generationBefore = PlsrTimerQueueGeneration[pulseOutput]; - if ((timer->SR & TIM_SR_UIF) != 0UL) + if ((requireZeroBoundary != 0U) + && (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + && (PlsrTimerRunning[pulseOutput] != 0U) + && (PlsrAbFastGated[pulseOutput] == 0U)) { - PlsrHandleTimerIrq(pulseOutput); - if (PlsrTimerQueueGeneration[pulseOutput] != generationBefore) + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + uint8_t lagOutput = PlsrAbLagAxis[pulseOutput]; + uint32_t activeFrequencyHz; + TIM_TypeDef *baseTimer = PlsrTimerMap[pulseOutput].timer; + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + uint8_t structureRunnable = + ((PlsrAbStructureVerified[pulseOutput] != 0U) + && (PlsrFrequencyVerifyPending[pulseOutput] + == PLSR_FREQUENCY_VERIFY_NONE)) + ? PlsrAbStopBoundaryIsReachable(pulseOutput, baseTimer, + pairTimer) + : PlsrAbTimersAreRunnable(pulseOutput, baseTimer, + pairTimer); + + if (structureRunnable == 0U) { - *actualFrequencyHz = PlsrTimerQueuedFrequencyHz[pulseOutput]; - PlsrPlatformExitCritical(criticalState); - return 1U; + PlsrCounterSuspend(pulseOutput); + PlsrAbHoldPairIdle(pulseOutput); + baseTimer->CR1 &= ~TIM_CR1_CEN; + pairTimer->CR1 &= ~TIM_CR1_CEN; + __DMB(); + PlsrPlatformStopPulse(pulseOutput); + return PLSR_PLATFORM_STOP_FORCED_FAULT; } - if ((timer->CR1 & TIM_CR1_CEN) == 0UL) + if (PlsrAbStopPending[pulseOutput] != 0U) { - PlsrPlatformExitCritical(criticalState); - return 0U; + return PLSR_PLATFORM_STOP_PENDING; } - } - /* UDIS blocks shadow transfers while the three preload registers are - replaced. The counter and PWM output continue without interruption. */ - counterBefore = timer->CNT; - timer->CR1 |= TIM_CR1_UDIS; - __DMB(); - if ((timer->SR & TIM_SR_UIF) != 0UL) - { - timer->CR1 &= ~TIM_CR1_UDIS; - PlsrHandleTimerIrq(pulseOutput); - if ((PlsrTimerQueueGeneration[pulseOutput] != generationBefore) - || ((timer->CR1 & TIM_CR1_CEN) == 0UL)) + PlsrAbFrequencyPending[pulseOutput] = 0U; + baseTimer->DIER &= ~TIM_DIER_UIE; + pairTimer->DIER &= ~TIM_DIER_UIE; + PlsrFrequencyVerifyPending[pulseOutput] = + PLSR_FREQUENCY_VERIFY_NONE; + PlsrFrequencyVerifyPulseCount[pulseOutput] = 0U; + PlsrAbVerifyOwner[pulseOutput] = PLSR_COUNTER_NONE; + PlsrAbVerifyOwner[pairOutput] = PLSR_COUNTER_NONE; + activeFrequencyHz = PlsrTimerActiveFrequencyHz[pulseOutput]; + PlsrTimerQueuedFrequencyHz[pulseOutput] = activeFrequencyHz; + PlsrTimerQueueGeneration[pulseOutput]++; + PlsrAbStopPending[pulseOutput] = 1U; +#if PLSR_DEBUG_TIMING + if (PlsrFinalArmQueueTimingPending[pulseOutput] != 0U) { - uint8_t stillRunning = - ((timer->CR1 & TIM_CR1_CEN) != 0UL) ? 1U : 0U; + uint32_t queuedAt = PlsrFinalArmQueuedAt[pulseOutput]; + uint32_t stoppedAt = DWT->CYCCNT; + uint32_t latency = stoppedAt - queuedAt; - *actualFrequencyHz = PlsrTimerQueuedFrequencyHz[pulseOutput]; - PlsrPlatformExitCritical(criticalState); - return stillRunning; + PlsrFinalArmQueueTimingPending[pulseOutput] = 0U; + PlsrFinalArmQueueToStopLastCycles[pulseOutput] = latency; + if (latency > PlsrFinalArmQueueToStopMaxCycles[pulseOutput]) + { + PlsrFinalArmQueueToStopMaxCycles[pulseOutput] = latency; + } + } +#endif + if (lagOutput == pulseOutput) + { + pairTimer->SR = ~TIM_SR_CC1IF; + } + else + { + baseTimer->SR = ~TIM_SR_CC1IF; } - counterBefore = timer->CNT; - timer->CR1 |= TIM_CR1_UDIS; + baseTimer->DIER |= TIM_DIER_CC1IE; + pairTimer->DIER |= TIM_DIER_CC1IE; __DMB(); + return PLSR_PLATFORM_STOP_PENDING; } - PlsrTimerWriteSetting(timer, &setting); - __DMB(); - PlsrTimerQueuedFrequencyHz[pulseOutput] = setting.actualFrequencyHz; - PlsrTimerQueueGeneration[pulseOutput]++; - ownGeneration = PlsrTimerQueueGeneration[pulseOutput]; - counterAfter = timer->CNT; - timer->CR1 &= ~TIM_CR1_UDIS; - __DMB(); - counterFinal = timer->CNT; + PlsrPlatformStopPulse(pulseOutput); + return PLSR_PLATFORM_STOP_COMPLETE; +} + +uint8_t PlsrPlatformQueueFinalArmFromIrq(uint8_t pulseOutput) +{ + uint8_t jobOutput; - /* With UDIS set an overflow does not set UIF. A wrapped counter proves - that its real output edge occurred, so account for that edge once. */ - wrappedWhileUpdatesDisabled = - ((counterAfter < counterBefore) - || ((counterFinal < counterAfter) - && ((timer->SR & TIM_SR_UIF) == 0UL))) ? 1U : 0U; - if (wrappedWhileUpdatesDisabled != 0U) + if ((pulseOutput > 2U) || ((pulseOutput & 1U) != 0U) + || (PlsrTimerOutputMode[pulseOutput] != PLSR_OUTPUT_AB) + || (PlsrTimerRunning[pulseOutput] == 0U) + || (PlsrAbFastGated[pulseOutput] != 0U)) { - PlsrPulseTimerIrq(pulseOutput); + return 0U; } - else if ((timer->SR & TIM_SR_UIF) != 0UL) + jobOutput = PlsrFinalArmJobOutput(pulseOutput); + if (PlsrAbFinalArmJobOwner[jobOutput] != PLSR_COUNTER_NONE) { - PlsrHandleTimerIrq(pulseOutput); + return 0U; } - *actualFrequencyHz = - (PlsrTimerQueueGeneration[pulseOutput] == ownGeneration) - ? setting.actualFrequencyHz - : PlsrTimerQueuedFrequencyHz[pulseOutput]; - PlsrPlatformExitCritical(criticalState); + PlsrAbFinalArmJobOwner[jobOutput] = pulseOutput; +#if PLSR_DEBUG_TIMING + PlsrFinalArmQueuedAt[pulseOutput] = DWT->CYCCNT; + PlsrFinalArmQueueTimingPending[pulseOutput] = 1U; + PlsrFinalArmQueueCount[pulseOutput]++; +#endif + __DMB(); + NVIC_SetPendingIRQ(PlsrTimerMap[jobOutput].irq); return 1U; } -void PlsrPlatformDrainPendingPulse(uint8_t pulseOutput) -{ - if (pulseOutput <= 3U) - { - PlsrHandleTimerIrq(pulseOutput); - } -} - -uint32_t PlsrPlatformActiveFrequency(uint8_t pulseOutput) -{ - return (pulseOutput <= 3U) - ? PlsrTimerActiveFrequencyHz[pulseOutput] : 0UL; -} - void PlsrPlatformStopPulse(uint8_t pulseOutput) { if (pulseOutput <= 3U) { - PlsrPulsePinCaptureIdle(pulseOutput); - PlsrTimerStop(PlsrTimerMap[pulseOutput].timer); + if (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + { + uint8_t pairOutput = (uint8_t)(pulseOutput + 1U); + uint8_t jobOutput = PlsrFinalArmJobOutput(pulseOutput); + TIM_TypeDef *baseTimer = PlsrTimerMap[pulseOutput].timer; + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + + PlsrAbStructureVerified[pulseOutput] = 0U; + PlsrAbFinalArmJobOwner[jobOutput] = PLSR_COUNTER_NONE; +#if PLSR_DEBUG_TIMING + PlsrFinalArmQueueTimingPending[pulseOutput] = 0U; +#endif + NVIC_ClearPendingIRQ(PlsrTimerMap[jobOutput].irq); + if (PlsrAbFastGated[pulseOutput] != 0U) + { + PlsrAbHoldPairIdle(pulseOutput); + baseTimer->DIER = 0UL; + pairTimer->DIER = 0UL; + baseTimer->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + pairTimer->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + baseTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + pairTimer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + } + else + { + PlsrCounterSuspend(pulseOutput); + PlsrAbHoldPairIdle(pulseOutput); + PlsrTimerStop(baseTimer); + PlsrTimerStop(pairTimer); + } + } + else + { + PlsrPulsePinCaptureIdle(pulseOutput); + PlsrTimerStop(PlsrTimerMap[pulseOutput].timer); + } + PlsrCounterStop(pulseOutput); PlsrTimerActiveFrequencyHz[pulseOutput] = 0UL; PlsrTimerQueuedFrequencyHz[pulseOutput] = 0UL; PlsrTimerQueueGeneration[pulseOutput]++; + PlsrTimerRunning[pulseOutput] = 0U; + PlsrFrequencyVerifyPending[pulseOutput] = 0U; + PlsrDeferredPulsePending[pulseOutput] = 0U; + PlsrAbVerifyOwner[pulseOutput] = PLSR_COUNTER_NONE; + if (PlsrTimerOutputMode[pulseOutput] == PLSR_OUTPUT_AB) + { + PlsrAbVerifyOwner[pulseOutput + 1U] = PLSR_COUNTER_NONE; + } + PlsrAbFrequencyPending[pulseOutput] = 0U; + PlsrAbStopPending[pulseOutput] = 0U; + PlsrAbFastGated[pulseOutput] = 0U; } } +void PlsrPlatformForceSafeOutputsFromFault(void) +{ + uint32_t mode; + const uint32_t outputPins = GPIO_PIN_6 | GPIO_PIN_7 + | GPIO_PIN_8 | GPIO_PIN_9; + const uint32_t outputModeMask = (3UL << (6U * 2U)) + | (3UL << (7U * 2U)) + | (3UL << (8U * 2U)) + | (3UL << (9U * 2U)); + + __disable_irq(); + + TIM10->DIER = 0UL; + TIM10->CR1 &= ~TIM_CR1_CEN; + TIM10->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + TIM10->SR = 0UL; + TIM11->DIER = 0UL; + TIM11->CR1 &= ~TIM_CR1_CEN; + TIM11->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + TIM11->SR = 0UL; + TIM13->DIER = 0UL; + TIM13->CR1 &= ~TIM_CR1_CEN; + TIM13->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + TIM13->SR = 0UL; + TIM14->DIER = 0UL; + TIM14->CR1 &= ~TIM_CR1_CEN; + TIM14->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1P); + TIM14->SR = 0UL; + + TIM9->DIER = 0UL; + TIM9->CR1 &= ~TIM_CR1_CEN; + TIM9->SMCR = 0UL; + TIM9->SR = 0UL; + TIM12->DIER = 0UL; + TIM12->CR1 &= ~TIM_CR1_CEN; + TIM12->SMCR = 0UL; + TIM12->SR = 0UL; + + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOFEN | RCC_AHB1ENR_GPIOHEN; + __DSB(); + GPIOF->BSRR = outputPins; + GPIOH->BSRR = outputPins; + GPIOF->OTYPER &= ~outputPins; + GPIOH->OTYPER &= ~outputPins; + GPIOF->PUPDR &= ~outputModeMask; + GPIOH->PUPDR &= ~outputModeMask; + mode = GPIOF->MODER; + mode &= ~outputModeMask; + mode |= (1UL << (6U * 2U)) | (1UL << (7U * 2U)) + | (1UL << (8U * 2U)) | (1UL << (9U * 2U)); + GPIOF->MODER = mode; + mode = GPIOH->MODER; + mode &= ~outputModeMask; + mode |= (1UL << (6U * 2U)) | (1UL << (7U * 2U)) + | (1UL << (8U * 2U)) | (1UL << (9U * 2U)); + GPIOH->MODER = mode; + __DSB(); +} + uint8_t PlsrPlatformReadInput(uint8_t inputSelection) { if (inputSelection == 0U) @@ -912,43 +3270,36 @@ uint8_t PlsrPlatformReadInput(uint8_t inputSelection) uint8_t PlsrPlatformLoad(PLSR_PERSIST_PAYLOAD *payload) { - const PLSR_FLASH_RECORD *slotA = - (const PLSR_FLASH_RECORD *)PLSR_FLASH_SLOT_A_ADDRESS; - const PLSR_FLASH_RECORD *slotB = - (const PLSR_FLASH_RECORD *)PLSR_FLASH_SLOT_B_ADDRESS; - const PLSR_FLASH_RECORD *selected = NULL; - const PLSR_BACKUP_CONFIG_RECORD *backupConfig = - (const PLSR_BACKUP_CONFIG_RECORD *)PLSR_BACKUP_CONFIG_ADDRESS; + PLSR_FLASH_SECTOR_SCAN scanA; + PLSR_FLASH_SECTOR_SCAN scanB; + const PLSR_FLASH_HEADER *selected = NULL; + const void *backupConfig = (const void *)PLSR_BACKUP_CONFIG_ADDRESS; const PLSR_BACKUP_POSITION_RECORD *backupPosition; - uint8_t validA; - uint8_t validB; + uint8_t selectedVersion = 0U; + uint8_t backupVersion; uint8_t haveConfig = 0U; + uint32_t selectedSectorAddress; if (payload == NULL) { return 0U; } - validA = PlsrFlashRecordIsValid(slotA); - validB = PlsrFlashRecordIsValid(slotB); - if ((validA != 0U) && (validB != 0U)) - { - selected = (PlsrGenerationIsNewer(slotB->generation, - slotA->generation) != 0U) - ? slotB : slotA; - } - else if (validA != 0U) - { - selected = slotA; - } - else if (validB != 0U) - { - selected = slotB; - } + selected = PlsrFlashInitializeJournal(&scanA, &scanB, &selectedVersion, + &selectedSectorAddress); if (selected != NULL) { - *payload = selected->payload; + if (selectedVersion == PLSR_FLASH_VERSION) + { + *payload = ((const PLSR_FLASH_RECORD *)selected)->payload; + } + else + { + PlsrLoadV2Payload( + payload, + &((const PLSR_FLASH_RECORD_V2 *)selected)->payload); + } haveConfig = 1U; } else @@ -956,9 +3307,21 @@ uint8_t PlsrPlatformLoad(PLSR_PERSIST_PAYLOAD *payload) (void)memset(payload, 0, sizeof(*payload)); } - if (PlsrBackupConfigIsValid(backupConfig) != 0U) + backupVersion = PlsrBackupConfigVersion(backupConfig); + if (backupVersion == PLSR_FLASH_VERSION) + { + payload->config = + ((const PLSR_BACKUP_CONFIG_RECORD *)backupConfig)->config; + haveConfig = 1U; + } + else if (backupVersion == PLSR_FLASH_VERSION_V2) { - payload->config = backupConfig->config; + const PLSR_BACKUP_CONFIG_RECORD_V2 *oldConfig = + (const PLSR_BACKUP_CONFIG_RECORD_V2 *)backupConfig; + + (void)memcpy(&payload->config, oldConfig->config, + sizeof(oldConfig->config)); + payload->config.outputMode = PLSR_OUTPUT_PULSE_DIR; haveConfig = 1U; } backupPosition = PlsrNewestBackupPosition(); @@ -968,25 +3331,93 @@ uint8_t PlsrPlatformLoad(PLSR_PERSIST_PAYLOAD *payload) payload->positionValid = backupPosition->positionValid; payload->wasBusy = backupPosition->wasBusy; } + + if (selected != NULL) + { + uint8_t reserveIndex = + (selectedSectorAddress == PLSR_FLASH_SLOT_A_ADDRESS) ? 1U : 0U; + const PLSR_FLASH_SECTOR_SCAN *reserveScan = + (reserveIndex == 0U) ? &scanA : &scanB; + + if (reserveScan->hasProgrammedSlot != 0U) + { + PlsrFlashReserveEraseState = (uint8_t)(reserveIndex + 1U); + } + } + else if (PlsrFlashNeedsStartupRecovery( + 0U, + scanA.hasProgrammedSlot, + scanA.firstErasedAddress, + scanB.hasProgrammedSlot, + scanB.firstErasedAddress) != 0U) + { + PlsrFlashReserveEraseState = PLSR_FLASH_ERASE_SECTOR_A; + } return haveConfig; } +PLSR_PLATFORM_SERVICE_RESULT PlsrPlatformServicePersistence(void) +{ + uint32_t criticalState; + uint8_t eraseState; + uint8_t sectorIndex; + uint8_t index; + + criticalState = PlsrPlatformEnterCritical(); + eraseState = PlsrFlashReserveEraseState; + if (eraseState == PLSR_FLASH_ERASE_FAILED) + { + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_SERVICE_FAILED; + } + if (eraseState == PLSR_FLASH_ERASE_NONE) + { + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_SERVICE_READY; + } + if ((eraseState < PLSR_FLASH_ERASE_SECTOR_A) + || (eraseState > PLSR_FLASH_ERASE_SECTOR_B)) + { + PlsrFlashReserveEraseState = PLSR_FLASH_ERASE_FAILED; + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_SERVICE_FAILED; + } + for (index = 0U; index < 4U; index++) + { + if ((PlsrTimerRunning[index] != 0U) + || (PlsrTimerIrqActive[index] != 0U)) + { + PlsrPlatformExitCritical(criticalState); + return PLSR_PLATFORM_SERVICE_DEFERRED; + } + } + sectorIndex = (uint8_t)(eraseState - PLSR_FLASH_ERASE_SECTOR_A); + PlsrPlatformExitCritical(criticalState); + + if (PlsrFlashEraseReserve(sectorIndex) == 0U) + { + PlsrFlashReserveEraseState = PLSR_FLASH_ERASE_FAILED; + return PLSR_PLATFORM_SERVICE_FAILED; + } + + PlsrFlashNextErasedAddress[sectorIndex] = + (sectorIndex == 0U) ? PLSR_FLASH_SLOT_A_ADDRESS + : PLSR_FLASH_SLOT_B_ADDRESS; + PlsrFlashReserveEraseState = PLSR_FLASH_ERASE_NONE; + return PLSR_PLATFORM_SERVICE_READY; +} + uint8_t PlsrPlatformSave(const PLSR_PERSIST_PAYLOAD *payload) { - const PLSR_FLASH_RECORD *slotA = - (const PLSR_FLASH_RECORD *)PLSR_FLASH_SLOT_A_ADDRESS; - const PLSR_FLASH_RECORD *slotB = - (const PLSR_FLASH_RECORD *)PLSR_FLASH_SLOT_B_ADDRESS; - uint8_t validA; - uint8_t validB; - uint32_t newestGeneration = 0UL; + PLSR_FLASH_SECTOR_SCAN scanA; + PLSR_FLASH_SECTOR_SCAN scanB; + uint8_t newestVersion; + uint32_t newestSectorAddress; + uint8_t targetIndex; uint32_t targetAddress; - uint32_t targetSector; - uint32_t sectorError; uint32_t index; uint32_t wordCount; const uint32_t *words; - FLASH_EraseInitTypeDef erase; HAL_StatusTypeDef status = HAL_OK; if (payload == NULL) @@ -994,65 +3425,88 @@ uint8_t PlsrPlatformSave(const PLSR_PERSIST_PAYLOAD *payload) return 0U; } - validA = PlsrFlashRecordIsValid(slotA); - validB = PlsrFlashRecordIsValid(slotB); - if ((validA != 0U) && (validB != 0U)) + if (PlsrFlashJournalInitialized == 0U) { - if (PlsrGenerationIsNewer(slotB->generation, slotA->generation) != 0U) - { - newestGeneration = slotB->generation; - targetAddress = PLSR_FLASH_SLOT_A_ADDRESS; - targetSector = FLASH_SECTOR_10; - } - else + (void)PlsrFlashInitializeJournal(&scanA, &scanB, &newestVersion, + &newestSectorAddress); + (void)newestVersion; + (void)newestSectorAddress; + } + + if (PlsrFlashNewestAddress != 0UL) + { + targetIndex = PlsrFlashSectorIndex(PlsrFlashNewestAddress); + if (PlsrFlashNextErasedAddress[targetIndex] == 0UL) { - newestGeneration = slotA->generation; - targetAddress = PLSR_FLASH_SLOT_B_ADDRESS; - targetSector = FLASH_SECTOR_11; + targetIndex ^= 1U; } } - else if (validA != 0U) + else if (PlsrFlashNextErasedAddress[0] != 0UL) + { + targetIndex = 0U; + } + else { - newestGeneration = slotA->generation; - targetAddress = PLSR_FLASH_SLOT_B_ADDRESS; - targetSector = FLASH_SECTOR_11; + targetIndex = 1U; } - else if (validB != 0U) + + targetAddress = PlsrFlashNextErasedAddress[targetIndex]; + if ((targetAddress != 0UL) + && ((PlsrFlashAddressIsJournalSlot(targetIndex, targetAddress) == 0U) + || (PlsrFlashSlotIsErased(targetAddress) == 0U))) { - newestGeneration = slotB->generation; - targetAddress = PLSR_FLASH_SLOT_A_ADDRESS; - targetSector = FLASH_SECTOR_10; + targetAddress = 0UL; + PlsrFlashNextErasedAddress[targetIndex] = 0UL; } - else + if (targetAddress == 0UL) { - targetAddress = PLSR_FLASH_SLOT_A_ADDRESS; - targetSector = FLASH_SECTOR_10; + uint8_t newestIndex = (PlsrFlashNewestAddress != 0UL) + ? PlsrFlashSectorIndex( + PlsrFlashNewestAddress) + : 0xFFU; + uint8_t alternateIndex = targetIndex ^ 1U; + + if ((targetIndex == newestIndex) + || (PlsrFlashNextErasedAddress[alternateIndex] != 0UL)) + { + targetIndex = alternateIndex; + targetAddress = PlsrFlashNextErasedAddress[targetIndex]; + if ((targetAddress != 0UL) + && ((PlsrFlashAddressIsJournalSlot(targetIndex, + targetAddress) == 0U) + || (PlsrFlashSlotIsErased(targetAddress) == 0U))) + { + targetAddress = 0UL; + PlsrFlashNextErasedAddress[targetIndex] = 0UL; + } + } + if (targetAddress == 0UL) + { + return 0U; + } } + PlsrFlashNextErasedAddress[targetIndex] = + PlsrFlashFindErasedAfter(targetIndex, targetAddress); + (void)memset(&PlsrFlashRecordBuffer, 0, sizeof(PlsrFlashRecordBuffer)); PlsrFlashRecordBuffer.magic = PLSR_FLASH_MAGIC; PlsrFlashRecordBuffer.version = PLSR_FLASH_VERSION; PlsrFlashRecordBuffer.payloadSize = sizeof(PLSR_PERSIST_PAYLOAD); - PlsrFlashRecordBuffer.generation = newestGeneration + 1UL; + PlsrFlashRecordBuffer.generation = PlsrFlashNewestGeneration + 1UL; PlsrFlashRecordBuffer.payload = *payload; - PlsrFlashRecordBuffer.crc32 = PlsrFlashRecordCrc(&PlsrFlashRecordBuffer); + PlsrFlashRecordBuffer.crc32 = + PlsrFlashRecordCrc(&PlsrFlashRecordBuffer, + sizeof(PlsrFlashRecordBuffer.payload)); if (HAL_FLASH_Unlock() != HAL_OK) { + (void)HAL_FLASH_Lock(); return 0U; } __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); - erase.TypeErase = FLASH_TYPEERASE_SECTORS; - erase.VoltageRange = FLASH_VOLTAGE_RANGE_3; - erase.Sector = targetSector; - erase.NbSectors = 1U; - if (HAL_FLASHEx_Erase(&erase, §orError) != HAL_OK) - { - status = HAL_ERROR; - } - words = (const uint32_t *)&PlsrFlashRecordBuffer; wordCount = sizeof(PlsrFlashRecordBuffer) / sizeof(uint32_t); if (status == HAL_OK) @@ -1076,14 +3530,16 @@ uint8_t PlsrPlatformSave(const PLSR_PERSIST_PAYLOAD *payload) } if (HAL_FLASH_Lock() != HAL_OK) { + (void)HAL_FLASH_Lock(); status = HAL_ERROR; } - if ((status == HAL_OK) - && (PlsrFlashRecordIsValid( - (const PLSR_FLASH_RECORD *)targetAddress) != 0U)) + if (PlsrFlashRecordVersion((const void *)targetAddress) + == PLSR_FLASH_VERSION) { - return 1U; + PlsrFlashNewestAddress = targetAddress; + PlsrFlashNewestGeneration = PlsrFlashRecordBuffer.generation; + return (status == HAL_OK) ? 1U : 0U; } return 0U; } @@ -1151,52 +3607,273 @@ void PlsrPlatformExitCritical(uint32_t state) static void PlsrHandleTimerIrq(uint8_t pulseOutput) { - TIM_TypeDef *timer = PlsrTimerMap[pulseOutput].timer; -#if PLSR_ENABLE_IRQ_CYCLE_DIAG + TIM_TypeDef *timer; +#if PLSR_DEBUG_TIMING uint32_t startedAt; uint32_t elapsedCycles; + uint8_t timingOutput = pulseOutput; + + startedAt = DWT->CYCCNT; +#endif + timer = PlsrTimerMap[pulseOutput].timer; + + if (PlsrTimerIrqActive[pulseOutput] != 0U) + { +#if PLSR_DEBUG_TIMING + goto irq_record; +#else + return; +#endif + } + PlsrTimerIrqActive[pulseOutput] = 1U; + + if (((timer->SR & TIM_SR_CC1IF) != 0UL) + && ((timer->DIER & TIM_DIER_CC1IE) != 0UL)) + { + uint8_t owner = ((pulseOutput & 2U) == 0U) ? 0U : 2U; + +#if PLSR_DEBUG_TIMING + timingOutput = owner; #endif + timer->SR = ~TIM_SR_CC1IF; + if ((owner <= 2U) + && (PlsrTimerRunning[owner] != 0U) + && (PlsrTimerOutputMode[owner] == PLSR_OUTPUT_AB)) + { + uint8_t pairOutput = (uint8_t)(owner + 1U); + TIM_TypeDef *baseTimer = PlsrTimerMap[owner].timer; + TIM_TypeDef *pairTimer = PlsrTimerMap[pairOutput].timer; + PLSR_AB_SETTING pending; + + if (PlsrAbStopPending[owner] != 0U) + { + if (PlsrAbCanFastGateAtZero(owner) == 0U) + { + goto irq_done; + } + baseTimer->DIER &= ~(TIM_DIER_CC1IE | TIM_DIER_UIE); + pairTimer->DIER &= ~(TIM_DIER_CC1IE | TIM_DIER_UIE); + baseTimer->SR = ~TIM_SR_CC1IF; + pairTimer->SR = ~TIM_SR_CC1IF; + PlsrFrequencyVerifyPending[owner] = + PLSR_FREQUENCY_VERIFY_NONE; + PlsrAbVerifyOwner[owner] = PLSR_COUNTER_NONE; + PlsrAbVerifyOwner[pairOutput] = PLSR_COUNTER_NONE; + PlsrAbFastGate(owner); + PlsrAbFastGated[owner] = 1U; + PlsrDeferredPulsePending[owner] = 0U; + PlsrPulseTimerIrq(owner); + goto irq_done; + } + if (pulseOutput != PlsrAbLagAxis[owner]) + { + if (PlsrDeferredPulsePending[owner] != 0U) + { + PlsrDeferredPulsePending[owner] = 0U; + timer->DIER &= ~TIM_DIER_CC1IE; + PlsrPulseTimerIrq(owner); + } + goto irq_done; + } + if (PlsrDeferredPulsePending[owner] != 0U) + { + goto irq_done; + } + if (PlsrAbFrequencyPending[owner] != 0U) + { + pending = PlsrAbPendingSetting[owner]; + PlsrAbFrequencyPending[owner] = 0U; + PlsrAbLoadAndStart(owner, &pending); + PlsrAbActiveSetting[owner] = pending; + PlsrTimerActiveSetting[owner] = + PlsrTimerQueuedSetting[owner]; + PlsrTimerActiveFrequencyHz[owner] = + pending.actualFrequencyHz; + PlsrDeferredPulsePending[owner] = 1U; + PlsrAbScheduleFrequencyVerify(owner); + goto irq_done; + } + PlsrPulseTimerIrq(owner); + } + goto irq_done; + } if (((timer->SR & TIM_SR_UIF) != 0UL) && ((timer->DIER & TIM_DIER_UIE) != 0UL)) { -#if PLSR_ENABLE_IRQ_CYCLE_DIAG - startedAt = DWT->CYCCNT; -#endif - timer->SR = ~TIM_SR_UIF; - PlsrTimerActiveFrequencyHz[pulseOutput] = - PlsrTimerQueuedFrequencyHz[pulseOutput]; - PlsrPulseTimerIrq(pulseOutput); -#if PLSR_ENABLE_IRQ_CYCLE_DIAG - elapsedCycles = DWT->CYCCNT - startedAt; - PlsrIrqCount[pulseOutput]++; - PlsrIrqLastCycles[pulseOutput] = elapsedCycles; - if (elapsedCycles > PlsrIrqMaxCycles[pulseOutput]) + timer->SR = ~(TIM_SR_UIF | TIM_SR_CC1IF); + if (PlsrPlatformSettingsDiffer( + &PlsrTimerActiveSetting[pulseOutput], + &PlsrTimerQueuedSetting[pulseOutput]) != 0U) { - PlsrIrqMaxCycles[pulseOutput] = elapsedCycles; + PlsrFrequencyVerifyPending[pulseOutput] = 1U; + PlsrTimerActiveFrequencyHz[pulseOutput] = + PlsrTimerQueuedFrequencyHz[pulseOutput]; + PlsrTimerActiveSetting[pulseOutput] = + PlsrTimerQueuedSetting[pulseOutput]; } + PlsrPulseTimerIrq(pulseOutput); + } +irq_done: + PlsrTimerIrqActive[pulseOutput] = 0U; +#if PLSR_DEBUG_TIMING +irq_record: + elapsedCycles = DWT->CYCCNT - startedAt; + PlsrIrqCount[timingOutput]++; + PlsrIrqLastCycles[timingOutput] = elapsedCycles; + if (elapsedCycles > PlsrIrqMaxCycles[timingOutput]) + { + PlsrIrqMaxCycles[timingOutput] = elapsedCycles; + } +#endif +} + +static uint8_t PlsrHandleScheduledAbVerify(uint8_t pulseOutput) +{ + uint8_t verifyOwner = PlsrAbVerifyOwner[pulseOutput]; + TIM_TypeDef *timer; +#if PLSR_DEBUG_TIMING + uint32_t startedAt; + uint32_t elapsedCycles; #endif + + if (verifyOwner > 2U) + { + return 0U; + } + timer = PlsrTimerMap[pulseOutput].timer; + if (((timer->SR & TIM_SR_UIF) == 0UL) + || ((timer->DIER & TIM_DIER_UIE) == 0UL)) + { + return 0U; + } +#if PLSR_DEBUG_TIMING + startedAt = DWT->CYCCNT; +#endif + timer->SR = ~TIM_SR_UIF; + timer->DIER &= ~TIM_DIER_UIE; + PlsrAbVerifyOwner[pulseOutput] = PLSR_COUNTER_NONE; + if (PlsrFrequencyVerifyPending[verifyOwner] + == PLSR_FREQUENCY_VERIFY_AB_AUX_IRQ) + { + PlsrFrequencyVerifyPending[verifyOwner] = + PLSR_FREQUENCY_VERIFY_NONE; + PlsrFrequencyVerifyPulseCount[verifyOwner] = 0U; + (void)PlsrVerifyActiveFrequency(verifyOwner); + } +#if PLSR_DEBUG_TIMING + elapsedCycles = DWT->CYCCNT - startedAt; + PlsrIrqCount[verifyOwner]++; + PlsrIrqLastCycles[verifyOwner] = elapsedCycles; + if (elapsedCycles > PlsrIrqMaxCycles[verifyOwner]) + { + PlsrIrqMaxCycles[verifyOwner] = elapsedCycles; + } +#endif + return 1U; +} + +static uint8_t PlsrFinalStopIrqIsPending(uint8_t pulseOutput) +{ + uint8_t owner = ((pulseOutput & 2U) == 0U) ? 0U : 2U; + TIM_TypeDef *timer = PlsrTimerMap[pulseOutput].timer; + + return ((PlsrAbStopPending[owner] != 0U) + && ((timer->SR & TIM_SR_CC1IF) != 0UL) + && ((timer->DIER & TIM_DIER_CC1IE) != 0UL)) ? 1U : 0U; +} + +static uint8_t PlsrHandleFinalArmJob(uint8_t pulseOutput) +{ + uint8_t owner = PlsrAbFinalArmJobOwner[pulseOutput]; +#if PLSR_DEBUG_TIMING + uint32_t startedAt; + uint32_t elapsedCycles; +#endif + + if (owner > 2U) + { + return 0U; + } + PlsrAbFinalArmJobOwner[pulseOutput] = PLSR_COUNTER_NONE; +#if PLSR_DEBUG_TIMING + startedAt = DWT->CYCCNT; +#endif + PlsrFinalArmJobIrq(owner); +#if PLSR_DEBUG_TIMING + elapsedCycles = DWT->CYCCNT - startedAt; + PlsrFinalArmJobLastCycles[owner] = elapsedCycles; + if (elapsedCycles > PlsrFinalArmJobMaxCycles[owner]) + { + PlsrFinalArmJobMaxCycles[owner] = elapsedCycles; + } +#endif + return 1U; +} + +static void PlsrDispatchTimerIrq(uint8_t pulseOutput) +{ + if (PlsrFinalStopIrqIsPending(pulseOutput) != 0U) + { + PlsrHandleTimerIrq(pulseOutput); + return; + } + if (PlsrHandleFinalArmJob(pulseOutput) != 0U) + { + return; + } + if (PlsrHandleScheduledAbVerify(pulseOutput) == 0U) + { + PlsrHandleTimerIrq(pulseOutput); } } void TIM1_UP_TIM10_IRQHandler(void) { - PlsrHandleTimerIrq(0U); + PlsrDispatchTimerIrq(0U); } void TIM8_UP_TIM13_IRQHandler(void) { - PlsrHandleTimerIrq(1U); + PlsrDispatchTimerIrq(1U); } void TIM1_TRG_COM_TIM11_IRQHandler(void) { - PlsrHandleTimerIrq(2U); + PlsrDispatchTimerIrq(2U); } void TIM8_TRG_COM_TIM14_IRQHandler(void) { - PlsrHandleTimerIrq(3U); + PlsrDispatchTimerIrq(3U); +} + +static void PlsrHandleCounterIrq(uint8_t counterIndex) +{ + TIM_TypeDef *counter; + + if (counterIndex >= PLSR_COUNTER_COUNT) + { + return; + } + counter = PlsrCounters[counterIndex]; + if (((counter->SR & TIM_SR_UIF) != 0UL) + && ((counter->DIER & TIM_DIER_UIE) != 0UL)) + { + counter->SR = ~TIM_SR_UIF; + PlsrCounterOverflowPulses[counterIndex] += + PLSR_COUNTER_BLOCK_PULSES; + } +} + +void TIM1_BRK_TIM9_IRQHandler(void) +{ + PlsrHandleCounterIrq(0U); +} + +void TIM8_BRK_TIM12_IRQHandler(void) +{ + PlsrHandleCounterIrq(1U); } #endif /* PLSR_HOST_TEST */ diff --git a/tests/plsr_host/test_plsr_host.c b/tests/plsr_host/test_plsr_host.c index 033b6bd..1113634 100644 --- a/tests/plsr_host/test_plsr_host.c +++ b/tests/plsr_host/test_plsr_host.c @@ -17,8 +17,51 @@ #define PLSR_COMMAND_START (0x0001U) #define PLSR_COMMAND_STOP (0x0002U) #define PLSR_COMMAND_CLEAR (0x0004U) +#define PLSR_ERROR_TIMER (4U) #define PLSR_ERROR_COUNT (5U) +#define PLSR_OUTPUT_MODE_PULSE_DIR (0U) +#define PLSR_OUTPUT_MODE_AB (1U) + +#define PLSR_DIAG_FLAGS_ADDRESS (0x2100U) +#define PLSR_DIAG_REASON_ADDRESS (0x2101U) +#define PLSR_DIAG_SEGMENT_ADDRESS (0x2102U) +#define PLSR_DIAG_MODE_DIRECTION_ADDRESS (0x2103U) +#define PLSR_DIAG_EXPECTED_COUNT_ADDRESS (0x2104U) +#define PLSR_DIAG_OBSERVED_COUNT_ADDRESS (0x2106U) +#define PLSR_DIAG_COUNT_ERROR_ADDRESS (0x2108U) +#define PLSR_DIAG_REQUESTED_FREQUENCY_ADDRESS (0x210AU) +#define PLSR_DIAG_EXPECTED_TIMER_ADDRESS (0x210CU) +#define PLSR_DIAG_ACTIVE_TIMER_ADDRESS (0x210EU) +#define PLSR_DIAG_REQUEST_ERROR_ADDRESS (0x2110U) +#define PLSR_DIAG_SAMPLE_COUNT_ADDRESS (0x2112U) +#define PLSR_DIAG_MISMATCH_COUNT_ADDRESS (0x2114U) +#define PLSR_DIAG_MAX_ERROR_ADDRESS (0x2116U) +#define PLSR_DIAG_FIRST_MISMATCH_ADDRESS (0x2118U) + +#define PLSR_DIAG_MONITORING_ACTIVE (0x0001U) +#define PLSR_DIAG_COUNT_CHECKED (0x0002U) +#define PLSR_DIAG_COUNT_PASS (0x0004U) +#define PLSR_DIAG_FREQUENCY_CHECKED (0x0008U) +#define PLSR_DIAG_FREQUENCY_PASS (0x0010U) +#define PLSR_DIAG_CURVE_CHECKED (0x0020U) +#define PLSR_DIAG_CURVE_PASS (0x0040U) +#define PLSR_DIAG_FAULT_LATCHED (0x0080U) + +#define PLSR_DIAG_REASON_NONE (0U) +#define PLSR_DIAG_REASON_COUNT (1U) +#define PLSR_DIAG_REASON_FREQUENCY (2U) +#define PLSR_DIAG_REASON_CURVE (3U) + +void PlsrTestSetDiagnosticCurveCounts(uint32_t sampleCount, + uint32_t mismatchCount); +uint8_t PlsrTestFlashNeedsStartupRecovery( + uint8_t haveValidRecord, + uint8_t sectorAHasProgrammedSlot, + uint32_t sectorAFirstErasedAddress, + uint8_t sectorBHasProgrammedSlot, + uint32_t sectorBFirstErasedAddress); + static const char *CurrentTest; static unsigned int AssertionCount; static unsigned int FailureCount; @@ -204,6 +247,11 @@ static uint32_t ReadU32(uint16_t address) return (uint32_t)words[0] | ((uint32_t)words[1] << 16U); } +static int32_t ReadI32(uint16_t address) +{ + return (int32_t)ReadU32(address); +} + static int32_t ReadPosition(void) { return (int32_t)ReadU32(PLSR_STATUS_FIRST_ADDRESS); @@ -337,12 +385,20 @@ static void TestProtocolBoundaries(void) PlsrModbusReadHolding(0x0FFEU, 1U, &value)); EXPECT_U(PLSR_MB_NOT_HANDLED, PlsrModbusReadHolding(0x1198U, 1U, &value)); + EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, + PlsrModbusReadHolding(0x11FFU, 2U, values)); + EXPECT_U(PLSR_MB_NOT_HANDLED, + PlsrModbusReadHolding(0x1201U, 1U, &value)); EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, PlsrModbusReadHolding(0x0FFFU, 2U, values)); EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, PlsrModbusReadHolding(0x1197U, 2U, values)); EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, PlsrModbusReadHolding(0x2006U, 2U, values)); + EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, + PlsrModbusReadHolding(0x2119U, 2U, values)); + EXPECT_U(PLSR_MB_NOT_HANDLED, + PlsrModbusReadHolding(0x211AU, 1U, &value)); EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, PlsrModbusReadHolding(0xFFFFU, 2U, values)); EXPECT_U(PLSR_MB_ILLEGAL_VALUE, @@ -372,6 +428,9 @@ static void TestProtocolBoundaries(void) EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, PlsrModbusWriteHolding(0x2000U, 1U, &value)); + EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, + PlsrModbusWriteHolding(PLSR_DIAGNOSTIC_FIRST_ADDRESS, + 1U, &value)); EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, PlsrModbusWriteHolding(0x3000U, 2U, values)); value = 3U; @@ -385,207 +444,1479 @@ static void TestProtocolBoundaries(void) EXPECT_U(PLSR_MB_OK, WriteWord(0x1197U, 0U)); EXPECT_U(0U, ReadWord(0x1197U)); EXPECT_U(PLSR_MB_NOT_HANDLED, WriteWord(0x1198U, 0U)); + + EXPECT_U(PLSR_OUTPUT_MODE_PULSE_DIR, + ReadWord(PLSR_OUTPUT_MODE_ADDRESS)); + EXPECT_U(PLSR_MB_OK, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); + EXPECT_U(PLSR_OUTPUT_MODE_AB, ReadWord(PLSR_OUTPUT_MODE_ADDRESS)); + EXPECT_U(PLSR_MB_ILLEGAL_VALUE, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, 2U)); + EXPECT_U(PLSR_OUTPUT_MODE_AB, ReadWord(PLSR_OUTPUT_MODE_ADDRESS)); + + EXPECT_U(0U, ReadWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS)); + EXPECT_U(PLSR_MB_OK, WriteWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS, 0U)); + EXPECT_U(PLSR_MB_OK, WriteWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS, 1U)); + EXPECT_U(PLSR_MB_ILLEGAL_VALUE, + WriteWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS, 2U)); + EXPECT_U(PLSR_MB_ILLEGAL_ADDRESS, + PlsrModbusWriteHolding(PLSR_DIAGNOSTIC_CONTROL_ADDRESS, + 2U, values)); + EXPECT_U(0U, ReadWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS)); } -static void TestWaitZeroUsesOneMillisecond(void) +static void ConfigureAbMotion(uint16_t pulseOutput, + int32_t pulses, + uint32_t frequencyHz, + uint32_t startStopFrequencyHz, + uint16_t accelerationTimeMs, + uint16_t decelerationTimeMs) { - ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 2U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 0U); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + frequencyHz, startStopFrequencyHz, + startStopFrequencyHz, accelerationTimeMs, + decelerationTimeMs); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, pulseOutput)); EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 1L, PLSR_WAIT_TIME, 0U, 0U, 0U)); + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); EXPECT_U(PLSR_MB_OK, - SetSegment(2U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + SetSegment(1U, frequencyHz, pulses, PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); - EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - PlsrTestEmitPulses(1UL); +} - PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_WAITING, ReadStatus()); - EXPECT_U(1U, ReadCurrentSegment()); - EXPECT_U(0U, PlsrTestPulseIsActive()); +static void ExpectDiagnosticCleared(void) +{ + uint16_t words[0x1AU]; + uint16_t index; - PlsrPoll1ms(); - EXPECT_U(2U, ReadCurrentSegment()); - EXPECT_U(1U, PlsrTestPulseIsActive()); - PlsrTestEmitPulses(1UL); - PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_I(2L, ReadPosition()); + EXPECT_U(PLSR_MB_OK, + PlsrModbusReadHolding(PLSR_DIAGNOSTIC_FIRST_ADDRESS, + 0x1AU, words)); + for (index = 0U; index < 0x18U; index++) + { + EXPECT_U(0U, words[index]); + } + EXPECT_U(0xFFFFU, words[0x18U]); + EXPECT_U(0xFFFFU, words[0x19U]); } -static void TestActZeroSkipsWithoutPulse(void) +static void ClearDiagnostic(void) { - ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 2U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 0U); EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 100L, PLSR_ACT_TIME, 0U, 0U, 0U)); - EXPECT_U(PLSR_MB_OK, - SetSegment(2U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 0U)); + WriteWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS, 1U)); + ExpectDiagnosticCleared(); +} + +static void ExpectDiagnosticInterrupted(uint32_t expectedCycles, + uint32_t observedCycles) +{ + uint16_t flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + + EXPECT_U(0U, flags & PLSR_DIAG_MONITORING_ACTIVE); + EXPECT_U(0U, flags & (PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS)); + EXPECT_U(0U, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_NONE, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + EXPECT_U(expectedCycles, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(observedCycles, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_COUNT_ERROR_ADDRESS)); +} + +static void TestAbOutputPairsAndPhaseSequence(void) +{ + static const uint8_t positivePhases[4] = {2U, 3U, 1U, 0U}; + static const uint8_t negativePhases[4] = {1U, 3U, 2U, 0U}; + uint32_t transitionsBefore; + uint16_t quarter; + + ResetCore(); + ConfigureAbMotion(0U, 2L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1001U, 3U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 250U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1006U, 1U)); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0U, PlsrTestAbTransitionCount()); EXPECT_U(1U, ReadCurrentSegment()); - EXPECT_I(0L, ReadPosition()); + EXPECT_U(0x0101U, ReadWord(PLSR_DIAG_MODE_DIRECTION_ADDRESS)); - PlsrPoll1ms(); - EXPECT_U(2U, ReadCurrentSegment()); + for (quarter = 0U; quarter < 4U; quarter++) + { + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(positivePhases[quarter], PlsrTestAbPhase()); + EXPECT_U((uint32_t)quarter + 1UL, + PlsrTestAbTransitionCount()); + EXPECT_I((quarter == 3U) ? 1L : 0L, ReadPosition()); + } EXPECT_U(1U, PlsrTestPulseIsActive()); - EXPECT_I(0L, ReadPosition()); + + transitionsBefore = PlsrTestAbTransitionCount(); PlsrTestEmitPulses(1UL); + EXPECT_U(transitionsBefore + 4UL, PlsrTestAbTransitionCount()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0U, PlsrTestPulseIsActive()); PlsrPoll1ms(); EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_I(1L, ReadPosition()); -} + EXPECT_I(2L, ReadPosition()); -static void TestRelativeAndAbsoluteZeroDisplacement(void) -{ ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 0U); - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 0L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 0U)); + ConfigureAbMotion(2U, -1L, 2000UL, 2000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1001U, 0U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 250U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1006U, 1U)); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0x0001U, ReadWord(PLSR_DIAG_MODE_DIRECTION_ADDRESS)); + for (quarter = 0U; quarter < 4U; quarter++) + { + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(negativePhases[quarter], PlsrTestAbPhase()); + EXPECT_I((quarter == 3U) ? -1L : 0L, ReadPosition()); + } EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); PlsrPoll1ms(); EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_I(0L, ReadPosition()); + EXPECT_I(-1L, ReadPosition()); +} - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 5L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 0U)); - EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - PlsrTestEmitPulses(5UL); - PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_I(5L, ReadPosition()); +static void TestAbSinglePulseMaximumFrequencyMatrix(void) +{ + static const uint16_t outputs[2] = {0U, 2U}; + static const int32_t directions[2] = {1L, -1L}; + uint32_t transitionsBefore; + uint16_t outputIndex; + uint16_t directionIndex; - EXPECT_U(PLSR_MB_OK, WriteWord(0x1008U, PLSR_POSITION_ABSOLUTE)); - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 5L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 0U)); + for (outputIndex = 0U; outputIndex < 2U; outputIndex++) + { + for (directionIndex = 0U; directionIndex < 2U; directionIndex++) + { + ResetCore(); + ConfigureAbMotion(outputs[outputIndex], directions[directionIndex], + 100000UL, 100000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0UL, PlsrTestAbTransitionCount()); + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(directions[directionIndex], ReadPosition()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + transitionsBefore = PlsrTestAbTransitionCount(); + PlsrTestEmitAbQuarters(8UL); + EXPECT_U(transitionsBefore, PlsrTestAbTransitionCount()); + EXPECT_I(directions[directionIndex], ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_U(0U, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + } + } +} + +static void TestAbFastGateCleanupIsDeferredToPoll(void) +{ + ResetCore(); + ConfigureAbMotion(0U, 1L, 100000UL, 100000UL, 0U, 0U); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0UL, PlsrTestAbCleanupCount()); + + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + EXPECT_U(0UL, PlsrTestAbCleanupCount()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_I(5L, ReadPosition()); + EXPECT_U(1UL, PlsrTestAbCleanupCount()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); } -static void TestSelfJumpCanStop(void) +static void TestAbFinalArmJobTailChainsOnce(void) { - unsigned int loop; - - ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 0U); - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 2L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 1U)); - EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + static const uint16_t outputs[2] = {0U, 2U}; + static const int32_t displacements[2] = {2L, -2L}; + uint16_t index; - for (loop = 0U; loop < 3U; loop++) + for (index = 0U; index < 2U; index++) { - PlsrTestEmitPulses(2UL); - PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); - EXPECT_U(1U, ReadCurrentSegment()); + ResetCore(); + ConfigureAbMotion(outputs[index], displacements[index], + 100000UL, 100000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + PlsrTestEmitAbQuarters(4UL); EXPECT_U(1U, PlsrTestPulseIsActive()); - } + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0UL, PlsrTestAbFastGateCount()); + EXPECT_I((displacements[index] > 0L) ? 1L : -1L, + ReadPosition()); - StopAndSettle(); + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(8UL, PlsrTestAbTransitionCount()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + EXPECT_I(displacements[index], ReadPosition()); + PlsrTestServiceFinalArmJob(); + EXPECT_I(displacements[index], ReadPosition()); + + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(2UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(2UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + } } -static void TestStopDeceleratesBeforeCut(void) +static void TestAbFinalBoundaryBeforeArmJobIsNoOp(void) { - unsigned int tick; - uint32_t middleFrequency; - ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 1000U); - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 10000L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 0U)); + ConfigureAbMotion(0U, 2L, 100000UL, 100000UL, 0U, 0U); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - EXPECT_U(1000UL, PlsrTestOutputFrequency()); - EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); - EXPECT_U(PLSR_STATUS_DECELERATING, ReadStatus()); - EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestDeferFinalArmJob(1U); - for (tick = 0U; tick < 450U; tick++) - { - PlsrPoll1ms(); - PlsrTestEmitPulses(1UL); - } - middleFrequency = PlsrTestOutputFrequency(); - EXPECT_TRUE((middleFrequency > 100UL) && (middleFrequency < 1000UL)); + PlsrTestEmitAbQuarters(4UL); EXPECT_U(1U, PlsrTestPulseIsActive()); - EXPECT_U(PLSR_MB_OK, QueueCommand(PLSR_COMMAND_STOP)); + EXPECT_I(1L, ReadPosition()); - for (tick = 450U; tick < 900U; tick++) - { - PlsrPoll1ms(); - PlsrTestEmitPulses(1UL); - } - EXPECT_TRUE(PlsrTestOutputFrequency() > 100UL); - EXPECT_TRUE(PlsrTestOutputFrequency() <= 103UL); - EXPECT_U(PLSR_STATUS_DECELERATING, ReadStatus()); - EXPECT_U(1U, PlsrTestPulseIsActive()); - PlsrTestEmitPulses(1UL); - EXPECT_U(100UL, PlsrTestOutputFrequency()); + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(8UL, PlsrTestAbTransitionCount()); + EXPECT_I(2L, ReadPosition()); + + PlsrTestServiceFinalArmJob(); + PlsrTestDeferFinalArmJob(0U); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(2L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(2UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); +} + +static void TestAbFinalArmJobFailureDoesNotCountFinalPulse(void) +{ + ResetCore(); + ConfigureAbMotion(2U, -2L, 100000UL, 100000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestDeferFinalArmJob(1U); + + PlsrTestEmitAbQuarters(4UL); EXPECT_U(1U, PlsrTestPulseIsActive()); - PlsrTestEmitPulses(1UL); + EXPECT_I(-1L, ReadPosition()); + PlsrTestFailNextStopRequest(); + PlsrTestServiceFinalArmJob(); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_I(-1L, ReadPosition()); + PlsrTestEmitAbQuarters(8UL); + EXPECT_I(-1L, ReadPosition()); + PlsrTestDeferFinalArmJob(0U); PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); - EXPECT_I(902L, ReadPosition()); + EXPECT_U(PLSR_STATUS_ERROR, ReadStatus()); + EXPECT_U(PLSR_ERROR_TIMER, ReadError()); + EXPECT_I(-1L, ReadPosition()); + ExpectDiagnosticInterrupted(2UL, 1UL); } -static void TestStopAtPendingBoundary(void) +static void TestAbStopMailboxAtPendingBoundary(void) { ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 0U); - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, - 0U, 0U, 0U)); + ConfigureAbMotion(0U, 1L, 100000UL, 100000UL, 0U, 0U); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - PlsrTestEmitPulses(1UL); + PlsrTestEmitAbQuarters(4UL); EXPECT_U(0U, PlsrTestPulseIsActive()); - EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + EXPECT_U(0UL, PlsrTestAbCleanupCount()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_U(PLSR_MB_DEVICE_BUSY, QueueCommand(PLSR_COMMAND_START)); + EXPECT_U(PLSR_MB_DEVICE_BUSY, QueueCommand(PLSR_COMMAND_CLEAR)); + EXPECT_U(PLSR_MB_OK, QueueCommand(PLSR_COMMAND_STOP)); + + PlsrPoll1ms(); EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + EXPECT_U(0UL, PlsrTestAbCleanupCount()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); PlsrPoll1ms(); EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); EXPECT_U(0U, ReadCurrentSegment()); + EXPECT_U(1UL, PlsrTestAbCleanupCount()); EXPECT_I(1L, ReadPosition()); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_CLEAR)); + EXPECT_U(PLSR_STATUS_IDLE, ReadStatus()); + EXPECT_I(0L, ReadPosition()); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitAbQuarters(4UL); PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(2UL, PlsrTestAbCleanupCount()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(1UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); +} + +static void TestAbActAndExtCutsFinishAtZero(void) +{ + uint32_t transitionsBefore; + + ResetCore(); + ConfigureAbMotion(0U, 100L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_ACT_TIME, + 0U, 1U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(2UL); + EXPECT_U(3U, PlsrTestAbPhase()); + PlsrPoll1ms(); + PlsrTestEmitAbQuarters(2UL); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(1L, ReadPosition()); + transitionsBefore = PlsrTestAbTransitionCount(); + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(transitionsBefore, PlsrTestAbTransitionCount()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(0U, ReadWord(PLSR_DIAG_FLAGS_ADDRESS) + & PLSR_DIAG_FAULT_LATCHED); + ExpectDiagnosticInterrupted(100UL, 1UL); + + ResetCore(); + ConfigureAbMotion(2U, -100L, 1000UL, 1000UL, 0U, 0U); + PlsrTestSetInput(0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, -100L, PLSR_EXT_SIGNAL, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(3UL); + EXPECT_U(2U, PlsrTestAbPhase()); + PlsrTestSetInput(0U, 1U); + PlsrPoll1ms(); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(-1L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(0U, ReadWord(PLSR_DIAG_FLAGS_ADDRESS) + & PLSR_DIAG_FAULT_LATCHED); + ExpectDiagnosticInterrupted(100UL, 1UL); } -static void TestOneMillisecondDirectionDelay(void) +static void TestAbSubsequentSinglePulsesStayContinuous(void) { ResetCore(); - ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, - 1000UL, 1000UL, 100UL, 0U, 0U); - EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 1U)); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 2U, + PLSR_SEND_SUBSEQUENT, 100000UL, 100000UL, 100000UL, + 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, 0U)); EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 1000UL, 10L, PLSR_EXT_OR_COMPLETE, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 100000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(2U, 100000UL, 1L, PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(2U, ReadCurrentSegment()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); + EXPECT_U(0UL, PlsrTestAbFastGateCount()); + EXPECT_I(1L, ReadPosition()); + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(8UL, PlsrTestAbTransitionCount()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + EXPECT_I(2L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(0U, ReadWord(PLSR_DIAG_FLAGS_ADDRESS) + & PLSR_DIAG_FAULT_LATCHED); +} + +static void TestAbArmedFrequencyWriteDoesNotReopenOutput(void) +{ + ResetCore(); + ConfigureAbMotion(0U, 1L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(2U, PlsrTestAbPhase()); + EXPECT_U(PLSR_MB_OK, WriteU32(0x1100U, 2000UL)); + PlsrPoll1ms(); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + EXPECT_U(1000UL, PlsrTestQueuedFrequency()); + PlsrTestEmitAbQuarters(3UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); + EXPECT_I(1L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(0U, ReadWord(PLSR_DIAG_FLAGS_ADDRESS) + & PLSR_DIAG_FAULT_LATCHED); +} + +static void TestAbStopRequestForcedFault(void) +{ + ResetCore(); + ConfigureAbMotion(0U, 1L, 1000UL, 1000UL, 0U, 0U); + PlsrTestFailNextStopRequest(); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(0L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_ERROR, ReadStatus()); + EXPECT_U(PLSR_ERROR_TIMER, ReadError()); + EXPECT_I(0L, ReadPosition()); + ExpectDiagnosticInterrupted(1UL, 0UL); + + ResetCore(); + ConfigureAbMotion(2U, -100L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(2UL); + PlsrTestFailNextStopRequest(); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(0L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_ERROR, ReadStatus()); + EXPECT_U(PLSR_ERROR_TIMER, ReadError()); + EXPECT_I(0L, ReadPosition()); + ExpectDiagnosticInterrupted(100UL, 0UL); +} + +static void TestAbStopAfterFinalBoundaryIsArmed(void) +{ + ResetCore(); + ConfigureAbMotion(0U, 1L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(2U, PlsrTestAbPhase()); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(PLSR_STATUS_DECELERATING, ReadStatus()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitAbQuarters(3UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + EXPECT_I(1L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(0U, ReadWord(PLSR_DIAG_FLAGS_ADDRESS) + & PLSR_DIAG_FAULT_LATCHED); +} + +static void TestAbStopArmConsumesLatchedFinalQuarterOnce(void) +{ + ResetCore(); + ConfigureAbMotion(0U, 100L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(3UL); + EXPECT_U(1U, PlsrTestAbPhase()); + EXPECT_U(3UL, PlsrTestAbTransitionCount()); + EXPECT_I(0L, ReadPosition()); + + PlsrTestLatchAbFinalQuarterOnNextStopArm(); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4UL, PlsrTestAbTransitionCount()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + EXPECT_I(1L, ReadPosition()); + + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_U(0U, ReadWord(PLSR_DIAG_FLAGS_ADDRESS) + & PLSR_DIAG_FAULT_LATCHED); +} + +static void TestAbRejectsUnpairedOutputs(void) +{ + ResetCore(); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, 1U)); + EXPECT_U(PLSR_MB_ILLEGAL_VALUE, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); + EXPECT_U(PLSR_OUTPUT_MODE_PULSE_DIR, + ReadWord(PLSR_OUTPUT_MODE_ADDRESS)); + EXPECT_U(1U, ReadWord(0x1000U)); + + ResetCore(); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, 3U)); + EXPECT_U(PLSR_MB_ILLEGAL_VALUE, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); + EXPECT_U(PLSR_OUTPUT_MODE_PULSE_DIR, + ReadWord(PLSR_OUTPUT_MODE_ADDRESS)); + + ResetCore(); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, 2U)); + EXPECT_U(PLSR_MB_OK, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); + EXPECT_U(PLSR_MB_ILLEGAL_VALUE, WriteWord(0x1000U, 1U)); + EXPECT_U(2U, ReadWord(0x1000U)); + EXPECT_U(PLSR_MB_ILLEGAL_VALUE, WriteWord(0x1000U, 3U)); + EXPECT_U(2U, ReadWord(0x1000U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, 0U)); + EXPECT_U(0U, ReadWord(0x1000U)); +} + +static void TestAbStopAtCompleteCycleBoundary(void) +{ + ResetCore(); + ConfigureAbMotion(0U, 100L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(2U, PlsrTestAbPhase()); + EXPECT_U(1U, PlsrTestAbTransitionCount()); + EXPECT_I(0L, ReadPosition()); + + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(PLSR_STATUS_DECELERATING, ReadStatus()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(0UL, PlsrTestAbFastGateCount()); + PlsrTestEmitAbQuarters(2UL); + EXPECT_U(1U, PlsrTestAbPhase()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_I(0L, ReadPosition()); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4U, PlsrTestAbTransitionCount()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(1UL, PlsrTestAbFastGateCount()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); +} + +static void TestAbDynamicFrequencyChangesOnlyAtZeroPhase(void) +{ + uint32_t previousFrequency; + uint32_t currentFrequency; + uint16_t quarter; + uint8_t frequencyChanged = 0U; + + ResetCore(); + ConfigureAbMotion(0U, 20L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(2U, PlsrTestAbPhase()); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + + EXPECT_U(PLSR_MB_OK, WriteU32(0x1100U, 2000UL)); + PlsrPoll1ms(); + previousFrequency = PlsrTestOutputFrequency(); + EXPECT_U(1000UL, previousFrequency); + + for (quarter = 0U; quarter < 12U; quarter++) + { + PlsrTestEmitAbQuarters(1UL); + currentFrequency = PlsrTestOutputFrequency(); + if (currentFrequency != previousFrequency) + { + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0U, PlsrTestAbTransitionCount() & 3UL); + EXPECT_U(1000UL, previousFrequency); + EXPECT_U(2000UL, currentFrequency); + frequencyChanged = 1U; + break; + } + EXPECT_U(1000UL, currentFrequency); + previousFrequency = currentFrequency; + } + EXPECT_U(1U, frequencyChanged); + EXPECT_U(1U, PlsrTestPulseIsActive()); + StopAndSettle(); +} + +static void TestAbStaleFrequencyCommitAfterNaturalCompletion(void) +{ + uint16_t flags; + + ResetCore(); + ConfigureAbMotion(0U, 2L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(PLSR_MB_OK, WriteU32(0x1100U, 2000UL)); + PlsrPoll1ms(); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + EXPECT_U(1000UL, PlsrTestQueuedFrequency()); + + PlsrTestCompleteAbCycleOnNextQueueCommit(); + PlsrTestEmitAbQuarters(4UL); + + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(8UL, PlsrTestAbTransitionCount()); + EXPECT_I(2L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS, + flags & (PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS)); + EXPECT_U(0U, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(2UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(2UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_COUNT_ERROR_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_REQUESTED_FREQUENCY_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_EXPECTED_TIMER_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_ACTIVE_TIMER_ADDRESS)); +} + +static void TestAbDirectionReversalRestartsFromZeroPhase(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 2U, + PLSR_SEND_SUBSEQUENT, 1000UL, 1000UL, 1000UL, + 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1000U, 0U)); + EXPECT_U(PLSR_MB_OK, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, PLSR_OUTPUT_MODE_AB)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(2U, 1000UL, -1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + PlsrTestEmitAbQuarters(4UL); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(4U, PlsrTestAbTransitionCount()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(1U, ReadCurrentSegment()); + EXPECT_I(1L, ReadPosition()); + + PlsrPoll1ms(); + EXPECT_U(2U, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(0x0001U, ReadWord(PLSR_DIAG_MODE_DIRECTION_ADDRESS)); + PlsrTestEmitAbQuarters(1UL); + EXPECT_U(1U, PlsrTestAbPhase()); + EXPECT_U(5U, PlsrTestAbTransitionCount()); + EXPECT_I(1L, ReadPosition()); + PlsrTestEmitAbQuarters(3UL); + EXPECT_U(0U, PlsrTestAbPhase()); + EXPECT_U(8U, PlsrTestAbTransitionCount()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(0L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); +} + +static void TestAbModePersistence(void) +{ + ResetCore(); + ConfigureAbMotion(2U, 4L, 2345UL, 2345UL, 0U, 0U); + EXPECT_U(1U, PlsrInit()); + EXPECT_U(PLSR_STATUS_IDLE, ReadStatus()); + EXPECT_U(2U, ReadWord(0x1000U)); + EXPECT_U(PLSR_OUTPUT_MODE_AB, ReadWord(PLSR_OUTPUT_MODE_ADDRESS)); + EXPECT_U(2345UL, ReadU32(0x1100U)); + + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(4UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(4L, ReadPosition()); +} + +static void TestDiagnosticPass(void) +{ + uint16_t flags; + + ResetCore(); + ClearDiagnostic(); + ConfigureAbMotion(0U, 8L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(PLSR_MB_DEVICE_BUSY, + WriteWord(PLSR_OUTPUT_MODE_ADDRESS, + PLSR_OUTPUT_MODE_PULSE_DIR)); + EXPECT_U(PLSR_MB_DEVICE_BUSY, + WriteWord(PLSR_DIAGNOSTIC_CONTROL_ADDRESS, 1U)); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_TRUE((flags & PLSR_DIAG_MONITORING_ACTIVE) != 0U); + EXPECT_U(1U, ReadWord(PLSR_DIAG_SEGMENT_ADDRESS)); + EXPECT_U(0x0101U, ReadWord(PLSR_DIAG_MODE_DIRECTION_ADDRESS)); + EXPECT_U(8UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(0UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_REQUESTED_FREQUENCY_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_EXPECTED_TIMER_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_ACTIVE_TIMER_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_REQUEST_ERROR_ADDRESS)); + + PlsrTestEmitPulses(8UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(0U, flags & PLSR_DIAG_MONITORING_ACTIVE); + EXPECT_U(PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS, + flags & (PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS)); + EXPECT_U(PLSR_DIAG_FREQUENCY_CHECKED | PLSR_DIAG_FREQUENCY_PASS, + flags & (PLSR_DIAG_FREQUENCY_CHECKED + | PLSR_DIAG_FREQUENCY_PASS)); + EXPECT_U(PLSR_DIAG_CURVE_CHECKED | PLSR_DIAG_CURVE_PASS, + flags & (PLSR_DIAG_CURVE_CHECKED | PLSR_DIAG_CURVE_PASS)); + EXPECT_U(0U, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_NONE, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + EXPECT_U(8UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(8UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_COUNT_ERROR_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_REQUESTED_FREQUENCY_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_EXPECTED_TIMER_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_ACTIVE_TIMER_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_REQUEST_ERROR_ADDRESS)); + EXPECT_TRUE(ReadU32(PLSR_DIAG_SAMPLE_COUNT_ADDRESS) > 0UL); + EXPECT_U(0UL, ReadU32(PLSR_DIAG_MISMATCH_COUNT_ADDRESS)); + EXPECT_U(0UL, ReadU32(PLSR_DIAG_MAX_ERROR_ADDRESS)); + EXPECT_U(0xFFFFFFFFUL, + ReadU32(PLSR_DIAG_FIRST_MISMATCH_ADDRESS)); +} + +static void TestDiagnosticCountFaultAndClear(void) +{ + uint16_t flags; + + ResetCore(); + ConfigureAbMotion(0U, 4L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestInjectCountOffset(1L); + PlsrTestEmitPulses(4UL); + PlsrPoll1ms(); + + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_COUNT_CHECKED, + flags & PLSR_DIAG_COUNT_CHECKED); + EXPECT_U(0U, flags & PLSR_DIAG_COUNT_PASS); + EXPECT_U(PLSR_DIAG_FAULT_LATCHED, + flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_COUNT, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + EXPECT_U(4UL, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(5UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_I(1L, ReadI32(PLSR_DIAG_COUNT_ERROR_ADDRESS)); + + ClearDiagnostic(); +} + +static void TestDiagnosticFrequencyFaultAndClear(void) +{ + uint16_t flags; + + ResetCore(); + ConfigureAbMotion(0U, 8L, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestInjectActiveFrequencyOffset(25L); + PlsrTestEmitPulses(8UL); + PlsrPoll1ms(); + + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_FREQUENCY_CHECKED, + flags & PLSR_DIAG_FREQUENCY_CHECKED); + EXPECT_U(0U, flags & PLSR_DIAG_FREQUENCY_PASS); + EXPECT_U(PLSR_DIAG_FAULT_LATCHED, + flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_FREQUENCY, + ReadWord(PLSR_DIAG_REASON_ADDRESS)); + EXPECT_U(1000UL, ReadU32(PLSR_DIAG_EXPECTED_TIMER_ADDRESS)); + EXPECT_U(1025UL, ReadU32(PLSR_DIAG_ACTIVE_TIMER_ADDRESS)); + EXPECT_TRUE(ReadU32(PLSR_DIAG_MISMATCH_COUNT_ADDRESS) > 0UL); + EXPECT_U(25UL, ReadU32(PLSR_DIAG_MAX_ERROR_ADDRESS)); + EXPECT_TRUE(ReadU32(PLSR_DIAG_FIRST_MISMATCH_ADDRESS) + != 0xFFFFFFFFUL); + + ClearDiagnostic(); +} + +static void TestDiagnosticCurveFaultAndClear(void) +{ + uint16_t flags; + + ResetCore(); + ConfigureAbMotion(0U, 50L, 1000UL, 100UL, 1000U, 1000U); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestInjectCurveMismatch(); + PlsrTestEmitPulses(50UL); + PlsrPoll1ms(); + + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_CURVE_CHECKED, + flags & PLSR_DIAG_CURVE_CHECKED); + EXPECT_U(0U, flags & PLSR_DIAG_CURVE_PASS); + EXPECT_U(PLSR_DIAG_FAULT_LATCHED, + flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_CURVE, + ReadWord(PLSR_DIAG_REASON_ADDRESS)); + EXPECT_TRUE(ReadU32(PLSR_DIAG_MISMATCH_COUNT_ADDRESS) > 0UL); + EXPECT_TRUE(ReadU32(PLSR_DIAG_FIRST_MISMATCH_ADDRESS) + != 0xFFFFFFFFUL); + + ClearDiagnostic(); +} + +static void TestDiagnosticInterruptedSegments(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(2UL); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + ExpectDiagnosticInterrupted(100UL, 3UL); + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 10U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + ExpectDiagnosticInterrupted(100UL, 0UL); + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_ACT_TIME, + 0U, 1U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(3UL); + PlsrPoll1ms(); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + ExpectDiagnosticInterrupted(100UL, 4UL); + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + PlsrTestSetInput(0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_EXT_SIGNAL, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(2UL); + PlsrTestSetInput(0U, 1U); + PlsrPoll1ms(); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + ExpectDiagnosticInterrupted(100UL, 3UL); +} + +static void TestDiagnosticFaultLatchNeedsExplicitClear(void) +{ + uint16_t flags; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 4L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestInjectCountOffset(1L); + PlsrTestEmitPulses(4UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_DIAG_REASON_COUNT, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + + PlsrTestInjectCountOffset(0L); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_CLEAR)); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_FAULT_LATCHED, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(0U, flags & PLSR_DIAG_COUNT_PASS); + EXPECT_U(PLSR_DIAG_REASON_COUNT, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(4UL); + PlsrPoll1ms(); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_COUNT_CHECKED, flags & PLSR_DIAG_COUNT_CHECKED); + EXPECT_U(0U, flags & PLSR_DIAG_COUNT_PASS); + EXPECT_U(PLSR_DIAG_FAULT_LATCHED, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_COUNT, ReadWord(PLSR_DIAG_REASON_ADDRESS)); + EXPECT_U(4UL, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_COUNT_ERROR_ADDRESS)); + + ClearDiagnostic(); +} + +static void TestDiagnosticFrequencyPassStaysFailed(void) +{ + uint16_t flags; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 4L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestInjectActiveFrequencyOffset(25L); + PlsrTestEmitPulses(4UL); + PlsrPoll1ms(); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(0U, flags & PLSR_DIAG_FREQUENCY_PASS); + EXPECT_U(PLSR_DIAG_REASON_FREQUENCY, + ReadWord(PLSR_DIAG_REASON_ADDRESS)); + + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(4UL); + PlsrPoll1ms(); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(PLSR_DIAG_FREQUENCY_CHECKED, + flags & PLSR_DIAG_FREQUENCY_CHECKED); + EXPECT_U(0U, flags & PLSR_DIAG_FREQUENCY_PASS); + EXPECT_U(PLSR_DIAG_FAULT_LATCHED, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_FREQUENCY, + ReadWord(PLSR_DIAG_REASON_ADDRESS)); + + ClearDiagnostic(); +} + +static void TestDiagnosticCurveCountersSaturate(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 2L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestSetDiagnosticCurveCounts(0xFFFFFFFFUL, 0xFFFFFFFFUL); + PlsrTestInjectCurveMismatch(); + PlsrTestEmitPulses(2UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(0xFFFFFFFFUL, ReadU32(PLSR_DIAG_SAMPLE_COUNT_ADDRESS)); + EXPECT_U(0xFFFFFFFFUL, ReadU32(PLSR_DIAG_MISMATCH_COUNT_ADDRESS)); + EXPECT_U(PLSR_DIAG_REASON_CURVE, ReadWord(PLSR_DIAG_REASON_ADDRESS)); +} + +static void TestWaitZeroUsesOneMillisecond(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 2U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 1L, PLSR_WAIT_TIME, 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(2U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(1UL); + + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_WAITING, ReadStatus()); + EXPECT_U(1U, ReadCurrentSegment()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + + PlsrPoll1ms(); + EXPECT_U(2U, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(2L, ReadPosition()); +} + +static void TestActZeroSkipsWithoutPulse(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 2U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_ACT_TIME, 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(2U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(1U, ReadCurrentSegment()); + EXPECT_I(0L, ReadPosition()); + + PlsrPoll1ms(); + EXPECT_U(2U, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_I(0L, ReadPosition()); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(1L, ReadPosition()); +} + +static void TestRelativeAndAbsoluteZeroDisplacement(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 0L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(0L, ReadPosition()); + + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 5L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(5UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(5L, ReadPosition()); + + EXPECT_U(PLSR_MB_OK, WriteWord(0x1008U, PLSR_POSITION_ABSOLUTE)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 5L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(5L, ReadPosition()); +} + +static void ConfigureTenSegmentMove(const uint8_t *jumpSegments) +{ + uint16_t segment; + + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 10U, + PLSR_SEND_COMPLETE, 1000UL, 1000UL, 1000UL, + 0U, 0U); + for (segment = 1U; segment <= 10U; segment++) + { + EXPECT_U(PLSR_MB_OK, + SetSegment((uint8_t)segment, 1000UL, + (int32_t)segment, PLSR_EXT_OR_COMPLETE, + 0U, 0U, + (jumpSegments != NULL) + ? jumpSegments[segment - 1U] : 0U)); + } +} + +static void TestAllTenSegmentsRunInSequence(void) +{ + int32_t expectedPosition = 0L; + uint16_t segment; + + ResetCore(); + ConfigureTenSegmentMove(NULL); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + for (segment = 1U; segment <= 10U; segment++) + { + EXPECT_U(segment, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses((uint32_t)segment); + expectedPosition += (int32_t)segment; + EXPECT_I(expectedPosition, ReadPosition()); + PlsrPoll1ms(); + if (segment < 10U) + { + EXPECT_U(segment + 1U, ReadCurrentSegment()); + EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + } + } + + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(0U, ReadCurrentSegment()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_I(55L, ReadPosition()); +} + +static void TestAllTenSegmentsRunThroughJumpChain(void) +{ + static const uint8_t jumps[10] = + { + 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 2U, 0U + }; + static const uint8_t order[10] = + { + 1U, 3U, 5U, 7U, 9U, 2U, 4U, 6U, 8U, 10U + }; + int32_t expectedPosition = 0L; + uint16_t index; + + ResetCore(); + ConfigureTenSegmentMove(jumps); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + for (index = 0U; index < 10U; index++) + { + uint8_t segment = order[index]; + + EXPECT_U(segment, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses((uint32_t)segment); + expectedPosition += (int32_t)segment; + EXPECT_I(expectedPosition, ReadPosition()); + PlsrPoll1ms(); + if (index + 1U < 10U) + { + EXPECT_U(order[index + 1U], ReadCurrentSegment()); + EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + } + } + + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(0U, ReadCurrentSegment()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_I(55L, ReadPosition()); +} + +static void TestStartSegmentTenRunsNormally(void) +{ + ResetCore(); + ConfigureTenSegmentMove(NULL); + EXPECT_U(PLSR_MB_OK, WriteWord(0x100AU, 10U)); + EXPECT_U(10U, ReadWord(0x100AU)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(10U, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + + PlsrTestEmitPulses(10UL); + EXPECT_I(10L, ReadPosition()); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(0U, ReadCurrentSegment()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_I(10L, ReadPosition()); +} + +static void TestSelfJumpCanStop(void) +{ + unsigned int loop; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 2L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 1U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + for (loop = 0U; loop < 3U; loop++) + { + PlsrTestEmitPulses(2UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + EXPECT_U(1U, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + } + + StopAndSettle(); +} + +static void TestStopDeceleratesBeforeCut(void) +{ + unsigned int tick; + uint32_t middleFrequency; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 1000U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 10000L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(PLSR_STATUS_DECELERATING, ReadStatus()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + + for (tick = 0U; tick < 450U; tick++) + { + PlsrPoll1ms(); + PlsrTestEmitPulses(1UL); + } + middleFrequency = PlsrTestOutputFrequency(); + EXPECT_TRUE((middleFrequency > 100UL) && (middleFrequency < 1000UL)); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_MB_OK, QueueCommand(PLSR_COMMAND_STOP)); + + for (tick = 450U; tick < 900U; tick++) + { + PlsrPoll1ms(); + PlsrTestEmitPulses(1UL); + } + EXPECT_TRUE(PlsrTestOutputFrequency() > 100UL); + EXPECT_TRUE(PlsrTestOutputFrequency() <= 103UL); + EXPECT_U(PLSR_STATUS_DECELERATING, ReadStatus()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses(1UL); + EXPECT_U(100UL, PlsrTestOutputFrequency()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses(1UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_I(902L, ReadPosition()); +} + +static void TestStopAtPendingBoundary(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + PlsrTestEmitPulses(1UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_STOP)); + EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_U(0U, ReadCurrentSegment()); + EXPECT_I(1L, ReadPosition()); + + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_STOPPED, ReadStatus()); + EXPECT_U(0U, PlsrTestPulseIsActive()); +} + +static void TestOneMillisecondDirectionDelay(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 1U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 10L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0U, PlsrTestPulseIsActive()); + + PlsrPoll1ms(); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + StopAndSettle(); +} + +static void ExpectDirectionPinLevels(uint8_t selectedOutput, + uint8_t selectedPinLevel) +{ + uint8_t output; + + for (output = 0U; output < 4U; output++) + { + EXPECT_U((output == selectedOutput) ? selectedPinLevel : 1U, + PlsrTestDirectionPinLevel(output)); + } +} + +static void TestDirectionOutputPolarityMatrix(void) +{ + uint8_t directionOutput; + uint8_t negativeLogic; + uint8_t positive; + + for (directionOutput = 0U; directionOutput < 4U; directionOutput++) + { + for (negativeLogic = 0U; negativeLogic < 2U; negativeLogic++) + { + for (positive = 0U; positive < 2U; positive++) + { + uint8_t logicalLevel = positive ^ negativeLogic; + uint8_t pinLevel = logicalLevel ^ 1U; + uint8_t output; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, + PLSR_SEND_COMPLETE, 1000UL, 1000UL, + 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1001U, directionOutput)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 2U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1006U, negativeLogic)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, + (positive != 0U) ? 1L : -1L, + PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); + + EXPECT_U(directionOutput, ReadWord(0x1001U)); + EXPECT_U(negativeLogic, ReadWord(0x1006U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(logicalLevel, PlsrTestDirectionLevel()); + ExpectDirectionPinLevels(directionOutput, pinLevel); + EXPECT_U(0U, PlsrTestPulseIsActive()); + for (output = 0U; output < 4U; output++) + { + EXPECT_U(1UL, PlsrTestDirectionWriteCount(output)); + EXPECT_U(((output == directionOutput) + && (pinLevel == 0U)) ? 1UL : 0UL, + PlsrTestDirectionTransitionCount(output)); + } + + PlsrPoll1ms(); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I((positive != 0U) ? 1L : -1L, ReadPosition()); + } + } + } +} + +static void TestDirectionSameAndReverseSegments(void) +{ + uint8_t output; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 3U, + PLSR_SEND_COMPLETE, 1000UL, 1000UL, 1000UL, + 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1001U, 2U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 2U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1006U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(2U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(3U, 1000UL, -1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(1U, PlsrTestDirectionLevel()); + ExpectDirectionPinLevels(2U, 0U); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(1U, PlsrTestPulseIsActive()); + + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(2U, ReadCurrentSegment()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + ExpectDirectionPinLevels(2U, 0U); + EXPECT_U(1UL, PlsrTestDirectionTransitionCount(2U)); + + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(3U, ReadCurrentSegment()); + EXPECT_U(0U, PlsrTestDirectionLevel()); + ExpectDirectionPinLevels(2U, 1U); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(2UL, PlsrTestDirectionTransitionCount(2U)); + for (output = 0U; output < 4U; output++) + { + EXPECT_U(3UL, PlsrTestDirectionWriteCount(output)); + if (output != 2U) + { + EXPECT_U(0UL, PlsrTestDirectionTransitionCount(output)); + } + } + + PlsrPoll1ms(); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(1L, ReadPosition()); +} + +static void TestDirectionOutputCanChangeBetweenCommands(void) +{ + uint8_t output; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, + PLSR_SEND_COMPLETE, 1000UL, 1000UL, 1000UL, + 0U, 0U); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1001U, 0U)); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1005U, 1U)); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + ExpectDirectionPinLevels(0U, 0U); + EXPECT_U(0U, PlsrTestPulseIsActive()); + PlsrPoll1ms(); + EXPECT_U(1U, PlsrTestPulseIsActive()); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_MB_OK, WriteWord(0x1001U, 3U)); + EXPECT_U(3U, ReadWord(0x1001U)); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + ExpectDirectionPinLevels(3U, 0U); EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(2UL, PlsrTestDirectionTransitionCount(0U)); + EXPECT_U(1UL, PlsrTestDirectionTransitionCount(3U)); + for (output = 0U; output < 4U; output++) + { + EXPECT_U(2UL, PlsrTestDirectionWriteCount(output)); + } PlsrPoll1ms(); EXPECT_U(1U, PlsrTestPulseIsActive()); - EXPECT_U(1000UL, PlsrTestOutputFrequency()); - StopAndSettle(); + PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_I(2L, ReadPosition()); } static void TestExtEdgeAtNaturalBoundary(void) @@ -766,8 +2097,11 @@ static void TestOldRampDoesNotRetargetSeamlessNextSegment(void) static void TestShortProfileBoundaryMatrix(void) { - static const uint16_t pulseCounts[] = {1U, 2U, 10U, 99U, 100U, 101U}; - uint32_t samples[3][101]; + static const uint16_t pulseCounts[] = + { + 1U, 2U, 10U, 99U, 100U, 101U, 258U + }; + uint32_t samples[3][258]; uint64_t previousDurationNs[3] = {0ULL, 0ULL, 0ULL}; uint64_t durationNs[3]; unsigned int countIndex; @@ -809,6 +2143,10 @@ static void TestShortProfileBoundaryMatrix(void) durationNs[curveMode] += PulsePeriodNs(samples[curveMode][pulse]); PlsrTestEmitPulses(1UL); + if (((pulse + 1U) % 100U) == 0U) + { + PlsrPoll1ms(); + } if ((pulse + 1U) < pulseCounts[countIndex]) { EXPECT_U(1U, PlsrTestPulseIsActive()); @@ -908,6 +2246,40 @@ static void TestShortProfileBoundaryMatrix(void) EXPECT_U(1U, anySmoothDiffersFromSine); } +static void TestShortProfile258IsFullyPrecomputed(void) +{ + uint16_t curveMode; + + for (curveMode = 0U; curveMode <= 2U; curveMode++) + { + ResetCore(); + ConfigureCommon(curveMode, PLSR_POSITION_RELATIVE, 1U, + PLSR_SEND_COMPLETE, 100000UL, 1000UL, 1000UL, + 100U, 100U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 100000UL, 258L, + PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + EXPECT_U(256U, PlsrTestProfileQueueCount()); + EXPECT_U(0UL, PlsrTestProfileQueueReadIndex()); + EXPECT_U(256UL, PlsrTestProfileQueueWriteIndex()); + EXPECT_U(258U, PlsrTestProfileProducerNextPeriod()); + + PlsrTestEmitPulses(258UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(0U, PlsrTestProfileQueueCount()); + EXPECT_U(256UL, PlsrTestProfileQueueReadIndex()); + EXPECT_U(256UL, PlsrTestProfileQueueWriteIndex()); + EXPECT_I(258L, ReadPosition()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + } +} + static void TestShortFinalDeceleratesWithoutPoll(void) { uint16_t curveMode; @@ -940,6 +2312,10 @@ static void TestShortFinalDeceleratesWithoutPoll(void) EXPECT_TRUE(currentFrequencyHz >= 99990UL); durationNs += PulsePeriodNs(currentFrequencyHz); previousFrequencyHz = currentFrequencyHz; + if (((pulse + 1UL) % 100UL) == 0UL) + { + PlsrPoll1ms(); + } } EXPECT_TRUE(durationNs >= 99990ULL); EXPECT_TRUE(durationNs <= 100010ULL); @@ -952,18 +2328,18 @@ static void TestShortFinalDeceleratesWithoutPoll(void) } } +static void ExpectCompletedDiagnostic(uint32_t pulseCount); + static void TestZeroToMaximumRampKeepsConfiguredDuration(void) { uint16_t curveMode; uint32_t firstFrequencyHz[3]; - uint32_t previousFrequencyHz; - uint32_t currentFrequencyHz; - uint32_t frequencyStepHz; - uint32_t maximumStepHz; - uint32_t pulse; - uint64_t durationNs; - const uint64_t expectedDurationNs = 20000000ULL; - const uint64_t toleranceNs = 100000ULL; + uint32_t frequencyHz; + uint32_t pulseAccumulator; + uint32_t pulsesThisMillisecond; + uint32_t emittedPulses; + uint32_t tick; + const uint32_t pulseCount = 3000UL; for (curveMode = 0U; curveMode <= 2U; curveMode++) { @@ -972,163 +2348,175 @@ static void TestZeroToMaximumRampKeepsConfiguredDuration(void) PLSR_SEND_COMPLETE, 100000UL, 0UL, 100000UL, 20U, 0U); EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 100000UL, 1000L, + SetSegment(1U, 100000UL, (int32_t)pulseCount, PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - EXPECT_U(1U, PlsrTestPulseIsActive()); - - previousFrequencyHz = PlsrTestOutputFrequency(); - firstFrequencyHz[curveMode] = previousFrequencyHz; - EXPECT_TRUE(previousFrequencyHz >= 400UL); - EXPECT_TRUE(previousFrequencyHz <= 2500UL); - maximumStepHz = 0UL; - durationNs = PulsePeriodNs(previousFrequencyHz); + EXPECT_U(0U, PlsrTestPulseIsActive()); - for (pulse = 1UL; pulse < 1000UL; pulse++) + pulseAccumulator = 0UL; + emittedPulses = 0UL; + for (tick = 1UL; tick <= 20UL; tick++) { - PlsrTestEmitPulses(1UL); + PlsrPoll1ms(); EXPECT_U(1U, PlsrTestPulseIsActive()); - currentFrequencyHz = PlsrTestOutputFrequency(); - EXPECT_TRUE(currentFrequencyHz >= previousFrequencyHz); - EXPECT_TRUE(currentFrequencyHz <= 100000UL); - frequencyStepHz = currentFrequencyHz - previousFrequencyHz; - if (frequencyStepHz > maximumStepHz) + frequencyHz = PlsrTestOutputFrequency(); + EXPECT_TRUE(frequencyHz != 0UL); + EXPECT_TRUE(frequencyHz <= 100000UL); + if (tick == 1UL) { - maximumStepHz = frequencyStepHz; + firstFrequencyHz[curveMode] = frequencyHz; } - durationNs += PulsePeriodNs(currentFrequencyHz); - previousFrequencyHz = currentFrequencyHz; + if (tick < 20UL) + { + EXPECT_U(PLSR_STATUS_ACCELERATING, ReadStatus()); + } + else + { + EXPECT_U(PLSR_STATUS_RUNNING, ReadStatus()); + } + + pulseAccumulator += frequencyHz; + pulsesThisMillisecond = pulseAccumulator / 1000UL; + pulseAccumulator %= 1000UL; + PlsrTestEmitPulses(pulsesThisMillisecond); + emittedPulses += pulsesThisMillisecond; } - EXPECT_TRUE(maximumStepHz <= 10000UL); - EXPECT_TRUE(previousFrequencyHz >= 99000UL); - EXPECT_TRUE(UnsignedDifference64(durationNs, expectedDurationNs) - <= toleranceNs); - PlsrTestEmitPulses(1UL); + EXPECT_TRUE(emittedPulses < pulseCount); + PlsrTestEmitPulses(pulseCount - emittedPulses); EXPECT_U(0U, PlsrTestPulseIsActive()); PlsrPoll1ms(); EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); EXPECT_U(PLSR_ERROR_NONE, ReadError()); - EXPECT_I(1000L, ReadPosition()); + EXPECT_I((long)pulseCount, ReadPosition()); + ExpectCompletedDiagnostic(pulseCount); } EXPECT_TRUE(firstFrequencyHz[0] > firstFrequencyHz[1]); EXPECT_TRUE(firstFrequencyHz[1] > firstFrequencyHz[2]); } -static void TestMaximumPulseRampKeepsReachableDuration(void) +typedef struct { - uint16_t curveMode; - uint32_t previousFrequencyHz; - uint32_t currentFrequencyHz; - uint32_t frequencyStepHz; - uint32_t maximumStepHz; - uint32_t pulse; - uint32_t reachablePeakHz = IntegerSquareRoot64( - (uint64_t)2U * 65535UL * 100000UL * 1000UL / 1311UL); - uint64_t durationNs; - uint64_t expectedDurationNs = - (uint64_t)2U * 65535UL * 1000000000ULL / reachablePeakHz; - uint64_t toleranceNs = expectedDurationNs / 500ULL + 1000000ULL; - - for (curveMode = 0U; curveMode <= 2U; curveMode++) + uint32_t emittedPulses; + uint32_t elapsedMs; + uint32_t maximumFrequencyHz; + uint32_t finalFrequencyHz; +} REAL_TIME_PROFILE_STATS; + +static void RunProfileAtOneMillisecondCadence( + uint32_t pulseCount, + REAL_TIME_PROFILE_STATS *stats) +{ + uint32_t pulseAccumulator = 0UL; + uint32_t frequencyHz; + uint32_t pulsesThisMillisecond; + uint32_t remainingPulses; + + stats->emittedPulses = 0UL; + stats->elapsedMs = 0UL; + stats->maximumFrequencyHz = 0UL; + stats->finalFrequencyHz = 0UL; + + while ((stats->emittedPulses < pulseCount) + && (PlsrTestPulseIsActive() != 0U) + && (stats->elapsedMs < 2000UL)) { - ResetCore(); - ConfigureCommon(curveMode, PLSR_POSITION_RELATIVE, 1U, - PLSR_SEND_COMPLETE, 100000UL, 0UL, 100000UL, - 1311U, 0U); - EXPECT_U(PLSR_MB_OK, - SetSegment(1U, 100000UL, 65535L, - PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); - EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - EXPECT_U(1U, PlsrTestPulseIsActive()); - - previousFrequencyHz = PlsrTestOutputFrequency(); - EXPECT_TRUE(previousFrequencyHz > 1UL); - EXPECT_TRUE(previousFrequencyHz < reachablePeakHz); - maximumStepHz = 0UL; - durationNs = PulsePeriodNs(previousFrequencyHz); - - for (pulse = 1UL; pulse < 65535UL; pulse++) + PlsrPoll1ms(); + stats->elapsedMs++; + if (PlsrTestPulseIsActive() == 0U) { - PlsrTestEmitPulses(1UL); - EXPECT_U(1U, PlsrTestPulseIsActive()); - currentFrequencyHz = PlsrTestOutputFrequency(); - EXPECT_TRUE(currentFrequencyHz >= previousFrequencyHz); - EXPECT_TRUE(currentFrequencyHz <= reachablePeakHz + 5UL); - frequencyStepHz = currentFrequencyHz - previousFrequencyHz; - if (frequencyStepHz > maximumStepHz) - { - maximumStepHz = frequencyStepHz; - } - durationNs += PulsePeriodNs(currentFrequencyHz); - previousFrequencyHz = currentFrequencyHz; + break; } - EXPECT_TRUE(maximumStepHz <= 5000UL); - EXPECT_TRUE(previousFrequencyHz * 100UL - >= reachablePeakHz * 99UL); - EXPECT_TRUE(UnsignedDifference64(durationNs, expectedDurationNs) - <= toleranceNs); - PlsrTestEmitPulses(1UL); - EXPECT_U(0U, PlsrTestPulseIsActive()); - PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_U(PLSR_ERROR_NONE, ReadError()); - EXPECT_I(65535L, ReadPosition()); + frequencyHz = PlsrTestOutputFrequency(); + EXPECT_TRUE(frequencyHz != 0UL); + if (frequencyHz > stats->maximumFrequencyHz) + { + stats->maximumFrequencyHz = frequencyHz; + } + stats->finalFrequencyHz = frequencyHz; + pulseAccumulator += frequencyHz; + pulsesThisMillisecond = pulseAccumulator / 1000UL; + pulseAccumulator %= 1000UL; + remainingPulses = pulseCount - stats->emittedPulses; + if (pulsesThisMillisecond > remainingPulses) + { + pulsesThisMillisecond = remainingPulses; + } + PlsrTestEmitPulses(pulsesThisMillisecond); + stats->emittedPulses += pulsesThisMillisecond; } + + PlsrPoll1ms(); + EXPECT_U(pulseCount, stats->emittedPulses); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + EXPECT_I((long)pulseCount, ReadPosition()); +} + +static void ExpectCompletedDiagnostic(uint32_t pulseCount) +{ + uint16_t flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + + EXPECT_U(pulseCount, ReadU32(PLSR_DIAG_EXPECTED_COUNT_ADDRESS)); + EXPECT_U(pulseCount, ReadU32(PLSR_DIAG_OBSERVED_COUNT_ADDRESS)); + EXPECT_I(0L, ReadI32(PLSR_DIAG_COUNT_ERROR_ADDRESS)); + EXPECT_U(PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS + | PLSR_DIAG_FREQUENCY_CHECKED | PLSR_DIAG_FREQUENCY_PASS + | PLSR_DIAG_CURVE_CHECKED | PLSR_DIAG_CURVE_PASS, + flags & (PLSR_DIAG_COUNT_CHECKED | PLSR_DIAG_COUNT_PASS + | PLSR_DIAG_FREQUENCY_CHECKED + | PLSR_DIAG_FREQUENCY_PASS + | PLSR_DIAG_CURVE_CHECKED | PLSR_DIAG_CURVE_PASS)); + EXPECT_U(0U, flags & PLSR_DIAG_FAULT_LATCHED); + EXPECT_U(PLSR_DIAG_REASON_NONE, ReadWord(PLSR_DIAG_REASON_ADDRESS)); +} + +static void TestLongProfile259UsesMillisecondRamp(void) +{ + REAL_TIME_PROFILE_STATS stats; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 100000UL, 1000UL, 1000UL, 100U, 100U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 100000UL, 259L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(0U, PlsrTestProfileQueueCount()); + EXPECT_U(0UL, PlsrTestProfileQueueReadIndex()); + EXPECT_U(0UL, PlsrTestProfileQueueWriteIndex()); + + RunProfileAtOneMillisecondCadence(259UL, &stats); + EXPECT_U(0U, PlsrTestProfileQueueCount()); + EXPECT_TRUE(stats.elapsedMs > 1UL); + ExpectCompletedDiagnostic(259UL); } -static void TestMaximumSingleRampWithoutPoll(void) +static void TestMaximumProfileOneMillisecondCadence(void) { + REAL_TIME_PROFILE_STATS stats; uint16_t curveMode; - uint32_t previousFrequencyHz; - uint32_t currentFrequencyHz; - uint32_t minimumFrequencyHz; - uint32_t maximumFrequencyHz; - uint32_t pulse; for (curveMode = 0U; curveMode <= 2U; curveMode++) { ResetCore(); ConfigureCommon(curveMode, PLSR_POSITION_RELATIVE, 1U, - PLSR_SEND_COMPLETE, 1000UL, 100000UL, 0UL, - 1000U, 1000U); + PLSR_SEND_COMPLETE, 100000UL, 1000UL, 1000UL, + 100U, 100U); EXPECT_U(PLSR_MB_OK, SetSegment(1U, 100000UL, 65535L, PLSR_EXT_OR_COMPLETE, 0U, 0U, 0U)); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); - previousFrequencyHz = PlsrTestOutputFrequency(); - minimumFrequencyHz = previousFrequencyHz; - maximumFrequencyHz = previousFrequencyHz; - EXPECT_TRUE(previousFrequencyHz >= 99000UL); - EXPECT_TRUE(previousFrequencyHz <= 100000UL); - - for (pulse = 1UL; pulse < 65535UL; pulse++) - { - PlsrTestEmitPulses(1UL); - EXPECT_U(1U, PlsrTestPulseIsActive()); - currentFrequencyHz = PlsrTestOutputFrequency(); - EXPECT_TRUE(currentFrequencyHz <= previousFrequencyHz); - EXPECT_TRUE(currentFrequencyHz >= 99000UL); - if (currentFrequencyHz < minimumFrequencyHz) - { - minimumFrequencyHz = currentFrequencyHz; - } - if (currentFrequencyHz > maximumFrequencyHz) - { - maximumFrequencyHz = currentFrequencyHz; - } - previousFrequencyHz = currentFrequencyHz; - } - EXPECT_TRUE(minimumFrequencyHz > 1UL); - EXPECT_TRUE(maximumFrequencyHz <= 100000UL); - EXPECT_TRUE(minimumFrequencyHz < maximumFrequencyHz); - PlsrTestEmitPulses(1UL); - EXPECT_U(0U, PlsrTestPulseIsActive()); - PlsrPoll1ms(); - EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); - EXPECT_U(PLSR_ERROR_NONE, ReadError()); - EXPECT_I(65535L, ReadPosition()); + EXPECT_U(0U, PlsrTestProfileQueueCount()); + EXPECT_U(0UL, PlsrTestProfileQueueReadIndex()); + EXPECT_U(0UL, PlsrTestProfileQueueWriteIndex()); + + RunProfileAtOneMillisecondCadence(65535UL, &stats); + EXPECT_TRUE(stats.maximumFrequencyHz >= 99990UL); + EXPECT_U(1000UL, stats.finalFrequencyHz); + ExpectCompletedDiagnostic(65535UL); } } @@ -1148,6 +2536,7 @@ static void TestShortProfileTimerFailure(void) EXPECT_U(PLSR_STATUS_ERROR, ReadStatus()); EXPECT_U(PLSR_ERROR_TIMER, ReadError()); EXPECT_I(1L, ReadPosition()); + ExpectDiagnosticInterrupted(10UL, 1UL); } static void TestStopImmediatelyAfterSubsequentHandoff(void) @@ -1331,6 +2720,177 @@ static void TestCurrentFrequencyIsDynamic(void) StopAndSettle(); } +static void StartMaximumShortProfile(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 100000UL, 1000UL, 1000UL, 100U, 100U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 100000UL, 258L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(256U, PlsrTestProfileQueueCount()); +} + +static void TestProfileQueueStaleDoesNotAdvance(void) +{ + uint32_t readIndex; + uint32_t headFrequencyHz; + uint16_t producerPeriod; + uint16_t activePeriod; + + StartMaximumShortProfile(); + readIndex = PlsrTestProfileQueueReadIndex(); + headFrequencyHz = PlsrTestProfileQueueHeadFrequency(); + producerPeriod = PlsrTestProfileProducerNextPeriod(); + activePeriod = PlsrTestActiveProfileNextPeriod(); + EXPECT_TRUE(headFrequencyHz != 0UL); + + PlsrTestStaleNextFrequencyAtUpdate(); + PlsrTestEmitPulses(1UL); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(readIndex, PlsrTestProfileQueueReadIndex()); + EXPECT_U(256U, PlsrTestProfileQueueCount()); + EXPECT_U(headFrequencyHz, PlsrTestProfileQueueHeadFrequency()); + EXPECT_U(producerPeriod, PlsrTestProfileProducerNextPeriod()); + EXPECT_U(activePeriod, PlsrTestActiveProfileNextPeriod()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + + PlsrTestEmitPulses(1UL); + EXPECT_U(readIndex + 1UL, PlsrTestProfileQueueReadIndex()); + EXPECT_U(255U, PlsrTestProfileQueueCount()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); +} + +static void TestProfileQueueRetargetInvalidatesGeneration(void) +{ + uint32_t generationBefore; + uint32_t generationAfterWrite; + + StartMaximumShortProfile(); + generationBefore = PlsrTestProfileQueueGeneration(); + EXPECT_U(PLSR_MB_OK, WriteU32(0x1100U, 2000UL)); + generationAfterWrite = PlsrTestProfileQueueGeneration(); + EXPECT_TRUE(generationAfterWrite != generationBefore); + EXPECT_U(0U, PlsrTestProfileQueueCount()); + EXPECT_U(0UL, PlsrTestProfileQueueReadIndex()); + EXPECT_U(0UL, PlsrTestProfileQueueWriteIndex()); + + PlsrPoll1ms(); + EXPECT_TRUE(PlsrTestProfileQueueGeneration() != generationAfterWrite); + EXPECT_U(0U, PlsrTestProfileQueueCount()); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); +} + +static void TestFinalPulseGatesBeforeDiagnosticFinish(void) +{ + uint32_t gateEvent; + uint32_t diagnosticEvent; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 1000UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 1L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(1UL); + + gateEvent = PlsrTestLastGateEvent(); + diagnosticEvent = PlsrTestLastDiagnosticFinishEvent(); + EXPECT_TRUE(gateEvent != 0UL); + EXPECT_U(gateEvent + 1UL, diagnosticEvent); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_U(PLSR_DIAG_COUNT_PASS, + ReadWord(PLSR_DIAG_FLAGS_ADDRESS) & PLSR_DIAG_COUNT_PASS); +} + +static void TestDeferredFrequencyRetriesAfterStale(void) +{ + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 1000UL, 100UL, 0U, 0U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 100L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + EXPECT_U(PLSR_MB_OK, WriteU32(0x1100U, 2000UL)); + PlsrPoll1ms(); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + EXPECT_U(1000UL, PlsrTestQueuedFrequency()); + + PlsrTestStaleNextFrequencyAtUpdate(); + PlsrTestEmitPulses(1UL); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + EXPECT_U(1000UL, PlsrTestQueuedFrequency()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + + PlsrTestEmitPulses(1UL); + EXPECT_U(1000UL, PlsrTestOutputFrequency()); + EXPECT_U(2000UL, PlsrTestQueuedFrequency()); + EXPECT_I(2L, ReadPosition()); + + PlsrTestEmitPulses(1UL); + EXPECT_U(2000UL, PlsrTestOutputFrequency()); + EXPECT_U(2000UL, PlsrTestQueuedFrequency()); + EXPECT_I(3L, ReadPosition()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + StopAndSettle(); +} + +static void TestShortProfileRetriesSameSampleAfterStale(void) +{ + uint32_t expectedThirdFrequencyHz; + uint32_t expectedFourthFrequencyHz; + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 100UL, 100UL, 1000U, 1000U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 10L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + PlsrTestEmitPulses(1UL); + expectedThirdFrequencyHz = PlsrTestQueuedFrequency(); + PlsrTestEmitPulses(1UL); + expectedFourthFrequencyHz = PlsrTestQueuedFrequency(); + EXPECT_TRUE(expectedThirdFrequencyHz != expectedFourthFrequencyHz); + + ResetCore(); + ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, + 1000UL, 100UL, 100UL, 1000U, 1000U); + EXPECT_U(PLSR_MB_OK, + SetSegment(1U, 1000UL, 10L, PLSR_EXT_OR_COMPLETE, + 0U, 0U, 0U)); + EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); + + PlsrTestStaleNextFrequencyAtUpdate(); + PlsrTestEmitPulses(1UL); + EXPECT_U(1U, PlsrTestPulseIsActive()); + EXPECT_U(PlsrTestOutputFrequency(), PlsrTestQueuedFrequency()); + EXPECT_I(1L, ReadPosition()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + + PlsrTestEmitPulses(1UL); + EXPECT_U(expectedThirdFrequencyHz, PlsrTestQueuedFrequency()); + EXPECT_I(2L, ReadPosition()); + + PlsrTestEmitPulses(1UL); + EXPECT_U(expectedThirdFrequencyHz, PlsrTestOutputFrequency()); + EXPECT_U(expectedFourthFrequencyHz, PlsrTestQueuedFrequency()); + EXPECT_I(3L, ReadPosition()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); + PlsrTestEmitPulses(7UL); + EXPECT_U(0U, PlsrTestPulseIsActive()); + EXPECT_I(10L, ReadPosition()); + PlsrPoll1ms(); + EXPECT_U(PLSR_STATUS_COMPLETED, ReadStatus()); + EXPECT_U(PLSR_ERROR_NONE, ReadError()); +} + static void TestPollMailboxDefersPlatformFailure(void) { ResetCore(); @@ -1704,6 +3264,8 @@ static void TestCommandMailboxValidatesBeforeQueue(void) static void TestCommandMailboxStartFailureBecomesError(void) { + uint16_t flags; + ResetCore(); ConfigureCommon(0U, PLSR_POSITION_RELATIVE, 1U, PLSR_SEND_COMPLETE, 1000UL, 1000UL, 1000UL, 0U, 0U); @@ -1721,6 +3283,9 @@ static void TestCommandMailboxStartFailureBecomesError(void) EXPECT_U(PLSR_ERROR_INVALID_RESOURCE, ReadError()); EXPECT_U(0U, ReadCurrentSegment()); EXPECT_U(0U, PlsrTestPulseIsActive()); + flags = ReadWord(PLSR_DIAG_FLAGS_ADDRESS); + EXPECT_U(0U, flags & PLSR_DIAG_MONITORING_ACTIVE); + EXPECT_U(0U, flags & PLSR_DIAG_FAULT_LATCHED); EXPECT_U(PLSR_MB_DEVICE_BUSY, QueueCommand(PLSR_COMMAND_START)); EXPECT_U(PLSR_MB_OK, QueueCommand(PLSR_COMMAND_CLEAR)); @@ -1776,6 +3341,22 @@ static void TestPersistenceAcrossReinit(void) EXPECT_I(0L, ReadPosition()); } +static void TestFlashStartupRecoveryDecision(void) +{ + EXPECT_U(1U, PlsrTestFlashNeedsStartupRecovery(0U, 1U, 0UL, + 1U, 0UL)); + EXPECT_U(0U, PlsrTestFlashNeedsStartupRecovery(1U, 1U, 0UL, + 1U, 0UL)); + EXPECT_U(0U, PlsrTestFlashNeedsStartupRecovery(0U, 1U, 0x080C0000UL, + 1U, 0UL)); + EXPECT_U(0U, PlsrTestFlashNeedsStartupRecovery(0U, 1U, 0UL, + 1U, 0x080E0000UL)); + EXPECT_U(0U, PlsrTestFlashNeedsStartupRecovery(0U, 0U, 0UL, + 1U, 0UL)); + EXPECT_U(0U, PlsrTestFlashNeedsStartupRecovery(0U, 1U, 0UL, + 0U, 0UL)); +} + static void TestPositionSchedulesFlashSave(void) { unsigned int tick; @@ -1789,16 +3370,19 @@ static void TestPositionSchedulesFlashSave(void) for (tick = 0U; tick < 1001U; tick++) { PlsrPoll1ms(); + PlsrServicePersistence(); } PlsrTestResetSaveCount(); EXPECT_U(PLSR_MB_OK, SendCommand(PLSR_COMMAND_START)); PlsrTestEmitPulses(1UL); PlsrPoll1ms(); + PlsrServicePersistence(); EXPECT_U(0UL, PlsrTestSaveCount()); for (tick = 0U; tick < 1001U; tick++) { PlsrPoll1ms(); + PlsrServicePersistence(); } EXPECT_U(1UL, PlsrTestSaveCount()); @@ -1806,6 +3390,7 @@ static void TestPositionSchedulesFlashSave(void) for (tick = 0U; tick < 1001U; tick++) { PlsrPoll1ms(); + PlsrServicePersistence(); } EXPECT_U(2UL, PlsrTestSaveCount()); } @@ -1878,13 +3463,62 @@ static const TEST_CASE TestCases[] = { {"u64_by_u32_division", TestU64ByU32Division}, {"protocol_boundaries", TestProtocolBoundaries}, + {"ab_output_pairs_phase_sequence", TestAbOutputPairsAndPhaseSequence}, + {"ab_single_pulse_100khz_matrix", + TestAbSinglePulseMaximumFrequencyMatrix}, + {"ab_fast_gate_cleanup_deferred_to_poll", + TestAbFastGateCleanupIsDeferredToPoll}, + {"ab_final_arm_job_tail_chain_once", + TestAbFinalArmJobTailChainsOnce}, + {"ab_final_boundary_before_arm_job_noop", + TestAbFinalBoundaryBeforeArmJobIsNoOp}, + {"ab_final_arm_job_failure_no_final_count", + TestAbFinalArmJobFailureDoesNotCountFinalPulse}, + {"ab_stop_mailbox_pending_boundary", + TestAbStopMailboxAtPendingBoundary}, + {"ab_act_ext_cut_zero_boundary", TestAbActAndExtCutsFinishAtZero}, + {"ab_subsequent_single_pulse_continuous", + TestAbSubsequentSinglePulsesStayContinuous}, + {"ab_armed_frequency_write", TestAbArmedFrequencyWriteDoesNotReopenOutput}, + {"ab_stop_request_forced_fault", TestAbStopRequestForcedFault}, + {"ab_stop_after_final_boundary_armed", + TestAbStopAfterFinalBoundaryIsArmed}, + {"ab_stop_arm_latched_final_quarter_once", + TestAbStopArmConsumesLatchedFinalQuarterOnce}, + {"ab_rejects_unpaired_outputs", TestAbRejectsUnpairedOutputs}, + {"ab_stop_complete_cycle_boundary", TestAbStopAtCompleteCycleBoundary}, + {"ab_dynamic_frequency_zero_boundary", + TestAbDynamicFrequencyChangesOnlyAtZeroPhase}, + {"ab_stale_frequency_commit_after_completion", + TestAbStaleFrequencyCommitAfterNaturalCompletion}, + {"ab_direction_reversal_zero_restart", + TestAbDirectionReversalRestartsFromZeroPhase}, + {"ab_mode_persistence", TestAbModePersistence}, + {"diagnostic_pass", TestDiagnosticPass}, + {"diagnostic_count_fault_clear", TestDiagnosticCountFaultAndClear}, + {"diagnostic_frequency_fault_clear", + TestDiagnosticFrequencyFaultAndClear}, + {"diagnostic_curve_fault_clear", TestDiagnosticCurveFaultAndClear}, + {"diagnostic_interrupted_segments", TestDiagnosticInterruptedSegments}, + {"diagnostic_fault_latch_explicit_clear", + TestDiagnosticFaultLatchNeedsExplicitClear}, + {"diagnostic_frequency_pass_latched", + TestDiagnosticFrequencyPassStaysFailed}, + {"diagnostic_curve_counter_saturation", + TestDiagnosticCurveCountersSaturate}, {"wait_zero_one_ms", TestWaitZeroUsesOneMillisecond}, {"act_zero_no_pulse", TestActZeroSkipsWithoutPulse}, {"relative_absolute_zero", TestRelativeAndAbsoluteZeroDisplacement}, + {"ten_segments_sequence", TestAllTenSegmentsRunInSequence}, + {"ten_segments_jump_chain", TestAllTenSegmentsRunThroughJumpChain}, + {"start_segment_ten", TestStartSegmentTenRunsNormally}, {"self_jump_stop", TestSelfJumpCanStop}, {"stop_deceleration", TestStopDeceleratesBeforeCut}, {"stop_pending_boundary", TestStopAtPendingBoundary}, {"direction_delay_one_ms", TestOneMillisecondDirectionDelay}, + {"direction_output_polarity_matrix", TestDirectionOutputPolarityMatrix}, + {"direction_same_reverse_segments", TestDirectionSameAndReverseSegments}, + {"direction_output_change", TestDirectionOutputCanChangeBetweenCommands}, {"ext_edge_at_natural_boundary", TestExtEdgeAtNaturalBoundary}, {"ext_cut_natural_boundary_interleavings", TestExtCutAndNaturalBoundaryInterleavings}, @@ -1893,12 +3527,19 @@ static const TEST_CASE TestCases[] = {"ext_edge_seamless_epoch", TestExtEdgeDoesNotCutSeamlessNextSegment}, {"ramp_seamless_epoch", TestOldRampDoesNotRetargetSeamlessNextSegment}, {"short_profile_boundary_matrix", TestShortProfileBoundaryMatrix}, + {"short_profile_258_fully_precomputed", + TestShortProfile258IsFullyPrecomputed}, {"short_final_no_poll", TestShortFinalDeceleratesWithoutPoll}, {"zero_to_maximum_ramp_duration", TestZeroToMaximumRampKeepsConfiguredDuration}, - {"maximum_pulse_ramp_duration", - TestMaximumPulseRampKeepsReachableDuration}, - {"maximum_single_ramp_no_poll", TestMaximumSingleRampWithoutPoll}, + {"long_profile_259_1ms_ramp", TestLongProfile259UsesMillisecondRamp}, + {"maximum_profile_1ms_cadence", + TestMaximumProfileOneMillisecondCadence}, + {"profile_queue_stale_no_advance", TestProfileQueueStaleDoesNotAdvance}, + {"profile_queue_retarget_generation", + TestProfileQueueRetargetInvalidatesGeneration}, + {"final_pulse_gate_before_diagnostic", + TestFinalPulseGatesBeforeDiagnosticFinish}, {"short_timer_failure", TestShortProfileTimerFailure}, {"stop_after_subsequent_handoff", TestStopImmediatelyAfterSubsequentHandoff}, @@ -1906,6 +3547,10 @@ static const TEST_CASE TestCases[] = {"short_dynamic_retarget", TestShortProfileDynamicRetarget}, {"short_ext_cut", TestShortProfileExtCut}, {"current_frequency_dynamic", TestCurrentFrequencyIsDynamic}, + {"deferred_frequency_retries_after_stale", + TestDeferredFrequencyRetriesAfterStale}, + {"short_profile_retries_same_sample_after_stale", + TestShortProfileRetriesSameSampleAfterStale}, {"poll_mailbox_failure", TestPollMailboxDefersPlatformFailure}, {"future_frequency_on_arrival", TestFutureSegmentFrequencyAppliesOnArrival}, @@ -1928,6 +3573,7 @@ static const TEST_CASE TestCases[] = TestCommandMailboxStartFailureBecomesError}, {"wait_signal_positive", TestWaitSignalPositivePath}, {"persistence_reinit", TestPersistenceAcrossReinit}, + {"flash_startup_recovery_decision", TestFlashStartupRecoveryDecision}, {"position_flash_save", TestPositionSchedulesFlashSave}, {"busy_reset_absolute_gate", TestBusyResetInvalidatesAbsolutePosition}, {"position_overflow", TestPositionOverflowStopsWithError} @@ -1945,6 +3591,7 @@ int main(void) CurrentTest = TestCases[index].name; (void)printf("RUN %s\n", CurrentTest); + (void)fflush(stdout); TestCases[index].function(); if (FailureCount == failuresBefore) {

  • UcKk;>HOs5jjN}$O>G_OVFnD0! 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�JP|O-)D;8A2Veeukkn#%&o=v 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 F{{cYmVG{rV delta 77435 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 z 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 Y4`%m=CB-C%A%}q=!N8ab!$Wod57q5hVgLXD diff --git a/Document/PLSR_document/虞文昊_PLSR_2026.8.6/需求规格书.docx b/Document/PLSR_document/虞文昊_PLSR_2026.8.6/需求规格书.docx index 0a5433e9c170743a6e3d4f5c58564fc8bd1b4648..dab501b5ca4f2b74da244149729c836907729715 100644 GIT binary patch delta 30138 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 SA*||?SDRU292);a^M3#x_1$v- delta 29409 zcmV)fK&8Ll?*fkM02*@v1K zoA~tN_~2(J&QDH`f7;(aF?c>UIxz9c=v_F3K?C@Z$|6)8b)DIYz zA>YOm@xj={1nN&882f%;;)K)O;19uC8%hj+TtqM92KoNM^8<;=*bk*P*wBp#{Yt-F z-VkV@Av8n4mN&(PZc6OOqbh5NZ>S+OsR1l@z6h|?>isGH)12fx<%b7{jnb= zMKM@;2aEy;loF5)9N{7)#TSGU`7aIA#7685<9Vt9_ahwgv zYSl!WLD5iZFv##7+>MUVk=JgKWddM-6E{(OBghcEeHKPCiYU0$aYLYS0hbLZdznPC%to7>itLrzjobNe=x2FhAxDI z3s)Ei{=l!h+L{=e96BGaxdN{H@w)?)1Lp@Oip)n_JR4A;6k6n6EmA@qi4PWkIWl8j3#70<%wj9CX7G@L84d(RufpMe} zMh8Fr^4wTFF>q!CjR=W>KE%m=1OxalB4qqQzQ%qa*D?J#U(Sx;FGCmluxLH;IWi{C z#D{*wpX2BT|LOQZV&F@}LyT^J$g08$C&*Q#iYM_^$@zz_eu@m&p>NQG3@`;%`W)@396q9H zXoA4A(Zk1i+y$S2kf=OR!7^EmRYl)GMbY4ah=*SqXc(N0pPu}2Bvu&Ew_ocl#oFY+ znF;5!aC0Pfb`m!_9!K=g1E%<3;eo{Px%1?Sk=Vdc41s4TUV1?Wis;O?(6$4QgcTo~ zoIuYFObiYWe~TCjvBT(pFyf3a)Uk6XOGe=>2gt%vj?4 z*on{k5K8<09`8HBe$1Wd`}_I6zyG5Tw_1EHNFP;3IT6FeIT>>g^gOzg7(tdc#^>1J z`8aCpzrKwR0#0NkR$>_n{)x$W;zzVvrtDpVcW^vxfnb1#qiKjY%Jsiqw6a)>$YSR_1M22uU8&a zh<-mmrT*Fc#zYt35RYwtsK7QSz|{mKXe zhye=cALOna(6h?c$&O>q8>!~yjx}$`X=U&D&L)S2)(Z9jAGP)^Sf%nip7#q*=so-lchY z18{;V9Pc)FwdN&T7Om90f#~~K^M=s8%a?OgS8}hf+G}@OCp(TcZ={-6Jl4D&r+LNJ zaZhA_npYKoWmwpe%6-nODYB*Osz>uS9_QziPW2;%{L`p(K+Re}6lI^uAgGoF7>=B9 zHaT$T&M9(NOV~TXF2d zs3ZDDz8@*vbIe0@@5>?2^Zl+Duyhg4PdLq8(v4d3r=)@ z^#?+>&nv}p6~<+bVc^kG(f2A4056-oD3X(tHWPs35n7P|O2p9~0`S_gXe~25ij2ko zj9u*eCO$eahTkT3YWW=>9|O4@ZS-0&`XS*G<@Dpgqb~ilaUMkKR1Xv=C&B{$DmfvW zy1+1UkZ5nqLeG^HXFVcx9(NI8V0tTmNd4jqWjq=N*&$dz5bSFhh-D&w^2~_y;k

    ASwbZP;*i%o<4$--{qNQ-BrI{hc*}*6 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