From ab8e43050c491df121a0cf82be70e11247eceeee Mon Sep 17 00:00:00 2001 From: vee Date: Wed, 16 Sep 2026 17:55:30 +0800 Subject: [PATCH] feat: add seat firmware workbench and OTA delivery --- .gitignore | 9 + README.md | 2 +- apps/web-console/assistant-chat.js | 25 +- apps/web-console/firmware-workbench-entry.css | 75 + apps/web-console/firmware-workbench-entry.js | 108 + apps/web-console/firmware-workbench.css | 456 ++ apps/web-console/firmware-workbench.html | 143 + apps/web-console/firmware-workbench.js | 449 ++ apps/web-console/index.html | 6 +- apps/web-console/service-worker.js | 11 +- config/scene_templates/lay_flat.yaml | 19 + .../App/main_cm0plus.c | 79 + .../App/safety_manager.c | 332 ++ .../App/safety_manager.h | 30 + .../App/seat_motor_manager.c | 1269 +++++ .../App/seat_motor_manager.h | 154 + .../App/seat_timed_application.c | 1147 +++++ .../App/seat_timed_application.h | 11 + .../Bsp/bsp_seat_backrest_heater.c | 687 +++ .../Bsp/bsp_seat_backrest_heater.h | 62 + .../Bsp/bsp_seat_current_adc.c | 332 ++ .../Bsp/bsp_seat_current_adc.h | 27 + .../Bsp/bsp_seat_fan.c | 659 +++ .../Bsp/bsp_seat_fan.h | 52 + .../Bsp/bsp_seat_move_can.c | 400 ++ .../Bsp/bsp_seat_move_can.h | 29 + .../Config/seat_backrest_heater_config.h | 155 + .../Config/seat_current_adc_config.h | 71 + .../Config/seat_fan_config.h | 139 + .../Config/seat_move_config.h | 150 + .../Docs/BUILD_INFO_2026-09-16.md | 25 + .../README_Passenger_Seat_Timed_Controller.md | 88 + .../Driver/motor_control.c | 4340 +++++++++++++++++ .../Driver/motor_control.h | 277 ++ .../Passenger_Seat_Timed_Controller_demo.ewd | 1619 ++++++ .../Passenger_Seat_Timed_Controller_demo.ewp | 2359 +++++++++ .../Passenger_Seat_Timed_Controller_demo.mac | 185 + ...assenger_Seat_Timed_Controller_program.mac | 213 + .../Passenger_Seat_Timed_Controller_demo.hex | 2690 ++++++++++ .../Passenger_Seat_Timed_Controller_demo.out | Bin 0 -> 1741192 bytes .../Tests/audit_timed_only.py | 109 + firmware/t2g/README.md | 12 +- .../Seat_Controller_demo/App/main_cm0plus.c | 5 + .../App/seat_controller_thermal.c | 47 + .../App/seat_move_application.c | 22 +- .../Config/seat_feature_profile.h | 27 + .../IAR/Seat_Controller_demo.ewp | 3 + .../IAR/rev_d/Exe/Seat_Controller_demo.hex | 511 +- .../IAR/rev_d/Exe/Seat_Controller_demo.out | Bin 2373512 -> 2305212 bytes .../application/firmware_workbench.py | 1290 +++++ .../application/mode_device_additions.py | 86 + .../application/mode_profile_intent.py | 41 +- src/cognitive_agent/firmware_ota_server.py | 308 ++ src/cognitive_agent/server.py | 170 +- tests/e2e/mode_schedule_browser.cjs | 59 + tests/e2e/test_firmware_ota_server.py | 112 + tests/e2e/test_firmware_workbench_api.py | 167 + tests/e2e/test_http_request_security.py | 30 + tests/e2e/test_seat_web_api.py | 12 +- .../integration/test_mode_device_additions.py | 321 ++ tests/unit/assistant_stream_runtime.test.cjs | 52 + .../unit/test_assistant_frontend_contract.py | 12 +- .../test_energy_monitor_frontend_contract.py | 4 +- tests/unit/test_firmware_workbench.py | 253 + ...st_firmware_workbench_frontend_contract.py | 62 + tests/unit/test_frontend_theme_contract.py | 2 +- .../test_mode_profile_augmentation_intent.py | 123 + tools/build_seat_firmware.ps1 | 85 +- tools/start_n7web.py | 71 +- tools/start_n7web_background.ps1 | 30 + 70 files changed, 22594 insertions(+), 316 deletions(-) create mode 100644 apps/web-console/firmware-workbench-entry.css create mode 100644 apps/web-console/firmware-workbench-entry.js create mode 100644 apps/web-console/firmware-workbench.css create mode 100644 apps/web-console/firmware-workbench.html create mode 100644 apps/web-console/firmware-workbench.js create mode 100644 config/scene_templates/lay_flat.yaml create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/main_cm0plus.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_backrest_heater_config.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_current_adc_config.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_fan_config.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_move_config.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/BUILD_INFO_2026-09-16.md create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/README_Passenger_Seat_Timed_Controller.md create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.c create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.h create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewd create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewp create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.mac create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_program.mac create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.hex create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.out create mode 100644 firmware/t2g/Passenger_Seat_Timed_Controller_demo/Tests/audit_timed_only.py create mode 100644 firmware/t2g/Seat_Controller_demo/Config/seat_feature_profile.h create mode 100644 src/cognitive_agent/application/firmware_workbench.py create mode 100644 src/cognitive_agent/application/mode_device_additions.py create mode 100644 src/cognitive_agent/firmware_ota_server.py create mode 100644 tests/e2e/test_firmware_ota_server.py create mode 100644 tests/e2e/test_firmware_workbench_api.py create mode 100644 tests/integration/test_mode_device_additions.py create mode 100644 tests/unit/test_firmware_workbench.py create mode 100644 tests/unit/test_firmware_workbench_frontend_contract.py create mode 100644 tests/unit/test_mode_profile_augmentation_intent.py create mode 100644 tools/start_n7web_background.ps1 diff --git a/.gitignore b/.gitignore index 1ca1739..002616f 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,13 @@ firmware/t2g/Seat_Controller_demo/IAR/rev_d/.ninja_log firmware/t2g/Seat_Controller_demo/IAR/rev_d/BrowseInfo/ firmware/t2g/Seat_Controller_demo/IAR/rev_d/List/ firmware/t2g/Seat_Controller_demo/IAR/rev_d/Obj/ +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/settings/ +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.eww +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/.Passenger_Seat_Timed_Controller_demo_build_cache +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/.ninja_deps +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/.ninja_log +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/BrowseInfo/ +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/List/ +firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Obj/ firmware/t2g/tviibh8m/src/examples/crypto/ClientRunsOnCM7_0/RSA/key_data/private_key*.pem +artifacts/logs/ diff --git a/README.md b/README.md index 58115c4..8e60764 100755 --- a/README.md +++ b/README.md @@ -184,7 +184,7 @@ config/gesture/default.yaml .\.venv\Scripts\python.exe tools\start_n7web.py ``` -脚本自动设置 `PYTHONPATH`,主页面默认仅监听 `127.0.0.1:8000`,模式卡片 HTTP/UDP 服务监听 `0.0.0.0:8090`。需要让可信局域网内的设备同时访问主页面时,使用 `--host 0.0.0.0`;可通过 `--port`、`--scene-port`、`--catalog` 和 `--server-id` 覆盖其他参数。任一子服务异常退出或按一次 `Ctrl+C` 时,脚本会停止另一个服务。 +脚本自动设置 `PYTHONPATH`:管理页面默认仅监听 `127.0.0.1:8000`,只读固件 OTA 服务监听 `127.0.0.1:8012`,模式卡片 HTTP/UDP 服务监听 `0.0.0.0:8090`。OTA 服务只提供健康检查、全部历史发布列表、最新版本清单和固件下载,设计为通过固定公网 HTTPS 隧道供车机访问,不暴露工作台和车辆控制接口。车机通过 `GET /api/firmware-workbench/releases` 枚举所有可下载固件,通过 `GET /api/firmware-workbench/releases/latest` 查询最新固件。如果 `8012` 端口已经运行健康的 N7 OTA 服务,启动器会直接复用它。可通过 `--host`、`--port`、`--ota-host`、`--ota-port`、`--scene-port`、`--catalog` 和 `--server-id` 覆盖参数。任一由启动器管理的子服务异常退出或按一次 `Ctrl+C` 时,脚本会停止其余受管服务。 同步由模式注册表的创建、更新、删除、恢复和显式重载事件触发,不会持续扫描目录。每次变更只重新生成并原子替换一份小型 JSON;独立目录服务在收到 HTTP 请求时才读取它。因此空闲时的额外开销主要是一个等待请求的 Python 进程和一个 UDP 发现线程,而不是持续的 CPU 或磁盘轮询。 diff --git a/apps/web-console/assistant-chat.js b/apps/web-console/assistant-chat.js index 76154b3..67e1297 100644 --- a/apps/web-console/assistant-chat.js +++ b/apps/web-console/assistant-chat.js @@ -170,11 +170,13 @@ if (!compact || !context?.name) return false; const politePrefix = "(?:(?:请|麻烦)(?:帮我|帮忙|给我)?|帮我|帮忙|给我)?"; const prefixUpdateVerb = "(?:修改一下|修改|调整|更改|更新|改一下|变更)"; - const changePredicate = "(?:修改|改成|改为|更改|更新|变更|变为|变成|换成|调整|调节|调高|调低|调到|调成|调为|调至|设置|设为|设成|设到|设至|打开|开启|启动|关闭|关掉|关上|全关|停止|停用|切换|进入|退出|移动|前移|后退|前进|升高|降低|抬高|放低|降下|升起|调直|放倒|复位|半开|开到|关到|拉开|拉上|上锁|解锁)"; + const addPredicate = "(?:加入|添加|增加|补充|加上|追加|新增)"; + const changePredicate = `(?:${addPredicate}|修改|改成|改为|更改|更新|变更|变为|变成|换成|调整|调节|调高|调低|调到|调成|调为|调至|设置|设为|设成|设到|设至|打开|开启|启动|关闭|关掉|关上|全关|停止|停用|切换|进入|退出|移动|前移|后退|前进|升高|降低|抬高|放低|降下|升起|调直|放倒|复位|半开|开到|关到|拉开|拉上|上锁|解锁)`; const modeName = "([^,。!?!?、;;::]{1,64}?模式)"; const modePossessiveBoundary = "(?:中的|里的|内的|之中的|的|中|里|内)"; const modeMemberBoundary = `(?:${modePossessiveBoundary}|[,,::])`; const question = /为什么|什么|怎么|如何|介绍|解释|作用|区别|原理|哪些|多少|几(?:度|档|级|个|项)?|是否|能否|可不可以|合适吗|合理吗|会怎样|列出|告诉我|[??]|(?:吗|么|呢)[。.!!]?$/; + const declinedAddition = new RegExp(`^(?:先|暂时)?(?:不要|别|不用|不必|无需|取消|撤销)(?:再|继续)?${addPredicate}`); const candidates = [ { pattern: new RegExp(`^${politePrefix}${prefixUpdateVerb}${modeName}${modeMemberBoundary}[,,::]?(.*)$`), @@ -188,14 +190,29 @@ pattern: new RegExp(`^${politePrefix}${modeName}${modeMemberBoundary}[,,::]?(.+)$`), predicateRequired: true, }, + { + pattern: new RegExp(`^${politePrefix}(?:在|给|为|往|向)${modeName}(?:${modePossessiveBoundary})?[,,::]?(.+)$`), + predicateRequired: true, + }, + { + pattern: new RegExp(`^${politePrefix}${modeName}((?:再|也|还)?${addPredicate}.+)$`), + predicateRequired: true, + }, + { + pattern: new RegExp(`^${politePrefix}(?:把|将)(.+?)${addPredicate}(?:到|进)?${modeName}(?:中|里|内)?[。.!!]?$`), + predicateRequired: false, + nameIndex: 2, + changeIndex: 1, + }, ]; - return candidates.some(({ pattern, predicateRequired }) => { + return candidates.some(({ pattern, predicateRequired, nameIndex = 1, changeIndex = 2 }) => { const matched = compact.match(pattern); - const change = String(matched?.[2] || ""); + const change = String(matched?.[changeIndex] || ""); return Boolean( matched - && normalizeModeName(matched[1]) === normalizeModeName(context.name) + && normalizeModeName(matched[nameIndex]) === normalizeModeName(context.name) && !question.test(change) + && !declinedAddition.test(change) && (!predicateRequired || new RegExp(changePredicate).test(change)) ); }); diff --git a/apps/web-console/firmware-workbench-entry.css b/apps/web-console/firmware-workbench-entry.css new file mode 100644 index 0000000..7c766a2 --- /dev/null +++ b/apps/web-console/firmware-workbench-entry.css @@ -0,0 +1,75 @@ +.console-v2 .firmware-workbench-layer { + position: fixed; + z-index: 5000; + inset: 0; + display: grid; + place-items: center; + padding: 68px 20px 20px; + background: color-mix(in oklch, var(--background) 58%, transparent); + backdrop-filter: blur(6px) saturate(.9); + -webkit-backdrop-filter: blur(6px) saturate(.9); + overscroll-behavior: contain; +} +.console-v2 .firmware-workbench-layer[hidden] { display: none !important; } +.console-v2 .firmware-workbench-page { + width: min(1180px, 100%); + height: min(664px, 100%); + min-height: 0; + display: grid; + grid-template-rows: 76px minmax(0, 1fr); + overflow: hidden; + color: var(--foreground); + background: color-mix(in oklch, var(--card) 97%, var(--background)); + border: 1px solid color-mix(in oklch, var(--primary) 18%, var(--border)); + border-radius: 22px; + box-shadow: 0 28px 70px color-mix(in oklch, var(--foreground) 22%, transparent), 0 4px 18px color-mix(in oklch, var(--primary) 10%, transparent), inset 0 1px 0 color-mix(in oklch, var(--primary-foreground) 85%, transparent); + animation: firmware-workbench-enter 180ms ease-out both; +} +.console-v2 .firmware-workbench-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 18px; + padding: 14px 18px 13px 20px; + border-bottom: 1px solid color-mix(in oklch, var(--primary) 10%, var(--border)); + background: color-mix(in oklch, var(--card) 85%, transparent); +} +.console-v2 .firmware-workbench-heading { min-width: 0; display: flex; align-items: center; gap: 12px; } +.console-v2 .firmware-workbench-heading > span { + width: 46px; + height: 46px; + flex: 0 0 46px; + display: grid; + place-items: center; + color: var(--primary); + background: color-mix(in oklch, var(--primary) 10%, var(--card)); + border: 1px solid color-mix(in oklch, var(--primary) 22%, var(--border)); + border-radius: 15px; +} +.console-v2 .firmware-workbench-heading svg { width: 24px; height: 24px; stroke-width: 1.8; } +.console-v2 .firmware-workbench-heading h2 { margin: 0; color: var(--heading-foreground, var(--foreground)); font-size: 20px; line-height: 1.2; letter-spacing: -.025em; } +.console-v2 #firmwareWorkbenchClose { + width: 38px; + height: 38px; + display: grid; + flex: 0 0 38px; + place-items: center; + padding: 0; + color: var(--foreground); + background: color-mix(in oklch, var(--card) 88%, var(--secondary)); + border: 1px solid color-mix(in oklch, var(--primary) 13%, var(--border)); + border-radius: 12px; + cursor: pointer; +} +.console-v2 #firmwareWorkbenchClose:hover, +.console-v2 #firmwareWorkbenchClose:focus-visible { color: var(--primary); background: var(--accent); outline: 3px solid color-mix(in oklch, var(--ring) 16%, transparent); } +.console-v2 #firmwareWorkbenchClose svg { width: 18px; height: 18px; } +.console-v2 .firmware-workbench-frame { width: 100%; height: 100%; display: block; border: 0; background: transparent; } +@keyframes firmware-workbench-enter { from { opacity: 0; transform: translateY(8px) scale(.992); } to { opacity: 1; transform: none; } } +@media (max-width: 760px) { + .console-v2 .firmware-workbench-layer { padding: 54px 8px 8px; } + .console-v2 .firmware-workbench-page { height: 100%; border-radius: 17px; grid-template-rows: 64px minmax(0, 1fr); } + .console-v2 .firmware-workbench-header { padding: 9px 11px; } + .console-v2 .firmware-workbench-heading > span { width: 40px; height: 40px; flex-basis: 40px; border-radius: 12px; } + .console-v2 .firmware-workbench-heading h2 { font-size: 17px; } +} diff --git a/apps/web-console/firmware-workbench-entry.js b/apps/web-console/firmware-workbench-entry.js new file mode 100644 index 0000000..cd652b2 --- /dev/null +++ b/apps/web-console/firmware-workbench-entry.js @@ -0,0 +1,108 @@ +(() => { + "use strict"; + + const state = { open: false, returnFocus: null, backgroundInert: [] }; + + function setBackgroundInert(inert) { + const layer = document.querySelector("#firmwareWorkbenchLayer"); + if (!layer) return; + if (inert) { + state.backgroundInert = [...document.body.children] + .filter((element) => element !== layer && !["SCRIPT", "STYLE", "LINK"].includes(element.tagName)) + .map((element) => ({ element, wasInert: element.hasAttribute("inert") })); + state.backgroundInert.forEach(({ element }) => element.toggleAttribute("inert", true)); + return; + } + state.backgroundInert.forEach(({ element, wasInert }) => element.toggleAttribute("inert", wasInert)); + state.backgroundInert = []; + } + + function setOpen(open) { + const next = Boolean(open); + const layer = document.querySelector("#firmwareWorkbenchLayer"); + const trigger = document.querySelector("#firmwareWorkbenchToggle"); + if (!layer || !trigger || state.open === next) return; + state.open = next; + trigger.classList.toggle("active", next); + trigger.setAttribute("aria-pressed", String(next)); + trigger.setAttribute("aria-expanded", String(next)); + trigger.setAttribute("aria-label", next ? "关闭座椅固件开发工作台" : "打开座椅固件开发工作台"); + trigger.title = next ? "关闭座椅固件开发工作台" : "打开座椅固件开发工作台"; + if (next) { + state.returnFocus = document.activeElement; + layer.hidden = false; + layer.inert = false; + layer.dataset.open = "true"; + setBackgroundInert(true); + requestAnimationFrame(() => document.querySelector("#firmwareWorkbenchClose")?.focus()); + } else { + layer.dataset.open = "false"; + layer.inert = true; + layer.hidden = true; + setBackgroundInert(false); + const target = state.returnFocus instanceof HTMLElement && state.returnFocus.isConnected + ? state.returnFocus + : trigger; + state.returnFocus = null; + target.focus(); + } + } + + function mount() { + const dock = document.querySelector("#v2PanelControlDock"); + if (!dock || document.querySelector("#firmwareWorkbenchToggle")) return false; + + const trigger = document.createElement("button"); + trigger.id = "firmwareWorkbenchToggle"; + trigger.className = "firmware-workbench-toggle v2-panel-control-button"; + trigger.type = "button"; + trigger.setAttribute("aria-controls", "firmwareWorkbenchLayer"); + trigger.setAttribute("aria-pressed", "false"); + trigger.setAttribute("aria-expanded", "false"); + trigger.setAttribute("aria-label", "打开座椅固件开发工作台"); + trigger.title = "打开座椅固件开发工作台"; + trigger.innerHTML = '座椅固件开发工作台'; + + const layer = document.createElement("div"); + layer.id = "firmwareWorkbenchLayer"; + layer.className = "firmware-workbench-layer"; + layer.hidden = true; + layer.inert = true; + layer.setAttribute("role", "dialog"); + layer.setAttribute("aria-modal", "true"); + layer.setAttribute("aria-labelledby", "firmwareWorkbenchTitle"); + layer.innerHTML = ` +
+
+
+ +

座椅固件开发工作台

+
+ +
+ +
`; + + dock.append(trigger); + document.body.append(layer); + trigger.addEventListener("click", () => setOpen(!state.open)); + document.querySelector("#firmwareWorkbenchClose", layer).addEventListener("click", () => setOpen(false)); + layer.addEventListener("click", (event) => { if (event.target === layer) setOpen(false); }); + document.addEventListener("keydown", (event) => { + if (state.open && event.key === "Escape") { + event.preventDefault(); + setOpen(false); + } + }); + window.lucide?.createIcons({ attrs: { "aria-hidden": "true" } }); + return true; + } + + if (!mount()) { + const observer = new MutationObserver(() => { + if (mount()) observer.disconnect(); + }); + observer.observe(document.body, { childList: true, subtree: true }); + window.setTimeout(() => observer.disconnect(), 15000); + } +})(); diff --git a/apps/web-console/firmware-workbench.css b/apps/web-console/firmware-workbench.css new file mode 100644 index 0000000..3f0a587 --- /dev/null +++ b/apps/web-console/firmware-workbench.css @@ -0,0 +1,456 @@ +:root { + color-scheme: light; + font-family: "Microsoft YaHei UI", "PingFang SC", Inter, system-ui, sans-serif; + --page: #eef3f9; + --surface: #ffffff; + --surface-soft: #f7f9fc; + --line: #dce4ee; + --line-strong: #cbd7e5; + --text: #172033; + --muted: #68758b; + --primary: #2869e8; + --primary-soft: #eaf1ff; + --success: #16845b; + --success-soft: #e7f7f0; + --warning: #ba7314; + --danger: #c23f4a; + --shadow: 0 22px 60px rgba(43, 67, 101, .14), 0 4px 14px rgba(43, 67, 101, .08); +} + +* { box-sizing: border-box; } + +html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; } + +body { + display: grid; + place-items: center; + padding: 16px; + color: var(--text); + font-size: 14px; + line-height: 1.45; + background: + radial-gradient(circle at 15% 8%, rgba(74, 130, 235, .11), transparent 31%), + linear-gradient(145deg, #f7f9fc 0%, var(--page) 100%); +} + +button, textarea, select { font: inherit; } +button, a, select { -webkit-tap-highlight-color: transparent; } +button, select { cursor: pointer; } + +.shell { + width: min(1280px, 100%); + height: min(780px, calc(100dvh - 32px)); + min-height: 620px; + overflow: hidden; + background: #f7f9fc; + border: 1px solid rgba(205, 216, 230, .9); + border-radius: 22px; + box-shadow: var(--shadow); +} + +.topbar { + height: 68px; + padding: 0 22px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 20px; + background: rgba(255, 255, 255, .94); + border-bottom: 1px solid var(--line); +} + +.topbar-main, .topbar-status, .card-heading, .button-row, .log-actions, +.server-target, .command-footer, .capability-brief { display: flex; align-items: center; } +.topbar-main { gap: 11px; min-width: 0; } +.topbar-status { gap: 9px; flex-wrap: wrap; justify-content: flex-end; } + +.back-link, .product-mark, .icon-button, .result-icon { + display: inline-grid; + place-items: center; +} +.back-link, .icon-button { + width: 34px; + height: 34px; + border: 1px solid var(--line); + border-radius: 10px; + color: #4d5b71; + background: var(--surface); + text-decoration: none; +} +.back-link:hover, .icon-button:hover { color: var(--primary); border-color: #a9c1ef; background: var(--primary-soft); } +.back-link svg, .icon-button svg { width: 17px; height: 17px; } +.product-mark { width: 36px; height: 36px; border-radius: 11px; color: white; background: linear-gradient(145deg, #3a7cf0, #1d59cd); box-shadow: 0 7px 16px rgba(40, 105, 232, .22); } +.product-mark svg { width: 19px; } +.eyebrow, .section-kicker { margin: 0; color: #7a88a0; font-size: 12px; font-weight: 700; letter-spacing: .08em; } +h1 { margin: 1px 0 0; font-size: 20px; line-height: 1.15; letter-spacing: -.02em; } +h2 { margin: 1px 0 0; font-size: 17px; line-height: 1.2; } + +.environment-chip, .server-state, .status-badge { + display: inline-flex; + align-items: center; + gap: 6px; + min-height: 29px; + padding: 4px 10px; + border: 1px solid var(--line); + border-radius: 999px; + color: #58677d; + background: #f8fafc; + font-size: 12px; + font-weight: 700; + white-space: nowrap; +} +.environment-chip svg { width: 14px; } +.server-state span { width: 7px; height: 7px; border-radius: 50%; background: #9aa7b8; } +.server-state.online { color: var(--success); border-color: #b9e5d3; background: var(--success-soft); } +.server-state.online span { background: var(--success); box-shadow: 0 0 0 4px rgba(22, 132, 91, .1); } + +main { + height: calc(100% - 68px); + min-height: 0; + padding: 11px; + display: grid; + grid-template-columns: 380px minmax(0, 1fr); + grid-template-rows: 116px minmax(0, 1fr) 172px; + grid-template-areas: + "pipeline pipeline" + "command execution" + "software software"; + gap: 10px; +} + +.card { + position: relative; + min-width: 0; + min-height: 0; + overflow: hidden; + padding: 12px 14px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 15px; + box-shadow: 0 2px 8px rgba(46, 66, 94, .045); +} +.card-heading { justify-content: space-between; gap: 12px; min-height: 32px; } +.hero-grid { grid-area: command; min-width: 0; min-height: 0; } +.hero-grid .command-card { height: 100%; } +.pipeline-card { grid-area: pipeline; } +.execution-grid { grid-area: execution; min-width: 0; min-height: 0; } +.execution-grid .log-card { width: 100%; height: 100%; } +.software-card { grid-area: software; } + +.baseline-picker { + display: grid; + grid-template-columns: auto auto; + align-items: center; + column-gap: 5px; + color: var(--muted); + font-size: 12px; + font-weight: 700; +} +.baseline-picker svg { grid-row: 1 / 3; width: 16px; color: var(--primary); } +.baseline-picker span { line-height: 1; } +.baseline-picker select { + max-width: 148px; + border: 0; + padding: 1px 18px 1px 0; + color: var(--text); + background: transparent; + font-size: 13px; + font-weight: 700; + outline: none; +} + +.command-card { display: flex; flex-direction: column; gap: 7px; } +.command-card > label { color: #5d6b80; font-size: 13px; font-weight: 650; } +textarea { + width: 100%; + min-height: 64px; + flex: 1 1 70px; + resize: none; + padding: 9px 11px; + color: var(--text); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + border-radius: 10px; + font-size: 13px; + line-height: 1.55; + outline: none; +} +textarea:focus { border-color: #79a4f4; box-shadow: 0 0 0 3px rgba(40, 105, 232, .1); background: #fff; } +.prompt-templates { display: flex; gap: 6px; overflow: hidden; } +.prompt-templates button { + min-width: 0; + padding: 5px 8px; + border: 1px solid #cbd9ef; + border-radius: 8px; + color: #3563a9; + background: #f3f7ff; + font-size: 12px; + font-weight: 700; + white-space: nowrap; +} +.capability-brief { + min-height: 50px; + justify-content: space-between; + gap: 8px; + padding: 7px 9px; + border: 1px solid #dbe6f6; + border-radius: 10px; + background: #f6f9fe; +} +.capability-brief > div { min-width: 0; display: grid; gap: 1px; } +.capability-brief span { color: var(--muted); font-size: 12px; } +.capability-brief strong { overflow: hidden; text-overflow: ellipsis; color: #344157; font-size: 13px; white-space: nowrap; } +.capability-brief > svg { width: 17px; flex: 0 0 auto; color: #8fa7ca; } +.capability-target { flex: 1; } +.capability-target strong { color: var(--primary); } +.command-footer { justify-content: flex-end; gap: 8px; } +.button-row { gap: 6px; } +.button { + min-height: 33px; + padding: 6px 11px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + border-radius: 9px; + border: 1px solid transparent; + font-size: 13px; + font-weight: 750; + white-space: nowrap; +} +.button svg { width: 15px; } +.button-primary { color: white; background: var(--primary); box-shadow: 0 5px 12px rgba(40, 105, 232, .18); } +.button-secondary { color: #526178; background: #fff; border-color: var(--line-strong); } +.button:disabled, .icon-button:disabled { cursor: not-allowed; opacity: .48; } + +.pipeline { + width: calc(100% - 230px); + height: 58px; + margin: 7px 0 0; + padding: 0; + display: grid; + grid-template-columns: repeat(8, minmax(0, 1fr)); + list-style: none; +} +.pipeline-stage { position: relative; min-width: 0; padding-top: 2px; text-align: center; } +.pipeline-stage::after { content: ""; position: absolute; top: 14px; left: calc(50% + 15px); width: calc(100% - 30px); height: 2px; background: #dce4ee; } +.pipeline-stage:last-child::after { display: none; } +.stage-node { position: relative; z-index: 1; width: 28px; height: 28px; margin: 0 auto 1px; display: grid; place-items: center; border: 2px solid #d4deea; border-radius: 50%; color: #7b8aa0; background: #fff; } +.stage-node svg { width: 14px; } +.stage-name { display: block; overflow: hidden; text-overflow: ellipsis; font-size: 13px; line-height: 1.15; white-space: nowrap; } +.stage-state { display: block; overflow: hidden; text-overflow: ellipsis; color: var(--muted); font-size: 12px; line-height: 1.1; white-space: nowrap; } +.pipeline-stage[data-status="running"] .stage-node { color: var(--primary); border-color: var(--primary); background: var(--primary-soft); animation: pulse 1.4s infinite; } +.pipeline-stage[data-status="success"] .stage-node { color: var(--success); border-color: #65bd9e; background: var(--success-soft); } +.pipeline-stage[data-status="failed"] .stage-node, .pipeline-stage[data-status="blocked"] .stage-node { color: var(--danger); border-color: #e39aa1; background: #fff0f1; } +.pipeline-stage[data-status="canceled"] .stage-node { color: #7b8798; background: #eef1f5; } +.pipeline-stage[data-status="pending_confirmation"] .stage-node { color: var(--warning); border-color: #ecc080; background: #fff7e9; } +.pipeline-stage[data-status="success"]::after { background: #8bcdb5; } +.release-result { + position: absolute; + top: 43px; + right: 14px; + width: 210px; + min-height: 52px; + display: flex; + align-items: center; + gap: 10px; + padding: 8px 10px; + border: 1px solid var(--line); + border-radius: 11px; + background: var(--surface-soft); +} +.result-icon { width: 32px; height: 32px; flex: 0 0 auto; color: #748399; border-radius: 9px; background: #e9eef5; } +.result-icon svg { width: 17px; } +.release-result div { min-width: 0; display: grid; } +.release-result small { color: var(--muted); font-size: 12px; } +.release-result strong { overflow: hidden; text-overflow: ellipsis; font-size: 13px; white-space: nowrap; } +.release-result[data-state="success"] { border-color: #b9e5d3; background: var(--success-soft); } +.release-result[data-state="success"] .result-icon { color: var(--success); background: #d2f0e3; } +.release-result[data-state="failed"] { border-color: #efc5c9; background: #fff2f3; } +.status-legend { display: none; } + +.log-card { display: grid; grid-template-rows: auto auto minmax(0, 1fr); gap: 7px; } +.log-actions { gap: 6px; } +.log-actions .icon-button { width: 31px; height: 31px; } +.status-badge { min-height: 25px; padding: 3px 9px; } +.status-badge[data-status="running"] { color: var(--primary); border-color: #b9cff7; background: var(--primary-soft); } +.status-badge[data-status="success"], .status-badge[data-status="published"] { color: var(--success); border-color: #b9e5d3; background: var(--success-soft); } +.status-badge[data-status="failed"], .status-badge[data-status="blocked"] { color: var(--danger); border-color: #efc5c9; background: #fff2f3; } +.status-badge[data-status="ready"], .status-badge[data-status="pending_confirmation"] { color: var(--warning); border-color: #efd3a8; background: #fff7e9; } +.metrics { margin: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; } +.metrics div { min-width: 0; padding: 5px 7px; border-radius: 8px; background: var(--surface-soft); border: 1px solid #edf1f6; } +.metrics dt { color: var(--muted); font-size: 12px; } +.metrics dd { margin: 1px 0 0; overflow: hidden; text-overflow: ellipsis; font-size: 13px; font-weight: 750; white-space: nowrap; } +.log-workspace { min-height: 0; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(220px, .9fr); gap: 8px; } +.log-stream, .log-details { min-height: 0; overflow: auto; border: 1px solid var(--line); border-radius: 10px; background: #f9fbfd; } +.log-stream { padding: 7px 9px; scrollbar-width: thin; } +.empty-state { height: 100%; min-height: 110px; display: grid; place-content: center; justify-items: center; gap: 4px; color: var(--muted); text-align: center; } +.empty-state svg { width: 24px; color: #93a3ba; } +.empty-state strong { color: #4a596f; font-size: 13px; } +.empty-state span { font-size: 12px; } +.log-entry { display: grid; grid-template-columns: 58px 9px minmax(0, 1fr); gap: 7px; padding: 5px 0; border-bottom: 1px solid #e9eef5; } +.log-entry:last-child { border-bottom: 0; } +.log-time { color: #7b889b; font: 12px/1.4 ui-monospace, Consolas, monospace; } +.log-dot { width: 7px; height: 7px; margin-top: 5px; border-radius: 50%; background: #91a0b4; } +.log-entry[data-level="success"] .log-dot { background: var(--success); } +.log-entry[data-level="error"] .log-dot { background: var(--danger); } +.log-entry[data-level="warning"] .log-dot { background: var(--warning); } +.log-copy { min-width: 0; } +.log-copy strong { font-size: 13px; } +.log-copy p { margin: 1px 0 0; color: #5b687b; font-size: 13px; overflow-wrap: anywhere; } +.log-details { display: flex; flex-direction: column; } +.inspector-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); background: #f2f5f9; } +.inspector-tabs button { padding: 7px 4px; border: 0; border-bottom: 2px solid transparent; color: #68768b; background: transparent; font-size: 12px; font-weight: 700; } +.inspector-tabs button.active { color: var(--primary); border-bottom-color: var(--primary); background: #fff; } +.inspector-content { min-height: 0; flex: 1; overflow: auto; padding: 7px; } +.empty-inline, .empty-table { padding: 18px; color: var(--muted); text-align: center; font-size: 12px; } +.change-item, .test-item { display: flex; gap: 7px; padding: 6px; border-bottom: 1px solid #e8edf4; } +.change-type, .test-mark { flex: 0 0 auto; height: 21px; padding: 2px 5px; border-radius: 5px; color: var(--primary); background: var(--primary-soft); font-size: 12px; } +.test-mark { width: 21px; display: grid; place-items: center; color: var(--success); background: var(--success-soft); } +.test-mark svg { width: 12px; } +.change-copy, .test-copy { min-width: 0; display: grid; } +.change-copy strong, .test-copy strong { font-size: 12px; overflow-wrap: anywhere; } +.change-copy span, .test-copy span { color: var(--muted); font-size: 12px; } +.build-output, .code-block { margin: 0; color: #26364d; font: 12px/1.55 ui-monospace, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; } + +.software-card { display: grid; grid-template-rows: 33px minmax(0, 1fr); gap: 5px; } +.server-target { gap: 6px; color: var(--muted); font-size: 12px; } +.server-target svg { width: 15px; color: var(--primary); } +.server-target strong { color: #3b4a61; } +.table-wrap { min-height: 0; overflow: auto; border: 1px solid var(--line); border-radius: 9px; } +table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; } +th { position: sticky; top: 0; z-index: 1; padding: 6px 7px; color: #617086; background: #f2f5f9; text-align: left; font-weight: 750; white-space: nowrap; } +td { padding: 6px 7px; border-top: 1px solid #e8edf4; color: #4d5a6e; vertical-align: middle; } +th:nth-child(1) { width: 14%; } th:nth-child(2) { width: 13%; } th:nth-child(3) { width: 11%; } +th:nth-child(4) { width: 28%; } th:nth-child(5) { width: 8%; } th:nth-child(6) { width: 26%; } +.software-name, .file-cell { min-width: 0; display: grid; } +.software-name strong, .file-cell strong { overflow: hidden; text-overflow: ellipsis; color: #26354b; white-space: nowrap; } +.software-name span, .file-cell span { color: var(--muted); } +.file-cell > span { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.cap-tags { display: flex; gap: 3px; flex-wrap: wrap; } +.cap-tags span { padding: 2px 5px; color: #3563a9; background: #eef4ff; border-radius: 5px; white-space: nowrap; } +.hash-value { display: inline; font-family: ui-monospace, Consolas, monospace; white-space: nowrap; } +.table-actions { display: flex; align-items: center; gap: 3px; flex-wrap: nowrap; } +.table-actions button, .table-actions a { min-width: 27px; height: 26px; padding: 3px 5px; display: inline-grid; place-items: center; border: 0; border-radius: 5px; color: #3563a9; background: #edf3ff; font-size: 12px; text-decoration: none; white-space: nowrap; } +.table-actions svg { width: 13px; height: 13px; } +.table-actions .publish-action { color: white; background: var(--primary); } +.table-actions .delete-action { color: var(--danger); background: #fff0f1; } +.baseline-protection { height: 26px; padding: 3px 6px; display: inline-flex; align-items: center; gap: 3px; color: var(--success); background: var(--success-soft); border-radius: 5px; font-size: 12px; white-space: nowrap; } +.baseline-protection svg { width: 13px; } +.status-badge[data-status="baseline"] { color: var(--success); border-color: #b9e5d3; background: var(--success-soft); } + +.modal-backdrop { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 24px; background: rgba(31, 43, 61, .34); backdrop-filter: blur(4px); } +.modal-backdrop[hidden] { display: none; } +.modal { width: min(780px, 100%); max-height: min(680px, calc(100dvh - 48px)); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); } +.modal header, .modal footer { padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); } +.modal footer { justify-content: flex-end; border-top: 1px solid var(--line); border-bottom: 0; } +.modal-body { overflow: auto; padding: 16px; } +.detail-grid, .diff-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } +.detail-field, .diff-panel { min-width: 0; padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); } +.detail-field span { display: block; color: var(--muted); font-size: 12px; } +.detail-field strong { display: block; margin-top: 3px; overflow-wrap: anywhere; } +.diff-panel h3 { margin: 0 0 8px; font-size: 14px; } +.diff-panel p { margin: 5px 0; color: #58677c; } +.diff-panel.added { border-color: #b9e5d3; background: var(--success-soft); } +.toast-region { position: fixed; z-index: 80; right: 22px; bottom: 22px; display: grid; gap: 8px; } +.toast { max-width: 390px; padding: 10px 13px; color: #fff; background: #344258; border-radius: 9px; box-shadow: 0 10px 28px rgba(31, 43, 61, .22); font-size: 13px; } +.toast.success { background: var(--success); } +.toast.error { background: var(--danger); } + +@keyframes pulse { 50% { box-shadow: 0 0 0 5px rgba(40, 105, 232, .09); } } + +@media (max-width: 980px) { + body { padding: 8px; } + .shell { width: 100%; height: calc(100dvh - 16px); min-height: 560px; border-radius: 16px; } + .topbar { height: 62px; padding: 0 14px; } + .topbar-status .dashboard-chip, .environment-chip:last-child { display: none; } + main { height: calc(100% - 62px); grid-template-columns: 330px minmax(0, 1fr); grid-template-rows: 108px minmax(0, 1fr) 164px; padding: 8px; gap: 8px; } + .card { padding: 10px; } + .pipeline { width: calc(100% - 190px); } + .release-result { width: 176px; right: 10px; } + .log-workspace { grid-template-columns: 1fr; } + .log-details { display: none; } + .metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } +} + +@media (max-width: 720px) { + body { display: block; padding: 0; } + .shell { height: 100dvh; min-height: 0; border: 0; border-radius: 0; } + .topbar { height: 58px; } + h1 { font-size: 17px; } + .eyebrow, .topbar-status { display: none; } + main { height: calc(100% - 58px); overflow: auto; grid-template-columns: 1fr; grid-template-rows: 104px 360px 330px 190px; grid-template-areas: "pipeline" "command" "execution" "software"; } + .execution-grid { display: block; } + .execution-grid .log-card { min-height: 330px; } + .pipeline { width: 100%; } + .pipeline-card { overflow-x: auto; } + .pipeline-card .pipeline { width: 680px; } + .release-result { display: none; } + .stage-name { font-size: 11px; } + .stage-state { display: none; } + .command-card { gap: 5px; } + .command-footer p { display: none; } + .command-footer { justify-content: flex-end; } + .prompt-templates button { flex: 1; } + th:nth-child(2), td:nth-child(2), th:nth-child(3), td:nth-child(3) { display: none; } + th:nth-child(1), th:nth-child(4), th:nth-child(5), th:nth-child(6) { width: auto; } +} + +body.embedded { + display: block; + padding: 0; + background: transparent; +} +body.embedded .shell { + width: 100%; + height: 100dvh; + min-height: 0; + border: 0; + border-radius: 0; + box-shadow: none; + background: #f7f9fc; +} +body.embedded .topbar { display: none; } +body.embedded main { + height: 100%; + padding: 8px; + grid-template-columns: 350px minmax(0, 1fr); + grid-template-rows: 82px minmax(0, 1fr) 204px; + gap: 8px; +} +body.embedded .card { padding: 8px 10px; border-radius: 12px; } +body.embedded .card-heading { min-height: 27px; } +body.embedded .command-card { gap: 5px; } +body.embedded textarea { min-height: 48px; padding: 7px 9px; } +body.embedded .prompt-templates button { padding: 4px 7px; } +body.embedded .capability-brief { min-height: 44px; padding: 5px 8px; } +body.embedded .pipeline { height: 48px; margin: 4px 0 0; } +body.embedded .stage-node { width: 24px; height: 24px; } +body.embedded .pipeline-stage::after { top: 12px; } +body.embedded .stage-node svg { width: 12px; } +body.embedded .stage-name { font-size: 12px; } +body.embedded .stage-state { font-size: 11px; } +body.embedded .release-result { top: 18px; min-height: 44px; padding: 5px 8px; } +body.embedded .result-icon { width: 28px; height: 28px; } +body.embedded .log-card { gap: 5px; } +body.embedded .metrics div { padding: 3px 6px; } +body.embedded .software-card { grid-template-rows: 27px minmax(0, 1fr); gap: 3px; } +body.embedded th { padding: 4px 6px; } +body.embedded table { font-size: 12.5px; } +body.embedded td { padding: 3px 6px; } +body.embedded .software-name strong, +body.embedded .file-cell strong { line-height: 1.2; } +body.embedded .software-name span, +body.embedded .file-cell span { line-height: 1.15; } + +@media (max-width: 720px) { + body.embedded main { + height: 100%; + overflow: auto; + grid-template-columns: 1fr; + grid-template-rows: 96px 350px 320px 210px; + grid-template-areas: "pipeline" "command" "execution" "software"; + } + body.embedded .pipeline-card { overflow-x: auto; } + body.embedded .pipeline-card .pipeline { width: 680px; } +} diff --git a/apps/web-console/firmware-workbench.html b/apps/web-console/firmware-workbench.html new file mode 100644 index 0000000..60ce069 --- /dev/null +++ b/apps/web-console/firmware-workbench.html @@ -0,0 +1,143 @@ + + + + + + + + 座椅固件开发工作台 · 511 工程 + + + + + + +
+
+
+ + + + +

座椅固件开发工作台

+
+
+ 正在连接发布服务 +
+
+ +
+
+
+
+
+

开发指令

+
+ +
+ + +
+ + + +
+
+
当前基线时间控制
+ +
目标固件能力时间控制+位置控制+座椅通风+座椅加热
+
+ +
+
+ +
+
    +
    + +
    当前交付状态尚未开始
    +
    +
    + 等待运行中 + 待确认成功 + 失败取消 + 阻塞 +
    +
    + +
    +
    +
    +
    +

    任务执行日志

    +
    +
    + 等待 + + +
    +
    +
    +
    开始时间
    —
    结束时间
    —
    +
    实际耗时
    —
    文件变更
    —
    +
    +
    +
    +
    暂无执行记录创建开发任务后,这里将实时显示各阶段输出。
    +
    + +
    +
    +
    + +
    +
    +
    +

    固件版本与软件产物

    +
    +
    发布目标车机升级服务器
    +
    +
    + + + +
    软件 / 版本能力构建时间固件文件 / 校验状态操作
    尚未生成固件产物
    +
    +
    +
    +
    + + +
    + + diff --git a/apps/web-console/firmware-workbench.js b/apps/web-console/firmware-workbench.js new file mode 100644 index 0000000..0e9638a --- /dev/null +++ b/apps/web-console/firmware-workbench.js @@ -0,0 +1,449 @@ +(() => { + "use strict"; + + if (window.self !== window.top || new URLSearchParams(window.location.search).has("embedded")) { + document.body.classList.add("embedded"); + } + + const STATUS_LABELS = { + waiting: "等待", + running: "运行中", + pending_confirmation: "待确认", + success: "成功", + failed: "失败", + canceled: "取消", + blocked: "阻塞", + published: "已发布", + ready: "待发布", + baseline: "基线固件", + }; + const STAGE_ICONS = { + instruction: "file-input", + requirements: "list-checks", + baseline: "git-compare-arrows", + codegen: "code-2", + build: "hammer", + test: "shield-check", + package: "package-check", + publish: "cloud-upload", + }; + const ACTIVE_STATES = new Set(["waiting", "running", "pending_confirmation"]); + const CAPABILITY_ORDER = ["时间控制", "位置控制", "座椅通风", "座椅加热"]; + const FALLBACK_BASELINES = { + time_only: ["时间控制"], + }; + const FALLBACK_PIPELINE = [ + ["instruction", "指令输入"], ["requirements", "需求解析"], + ["baseline", "基线检查"], ["codegen", "代码生成"], + ["build", "编译构建"], ["test", "测试验证"], + ["package", "固件打包"], ["publish", "发布服务器"], + ].map(([id, name]) => ({ id, name, status: "waiting", summary: "等待执行" })); + + const ui = { + instruction: document.querySelector("#instructionInput"), + baseline: document.querySelector("#baselineSelect"), + baselineCapabilities: document.querySelector("#baselineCapabilities"), + targetCapabilities: document.querySelector("#targetCapabilities"), + start: document.querySelector("#startTaskButton"), + cancel: document.querySelector("#cancelTaskButton"), + retry: document.querySelector("#retryTaskButton"), + server: document.querySelector("#serverState"), + serverName: document.querySelector("#otaServerName"), + release: document.querySelector("#releaseResult"), + pipeline: document.querySelector("#pipeline"), + logs: document.querySelector("#logStream"), + scrollLogs: document.querySelector("#scrollLogButton"), + status: document.querySelector("#taskStatusBadge"), + metrics: document.querySelector("#taskMetrics"), + inspector: document.querySelector("#inspectorContent"), + artifacts: document.querySelector("#artifactTableBody"), + modal: document.querySelector("#detailModal"), + modalTitle: document.querySelector("#modalTitle"), + modalBody: document.querySelector("#modalBody"), + modalClose: document.querySelector("#closeModalButton"), + modalCloseFooter: document.querySelector("#modalCloseButton"), + toasts: document.querySelector("#toastRegion"), + }; + const model = { + snapshot: { tasks: [], artifacts: [], releases: [], pipeline: FALLBACK_PIPELINE }, + selectedTaskId: null, + inspectorTab: "changes", + pending: false, + pollTimer: null, + lastLogCount: 0, + }; + + function escapeHtml(value) { + return String(value ?? "") + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); + } + + async function api(path, options = {}) { + const response = await fetch(path, { + credentials: "same-origin", + headers: { "Content-Type": "application/json", ...(options.headers || {}) }, + ...options, + }); + const contentType = response.headers.get("content-type") || ""; + const payload = contentType.includes("application/json") ? await response.json() : null; + if (!response.ok) throw new Error(payload?.message || `请求失败(${response.status})`); + return payload; + } + + function selectedTask() { + return model.snapshot.tasks.find((task) => task.id === model.selectedTaskId) + || model.snapshot.tasks[0] + || null; + } + + function baselineCapabilities() { + const baseline = model.snapshot.baselines?.find((item) => item.id === ui.baseline.value); + return baseline?.capabilities || FALLBACK_BASELINES[ui.baseline.value] || FALLBACK_BASELINES.time_only; + } + + function parseInstructionCapabilities(instruction) { + const lowered = String(instruction || "").toLowerCase(); + const aliases = { + "时间控制": ["时间", "定时", "timed"], + "位置控制": ["位置", "position"], + "座椅通风": ["通风", "vent"], + "座椅加热": ["加热", "heater", "heat"], + }; + return CAPABILITY_ORDER.filter((capability) => aliases[capability].some((alias) => lowered.includes(alias))); + } + + function updateCapabilityPreview(task = null) { + const baseline = baselineCapabilities(); + const taskMatchesDraft = task + && task.instruction === ui.instruction.value.trim() + && (task.baseline_id || "time_only") === ui.baseline.value; + const target = taskMatchesDraft + ? task.target_capabilities + : CAPABILITY_ORDER.filter((item) => baseline.includes(item) || parseInstructionCapabilities(ui.instruction.value).includes(item)); + ui.baselineCapabilities.textContent = baseline.join("+"); + ui.targetCapabilities.textContent = (target?.length ? target : baseline).join("+"); + } + + function formatDate(value) { + if (!value) return "—"; + const date = new Date(value); + if (Number.isNaN(date.getTime())) return value; + return new Intl.DateTimeFormat("zh-CN", { + month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", + hour12: false, + }).format(date).replaceAll("/", "-"); + } + + function formatClock(value) { + if (!value) return "--:--:--"; + const date = new Date(value); + if (Number.isNaN(date.getTime())) return "--:--:--"; + return new Intl.DateTimeFormat("zh-CN", { + hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false, + }).format(date); + } + + function formatDuration(milliseconds) { + if (milliseconds === null || milliseconds === undefined) return "—"; + if (milliseconds < 1000) return `${milliseconds} 毫秒`; + const seconds = milliseconds / 1000; + return seconds < 60 ? `${seconds.toFixed(seconds < 10 ? 1 : 0)} 秒` : `${Math.floor(seconds / 60)} 分 ${Math.round(seconds % 60)} 秒`; + } + + function formatSize(bytes) { + const value = Number(bytes || 0); + if (value < 1024) return `${value} 字节`; + if (value < 1024 * 1024) return `${(value / 1024).toFixed(1)} 千字节`; + return `${(value / 1024 / 1024).toFixed(2)} 兆字节`; + } + + function toast(message, type = "info") { + const element = document.createElement("div"); + element.className = `toast ${type}`; + element.textContent = message; + ui.toasts.append(element); + window.setTimeout(() => element.remove(), 4200); + } + + function refreshIcons() { + if (window.lucide) window.lucide.createIcons({ attrs: { "stroke-width": 1.8 } }); + } + + function renderPipeline(task) { + const stages = task?.stages || model.snapshot.pipeline?.map((stage) => ({ ...stage, status: "waiting" })) || FALLBACK_PIPELINE; + ui.pipeline.innerHTML = stages.map((stage) => ` +
  1. + + ${escapeHtml(stage.name)} + ${escapeHtml(STATUS_LABELS[stage.status] || stage.status || "等待")}${stage.duration_ms !== null && stage.duration_ms !== undefined ? ` · ${escapeHtml(formatDuration(stage.duration_ms))}` : ""} +
  2. `).join(""); + } + + function renderRelease(task) { + let icon = "cloud-upload"; + let label = "尚未开始"; + let state = "idle"; + if (task) { + label = task.message || STATUS_LABELS[task.status] || task.status; + state = task.status; + if (task.status === "success") { icon = "circle-check-big"; state = "success"; } + else if (task.status === "running") icon = "loader-circle"; + else if (task.status === "failed") icon = "circle-x"; + else if (task.status === "canceled") icon = "ban"; + } + ui.release.dataset.state = state; + ui.release.innerHTML = `
    当前交付状态${escapeHtml(label)}
    `; + } + + function renderLogs(task) { + const logs = task?.logs || []; + if (!logs.length) { + ui.logs.innerHTML = `
    暂无执行记录创建开发任务后,这里将实时显示各阶段输出。
    `; + model.lastLogCount = 0; + return; + } + const nearBottom = ui.logs.scrollHeight - ui.logs.scrollTop - ui.logs.clientHeight < 80; + ui.logs.innerHTML = logs.map((entry) => ` +
    + + +
    ${escapeHtml(entry.title)}

    ${escapeHtml(entry.message)}

    +
    `).join(""); + if (nearBottom || logs.length > model.lastLogCount) ui.logs.scrollTop = ui.logs.scrollHeight; + model.lastLogCount = logs.length; + } + + function renderInspector(task) { + const status = task?.status || "waiting"; + ui.status.dataset.status = status; + ui.status.textContent = STATUS_LABELS[status] || status; + const fileCount = task?.file_changes?.length || 0; + ui.metrics.innerHTML = ` +
    开始时间
    ${escapeHtml(formatDate(task?.started_at))}
    +
    结束时间
    ${escapeHtml(formatDate(task?.finished_at))}
    +
    实际耗时
    ${escapeHtml(formatDuration(task?.duration_ms))}
    +
    文件变更
    ${fileCount ? `${fileCount} 个文件` : "—"}
    `; + document.querySelectorAll("[data-inspector-tab]").forEach((button) => { + button.classList.toggle("active", button.dataset.inspectorTab === model.inspectorTab); + }); + if (!task) { + ui.inspector.innerHTML = `
    暂无任务数据
    `; + return; + } + if (model.inspectorTab === "build") { + ui.inspector.innerHTML = task.build_output?.length + ? `
    ${escapeHtml(task.build_output.join("\n"))}
    ` + : `
    尚无编译输出
    `; + return; + } + if (model.inspectorTab === "tests") { + ui.inspector.innerHTML = task.test_results?.length + ? task.test_results.map((test) => `
    ${escapeHtml(test.name)}${escapeHtml(test.summary)}
    `).join("") + : `
    测试尚未执行
    `; + return; + } + ui.inspector.innerHTML = task.file_changes?.length + ? task.file_changes.map((change) => `
    ${change.type === "added" ? "新增" : "修改"}
    ${escapeHtml(change.path)}${escapeHtml(change.summary)}
    `).join("") + : `
    尚无文件变更
    `; + } + + function renderArtifacts() { + const artifacts = model.snapshot.artifacts || []; + if (!artifacts.length) { + ui.artifacts.innerHTML = `
    尚未生成固件产物
    `; + return; + } + ui.artifacts.innerHTML = artifacts.map((artifact) => ` + +
    ${escapeHtml(artifact.software_name)}${escapeHtml(artifact.version)}
    +
    ${(artifact.capabilities || []).map((capability) => `${escapeHtml(capability)}`).join("")}
    + ${escapeHtml(formatDate(artifact.build_time))} +
    ${escapeHtml(artifact.firmware_filename)}${escapeHtml(formatSize(artifact.size_bytes))} · ${escapeHtml(artifact.sha256)}
    + ${escapeHtml(STATUS_LABELS[artifact.status] || artifact.status)} +
    + + + + + + + ${artifact.is_baseline ? `受保护` : ``} +
    + `).join(""); + } + + function render() { + const task = selectedTask(); + if (task) model.selectedTaskId = task.id; + renderPipeline(task); + renderRelease(task); + renderLogs(task); + renderInspector(task); + renderArtifacts(); + updateCapabilityPreview(task); + const active = task && ACTIVE_STATES.has(task.status); + ui.start.disabled = model.pending || Boolean(active); + ui.cancel.disabled = model.pending || !active; + ui.retry.disabled = model.pending || !task || !["failed", "canceled", "blocked"].includes(task.status); + ui.start.innerHTML = model.pending ? `正在提交` : `开始生成`; + refreshIcons(); + } + + async function refreshState({ quiet = false } = {}) { + try { + model.snapshot = await api("/api/firmware-workbench/state"); + if (!model.selectedTaskId && model.snapshot.tasks?.length) model.selectedTaskId = model.snapshot.tasks[0].id; + ui.server.classList.add("online"); + ui.server.innerHTML = `发布服务已连接`; + ui.serverName.textContent = model.snapshot.ota_server?.name || "车机升级服务器"; + render(); + } catch (error) { + ui.server.classList.remove("online"); + ui.server.innerHTML = `发布服务连接失败`; + if (!quiet) toast(error.message, "error"); + } finally { + schedulePoll(); + } + } + + function schedulePoll() { + window.clearTimeout(model.pollTimer); + const active = model.snapshot.tasks?.some((task) => ACTIVE_STATES.has(task.status)); + model.pollTimer = window.setTimeout(() => refreshState({ quiet: true }), active ? 700 : 5000); + } + + async function startTask() { + const instruction = ui.instruction.value.trim(); + if (!instruction) { toast("请输入开发指令。", "error"); ui.instruction.focus(); return; } + model.pending = true; + render(); + try { + const result = await api("/api/firmware-workbench/tasks", { + method: "POST", body: JSON.stringify({ instruction, baseline_id: ui.baseline.value }), + }); + model.selectedTaskId = result.task.id; + toast("开发任务已创建,流水线开始执行。", "success"); + await refreshState({ quiet: true }); + } catch (error) { + toast(error.message, "error"); + } finally { + model.pending = false; + render(); + } + } + + async function taskAction(action) { + const task = selectedTask(); + if (!task) return; + model.pending = true; + render(); + try { + await api(`/api/firmware-workbench/tasks/${encodeURIComponent(task.id)}/${action}`, { method: "POST", body: "{}" }); + toast(action === "cancel" ? "取消请求已提交。" : "任务已重新进入流水线。", "success"); + await refreshState({ quiet: true }); + } catch (error) { + toast(error.message, "error"); + } finally { + model.pending = false; + render(); + } + } + + function appendPrompt(text) { + const current = ui.instruction.value.trim(); + if (current.includes(text)) return; + ui.instruction.value = current ? `${current.replace(/[。;;]?$/, "")};${text}。` : `${text}。`; + ui.instruction.focus(); + updateCapabilityPreview(); + } + + function showModal(title, content) { + ui.modalTitle.textContent = title; + ui.modalBody.innerHTML = content; + ui.modal.hidden = false; + document.body.style.overflow = "hidden"; + refreshIcons(); + ui.modalClose.focus(); + } + + function closeModal() { + ui.modal.hidden = true; + document.body.style.overflow = ""; + } + + async function artifactAction(button) { + const artifact = model.snapshot.artifacts.find((item) => item.id === button.dataset.artifactId); + if (!artifact) return; + const action = button.dataset.artifactAction; + if (action === "delete") { + if (!window.confirm(`确认删除“${artifact.firmware_filename}”及其服务器发布记录吗?此操作不可恢复。`)) return; + button.disabled = true; + try { + const result = await api(`/api/firmware-workbench/artifacts/${artifact.id}`, { method: "DELETE" }); + toast(result.message, "success"); + await refreshState({ quiet: true }); + } catch (error) { toast(error.message, "error"); } + finally { button.disabled = false; } + return; + } + if (action === "publish") { + button.disabled = true; + try { + const release = await api(`/api/firmware-workbench/artifacts/${artifact.id}/publish`, { method: "POST", body: "{}" }); + toast(`${release.message}(${release.id})`, "success"); + await refreshState({ quiet: true }); + } catch (error) { toast(error.message, "error"); } + finally { button.disabled = false; } + return; + } + if (action === "detail") { + showModal("固件产物详情", `
    +
    软件名称${escapeHtml(artifact.software_name)}
    +
    版本${escapeHtml(artifact.version)}
    +
    固件包${escapeHtml(artifact.firmware_filename)}
    +
    构建时间${escapeHtml(formatDate(artifact.build_time))}
    +
    固件包大小${escapeHtml(formatSize(artifact.size_bytes))}
    +
    发布状态${escapeHtml(STATUS_LABELS[artifact.status] || artifact.status)}
    +
    SHA-256(固件包)${escapeHtml(artifact.sha256)}
    +
    SHA-256(HEX 镜像)${escapeHtml(artifact.image_sha256)}
    +
    `); + } else if (action === "capabilities") { + const diff = artifact.capability_diff || {}; + showModal("能力差异", `
    +

    固件基线

    ${(artifact.baseline_capabilities || []).map((item) => `

    • ${escapeHtml(item)}

    `).join("")}
    +

    目标固件变化

    ${(diff.added || []).map((item) => `

    + ${escapeHtml(item)}

    `).join("")}${(diff.retained || []).map((item) => `

    ✓ 保留${escapeHtml(item)}

    `).join("") || "

    无新增能力

    "}
    +
    `); + } else if (action === "code") { + showModal("代码差异", `
    ${escapeHtml(artifact.code_diff || "暂无代码差异记录")}
    `); + } else if (action === "validation") { + showModal("验证记录", (artifact.validation_records || []).map((test) => `
    ${escapeHtml(test.name)}${escapeHtml(test.summary)} · ${escapeHtml(formatDate(test.finished_at))}
    `).join("") || `
    暂无验证记录
    `); + } + } + + ui.start.addEventListener("click", startTask); + ui.instruction.addEventListener("input", () => updateCapabilityPreview()); + ui.baseline.addEventListener("change", () => updateCapabilityPreview()); + ui.cancel.addEventListener("click", () => taskAction("cancel")); + ui.retry.addEventListener("click", () => taskAction("retry")); + ui.scrollLogs.addEventListener("click", () => { ui.logs.scrollTop = ui.logs.scrollHeight; }); + document.querySelectorAll("[data-prompt]").forEach((button) => button.addEventListener("click", () => appendPrompt(button.dataset.prompt))); + document.querySelectorAll("[data-inspector-tab]").forEach((button) => button.addEventListener("click", () => { model.inspectorTab = button.dataset.inspectorTab; renderInspector(selectedTask()); refreshIcons(); })); + ui.artifacts.addEventListener("click", (event) => { + const button = event.target.closest("[data-artifact-action]"); + if (button) artifactAction(button); + }); + ui.modalClose.addEventListener("click", closeModal); + ui.modalCloseFooter.addEventListener("click", closeModal); + ui.modal.addEventListener("click", (event) => { if (event.target === ui.modal) closeModal(); }); + document.addEventListener("keydown", (event) => { if (event.key === "Escape" && !ui.modal.hidden) closeModal(); }); + + renderPipeline(null); + renderRelease(null); + updateCapabilityPreview(); + refreshIcons(); + refreshState(); +})(); diff --git a/apps/web-console/index.html b/apps/web-console/index.html index 315ce40..52d6c43 100755 --- a/apps/web-console/index.html +++ b/apps/web-console/index.html @@ -13,8 +13,9 @@ - + + @@ -26,8 +27,9 @@ - + +
    diff --git a/apps/web-console/service-worker.js b/apps/web-console/service-worker.js index 2dd254a..29c5f44 100644 --- a/apps/web-console/service-worker.js +++ b/apps/web-console/service-worker.js @@ -1,4 +1,4 @@ -const CACHE_VERSION = "cognitive-agent-pad-v283"; +const CACHE_VERSION = "cognitive-agent-pad-v288"; const SHELL_CACHE = `${CACHE_VERSION}-shell`; const RUNTIME_CACHE = `${CACHE_VERSION}-runtime`; const APP_SHELL = [ @@ -16,10 +16,15 @@ const APP_SHELL = [ "/speech-input.css?v=sensevoice-7", "/speech-input.js?v=sensevoice-13", "/speech-audio-worklet.js?v=sensevoice-5", - "/assistant-chat.css?v=codex-assistant-29", - "/assistant-chat.js?v=codex-assistant-29", + "/assistant-chat.css?v=codex-assistant-30", + "/assistant-chat.js?v=codex-assistant-30", "/energy-monitor.css?v=energy-monitor-4", "/energy-monitor.js?v=energy-monitor-4", + "/firmware-workbench-entry.css?v=1", + "/firmware-workbench-entry.js?v=2", + "/firmware-workbench.html", + "/firmware-workbench.css?v=5", + "/firmware-workbench.js?v=3", "/assets/pets/self-extension-cat.png?v=3", "/assets/pets/self-extension-cat-entrance.png?v=3", "/manifest.webmanifest", diff --git a/config/scene_templates/lay_flat.yaml b/config/scene_templates/lay_flat.yaml new file mode 100644 index 0000000..bdad3ec --- /dev/null +++ b/config/scene_templates/lay_flat.yaml @@ -0,0 +1,19 @@ +id: lay_flat +name: 躺平模式 +aliases: + - 躺平休息模式 + - 平躺休息模式 +description: 驻车休息预览:默认仅联动副驾靠背与腿托,配合恒温、柔和氛围光、关闭阅读灯与四扇车窗;指定主驾时仅使用其已接入的按摩能力,不调整驾驶姿态。所有动作需确认后保存或试运行。 +icon: armchair +operations: + - {domain: seat, capability: seat.set_driver_massage_native, target_scope: driver, operation: set, parameters: {state: "on", mode: relax}, reason: 主驾只使用已接入的舒适按摩,不改变驾驶姿态。} + - {domain: seat, capability: seat.set_backrest_recline, target_scope: passenger, operation: set, parameters: {position_pct: 66}, reason: 为驻车躺靠休息提供副驾靠背支撑,不使用机械极限位置。} + - {domain: seat, capability: seat.set_legrest_height, target_scope: passenger, operation: set, parameters: {position_pct: 76}, reason: 副驾腿托支撑腿部,具体姿态可在预览后调整。} + - {domain: climate, capability: climate.set_power, target_scope: vehicle, operation: set, parameters: {state: "on"}, reason: 休息期间保持座舱恒温。} + - {domain: climate, capability: climate.set_temperature, target_scope: vehicle, operation: set, parameters: {temperature_c: 24}, reason: 提供可调整的中性舒适温度。} + - {domain: ambient_light, capability: ambient_light.set_illumination, target_scope: vehicle, operation: set, parameters: {color_hex: '#FFB347', brightness_pct: 20}, reason: 使用低亮暖色氛围光。} + - {domain: interior_light, capability: interior_light.set_reading_power, target_scope: all, operation: set, parameters: {state: "off"}, reason: 关闭阅读灯,减少躺靠休息时的直射光。} + - {domain: window, capability: window.set_position, target_scope: front_left, operation: set, parameters: {position_pct: 0}, reason: 关闭左前车窗,降低外部噪声。} + - {domain: window, capability: window.set_position, target_scope: front_right, operation: set, parameters: {position_pct: 0}, reason: 关闭右前车窗,降低外部噪声。} + - {domain: window, capability: window.set_position, target_scope: rear_left, operation: set, parameters: {position_pct: 0}, reason: 关闭左后车窗,降低外部噪声。} + - {domain: window, capability: window.set_position, target_scope: rear_right, operation: set, parameters: {position_pct: 0}, reason: 关闭右后车窗,降低外部噪声。} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/main_cm0plus.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/main_cm0plus.c new file mode 100644 index 0000000..f79c233 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/main_cm0plus.c @@ -0,0 +1,79 @@ +/***************************************************************************//** +* \file main_cm0plus.c +* +* CYT4BFBCJE rev_d CM0+ entry point for the passenger-seat timed-only ECU. +*******************************************************************************/ + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "bsp_seat_backrest_heater.h" +#include "bsp_seat_fan.h" +#include "motor_control.h" +#include "safety_manager.h" +#include "seat_move_config.h" +#include "seat_timed_application.h" + +volatile uint32_t g_seatTimedResetReason = 0u; +volatile uint32_t g_seatTimedInitResult = MOTOR_API_FAILURE; + +static void SeatTimed_HoldSafeOff(void) +{ + for(;;) + { + Motor_ForceSafeOff(); + (void)BspSeatBackrestHeater_ForceOff(); + (void)BspSeatFan_ForceOff(); + SafetyManager_KickWatchdog(); + Cy_SysTick_DelayInUs(SEAT_MOVE_TASK_PERIOD_US); + } +} + +int main(void) +{ + (void)BspSeatBackrestHeater_ForceOff(); + (void)BspSeatFan_ForceOff(); + SystemInit(); + + Motor_ForceSafeOff(); + if(!BspSeatBackrestHeater_ForceOff() || !BspSeatFan_ForceOff()) + { + SeatTimed_HoldSafeOff(); + } + + g_seatTimedResetReason = Cy_SysReset_GetResetReason(); + Cy_SysReset_ClearAllResetReasons(); + SafetyManager_Init(g_seatTimedResetReason); + if(SafetyManager_IsInhibited()) + { + SeatTimed_HoldSafeOff(); + } + + __enable_irq(); + g_seatTimedInitResult = Motor_Init(); + if(g_seatTimedInitResult != MOTOR_API_SUCCESS) + { + SafetyManager_LatchFault(SAFETY_FAULT_DRIVER); + SeatTimed_HoldSafeOff(); + } + + Motor_SetWatchdogServiceEnabled(true); + if(!SeatTimedApplication_Init()) + { + SeatTimed_HoldSafeOff(); + } + + for(;;) + { + SeatTimedApplication_Service(); + if(SafetyManager_IsInhibited()) + { + Motor_ForceSafeOff(); + (void)BspSeatBackrestHeater_ForceOff(); + (void)BspSeatFan_ForceOff(); + } + SafetyManager_KickWatchdog(); + Cy_SysTick_DelayInUs(SEAT_MOVE_TASK_PERIOD_US); + } +} + +/* [] END OF FILE */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.c new file mode 100644 index 0000000..52a14d4 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.c @@ -0,0 +1,332 @@ +#include "safety_manager.h" + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "motor_control.h" +#include "seat_motor_manager.h" +#include "seat_move_config.h" + +#if defined(CoreDebug) && defined(CoreDebug_DHCSR_C_DEBUGEN_Msk) +#define SAFETY_DEBUG_DETACH_SUPPORTED (1u) +#else +#define SAFETY_DEBUG_DETACH_SUPPORTED (0u) +#endif + +static volatile safety_fault_t latchedFault = SAFETY_FAULT_NONE; +static bool watchdogReset = false; +static bool watchdogInitialized = false; +static bool hilWatchdogResetArmed = false; +static bool hilWatchdogRecovered = false; +#if (SAFETY_DEBUG_DETACH_SUPPORTED == 1u) +static bool debuggerWasAttached = false; +#endif + +static bool SafetyManager_DebuggerAttached(void) +{ +#if (SAFETY_DEBUG_DETACH_SUPPORTED == 1u) + return ((CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk) != 0ul); +#else + return false; +#endif +} + +static uint32_t SafetyManager_ReadDebugMarker(void) +{ + return BACKUP->unBREG[SEAT_MOVE_DEBUG_SESSION_BREG_INDEX].u32Register; +} + +static bool SafetyManager_WriteDebugMarker(uint32_t marker) +{ + BACKUP->unBREG[SEAT_MOVE_DEBUG_SESSION_BREG_INDEX].u32Register = marker; + __DSB(); + return (SafetyManager_ReadDebugMarker() == marker); +} + +static bool SafetyManager_WaitForWatchdogState(bool enabled) +{ + uint32_t remaining = 200ul; + uint32_t expected = enabled ? 1ul : 0ul; + + /* WDT ENABLE is an asynchronous request bit; ENABLED is the synchronized + * LF-clock state. Configuration writes made before disable completes are + * ignored by the hardware. */ + while((WDT->unCTL.stcField.u1ENABLED != expected) && (remaining > 0ul)) + { + Cy_SysTick_DelayInUs(1u); + remaining--; + } + return (WDT->unCTL.stcField.u1ENABLED == expected); +} + +static void SafetyManager_ClearHilWatchdogCredential(void) +{ + BACKUP->unBREG[SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX].u32Register = 0u; + BACKUP->unBREG[SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX].u32Register = 0u; + BACKUP->unBREG[SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX].u32Register = 0u; + __DSB(); +} + +void SafetyManager_Init(uint32_t resetReason) +{ + const uint32_t watchdogMask = CY_SYSRESET_WDT | + CY_SYSRESET_MCWDT0 | + CY_SYSRESET_MCWDT1 | + CY_SYSRESET_MCWDT2 | + CY_SYSRESET_MCWDT3; + bool watchdogStopped; + bool debuggerAttached; + uint32_t marker; + uint32_t hilMagic; + uint32_t hilToken; + uint32_t hilCheck; + bool authorizedHilReset; + bool markerOk = true; + + /* A watchdog instance is retained across its own reset on this device. + * Stop it before reading credentials or initializing peripherals; the + * 100 ms bench timeout otherwise permits a reset loop. */ + Cy_WDT_Disable(); + watchdogStopped = SafetyManager_WaitForWatchdogState(false); + + debuggerAttached = SafetyManager_DebuggerAttached(); + marker = SafetyManager_ReadDebugMarker(); + hilMagic = BACKUP->unBREG[ + SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX].u32Register; + hilToken = BACKUP->unBREG[ + SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX].u32Register; + hilCheck = BACKUP->unBREG[ + SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX].u32Register; + authorizedHilReset = + (hilMagic == SEAT_MOVE_HIL_WDT_MARKER) && + (hilCheck == (hilMagic ^ hilToken ^ 0xFFFFFFFFu)) && + (((resetReason & watchdogMask) != 0ul) || + ((resetReason & CY_SYSRESET_SOFT) != 0ul)); + + latchedFault = SAFETY_FAULT_NONE; + watchdogInitialized = false; + hilWatchdogResetArmed = false; + watchdogReset = ((resetReason & watchdogMask) != 0ul) || + authorizedHilReset; + hilWatchdogRecovered = authorizedHilReset; + if((resetReason & CY_SYSRESET_PORVDDD) != 0ul) + { + markerOk = SafetyManager_WriteDebugMarker(0u); + marker = SafetyManager_ReadDebugMarker(); + SafetyManager_ClearHilWatchdogCredential(); + hilWatchdogRecovered = false; + } + else if(hilWatchdogRecovered) + { + /* Consume before CAN comes online: transport retries cannot turn one + * authenticated reset into a second physical reset. */ + SafetyManager_ClearHilWatchdogCredential(); + } + else if(hilMagic == SEAT_MOVE_HIL_WDT_MARKER) + { + /* XRES/programming without a valid reset reason is not completion. */ + SafetyManager_ClearHilWatchdogCredential(); + } +#if (SAFETY_DEBUG_DETACH_SUPPORTED == 1u) + debuggerWasAttached = debuggerAttached; +#endif + + if(!markerOk || (marker == SEAT_MOVE_DEBUG_EXIT_MAGIC) || + ((marker == SEAT_MOVE_DEBUG_ACTIVE_MAGIC) && !debuggerAttached)) + { + latchedFault = SAFETY_FAULT_DEBUG_DETACH; + } + else if(watchdogReset && !hilWatchdogRecovered) + { + latchedFault = SAFETY_FAULT_BOOT_RECOVERY; + } + else if(debuggerAttached && + !SafetyManager_WriteDebugMarker(SEAT_MOVE_DEBUG_ACTIVE_MAGIC)) + { + latchedFault = SAFETY_FAULT_DEBUG_DETACH; + } + + /* The system-WDT configuration register is retained across some reset + * paths and AUTO_SERVICE is not reset by Cy_WDT_Init(). If that bit is + * left enabled, stopping the two software service paths can never prove a + * real watchdog reset because hardware services the counter at WARN_LIMIT. + * Configure only while stopped, and make software the sole WDT owner. */ + if(!watchdogStopped) + { + latchedFault = SAFETY_FAULT_DRIVER; + return; + } + Cy_WDT_Init(); + Cy_WDT_Unlock(); + Cy_WDT_SetUpperLimit(SEAT_MOVE_WDT_TIMEOUT_TICKS); + Cy_WDT_SetUpperAction(CY_WDT_LOW_UPP_ACTION_RESET); + Cy_WDT_SetWarnAction(CY_WDT_WARN_ACTION_NONE); + Cy_WDT_SetAutoService(CY_WDT_DISABLE); + Cy_WDT_SetDebugRun(CY_WDT_ENABLE); + Cy_WDT_Lock(); + if((WDT->unUPPER_LIMIT.stcField.u32UPPER_LIMIT != + SEAT_MOVE_WDT_TIMEOUT_TICKS) || + (WDT->unCONFIG.stcField.u1UPPER_ACTION != + (uint32_t)CY_WDT_LOW_UPP_ACTION_RESET) || + (WDT->unCONFIG.stcField.u1AUTO_SERVICE != + (uint32_t)CY_WDT_DISABLE)) + { + latchedFault = SAFETY_FAULT_DRIVER; + return; + } + Cy_WDT_Enable(); + if(!SafetyManager_WaitForWatchdogState(true)) + { + latchedFault = SAFETY_FAULT_DRIVER; + return; + } + Cy_WDT_ClearWatchdog(); + Cy_SysTick_DelayInUs(1000u); + if(Cy_WDT_GetCount() == 0ul) + { + latchedFault = SAFETY_FAULT_DRIVER; + return; + } + watchdogInitialized = true; + SafetyManager_KickWatchdog(); +} + +void SafetyManager_KickWatchdog(void) +{ + if((false != watchdogInitialized) && !hilWatchdogResetArmed) + { + Cy_WDT_ClearWatchdog(); + } +} + +bool SafetyManager_IsWatchdogInitialized(void) +{ + return watchdogInitialized; +} + +void SafetyManager_LatchFault(safety_fault_t fault) +{ + if((fault != SAFETY_FAULT_NONE) && + (latchedFault == SAFETY_FAULT_NONE)) + { + latchedFault = fault; + Motor_LatchSafetyInhibitFromIsr(0u); + Motor_StopAll(); + SeatMotorManager_StopAll(0ul); + } +} + +void SafetyManager_Service(void) +{ + bool debuggerAttached = SafetyManager_DebuggerAttached(); + uint32_t marker = SafetyManager_ReadDebugMarker(); + + if(marker == SEAT_MOVE_DEBUG_EXIT_MAGIC) + { + SafetyManager_LatchFault(SAFETY_FAULT_DEBUG_DETACH); + } + + if(Motor_IsDriverFaultLatched()) + { + SafetyManager_LatchFault(SAFETY_FAULT_DRIVER); + } + else + { + /* No newly observed driver fault. */ + } + +#if (SAFETY_DEBUG_DETACH_SUPPORTED == 1u) + if(debuggerAttached) + { + if((marker != SEAT_MOVE_DEBUG_ACTIVE_MAGIC) && + !SafetyManager_WriteDebugMarker(SEAT_MOVE_DEBUG_ACTIVE_MAGIC)) + { + SafetyManager_LatchFault(SAFETY_FAULT_DEBUG_DETACH); + } + debuggerWasAttached = true; + } + else if(debuggerWasAttached) + { + SafetyManager_LatchFault(SAFETY_FAULT_DEBUG_DETACH); + debuggerWasAttached = false; + } +#else + (void)debuggerAttached; +#endif + + SafetyManager_KickWatchdog(); +} + +bool SafetyManager_IsInhibited(void) +{ + return (latchedFault != SAFETY_FAULT_NONE); +} + +safety_fault_t SafetyManager_GetFault(void) +{ + return latchedFault; +} + +bool SafetyManager_WasWatchdogReset(void) +{ + return watchdogReset; +} + +bool SafetyManager_TriggerHilWatchdogReset(uint16_t token) +{ + uint32_t check; + + if(!watchdogInitialized || hilWatchdogResetArmed) + { + return false; + } + BACKUP->unBREG[SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX].u32Register = + SEAT_MOVE_HIL_WDT_MARKER; + BACKUP->unBREG[SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX].u32Register = token; + check = SEAT_MOVE_HIL_WDT_MARKER ^ (uint32_t)token ^ 0xFFFFFFFFu; + BACKUP->unBREG[SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX].u32Register = check; + __DSB(); + if((BACKUP->unBREG[ + SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX].u32Register != + SEAT_MOVE_HIL_WDT_MARKER) || + (BACKUP->unBREG[ + SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX].u32Register != check)) + { + SafetyManager_ClearHilWatchdogCredential(); + return false; + } + /* Long-running motor calibration/coast loops normally service WDT + * directly so they remain safe even while the application loop is busy. + * The armed HIL case must suspend both service paths or a real watchdog + * reset can never occur. Startup re-enables this after the reset. */ + Motor_SetWatchdogServiceEnabled(false); + Cy_WDT_ClearWatchdog(); + hilWatchdogResetArmed = true; + return true; +} + +void SafetyManager_CommitHilWatchdogReset(void) +{ + if(!hilWatchdogResetArmed) + { + return; + } + + /* This bench's connected CMSIS-DAP can suppress the WDT reset output even + * after C-SPY detaches. First prove physical WDT expiry, then use the + * reference project's authenticated processor-reset fallback. */ + while(Cy_WDT_GetCount() < SEAT_MOVE_WDT_TIMEOUT_TICKS) + { + __NOP(); + } + __DSB(); + NVIC_SystemReset(); + for(;;) + { + __NOP(); + } +} + +bool SafetyManager_WasHilWatchdogRecovered(void) +{ + return hilWatchdogRecovered; +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.h new file mode 100644 index 0000000..e4e67a3 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/safety_manager.h @@ -0,0 +1,30 @@ +#ifndef SAFETY_MANAGER_H +#define SAFETY_MANAGER_H + +#include +#include + +typedef enum +{ + SAFETY_FAULT_NONE = 0, + SAFETY_FAULT_DRIVER = 1, + SAFETY_FAULT_CAN_BUS_OFF = 2, + SAFETY_FAULT_CONFIG_STORE = 3, + SAFETY_FAULT_BOOT_RECOVERY = 4, + SAFETY_FAULT_DEBUG_DETACH = 5, + SAFETY_FAULT_CAN_INIT = 6 +} safety_fault_t; + +void SafetyManager_Init(uint32_t resetReason); +void SafetyManager_Service(void); +void SafetyManager_LatchFault(safety_fault_t fault); +void SafetyManager_KickWatchdog(void); +bool SafetyManager_IsWatchdogInitialized(void); +bool SafetyManager_IsInhibited(void); +safety_fault_t SafetyManager_GetFault(void); +bool SafetyManager_WasWatchdogReset(void); +bool SafetyManager_TriggerHilWatchdogReset(uint16_t token); +void SafetyManager_CommitHilWatchdogReset(void); +bool SafetyManager_WasHilWatchdogRecovered(void); + +#endif /* SAFETY_MANAGER_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.c new file mode 100644 index 0000000..fa5f195 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.c @@ -0,0 +1,1269 @@ +#include "seat_motor_manager.h" + +#include "seat_move_config.h" + +#include +#include + +#define SEAT_MOTOR_RETRY_DELAY_MS (2000ul) +#define SEAT_MOTOR_SPEED_CAL_WARMUP_MS (500ul) +#define SEAT_MOTOR_SPEED_CAL_MEASURE_MS (1000ul) +#define SEAT_MOTOR_SPEED_CAL_DUTY_PERCENT (95u) +#define SEAT_MOTOR_DEFAULT_CAL_LEG_TIMEOUT_MS (70000ul) +#define SEAT_MOTOR_TIMED_ARRIVAL_SETTLE_MS (500ul) +#define SEAT_MOTOR_TIMED_M0_NEAR_EXTENSION_MS (900ul) +#define SEAT_MOTOR_TIMED_M0_FAR_EXTENSION_MS (1000ul) +#define SEAT_MOTOR_TIMED_M1_NEAR_EXTENSION_MS (1200ul) +#define SEAT_MOTOR_TIMED_M1_FAR_EXTENSION_MS (700ul) +#define SEAT_MOTOR_TIMED_M3_NEAR_EXTENSION_MS (1900ul) +#define SEAT_MOTOR_TIMED_M3_FAR_EXTENSION_MS (1600ul) + +typedef char seat_motor_manager_requires_four_motors[ + (MOTOR_MODE_COUNT == 4) ? 1 : -1]; + +typedef struct +{ + seat_motor_task_state_t state; + seat_motor_task_state_t stateAfterStart; + seat_motor_result_t result; + uint32_t commandSequence; + uint32_t targetValueX100; + uint32_t durationMs; + uint32_t speedPlanDurationMs; + uint32_t deadlineGraceMs; + uint32_t deadlineMs; + uint32_t retryAtMs; + uint32_t speedValuePerSecondX100; + uint32_t timedRawStartEdges; + uint32_t calibrationRawStart; + uint32_t calibrationStartMs; + uint32_t measuredMaxSpeedPpsX100; + motor_direction_t direction; + uint8_t dutyPercent; + uint8_t retryCount; + bool dynamicSpeed; + bool active; +} seat_motor_task_t; + +static seat_motor_task_t tasks[MOTOR_MODE_COUNT]; + +static bool SeatMotor_ModeValid(motor_mode_t mode) +{ + return ((uint32_t)mode < (uint32_t)MOTOR_MODE_COUNT); +} + +static uint32_t SeatMotor_MaxValueX100(motor_mode_t mode) +{ + if(mode == MOTOR_MODE_0_LINEAR) + { + return MOTOR_MODE0_MAX_POSITION_MM_X100; + } + if(mode == MOTOR_MODE_1_ANGLE) + { + return MOTOR_MODE1_MAX_VERTICAL_MM_X100; + } + if(mode == MOTOR_MODE_2_ANGLE) + { + return MOTOR_MODE2_MAX_ANGLE_DEG_X100; + } + if(mode == MOTOR_MODE_3_LINEAR_TRACK) + { + return MOTOR_MODE3_MAX_ANGLE_DEG_X100; + } + return 0ul; +} + +static uint8_t SeatMotor_DefaultDutyPercent(motor_mode_t mode) +{ + if(mode == MOTOR_MODE_0_LINEAR) + { + return SEAT_MOVE_M0_DEFAULT_DUTY_PERCENT; + } + if(mode == MOTOR_MODE_1_ANGLE) + { + return SEAT_MOVE_M1_DEFAULT_DUTY_PERCENT; + } + if(mode == MOTOR_MODE_2_ANGLE) + { + return SEAT_MOVE_M2_DEFAULT_DUTY_PERCENT; + } + if(mode == MOTOR_MODE_3_LINEAR_TRACK) + { + return SEAT_MOVE_M3_DEFAULT_DUTY_PERCENT; + } + return 0u; +} + +static bool SeatMotor_TimeReached(uint32_t now, uint32_t deadline) +{ + return ((int32_t)(now - deadline) >= 0); +} + +static uint32_t SeatMotor_AbsDelta(uint32_t lhs, uint32_t rhs) +{ + return (lhs >= rhs) ? (lhs - rhs) : (rhs - lhs); +} + +static uint32_t SeatMotor_TimedPlanExtensionMs( + motor_mode_t mode, + motor_direction_t direction) +{ + /* The four loaded mechanisms do not have identical low-speed breakaway + * and coast behavior. Bench traces show repeatable early arrival against + * M2 when every axis follows the same ideal time-position line. Extend + * only the speed plan (never the phase deadline) by the measured lead so + * all four axes converge at the requested phase boundary. */ + if(mode == MOTOR_MODE_0_LINEAR) + { + return (direction == MOTOR_DIRECTION_TOWARD_NEAR) ? + SEAT_MOTOR_TIMED_M0_NEAR_EXTENSION_MS : + SEAT_MOTOR_TIMED_M0_FAR_EXTENSION_MS; + } + if(mode == MOTOR_MODE_1_ANGLE) + { + return (direction == MOTOR_DIRECTION_TOWARD_NEAR) ? + SEAT_MOTOR_TIMED_M1_NEAR_EXTENSION_MS : + SEAT_MOTOR_TIMED_M1_FAR_EXTENSION_MS; + } + if(mode == MOTOR_MODE_3_LINEAR_TRACK) + { + return (direction == MOTOR_DIRECTION_TOWARD_NEAR) ? + SEAT_MOTOR_TIMED_M3_NEAR_EXTENSION_MS : + SEAT_MOTOR_TIMED_M3_FAR_EXTENSION_MS; + } + return 0ul; +} + +static bool SeatMotor_TargetWithinHallTolerance( + const seat_motor_task_t *task, + const motor_position_info_t *info) +{ + uint32_t targetHallCount; + + if((NULL == task) || (NULL == info) || + (false == info->positionValid) || (0ul == info->maxValueX100) || + (0ul == info->maxHallCount) || + (task->targetValueX100 > info->maxValueX100)) + { + return false; + } + targetHallCount = (uint32_t) + (((uint64_t)task->targetValueX100 * info->maxHallCount + + (info->maxValueX100 / 2ul)) / info->maxValueX100); + return SeatMotor_AbsDelta(targetHallCount, info->hallCount) <= + SEAT_MOVE_POSITION_TARGET_HALL_TOLERANCE; +} + +static bool SeatMotor_DutyValid(uint8_t dutyPercent) +{ + return (dutyPercent >= MOTOR_SPEED_MIN_DUTY_PERCENT) && + (dutyPercent <= MOTOR_SPEED_MAX_DUTY_PERCENT); +} + +static bool SeatMotor_TaskIsPosition(const seat_motor_task_t *task) +{ + return (task->state == SEAT_MOTOR_TASK_POSITION) || + ((task->state == SEAT_MOTOR_TASK_WAIT_START) && + (task->stateAfterStart == SEAT_MOTOR_TASK_POSITION)); +} + +static bool SeatMotor_TaskIsTimed(const seat_motor_task_t *task) +{ + return (task->state == SEAT_MOTOR_TASK_TIMED) || + ((task->state == SEAT_MOTOR_TASK_WAIT_START) && + (task->stateAfterStart == SEAT_MOTOR_TASK_TIMED)); +} + +static void SeatMotor_SetFailed(motor_mode_t mode, + seat_motor_result_t result) +{ + seat_motor_task_t *task = &tasks[(uint32_t)mode]; + + (void)Motor_StopMode(mode); + task->state = SEAT_MOTOR_TASK_FAILED; + task->result = result; + task->active = false; +} + +static void SeatMotor_SetComplete(motor_mode_t mode) +{ + seat_motor_task_t *task = &tasks[(uint32_t)mode]; + + task->state = SEAT_MOTOR_TASK_COMPLETE; + task->result = SEAT_MOTOR_RESULT_OK; + task->active = false; +} + +static void SeatMotor_SetStopped(motor_mode_t mode) +{ + seat_motor_task_t *task = &tasks[(uint32_t)mode]; + + task->state = SEAT_MOTOR_TASK_IDLE; + task->result = SEAT_MOTOR_RESULT_STOPPED; + task->active = false; +} + +static bool SeatMotor_PrepareNewTask(motor_mode_t mode, + uint32_t commandSequence) +{ + seat_motor_task_t *task; + + if((false == SeatMotor_ModeValid(mode)) || + Motor_IsDriverFaultLatched() || + (commandSequence > UINT16_MAX)) + { + return false; + } + if((MOTOR_API_SUCCESS != Motor_StopMode(mode)) || + (MOTOR_API_SUCCESS != Motor_AcknowledgeCommand( + mode, (uint16_t)commandSequence))) + { + return false; + } + task = &tasks[(uint32_t)mode]; + (void)memset(task, 0, sizeof(*task)); + task->commandSequence = commandSequence; + task->result = SEAT_MOTOR_RESULT_RUNNING; + task->active = true; + return true; +} + +static bool SeatMotor_StartPositionTask(motor_mode_t mode, + uint32_t targetValueX100, + uint8_t dutyPercent, + uint32_t speedValuePerSecondX100, + uint32_t durationLimitMs, + uint32_t speedPlanDurationMs, + uint32_t commandSequence, + bool dynamicSpeed, + bool preserveRetry, + seat_motor_task_state_t runningState) +{ + seat_motor_task_t savedTask; + seat_motor_task_t *task; + motor_position_info_t info; + uint32_t travelValueX100; + uint32_t planDurationMs = 0ul; + uint8_t retryCount; + + if((false == SeatMotor_ModeValid(mode)) || + ((runningState != SEAT_MOTOR_TASK_POSITION) && + (runningState != SEAT_MOTOR_TASK_TIMED)) || + (targetValueX100 > SeatMotor_MaxValueX100(mode)) || + (MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid)) + { + return false; + } + task = &tasks[(uint32_t)mode]; + retryCount = task->retryCount; + if((false == dynamicSpeed) && (false == SeatMotor_DutyValid(dutyPercent))) + { + return false; + } + travelValueX100 = SeatMotor_AbsDelta(targetValueX100, info.valueX100); + if((false != dynamicSpeed) && + ((0ul == speedValuePerSecondX100) || (0ul == travelValueX100))) + { + if(0ul == travelValueX100) + { + if(false == preserveRetry) + { + if(false == SeatMotor_PrepareNewTask(mode, commandSequence)) + { + return false; + } + } + SeatMotor_SetComplete(mode); + return true; + } + return false; + } + + savedTask = *task; + if((false == preserveRetry) && + (false == SeatMotor_PrepareNewTask(mode, commandSequence))) + { + return false; + } + task = &tasks[(uint32_t)mode]; + if(false != preserveRetry) + { + *task = savedTask; + task->result = SEAT_MOTOR_RESULT_RUNNING; + task->active = true; + retryCount = 1u; + } + + if(false != dynamicSpeed) + { + planDurationMs = (speedPlanDurationMs != 0ul) ? + speedPlanDurationMs : (durationLimitMs != 0ul) ? durationLimitMs : + (uint32_t)((((uint64_t)travelValueX100 * 1000ull) + + speedValuePerSecondX100 - 1ull) / + speedValuePerSecondX100); + if((0ul == planDurationMs) || + (MOTOR_API_SUCCESS != Motor_SetSpeedPlan(mode, + planDurationMs, + travelValueX100))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + } + else if((MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent(mode, + dutyPercent))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + + task->stateAfterStart = runningState; + task->state = (durationLimitMs != 0ul) ? + SEAT_MOTOR_TASK_WAIT_START : runningState; + task->targetValueX100 = targetValueX100; + task->durationMs = durationLimitMs; + task->speedPlanDurationMs = planDurationMs; + task->deadlineMs = 0ul; + task->speedValuePerSecondX100 = speedValuePerSecondX100; + task->dutyPercent = dutyPercent; + task->dynamicSpeed = dynamicSpeed; + task->retryCount = retryCount; + task->direction = (targetValueX100 >= info.valueX100) ? + MOTOR_DIRECTION_TOWARD_FAR : + MOTOR_DIRECTION_TOWARD_NEAR; + + if(MOTOR_API_SUCCESS != Motor_StartMoveToValue(mode, targetValueX100)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + return true; +} + +void SeatMotorManager_Init(void) +{ + (void)memset(tasks, 0, sizeof(tasks)); +} + +void SeatMotorManager_Stop(motor_mode_t mode, uint32_t commandSequence) +{ + seat_motor_task_t *task; + + if(false == SeatMotor_ModeValid(mode)) + { + return; + } + (void)Motor_StopMode(mode); + task = &tasks[(uint32_t)mode]; + (void)memset(task, 0, sizeof(*task)); + task->commandSequence = commandSequence; + task->state = SEAT_MOTOR_TASK_IDLE; + task->result = SEAT_MOTOR_RESULT_STOPPED; +} + +void SeatMotorManager_StopAll(uint32_t commandSequence) +{ + uint32_t index; + + for(index = 0ul; index < (uint32_t)MOTOR_MODE_COUNT; index++) + { + SeatMotorManager_Stop((motor_mode_t)index, commandSequence); + } +} + +bool SeatMotorManager_IsAnyActive(void) +{ + uint32_t index; + + for(index = 0ul; index < (uint32_t)MOTOR_MODE_COUNT; index++) + { + if(false != tasks[index].active) + { + return true; + } + } + return false; +} + +static void SeatMotor_ServiceSpeedCalibration(motor_mode_t mode, + const motor_position_info_t *info, + uint32_t now) +{ + seat_motor_task_t *task = &tasks[(uint32_t)mode]; + motor_persistent_state_t rawState; + uint32_t elapsedMs; + uint32_t measuredPpsX100; + + if(task->state == SEAT_MOTOR_TASK_SPEED_CAL_SETTLE) + { + if(false == Motor_IsCommandCurrent( + mode, (uint16_t)task->commandSequence)) + { + SeatMotor_SetStopped(mode); + return; + } + if(Motor_IsMoving(mode)) + { + return; + } + if((0ul == task->measuredMaxSpeedPpsX100) || + (MOTOR_API_SUCCESS != Motor_SetMaximumSpeedPpsX100( + mode, + task->measuredMaxSpeedPpsX100))) + { + if(false == Motor_IsCommandCurrent( + mode, (uint16_t)task->commandSequence)) + { + SeatMotor_SetStopped(mode); + } + else + { + SeatMotor_SetFailed( + mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + } + return; + } + SeatMotor_SetComplete(mode); + return; + } + + if((info->lastEvent == MOTOR_EVENT_STALL) || + (info->lastEvent == MOTOR_EVENT_NEAR_ENDPOINT) || + (info->lastEvent == MOTOR_EVENT_FAR_ENDPOINT) || + (info->lastEvent == MOTOR_EVENT_TIMEOUT) || + (info->lastEvent == MOTOR_EVENT_TARGET_REACHED)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return; + } + if(task->state == SEAT_MOTOR_TASK_WAIT_START) + { + return; + } + if(task->state == SEAT_MOTOR_TASK_SPEED_CAL_WARMUP) + { + if(SeatMotor_TimeReached(now, + task->calibrationStartMs + + SEAT_MOTOR_SPEED_CAL_WARMUP_MS)) + { + if(MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &rawState)) + { + SeatMotor_SetFailed(mode, + SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return; + } + task->calibrationRawStart = rawState.rawRisingEdges; + task->calibrationStartMs = now; + task->state = SEAT_MOTOR_TASK_SPEED_CAL_MEASURE; + } + return; + } + + if(SeatMotor_TimeReached(now, + task->calibrationStartMs + + SEAT_MOTOR_SPEED_CAL_MEASURE_MS)) + { + if(MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &rawState)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return; + } + elapsedMs = now - task->calibrationStartMs; + measuredPpsX100 = (uint32_t) + (((uint64_t)(rawState.rawRisingEdges - + task->calibrationRawStart) * 100000ull) / + elapsedMs); + if((0ul == measuredPpsX100) || + (MOTOR_API_SUCCESS != Motor_StopMode(mode))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return; + } + task->measuredMaxSpeedPpsX100 = measuredPpsX100; + task->state = SEAT_MOTOR_TASK_SPEED_CAL_SETTLE; + } +} + +void SeatMotorManager_Service(void) +{ + uint32_t index; + uint32_t now; + + Motor_ServiceAll(); + now = Motor_GetTimeMs(); + for(index = 0ul; index < (uint32_t)MOTOR_MODE_COUNT; index++) + { + motor_mode_t mode = (motor_mode_t)index; + seat_motor_task_t *task = &tasks[index]; + motor_position_info_t info; + bool endpointEvent; + + if((false == task->active) || + (MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info))) + { + continue; + } + if(Motor_IsDriverFaultLatched() || + (info.lastEvent == MOTOR_EVENT_DRIVER_FAULT)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_DRIVER_FAULT); + continue; + } + if(false == Motor_IsCommandCurrent( + mode, (uint16_t)task->commandSequence)) + { + SeatMotor_SetStopped(mode); + continue; + } + if((info.lastEvent == MOTOR_EVENT_ABORTED) && + (task->state != SEAT_MOTOR_TASK_SPEED_CAL_SETTLE)) + { + SeatMotor_SetStopped(mode); + continue; + } + if((task->state == SEAT_MOTOR_TASK_WAIT_START) && + (info.direction != MOTOR_DIRECTION_STOPPED)) + { + task->state = task->stateAfterStart; + if(task->state == SEAT_MOTOR_TASK_SPEED_CAL_WARMUP) + { + task->calibrationStartMs = now; + } + else if(0ul != task->durationMs) + { + task->deadlineMs = now + task->durationMs + + task->deadlineGraceMs; + } + else + { + task->deadlineMs = 0ul; + } + } + if((task->state == SEAT_MOTOR_TASK_SPEED_CAL_WARMUP) || + (task->state == SEAT_MOTOR_TASK_SPEED_CAL_MEASURE) || + (task->state == SEAT_MOTOR_TASK_SPEED_CAL_SETTLE) || + ((task->state == SEAT_MOTOR_TASK_WAIT_START) && + (task->stateAfterStart == + SEAT_MOTOR_TASK_SPEED_CAL_WARMUP))) + { + SeatMotor_ServiceSpeedCalibration(mode, &info, now); + continue; + } + if(task->state == SEAT_MOTOR_TASK_RETRY_DELAY) + { + if(SeatMotor_TimeReached(now, task->retryAtMs)) + { + if(false == SeatMotor_StartPositionTask( + mode, + task->targetValueX100, + task->dutyPercent, + task->speedValuePerSecondX100, + task->durationMs, + task->speedPlanDurationMs, + task->commandSequence, + task->dynamicSpeed, + true, + task->stateAfterStart)) + { + if(false == Motor_IsCommandCurrent( + mode, + (uint16_t)task->commandSequence)) + { + SeatMotor_SetStopped(mode); + } + else + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_STALL); + } + } + } + continue; + } + endpointEvent = (info.lastEvent == MOTOR_EVENT_NEAR_ENDPOINT) || + (info.lastEvent == MOTOR_EVENT_FAR_ENDPOINT); + if((info.lastEvent == MOTOR_EVENT_STALL) || endpointEvent) + { + /* The low-level safety event has already stopped the hardware. + * At a discrete Hall endpoint, the mechanism may stop up to two + * pulses short of the mathematically rounded target. This is a + * successful position arrival, not a fault/retry condition. */ + if(SeatMotor_TaskIsPosition(task) && + SeatMotor_TargetWithinHallTolerance(task, &info)) + { + SeatMotor_SetComplete(mode); + continue; + } + if(SeatMotor_TaskIsPosition(task) && + (0u == task->retryCount)) + { + if(MOTOR_API_SUCCESS != Motor_StopMode(mode)) + { + SeatMotor_SetFailed( + mode, + Motor_IsDriverFaultLatched() ? + SEAT_MOTOR_RESULT_DRIVER_FAULT : + SEAT_MOTOR_RESULT_INVALID); + continue; + } + task->state = SEAT_MOTOR_TASK_RETRY_DELAY; + task->deadlineMs = 0ul; + task->retryAtMs = now + SEAT_MOTOR_RETRY_DELAY_MS; + task->retryCount = 1u; + } + else if(endpointEvent && SeatMotor_TaskIsTimed(task)) + { + SeatMotor_SetComplete(mode); + } + else + { + SeatMotor_SetFailed( + mode, + endpointEvent ? SEAT_MOTOR_RESULT_ENDPOINT : + SEAT_MOTOR_RESULT_STALL); + } + continue; + } + if(info.lastEvent == MOTOR_EVENT_TARGET_REACHED) + { + SeatMotor_SetComplete(mode); + continue; + } + if(info.lastEvent == MOTOR_EVENT_TIMEOUT) + { + /* Some seat actuators open their internal limit contact instead + * of producing a high-current endpoint event. The low-level + * no-motion timer then reports TIMEOUT even when discrete Hall + * feedback stopped only a few pulses from the requested pose. + * Accept only the same tightly bounded Hall-domain arrival proof + * used for endpoint/stall events; every other timeout remains a + * failure. */ + if(SeatMotor_TaskIsPosition(task) && + SeatMotor_TargetWithinHallTolerance(task, &info)) + { + SeatMotor_SetComplete(mode); + continue; + } + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_TIMEOUT); + continue; + } + if((0ul != task->deadlineMs) && + SeatMotor_TimeReached(now, task->deadlineMs)) + { + if(MOTOR_API_SUCCESS != Motor_StopMode(mode)) + { + SeatMotor_SetFailed( + mode, + Motor_IsDriverFaultLatched() ? + SEAT_MOTOR_RESULT_DRIVER_FAULT : + SEAT_MOTOR_RESULT_INVALID); + continue; + } + if(task->state == SEAT_MOTOR_TASK_TIMED) + { + motor_persistent_state_t rawState; + + /* A duration expiring is not proof that the requested axis + * actually moved. Require at least one Hall edge so an open + * circuit, unpowered bridge or disconnected motor is reported + * as STALL instead of a misleading OK completion. */ + if(MOTOR_API_SUCCESS != + Motor_GetPersistentState(mode, &rawState)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + } + else if(rawState.rawRisingEdges == + task->timedRawStartEdges) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_STALL); + } + else + { + SeatMotor_SetComplete(mode); + } + } + else + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_TIMEOUT); + } + } + } +} + +bool SeatMotor_MoveAbsoluteDuty(motor_mode_t mode, + uint32_t targetValueX100, + uint8_t dutyPercent, + uint32_t commandSequence) +{ + return SeatMotor_StartPositionTask(mode, + targetValueX100, + dutyPercent, + 0ul, + 0ul, + 0ul, + commandSequence, + false, + false, + SEAT_MOTOR_TASK_POSITION); +} + +bool SeatMotor_MoveRelativeDuty(motor_mode_t mode, + int32_t deltaValueX100, + uint8_t dutyPercent, + uint32_t commandSequence) +{ + motor_position_info_t info; + int64_t target; + + if((MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid)) + { + return false; + } + target = (int64_t)info.valueX100 + deltaValueX100; + if((target < 0ll) || (target > (int64_t)SeatMotor_MaxValueX100(mode))) + { + return false; + } + return SeatMotor_MoveAbsoluteDuty(mode, + (uint32_t)target, + dutyPercent, + commandSequence); +} + +bool SeatMotor_MoveAbsoluteNormalized(motor_mode_t mode, + uint32_t targetPercentX100, + uint32_t timeoutMs, + uint8_t dutyPercent, + uint32_t commandSequence) +{ + motor_position_info_t info; + uint32_t targetValueX100; + + if((targetPercentX100 > 10000ul) || (0ul == timeoutMs) || + (MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid) || (0ul == info.maxValueX100)) + { + return false; + } + targetValueX100 = (uint32_t) + ((((uint64_t)targetPercentX100 * info.maxValueX100) + 5000ull) / + 10000ull); + return SeatMotor_StartPositionTask(mode, + targetValueX100, + dutyPercent, + 0ul, + timeoutMs, + 0ul, + commandSequence, + false, + false, + SEAT_MOTOR_TASK_POSITION); +} + +bool SeatMotor_MoveRelativeNormalized(motor_mode_t mode, + int32_t deltaPercentX100, + uint32_t timeoutMs, + uint8_t dutyPercent, + uint32_t commandSequence) +{ + motor_position_info_t info; + int32_t targetPercentX100; + + if((MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid)) + { + return false; + } + targetPercentX100 = (int32_t)info.percentX100 + deltaPercentX100; + if(targetPercentX100 < 0) + { + targetPercentX100 = 0; + } + else if(targetPercentX100 > 10000) + { + targetPercentX100 = 10000; + } + else + { + /* Target already lies in the normalized range. */ + } + return SeatMotor_MoveAbsoluteNormalized(mode, + (uint32_t)targetPercentX100, + timeoutMs, + dutyPercent, + commandSequence); +} + +bool SeatMotor_MoveTimedDuty(motor_mode_t mode, + motor_direction_t direction, + uint32_t durationMs, + uint8_t dutyPercent, + uint32_t commandSequence) +{ + seat_motor_task_t *task; + + if((0ul == durationMs) || (false == SeatMotor_DutyValid(dutyPercent)) || + ((direction != MOTOR_DIRECTION_TOWARD_FAR) && + (direction != MOTOR_DIRECTION_TOWARD_NEAR)) || + (false == SeatMotor_PrepareNewTask(mode, commandSequence))) + { + return false; + } + if(MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent(mode, dutyPercent)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + task = &tasks[(uint32_t)mode]; + { + motor_persistent_state_t rawState; + + if(MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &rawState)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + task->timedRawStartEdges = rawState.rawRisingEdges; + } + /* A timed manual movement is valid even before an absolute endpoint has + * been calibrated. It therefore uses the open-loop direction primitive + * and is bounded by duration, Hall stall/endpoint detection and the + * low-level absolute operation timeout. */ + if(MOTOR_API_SUCCESS != Motor_StartOpenLoop(mode, direction)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + task->state = SEAT_MOTOR_TASK_WAIT_START; + task->stateAfterStart = SEAT_MOTOR_TASK_TIMED; + task->direction = direction; + task->durationMs = durationMs; + task->deadlineMs = 0ul; + task->dutyPercent = dutyPercent; + return true; +} + +bool SeatMotor_MoveAbsoluteSpeed(motor_mode_t mode, + uint32_t targetValueX100, + uint32_t speedValuePerSecondX100, + uint32_t commandSequence) +{ + return SeatMotor_StartPositionTask(mode, + targetValueX100, + 0u, + speedValuePerSecondX100, + 0ul, + 0ul, + commandSequence, + true, + false, + SEAT_MOTOR_TASK_POSITION); +} + +bool SeatMotor_MoveRelativeSpeed(motor_mode_t mode, + int32_t deltaValueX100, + uint32_t speedValuePerSecondX100, + uint32_t commandSequence) +{ + motor_position_info_t info; + int64_t target; + + if((MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid)) + { + return false; + } + target = (int64_t)info.valueX100 + deltaValueX100; + if((target < 0ll) || (target > (int64_t)SeatMotor_MaxValueX100(mode))) + { + return false; + } + return SeatMotor_MoveAbsoluteSpeed(mode, + (uint32_t)target, + speedValuePerSecondX100, + commandSequence); +} + +bool SeatMotor_MoveTimedSpeed(motor_mode_t mode, + motor_direction_t direction, + uint32_t durationMs, + uint32_t speedValuePerSecondX100, + uint32_t commandSequence) +{ + seat_motor_task_t *task; + uint32_t travel; + + if((0ul == durationMs) || (0ul == speedValuePerSecondX100) || + ((direction != MOTOR_DIRECTION_TOWARD_FAR) && + (direction != MOTOR_DIRECTION_TOWARD_NEAR)) || + (false == SeatMotor_PrepareNewTask(mode, commandSequence))) + { + return false; + } + travel = (uint32_t)((((uint64_t)speedValuePerSecondX100) * + durationMs) / 1000ull); + if((0ul == travel) || (travel > SeatMotor_MaxValueX100(mode)) || + (MOTOR_API_SUCCESS != Motor_SetSpeedPlan(mode, durationMs, travel))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + task = &tasks[(uint32_t)mode]; + { + motor_persistent_state_t rawState; + + if(MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &rawState)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + task->timedRawStartEdges = rawState.rawRisingEdges; + } + if(MOTOR_API_SUCCESS != Motor_StartOpenLoop(mode, direction)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_INVALID); + return false; + } + task->state = SEAT_MOTOR_TASK_WAIT_START; + task->stateAfterStart = SEAT_MOTOR_TASK_TIMED; + task->direction = direction; + task->durationMs = durationMs; + task->deadlineMs = 0ul; + task->speedValuePerSecondX100 = speedValuePerSecondX100; + task->dynamicSpeed = true; + return true; +} + +bool SeatMotor_MoveAbsoluteInTime(motor_mode_t mode, + uint32_t targetValueX100, + uint32_t durationMs, + uint32_t commandSequence) +{ + return SeatMotor_MoveAbsoluteInTimeWithGrace(mode, + targetValueX100, + durationMs, + 0ul, + commandSequence); +} + +bool SeatMotor_MoveAbsoluteInTimeWithGrace(motor_mode_t mode, + uint32_t targetValueX100, + uint32_t durationMs, + uint32_t deadlineGraceMs, + uint32_t commandSequence) +{ + motor_position_info_t info; + uint32_t travel; + uint32_t speed; + uint32_t speedPlanDurationMs; + uint32_t speedPlanExtensionMs; + motor_direction_t direction; + bool started; + + if((0ul == durationMs) || + (MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid)) + { + return false; + } + travel = SeatMotor_AbsDelta(targetValueX100, info.valueX100); + if(0ul == travel) + { + return SeatMotor_MoveAbsoluteDuty(mode, + targetValueX100, + MOTOR_SPEED_MIN_DUTY_PERCENT, + commandSequence); + } + direction = (targetValueX100 >= info.valueX100) ? + MOTOR_DIRECTION_TOWARD_FAR : + MOTOR_DIRECTION_TOWARD_NEAR; + speedPlanDurationMs = (durationMs > SEAT_MOTOR_TIMED_ARRIVAL_SETTLE_MS) ? + (durationMs - SEAT_MOTOR_TIMED_ARRIVAL_SETTLE_MS) : durationMs; + speedPlanExtensionMs = SeatMotor_TimedPlanExtensionMs(mode, direction); + if(speedPlanExtensionMs > (UINT32_MAX - speedPlanDurationMs)) + { + return false; + } + speedPlanDurationMs += speedPlanExtensionMs; + speed = (uint32_t) + ((((uint64_t)travel) * 1000ull) / speedPlanDurationMs); + started = SeatMotor_StartPositionTask(mode, + targetValueX100, + 0u, + speed, + durationMs, + speedPlanDurationMs, + commandSequence, + true, + false, + SEAT_MOTOR_TASK_POSITION); + if(started) + { + tasks[(uint32_t)mode].deadlineGraceMs = deadlineGraceMs; + } + return started; +} + +bool SeatMotor_MoveAbsoluteHallDuty(motor_mode_t mode, + uint32_t targetHallCount, + uint8_t dutyPercent, + uint32_t commandSequence) +{ + motor_position_info_t info; + uint32_t targetValueX100; + + if((MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid) || (0ul == info.maxHallCount) || + (targetHallCount > info.maxHallCount)) + { + return false; + } + targetValueX100 = (uint32_t) + (((uint64_t)targetHallCount * info.maxValueX100 + + (info.maxHallCount / 2ul)) / info.maxHallCount); + return SeatMotor_MoveAbsoluteDuty(mode, + targetValueX100, + dutyPercent, + commandSequence); +} + +bool SeatMotor_MoveAbsoluteHallInTime(motor_mode_t mode, + uint32_t targetHallCount, + uint32_t durationMs, + uint32_t commandSequence) +{ + return SeatMotor_MoveAbsoluteHallInTimeWithGrace(mode, + targetHallCount, + durationMs, + 0ul, + commandSequence); +} + +bool SeatMotor_MoveAbsoluteHallInTimeWithGrace(motor_mode_t mode, + uint32_t targetHallCount, + uint32_t durationMs, + uint32_t deadlineGraceMs, + uint32_t commandSequence) +{ + motor_position_info_t info; + uint32_t targetValueX100; + + if((MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid) || (0ul == info.maxHallCount) || + (targetHallCount > info.maxHallCount)) + { + return false; + } + targetValueX100 = (uint32_t) + (((uint64_t)targetHallCount * info.maxValueX100 + + (info.maxHallCount / 2ul)) / info.maxHallCount); + return SeatMotor_MoveAbsoluteInTimeWithGrace(mode, + targetValueX100, + durationMs, + deadlineGraceMs, + commandSequence); +} + +bool SeatMotor_CalibrateRange(motor_mode_t mode, + uint32_t legTimeoutMs, + uint32_t commandSequence) +{ + motor_calibration_result_t result; + uint8_t dutyPercent; + + if((false == SeatMotor_ModeValid(mode)) || (0ul == legTimeoutMs)) + { + return false; + } + /* The connected four-axis bench needs the same verified loaded duty used + * by normal absolute moves and known-range homing. The protocol minimum + * (50%) cannot reliably start M0/M1 at a loaded endpoint; using it makes + * the first quiet window look like an endpoint and invalidates an + * otherwise healthy calibration. Hall endpoint, timeout and current + * protections remain active throughout both legs. */ + dutyPercent = SeatMotor_DefaultDutyPercent(mode); + if((false == SeatMotor_PrepareNewTask(mode, commandSequence)) || + (MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent( + mode, dutyPercent))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return false; + } + tasks[(uint32_t)mode].state = SEAT_MOTOR_TASK_RANGE_CALIBRATION; + if((MOTOR_API_SUCCESS != Motor_Calibrate(mode, + MOTOR_CALIBRATE_FIND_BOTH, + legTimeoutMs, + &result)) || + (false == result.nearEndpointFound) || + (false == result.farEndpointFound)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return false; + } + SeatMotor_SetComplete(mode); + return true; +} + +bool SeatMotor_HomeKnownRange(motor_mode_t mode, + uint32_t legTimeoutMs, + uint32_t commandSequence) +{ + motor_calibration_result_t result; + uint8_t dutyPercent; + + if((false == SeatMotor_ModeValid(mode)) || (0ul == legTimeoutMs)) + { + return false; + } + dutyPercent = SeatMotor_DefaultDutyPercent(mode); + if((false == SeatMotor_PrepareNewTask(mode, commandSequence)) || + (MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent( + mode, dutyPercent))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return false; + } + tasks[(uint32_t)mode].state = SEAT_MOTOR_TASK_RANGE_CALIBRATION; + if((MOTOR_API_SUCCESS != Motor_Calibrate(mode, + MOTOR_CALIBRATE_FIND_NEAR, + legTimeoutMs, + &result)) || + (false == result.nearEndpointFound)) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return false; + } + SeatMotor_SetComplete(mode); + return true; +} + +bool SeatMotor_StartMaximumSpeedCalibration(motor_mode_t mode, + uint32_t commandSequence) +{ + motor_position_info_t info; + seat_motor_task_t *task; + motor_direction_t direction; + uint32_t target; + + if((false == SeatMotor_ModeValid(mode)) || + (MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &info)) || + (false == info.positionValid) || + (false == SeatMotor_PrepareNewTask(mode, commandSequence))) + { + return false; + } + direction = (info.percentX100 <= 5000ul) ? + MOTOR_DIRECTION_TOWARD_FAR : MOTOR_DIRECTION_TOWARD_NEAR; + target = (direction == MOTOR_DIRECTION_TOWARD_FAR) ? + SeatMotor_MaxValueX100(mode) : 0ul; + if((MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent( + mode, SEAT_MOTOR_SPEED_CAL_DUTY_PERCENT)) || + (MOTOR_API_SUCCESS != Motor_StartMoveToValue(mode, target))) + { + SeatMotor_SetFailed(mode, SEAT_MOTOR_RESULT_CALIBRATION_FAILED); + return false; + } + task = &tasks[(uint32_t)mode]; + task->state = SEAT_MOTOR_TASK_WAIT_START; + task->stateAfterStart = SEAT_MOTOR_TASK_SPEED_CAL_WARMUP; + task->direction = direction; + task->dutyPercent = SEAT_MOTOR_SPEED_CAL_DUTY_PERCENT; + task->calibrationStartMs = 0ul; + return true; +} + +bool SeatMotorManager_ClearFault(motor_mode_t mode) +{ + seat_motor_task_t *task; + uint32_t sequence; + + if((false == SeatMotor_ModeValid(mode)) || Motor_IsMoving(mode) || + Motor_IsDriverFaultLatched()) + { + return false; + } + task = &tasks[(uint32_t)mode]; + if(false != task->active) + { + return false; + } + sequence = task->commandSequence; + (void)memset(task, 0, sizeof(*task)); + task->commandSequence = sequence; + return true; +} + +bool SeatMotor_RecoverPosition(motor_mode_t mode, uint32_t savedHallCount) +{ + motor_calibration_result_t calibration; + motor_persistent_state_t state; + uint32_t targetValueX100; + + if((MOTOR_API_SUCCESS != Motor_Calibrate(mode, + MOTOR_CALIBRATE_FIND_NEAR, + SEAT_MOTOR_DEFAULT_CAL_LEG_TIMEOUT_MS, + &calibration)) || + (false == calibration.nearEndpointFound) || + (MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &state))) + { + return false; + } + if(savedHallCount > state.maxHallCount) + { + savedHallCount = state.maxHallCount; + } + targetValueX100 = (uint32_t) + (((uint64_t)savedHallCount * SeatMotor_MaxValueX100(mode) + + (state.maxHallCount / 2ul)) / state.maxHallCount); + if(0ul == targetValueX100) + { + return true; + } + if((MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent( + mode, MOTOR_SPEED_MIN_DUTY_PERCENT)) || + (MOTOR_API_SUCCESS != Motor_MoveToValue(mode, targetValueX100))) + { + return false; + } + return true; +} + +bool SeatMotorManager_GetStatus(motor_mode_t mode, + seat_motor_status_t *status) +{ + motor_position_info_t position; + motor_speed_info_t speed; + motor_persistent_state_t persistent; + const seat_motor_task_t *task; + + if((NULL == status) || (false == SeatMotor_ModeValid(mode)) || + (MOTOR_API_SUCCESS != Motor_GetPositionInfo(mode, &position)) || + (MOTOR_API_SUCCESS != Motor_GetSpeedInfo(mode, &speed)) || + (MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &persistent))) + { + return false; + } + task = &tasks[(uint32_t)mode]; + status->taskState = task->state; + status->result = task->result; + status->lastMotorEvent = position.lastEvent; + status->direction = position.direction; + status->commandSequence = task->commandSequence; + status->valueX100 = position.valueX100; + status->hallCount = position.hallCount; + status->maxHallCount = position.maxHallCount; + status->maxSpeedPpsX100 = persistent.maxSpeedPulsesPerSecondX100; + status->hallSpeedPpsX100 = speed.actualPulsesPerSecondX100; + status->positionPercentX100 = position.percentX100; + status->positionMmX100 = position.positionMmX100; + status->horizontalMmX100 = position.horizontalMmX100; + status->verticalMmX100 = position.verticalMmX100; + status->angleDegX100 = position.angleDegX100; + status->dutyPercent = speed.currentDutyPercent; + status->retryCount = task->retryCount; + status->active = task->active; + status->retried = (task->retryCount != 0u); + status->positionValid = position.positionValid; + return true; +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.h new file mode 100644 index 0000000..7b17eb4 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_motor_manager.h @@ -0,0 +1,154 @@ +#ifndef SEAT_MOTOR_MANAGER_H +#define SEAT_MOTOR_MANAGER_H + +#include +#include + +#include "motor_control.h" + +typedef enum +{ + SEAT_MOTOR_TASK_IDLE = 0, + SEAT_MOTOR_TASK_WAIT_START, + SEAT_MOTOR_TASK_POSITION, + SEAT_MOTOR_TASK_TIMED, + SEAT_MOTOR_TASK_RETRY_DELAY, + SEAT_MOTOR_TASK_RANGE_CALIBRATION, + SEAT_MOTOR_TASK_SPEED_CAL_WARMUP, + SEAT_MOTOR_TASK_SPEED_CAL_MEASURE, + SEAT_MOTOR_TASK_SPEED_CAL_SETTLE, + SEAT_MOTOR_TASK_COMPLETE, + SEAT_MOTOR_TASK_FAILED +} seat_motor_task_state_t; + +typedef enum +{ + SEAT_MOTOR_RESULT_NONE = 0, + SEAT_MOTOR_RESULT_RUNNING, + SEAT_MOTOR_RESULT_OK, + SEAT_MOTOR_RESULT_STOPPED, + SEAT_MOTOR_RESULT_STALL, + SEAT_MOTOR_RESULT_ENDPOINT, + SEAT_MOTOR_RESULT_TIMEOUT, + SEAT_MOTOR_RESULT_DRIVER_FAULT, + SEAT_MOTOR_RESULT_INVALID, + SEAT_MOTOR_RESULT_CALIBRATION_FAILED +} seat_motor_result_t; + +typedef struct +{ + seat_motor_task_state_t taskState; + seat_motor_result_t result; + motor_event_t lastMotorEvent; + motor_direction_t direction; + uint32_t commandSequence; + uint32_t valueX100; + uint32_t hallCount; + uint32_t maxHallCount; + uint32_t maxSpeedPpsX100; + uint32_t hallSpeedPpsX100; + uint32_t positionPercentX100; + uint32_t positionMmX100; + uint32_t horizontalMmX100; + uint32_t verticalMmX100; + uint32_t angleDegX100; + uint8_t dutyPercent; + uint8_t retryCount; + bool active; + bool retried; + bool positionValid; +} seat_motor_status_t; + +void SeatMotorManager_Init(void); +void SeatMotorManager_Service(void); +void SeatMotorManager_Stop(motor_mode_t mode, uint32_t commandSequence); +void SeatMotorManager_StopAll(uint32_t commandSequence); +bool SeatMotorManager_IsAnyActive(void); +bool SeatMotorManager_GetStatus(motor_mode_t mode, + seat_motor_status_t *status); + +/* Six standardized, non-blocking motion primitives. Physical values are x100. */ +bool SeatMotor_MoveAbsoluteDuty(motor_mode_t mode, + uint32_t targetValueX100, + uint8_t dutyPercent, + uint32_t commandSequence); +bool SeatMotor_MoveAbsoluteNormalized(motor_mode_t mode, + uint32_t targetPercentX100, + uint32_t timeoutMs, + uint8_t dutyPercent, + uint32_t commandSequence); +bool SeatMotor_MoveRelativeNormalized(motor_mode_t mode, + int32_t deltaPercentX100, + uint32_t timeoutMs, + uint8_t dutyPercent, + uint32_t commandSequence); +bool SeatMotor_MoveRelativeDuty(motor_mode_t mode, + int32_t deltaValueX100, + uint8_t dutyPercent, + uint32_t commandSequence); +bool SeatMotor_MoveTimedDuty(motor_mode_t mode, + motor_direction_t direction, + uint32_t durationMs, + uint8_t dutyPercent, + uint32_t commandSequence); +bool SeatMotor_MoveAbsoluteSpeed(motor_mode_t mode, + uint32_t targetValueX100, + uint32_t speedValuePerSecondX100, + uint32_t commandSequence); +bool SeatMotor_MoveRelativeSpeed(motor_mode_t mode, + int32_t deltaValueX100, + uint32_t speedValuePerSecondX100, + uint32_t commandSequence); +bool SeatMotor_MoveTimedSpeed(motor_mode_t mode, + motor_direction_t direction, + uint32_t durationMs, + uint32_t speedValuePerSecondX100, + uint32_t commandSequence); + +/* Position command with an explicit requested arrival time. */ +bool SeatMotor_MoveAbsoluteInTime(motor_mode_t mode, + uint32_t targetValueX100, + uint32_t durationMs, + uint32_t commandSequence); +/* Keep the same speed plan while allowing a bounded scheduler/settling grace + * before the manager reports TIMEOUT. */ +bool SeatMotor_MoveAbsoluteInTimeWithGrace(motor_mode_t mode, + uint32_t targetValueX100, + uint32_t durationMs, + uint32_t deadlineGraceMs, + uint32_t commandSequence); + +/* Hall-coordinate variants used by firmware-owned synchronized trajectories. + * The target is checked against the live calibrated MaxHall before conversion + * to the motor's physical value. */ +bool SeatMotor_MoveAbsoluteHallDuty(motor_mode_t mode, + uint32_t targetHallCount, + uint8_t dutyPercent, + uint32_t commandSequence); +bool SeatMotor_MoveAbsoluteHallInTime(motor_mode_t mode, + uint32_t targetHallCount, + uint32_t durationMs, + uint32_t commandSequence); +bool SeatMotor_MoveAbsoluteHallInTimeWithGrace(motor_mode_t mode, + uint32_t targetHallCount, + uint32_t durationMs, + uint32_t deadlineGraceMs, + uint32_t commandSequence); + +/* Range calibration is interruptible by Motor_RequestAbortAllFromIsr(). */ +bool SeatMotor_CalibrateRange(motor_mode_t mode, + uint32_t legTimeoutMs, + uint32_t commandSequence); +/* Re-establish zero at the known near endpoint while retaining the confirmed + * default MaxHall. This performs one near-seek only, not a full-range test. */ +bool SeatMotor_HomeKnownRange(motor_mode_t mode, + uint32_t legTimeoutMs, + uint32_t commandSequence); +bool SeatMotor_StartMaximumSpeedCalibration(motor_mode_t mode, + uint32_t commandSequence); +bool SeatMotorManager_ClearFault(motor_mode_t mode); + +/* Optional endpoint-based position recovery primitive. */ +bool SeatMotor_RecoverPosition(motor_mode_t mode, uint32_t savedHallCount); + +#endif /* SEAT_MOTOR_MANAGER_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.c new file mode 100644 index 0000000..0c93c4f --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.c @@ -0,0 +1,1147 @@ +#include "seat_timed_application.h" + +#include +#include + +#include "bsp_seat_move_can.h" +#include "motor_control.h" +#include "safety_manager.h" +#include "seat_motor_manager.h" +#include "seat_move_config.h" + +#define SEAT_TIMED_CLEAR_FAULT_KEY (0xC33Cu) + +typedef enum +{ + SEAT_TIMED_ACK_NONE = 0u, + SEAT_TIMED_ACK_ACCEPTED = 1u, + SEAT_TIMED_ACK_REJECTED = 2u, + SEAT_TIMED_ACK_DUPLICATE = 3u, + SEAT_TIMED_ACK_STOP_ALL_ACCEPTED = 4u +} seat_timed_ack_t; + +typedef enum +{ + SEAT_TIMED_SYSTEM_INIT = 0u, + SEAT_TIMED_SYSTEM_READY = 1u, + SEAT_TIMED_SYSTEM_ACTIVE = 2u, + SEAT_TIMED_SYSTEM_INHIBITED = 3u, + SEAT_TIMED_SYSTEM_FAULT = 4u +} seat_timed_system_state_t; + +typedef enum +{ + SEAT_TIMED_REJECT_NONE = 0u, + SEAT_TIMED_REJECT_BAD_DLC = 1u, + SEAT_TIMED_REJECT_BAD_VERSION = 2u, + SEAT_TIMED_REJECT_BAD_OPCODE = 3u, + SEAT_TIMED_REJECT_BAD_MOTOR = 4u, + SEAT_TIMED_REJECT_BAD_DIRECTION = 5u, + SEAT_TIMED_REJECT_PARAM_RANGE = 6u, + SEAT_TIMED_REJECT_SEQUENCE_OLD = 8u, + SEAT_TIMED_REJECT_BUSY_SAME_MOTOR = 9u, + SEAT_TIMED_REJECT_INTERLOCK = 10u, + SEAT_TIMED_REJECT_FAULT_ACTIVE = 11u, + SEAT_TIMED_REJECT_INTERNAL_ERROR = 14u +} seat_timed_reject_t; + +/* These are the only accepted command opcodes in this image. */ +typedef enum +{ + SEAT_TIMED_OPCODE_INVALID = 0x00u, + SEAT_TIMED_OPCODE_MOVE_TIMED = 0x03u, + SEAT_TIMED_OPCODE_STOP_MOTOR = 0x08u, + SEAT_TIMED_OPCODE_STOP_ALL = 0x09u, + SEAT_TIMED_OPCODE_QUERY_STATUS = 0x0Cu, + SEAT_TIMED_OPCODE_CLEAR_FAULT = 0x0Du +} seat_timed_opcode_t; + +typedef enum +{ + SEAT_TIMED_CAN_TASK_IDLE = 0u, + SEAT_TIMED_CAN_TASK_ACCEPTED = 1u, + SEAT_TIMED_CAN_TASK_TIMED_RUN = 3u, + SEAT_TIMED_CAN_TASK_COMPLETE = 6u, + SEAT_TIMED_CAN_TASK_FAULT = 7u +} seat_timed_can_task_state_t; + +typedef enum +{ + SEAT_TIMED_CAN_RESULT_NONE = 0u, + SEAT_TIMED_CAN_RESULT_RUNNING = 1u, + SEAT_TIMED_CAN_RESULT_OK = 2u, + SEAT_TIMED_CAN_RESULT_STOPPED_BY_CMD = 3u, + SEAT_TIMED_CAN_RESULT_ENDPOINT_REACHED = 4u, + SEAT_TIMED_CAN_RESULT_STALL = 5u, + SEAT_TIMED_CAN_RESULT_TIMEOUT = 6u, + SEAT_TIMED_CAN_RESULT_DRIVER_FAULT = 7u, + SEAT_TIMED_CAN_RESULT_INVALID_CMD = 9u, + SEAT_TIMED_CAN_RESULT_CALIBRATION_FAILED = 11u +} seat_timed_can_result_t; + +typedef struct +{ + uint8_t opcode; + uint8_t motor; + motor_direction_t direction; + uint16_t sequence; + uint16_t paramA; + uint16_t paramB; +} seat_timed_command_t; + +typedef struct +{ + seat_timed_command_t command; + bool valid; +} seat_timed_pending_t; + +volatile uint32_t g_seatTimedRxCommandCount = 0u; +volatile uint32_t g_seatTimedInvalidCommandCount = 0u; +volatile uint32_t g_seatTimedConflictCount = 0u; +volatile uint32_t g_seatTimedAcceptedCount = 0u; +volatile uint32_t g_seatTimedFeedbackTxCount = 0u; +volatile uint32_t g_seatTimedFeedbackTxFailureCount = 0u; +volatile uint8_t g_seatTimedAck = SEAT_TIMED_ACK_NONE; +volatile uint8_t g_seatTimedRejectReason = SEAT_TIMED_REJECT_NONE; +volatile uint8_t g_seatTimedLastOpcode = SEAT_TIMED_OPCODE_INVALID; +volatile uint16_t g_seatTimedLastSequence = 0u; +volatile uint8_t g_seatTimedPendingMask = 0u; + +static const motor_mode_t s_logicalToPhysical[SEAT_MOVE_MOTOR_COUNT] = +{ + (motor_mode_t)SEAT_MOVE_LOGICAL_M0_PHYSICAL_MODE, + (motor_mode_t)SEAT_MOVE_LOGICAL_M1_PHYSICAL_MODE, + (motor_mode_t)SEAT_MOVE_LOGICAL_M2_PHYSICAL_MODE, + (motor_mode_t)SEAT_MOVE_LOGICAL_M3_PHYSICAL_MODE +}; + +static const uint32_t s_maxDurationMs[SEAT_MOVE_MOTOR_COUNT] = +{ + SEAT_TIMED_M0_MAX_DURATION_MS, + SEAT_TIMED_M1_MAX_DURATION_MS, + SEAT_TIMED_M2_MAX_DURATION_MS, + SEAT_TIMED_M3_MAX_DURATION_MS +}; + +static seat_timed_pending_t s_pending[SEAT_MOVE_MOTOR_COUNT]; +static seat_motor_status_t s_lastStatus[SEAT_MOVE_MOTOR_COUNT]; +static bool s_lastStatusValid[SEAT_MOVE_MOTOR_COUNT]; +static bool s_lastSequenceValid = false; +static bool s_lastCommandValid = false; +static bool s_ackNeedsClear = false; +static bool s_inhibitHandled = false; +static seat_timed_command_t s_lastCommand; +static uint16_t s_sequenceReference = 0u; +static bool s_systemStatusPending = true; +static uint8_t s_motorStatusPendingMask = SEAT_MOVE_ACTIVE_MOTOR_MASK; +static uint8_t s_diagnosticPendingMask = SEAT_MOVE_ACTIVE_MOTOR_MASK; +static bool s_firmwareIdPending = true; +static uint8_t s_dispatchCursor = 0u; +static uint8_t s_motorPollCursor = 0u; +static uint8_t s_diagnosticPollCursor = 0u; +static uint8_t s_motorPeriodicId = 0u; +static uint8_t s_diagnosticPeriodicId = 0u; +static bool s_motorPeriodicPending = false; +static bool s_diagnosticPeriodicPending = false; +static uint8_t s_systemAlive = 0u; +static uint8_t s_diagnosticAlive[SEAT_MOVE_MOTOR_COUNT]; +static uint32_t s_nextStartMs = 0u; +static uint32_t s_nextSystemStatusMs = 0u; +static uint32_t s_nextMotorPollMs = 0u; +static uint32_t s_nextDiagnosticPollMs = 0u; +static uint32_t s_nextFirmwareIdMs = 0u; + +static bool SeatTimed_TimeReached(uint32_t now, uint32_t deadline) +{ + return ((int32_t)(now - deadline) >= 0); +} + +static bool SeatTimed_SequenceNewer(uint16_t candidate, uint16_t reference) +{ + return ((int16_t)(candidate - reference) > 0); +} + +static bool SeatTimed_CommandEqual(const seat_timed_command_t *lhs, + const seat_timed_command_t *rhs) +{ + return (lhs != NULL) && (rhs != NULL) && + (lhs->opcode == rhs->opcode) && + (lhs->motor == rhs->motor) && + (lhs->direction == rhs->direction) && + (lhs->sequence == rhs->sequence) && + (lhs->paramA == rhs->paramA) && + (lhs->paramB == rhs->paramB); +} + +static motor_mode_t SeatTimed_PhysicalMode(uint8_t logicalMotor) +{ + return (logicalMotor < SEAT_MOVE_MOTOR_COUNT) ? + s_logicalToPhysical[logicalMotor] : MOTOR_MODE_COUNT; +} + +static bool SeatTimed_GetStatus(uint8_t logicalMotor, + seat_motor_status_t *status) +{ + if((logicalMotor >= SEAT_MOVE_MOTOR_COUNT) || (status == NULL)) + { + return false; + } + return SeatMotorManager_GetStatus(SeatTimed_PhysicalMode(logicalMotor), + status); +} + +static uint8_t SeatTimed_CommandDutyPercent( + const seat_timed_command_t *command) +{ + uint32_t duty; + + if((command == NULL) || (command->motor >= SEAT_MOVE_MOTOR_COUNT)) + { + return 0u; + } + duty = ((uint32_t)command->paramB + 5u) / 10u; + if(duty < MOTOR_SPEED_MIN_DUTY_PERCENT) + { + duty = MOTOR_SPEED_MIN_DUTY_PERCENT; + } + if(duty > MOTOR_SPEED_MAX_DUTY_PERCENT) + { + duty = MOTOR_SPEED_MAX_DUTY_PERCENT; + } + if((command->motor == 3u) && + (duty > SEAT_MOVE_M3_DEFAULT_DUTY_PERCENT)) + { + duty = SEAT_MOVE_M3_DEFAULT_DUTY_PERCENT; + } + return (uint8_t)duty; +} + +static void SeatTimed_SetResponse(seat_timed_ack_t ack, + seat_timed_reject_t reject, + const seat_timed_command_t *command) +{ + g_seatTimedAck = (uint8_t)ack; + g_seatTimedRejectReason = (uint8_t)reject; + if(command != NULL) + { + g_seatTimedLastOpcode = command->opcode; + g_seatTimedLastSequence = command->sequence; + } + s_ackNeedsClear = (ack != SEAT_TIMED_ACK_NONE); + s_systemStatusPending = true; +} + +static bool SeatTimed_ParseCommand(const bsp_seat_move_can_frame_t *frame, + seat_timed_command_t *command, + seat_timed_reject_t *reject) +{ + uint8_t control; + + if((frame == NULL) || (command == NULL) || (reject == NULL)) + { + return false; + } + (void)memset(command, 0, sizeof(*command)); + command->opcode = (uint8_t)(frame->data0 & 0xFFu); + control = (uint8_t)((frame->data0 >> 8u) & 0xFFu); + command->motor = control & 0x03u; + command->direction = (motor_direction_t)((control >> 2u) & 0x03u); + command->sequence = (uint16_t)((frame->data0 >> 16u) & 0xFFFFu); + command->paramA = (uint16_t)(frame->data1 & 0xFFFFu); + command->paramB = (uint16_t)((frame->data1 >> 16u) & 0xFFFFu); + + if((frame->identifier != SEAT_MOVE_CAN_COMMAND_ID) || + (frame->dlc != SEAT_MOVE_CAN_DLC)) + { + *reject = SEAT_TIMED_REJECT_BAD_DLC; + return false; + } + if((((control >> 4u) & 0x03u) != SEAT_MOVE_CAN_PROTOCOL_VERSION) || + ((control & 0xC0u) != 0u)) + { + *reject = SEAT_TIMED_REJECT_BAD_VERSION; + return false; + } + switch((seat_timed_opcode_t)command->opcode) + { + case SEAT_TIMED_OPCODE_MOVE_TIMED: + case SEAT_TIMED_OPCODE_STOP_MOTOR: + case SEAT_TIMED_OPCODE_STOP_ALL: + case SEAT_TIMED_OPCODE_QUERY_STATUS: + case SEAT_TIMED_OPCODE_CLEAR_FAULT: + return true; + default: + *reject = SEAT_TIMED_REJECT_BAD_OPCODE; + return false; + } +} + +static bool SeatTimed_ParametersValid(const seat_timed_command_t *command, + seat_timed_reject_t *reject) +{ + if((command == NULL) || (reject == NULL)) + { + return false; + } + if(command->motor >= SEAT_MOVE_MOTOR_COUNT) + { + *reject = SEAT_TIMED_REJECT_BAD_MOTOR; + return false; + } + if((command->opcode == SEAT_TIMED_OPCODE_STOP_ALL) && + (command->motor != 0u)) + { + *reject = SEAT_TIMED_REJECT_BAD_MOTOR; + return false; + } + if(command->opcode == SEAT_TIMED_OPCODE_MOVE_TIMED) + { + if((command->direction != MOTOR_DIRECTION_TOWARD_FAR) && + (command->direction != MOTOR_DIRECTION_TOWARD_NEAR)) + { + *reject = SEAT_TIMED_REJECT_BAD_DIRECTION; + return false; + } + if((command->paramA < SEAT_TIMED_MIN_DURATION_MS) || + ((uint32_t)command->paramA > s_maxDurationMs[command->motor]) || + (command->paramB < SEAT_TIMED_LEVEL_MIN_X10) || + (command->paramB > SEAT_TIMED_LEVEL_MAX_X10)) + { + *reject = SEAT_TIMED_REJECT_PARAM_RANGE; + return false; + } + } + else + { + if(command->direction != MOTOR_DIRECTION_STOPPED) + { + *reject = SEAT_TIMED_REJECT_BAD_DIRECTION; + return false; + } + if(command->opcode == SEAT_TIMED_OPCODE_CLEAR_FAULT) + { + if((command->paramA != SEAT_TIMED_CLEAR_FAULT_KEY) || + (command->paramB != 0u)) + { + *reject = SEAT_TIMED_REJECT_PARAM_RANGE; + return false; + } + } + else if((command->paramA != 0u) || (command->paramB != 0u)) + { + *reject = SEAT_TIMED_REJECT_PARAM_RANGE; + return false; + } + } + *reject = SEAT_TIMED_REJECT_NONE; + return true; +} + +static bool SeatTimed_MotorBusy(uint8_t motor) +{ + seat_motor_status_t status; + + return (motor < SEAT_MOVE_MOTOR_COUNT) && + (s_pending[motor].valid || + (SeatTimed_GetStatus(motor, &status) && status.active)); +} + +static uint8_t SeatTimed_ActiveCount(void) +{ + uint8_t motor; + uint8_t count = 0u; + + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + if(SeatTimed_MotorBusy(motor)) + { + count++; + } + } + return count; +} + +static uint8_t SeatTimed_ActiveMask(void) +{ + uint8_t motor; + uint8_t mask = 0u; + + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + if(SeatTimed_MotorBusy(motor)) + { + mask |= (uint8_t)(1u << motor); + } + } + return mask; +} + +static uint8_t SeatTimed_FaultedMask(void) +{ + uint8_t motor; + uint8_t mask = 0u; + + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + seat_motor_status_t status; + + if(SeatTimed_GetStatus(motor, &status) && + ((status.result == SEAT_MOTOR_RESULT_STALL) || + (status.result == SEAT_MOTOR_RESULT_TIMEOUT) || + (status.result == SEAT_MOTOR_RESULT_DRIVER_FAULT) || + (status.result == SEAT_MOTOR_RESULT_INVALID) || + (status.result == SEAT_MOTOR_RESULT_CALIBRATION_FAILED))) + { + mask |= (uint8_t)(1u << motor); + } + } + return mask; +} + +static uint8_t SeatTimed_PositionValidMask(void) +{ + uint8_t motor; + uint8_t mask = 0u; + + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + seat_motor_status_t status; + + if(SeatTimed_GetStatus(motor, &status) && status.positionValid) + { + mask |= (uint8_t)(1u << motor); + } + } + return mask; +} + +static void SeatTimed_StopMotor(uint8_t motor, uint16_t sequence) +{ + motor_mode_t mode; + + if(motor >= SEAT_MOVE_MOTOR_COUNT) + { + return; + } + mode = SeatTimed_PhysicalMode(motor); + Motor_RequestAbortMaskFromIsr((uint8_t)(1u << (uint8_t)mode), sequence); + Motor_ServiceAll(); + (void)Motor_AcknowledgeCommand(mode, sequence); + SeatMotorManager_Stop(mode, sequence); + s_pending[motor].valid = false; + g_seatTimedPendingMask &= (uint8_t)(~(uint8_t)(1u << motor)); + s_motorStatusPendingMask |= (uint8_t)(1u << motor); + s_diagnosticPendingMask |= (uint8_t)(1u << motor); + s_systemStatusPending = true; +} + +void SeatTimedApplication_StopAll(uint16_t sequence) +{ + uint8_t motor; + + Motor_RequestAbortAllFromIsr(sequence); + Motor_ServiceAll(); + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + motor_mode_t mode = SeatTimed_PhysicalMode(motor); + + (void)Motor_AcknowledgeCommand(mode, sequence); + SeatMotorManager_Stop(mode, sequence); + s_pending[motor].valid = false; + } + g_seatTimedPendingMask = 0u; + s_motorStatusPendingMask = SEAT_MOVE_ACTIVE_MOTOR_MASK; + s_diagnosticPendingMask = SEAT_MOVE_ACTIVE_MOTOR_MASK; + s_systemStatusPending = true; +} + +static void SeatTimed_QueueCommand(const seat_timed_command_t *command) +{ + uint8_t motor = command->motor; + + s_pending[motor].command = *command; + s_pending[motor].valid = true; + g_seatTimedPendingMask |= (uint8_t)(1u << motor); + s_motorStatusPendingMask |= (uint8_t)(1u << motor); + s_systemStatusPending = true; +} + +static void SeatTimed_HandleCommand(const bsp_seat_move_can_frame_t *frame) +{ + seat_timed_command_t command; + seat_timed_reject_t reject = SEAT_TIMED_REJECT_BAD_DLC; + + g_seatTimedRxCommandCount++; + if(!SeatTimed_ParseCommand(frame, &command, &reject) || + !SeatTimed_ParametersValid(&command, &reject)) + { + g_seatTimedInvalidCommandCount++; + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, reject, &command); + return; + } + + if(command.opcode != SEAT_TIMED_OPCODE_STOP_ALL) + { + if(s_lastSequenceValid && + (command.sequence == s_sequenceReference)) + { + if(s_lastCommandValid && + SeatTimed_CommandEqual(&command, &s_lastCommand)) + { + SeatTimed_SetResponse(SEAT_TIMED_ACK_DUPLICATE, + SEAT_TIMED_REJECT_NONE, + &command); + } + else + { + g_seatTimedInvalidCommandCount++; + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_SEQUENCE_OLD, + &command); + } + return; + } + if(s_lastSequenceValid && + !SeatTimed_SequenceNewer(command.sequence, s_sequenceReference)) + { + g_seatTimedInvalidCommandCount++; + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_SEQUENCE_OLD, + &command); + return; + } + } + + s_lastSequenceValid = true; + s_lastCommandValid = true; + s_sequenceReference = command.sequence; + s_lastCommand = command; + + if(command.opcode == SEAT_TIMED_OPCODE_STOP_ALL) + { + SeatTimedApplication_StopAll(command.sequence); + SeatTimed_SetResponse(SEAT_TIMED_ACK_STOP_ALL_ACCEPTED, + SEAT_TIMED_REJECT_NONE, + &command); + g_seatTimedAcceptedCount++; + return; + } + if(command.opcode == SEAT_TIMED_OPCODE_STOP_MOTOR) + { + SeatTimed_StopMotor(command.motor, command.sequence); + SeatTimed_SetResponse(SEAT_TIMED_ACK_ACCEPTED, + SEAT_TIMED_REJECT_NONE, + &command); + g_seatTimedAcceptedCount++; + return; + } + if(command.opcode == SEAT_TIMED_OPCODE_QUERY_STATUS) + { + uint8_t bit = (uint8_t)(1u << command.motor); + + s_motorStatusPendingMask |= bit; + s_diagnosticPendingMask |= bit; + SeatTimed_SetResponse(SEAT_TIMED_ACK_ACCEPTED, + SEAT_TIMED_REJECT_NONE, + &command); + g_seatTimedAcceptedCount++; + return; + } + if(command.opcode == SEAT_TIMED_OPCODE_CLEAR_FAULT) + { + if(SeatTimed_MotorBusy(command.motor)) + { + g_seatTimedConflictCount++; + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_BUSY_SAME_MOTOR, + &command); + return; + } + if(SafetyManager_IsInhibited() || Motor_IsDriverFaultLatched() || + !SeatMotorManager_ClearFault( + SeatTimed_PhysicalMode(command.motor))) + { + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_FAULT_ACTIVE, + &command); + return; + } + s_motorStatusPendingMask |= (uint8_t)(1u << command.motor); + s_diagnosticPendingMask |= (uint8_t)(1u << command.motor); + SeatTimed_SetResponse(SEAT_TIMED_ACK_ACCEPTED, + SEAT_TIMED_REJECT_NONE, + &command); + g_seatTimedAcceptedCount++; + return; + } + + if(SafetyManager_IsInhibited()) + { + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_FAULT_ACTIVE, + &command); + return; + } + if(SeatTimed_MotorBusy(command.motor)) + { + /* A newer timed command replaces only the selected axis. */ + SeatTimed_StopMotor(command.motor, command.sequence); + } + else if(SeatTimed_ActiveCount() >= SEAT_MOVE_MAX_CONCURRENT_MOTORS) + { + g_seatTimedConflictCount++; + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_INTERLOCK, + &command); + return; + } + + SeatTimed_QueueCommand(&command); + SeatTimed_SetResponse(SEAT_TIMED_ACK_ACCEPTED, + SEAT_TIMED_REJECT_NONE, + &command); + g_seatTimedAcceptedCount++; +} + +static bool SeatTimed_DispatchCommand(const seat_timed_command_t *command) +{ + /* No position, relative, homing, calibration or dynamic dispatch path + * exists in this image. */ + if((command == NULL) || + (command->opcode != SEAT_TIMED_OPCODE_MOVE_TIMED)) + { + return false; + } + return SeatMotor_MoveTimedDuty(SeatTimed_PhysicalMode(command->motor), + command->direction, + command->paramA, + SeatTimed_CommandDutyPercent(command), + command->sequence); +} + +static void SeatTimed_ServiceDispatcher(void) +{ + uint32_t now = Motor_GetTimeMs(); + uint8_t checked; + + if(SafetyManager_IsInhibited() || + !SeatTimed_TimeReached(now, s_nextStartMs)) + { + return; + } + for(checked = 0u; checked < SEAT_MOVE_MOTOR_COUNT; checked++) + { + uint8_t motor = (uint8_t) + ((s_dispatchCursor + checked) % SEAT_MOVE_MOTOR_COUNT); + + if(s_pending[motor].valid) + { + seat_timed_command_t command = s_pending[motor].command; + + s_pending[motor].valid = false; + g_seatTimedPendingMask &= (uint8_t)(~(uint8_t)(1u << motor)); + s_dispatchCursor = (uint8_t)((motor + 1u) % + SEAT_MOVE_MOTOR_COUNT); + s_nextStartMs = now + SEAT_MOVE_START_STAGGER_MS; + if(!SeatTimed_DispatchCommand(&command)) + { + SeatTimed_SetResponse(SEAT_TIMED_ACK_REJECTED, + SEAT_TIMED_REJECT_INTERNAL_ERROR, + &command); + } + s_motorStatusPendingMask |= (uint8_t)(1u << motor); + s_diagnosticPendingMask |= (uint8_t)(1u << motor); + s_systemStatusPending = true; + break; + } + } +} + +static bool SeatTimed_StatusChanged(const seat_motor_status_t *lhs, + const seat_motor_status_t *rhs) +{ + return (lhs->taskState != rhs->taskState) || + (lhs->result != rhs->result) || + (lhs->lastMotorEvent != rhs->lastMotorEvent) || + (lhs->direction != rhs->direction) || + (lhs->commandSequence != rhs->commandSequence) || + (lhs->dutyPercent != rhs->dutyPercent) || + (lhs->active != rhs->active) || + (lhs->retryCount != rhs->retryCount) || + (lhs->positionValid != rhs->positionValid); +} + +static void SeatTimed_ServiceStateChanges(void) +{ + uint8_t motor; + + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + seat_motor_status_t status; + + if(SeatTimed_GetStatus(motor, &status) && + (!s_lastStatusValid[motor] || + SeatTimed_StatusChanged(&status, &s_lastStatus[motor]))) + { + s_lastStatus[motor] = status; + s_lastStatusValid[motor] = true; + s_motorStatusPendingMask |= (uint8_t)(1u << motor); + s_diagnosticPendingMask |= (uint8_t)(1u << motor); + s_systemStatusPending = true; + } + } +} + +static uint8_t SeatTimed_MapTaskState(const seat_motor_status_t *status) +{ + switch(status->taskState) + { + case SEAT_MOTOR_TASK_IDLE: + return SEAT_TIMED_CAN_TASK_IDLE; + case SEAT_MOTOR_TASK_WAIT_START: + case SEAT_MOTOR_TASK_RETRY_DELAY: + return SEAT_TIMED_CAN_TASK_ACCEPTED; + case SEAT_MOTOR_TASK_TIMED: + return SEAT_TIMED_CAN_TASK_TIMED_RUN; + case SEAT_MOTOR_TASK_COMPLETE: + return SEAT_TIMED_CAN_TASK_COMPLETE; + case SEAT_MOTOR_TASK_POSITION: + case SEAT_MOTOR_TASK_RANGE_CALIBRATION: + case SEAT_MOTOR_TASK_SPEED_CAL_WARMUP: + case SEAT_MOTOR_TASK_SPEED_CAL_MEASURE: + case SEAT_MOTOR_TASK_SPEED_CAL_SETTLE: + case SEAT_MOTOR_TASK_FAILED: + default: + return SEAT_TIMED_CAN_TASK_FAULT; + } +} + +static uint8_t SeatTimed_MapTaskResult(const seat_motor_status_t *status) +{ + switch(status->result) + { + case SEAT_MOTOR_RESULT_NONE: + return SEAT_TIMED_CAN_RESULT_NONE; + case SEAT_MOTOR_RESULT_RUNNING: + return SEAT_TIMED_CAN_RESULT_RUNNING; + case SEAT_MOTOR_RESULT_OK: + return SEAT_TIMED_CAN_RESULT_OK; + case SEAT_MOTOR_RESULT_STOPPED: + return SEAT_TIMED_CAN_RESULT_STOPPED_BY_CMD; + case SEAT_MOTOR_RESULT_ENDPOINT: + return SEAT_TIMED_CAN_RESULT_ENDPOINT_REACHED; + case SEAT_MOTOR_RESULT_STALL: + return SEAT_TIMED_CAN_RESULT_STALL; + case SEAT_MOTOR_RESULT_TIMEOUT: + return SEAT_TIMED_CAN_RESULT_TIMEOUT; + case SEAT_MOTOR_RESULT_DRIVER_FAULT: + return SEAT_TIMED_CAN_RESULT_DRIVER_FAULT; + case SEAT_MOTOR_RESULT_CALIBRATION_FAILED: + return SEAT_TIMED_CAN_RESULT_CALIBRATION_FAILED; + case SEAT_MOTOR_RESULT_INVALID: + default: + return SEAT_TIMED_CAN_RESULT_INVALID_CMD; + } +} + +static uint8_t SeatTimed_SystemState(void) +{ + if(SafetyManager_IsInhibited()) + { + return (SafetyManager_GetFault() == SAFETY_FAULT_NONE) ? + SEAT_TIMED_SYSTEM_INHIBITED : SEAT_TIMED_SYSTEM_FAULT; + } + if((SeatTimed_FaultedMask() != 0u) || + (SafetyManager_GetFault() != SAFETY_FAULT_NONE)) + { + return SEAT_TIMED_SYSTEM_FAULT; + } + if(SeatTimed_ActiveMask() != 0u) + { + return SEAT_TIMED_SYSTEM_ACTIVE; + } + return SEAT_TIMED_SYSTEM_READY; +} + +static bool SeatTimed_SendSystemStatus(void) +{ + uint8_t activeMask = SeatTimed_ActiveMask(); + uint8_t faultedMask = SeatTimed_FaultedMask(); + uint8_t positionValidMask = SeatTimed_PositionValidMask(); + bool faultSummary = (faultedMask != 0u) || + (SafetyManager_GetFault() != SAFETY_FAULT_NONE); + uint8_t byte0 = (uint8_t)((g_seatTimedAck & 0x0Fu) | + ((SeatTimed_SystemState() & 0x0Fu) << 4u)); + uint8_t byte1 = g_seatTimedRejectReason; + uint8_t byte4 = g_seatTimedLastOpcode; + uint8_t byte5 = (uint8_t)((activeMask & 0x0Fu) | + (SafetyManager_IsInhibited() ? 0x10u : 0u) | + (faultSummary ? 0x80u : 0u)); + uint8_t byte6 = (uint8_t)((faultedMask & 0x0Fu) | + ((positionValidMask & 0x0Fu) << 4u)); + uint8_t byte7 = (uint8_t)((s_systemAlive & 0x0Fu) | + ((SEAT_MOVE_FIRMWARE_REVISION & 0x0Fu) << 4u)); + uint32_t data0 = (uint32_t)byte0 | + ((uint32_t)byte1 << 8u) | + ((uint32_t)g_seatTimedLastSequence << 16u); + uint32_t data1 = (uint32_t)byte4 | + ((uint32_t)byte5 << 8u) | + ((uint32_t)byte6 << 16u) | + ((uint32_t)byte7 << 24u); + + return BspSeatMoveCan_Send(SEAT_MOVE_CAN_SYSTEM_STATUS_ID, data0, data1); +} + +static bool SeatTimed_SendMotorStatus(uint8_t motor) +{ + seat_motor_status_t status; + seat_timed_command_t *pendingCommand = &s_pending[motor].command; + uint8_t taskState; + uint8_t result; + uint8_t direction; + uint8_t flags; + uint8_t duty; + uint16_t sequence; + uint16_t position; + uint32_t data0; + uint32_t data1; + + if(!SeatTimed_GetStatus(motor, &status)) + { + return false; + } + taskState = SeatTimed_MapTaskState(&status); + result = SeatTimed_MapTaskResult(&status); + direction = (uint8_t)status.direction; + duty = status.active ? status.dutyPercent : 0u; + sequence = (uint16_t)status.commandSequence; + if(s_pending[motor].valid) + { + taskState = SEAT_TIMED_CAN_TASK_ACCEPTED; + result = SEAT_TIMED_CAN_RESULT_RUNNING; + direction = (uint8_t)pendingCommand->direction; + sequence = pendingCommand->sequence; + duty = SeatTimed_CommandDutyPercent(pendingCommand); + } + flags = (uint8_t)((direction & 0x03u) | + ((status.active || s_pending[motor].valid) ? 0x04u : 0u) | + (status.positionValid ? 0x08u : 0u) | + ((status.positionValid && (status.hallCount == 0u)) ? 0x10u : 0u) | + ((status.positionValid && (status.maxHallCount != 0u) && + (status.hallCount >= status.maxHallCount)) ? 0x20u : 0u) | + ((status.result == SEAT_MOTOR_RESULT_STALL) ? 0x40u : 0u) | + (((status.result == SEAT_MOTOR_RESULT_DRIVER_FAULT) || + Motor_IsDriverFaultLatched()) ? 0x80u : 0u)); + position = status.positionValid ? + (uint16_t)((status.positionPercentX100 > 10000u) ? + 10000u : status.positionPercentX100) : UINT16_MAX; + data0 = (uint32_t)motor | + ((uint32_t)((taskState & 0x0Fu) | + ((result & 0x0Fu) << 4u)) << 8u) | + ((uint32_t)flags << 16u) | + ((uint32_t)(sequence & 0xFFu) << 24u); + data1 = (uint32_t)(sequence >> 8u) | + ((uint32_t)position << 8u) | + ((uint32_t)duty << 24u); + return BspSeatMoveCan_Send(SEAT_MOVE_CAN_MOTOR_STATUS_ID, data0, data1); +} + +static bool SeatTimed_SendCurrentDiagnostic(uint8_t motor) +{ + motor_current_info_t current; + uint8_t flags; + uint32_t data0; + uint32_t data1; + + if((motor >= SEAT_MOVE_MOTOR_COUNT) || + (MOTOR_API_SUCCESS != Motor_GetCurrentInfo( + SeatTimed_PhysicalMode(motor), ¤t))) + { + return false; + } + flags = (uint8_t) + ((current.sampleValid ? 0x01u : 0u) | + (current.baselineValid ? 0x02u : 0u) | + (current.highCurrent ? 0x04u : 0u) | + (current.hallActivityLow ? 0x08u : 0u) | + (current.calibrating ? 0x10u : 0u)); + data0 = (uint32_t)motor | + ((uint32_t)flags << 8u) | + ((uint32_t)current.raw << 16u); + data1 = (uint32_t)current.baselineRaw | + ((uint32_t)current.stallThresholdRaw << 16u); + return BspSeatMoveCan_Send(SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID, + data0, + data1); +} + +static bool SeatTimed_SendDiagnostic(uint8_t motor) +{ + seat_motor_status_t status; + uint16_t hallCount; + uint16_t maxHallCount; + uint32_t speedRaw; + uint8_t faultFlags; + uint8_t byte1; + uint8_t byte7; + uint32_t data0; + uint32_t data1; + + if(!SeatTimed_GetStatus(motor, &status)) + { + return false; + } + hallCount = (status.hallCount > UINT16_MAX) ? + UINT16_MAX : (uint16_t)status.hallCount; + maxHallCount = (status.maxHallCount > UINT16_MAX) ? + UINT16_MAX : (uint16_t)status.maxHallCount; + speedRaw = (status.hallSpeedPpsX100 + 25u) / 50u; + if(speedRaw > UINT8_MAX) + { + speedRaw = UINT8_MAX; + } + faultFlags = (uint8_t) + (((status.result == SEAT_MOTOR_RESULT_STALL) ? 0x01u : 0u) | + (((status.result == SEAT_MOTOR_RESULT_DRIVER_FAULT) || + Motor_IsDriverFaultLatched()) ? 0x02u : 0u) | + ((status.result == SEAT_MOTOR_RESULT_INVALID) ? 0x04u : 0u) | + ((status.result == SEAT_MOTOR_RESULT_CALIBRATION_FAILED) ? + 0x08u : 0u)); + byte1 = (uint8_t)(((uint8_t)status.lastMotorEvent & 0x0Fu) | + ((faultFlags & 0x0Fu) << 4u)); + byte7 = (uint8_t)((status.retryCount & 0x0Fu) | + ((s_diagnosticAlive[motor] & 0x0Fu) << 4u)); + data0 = (uint32_t)motor | + ((uint32_t)byte1 << 8u) | + ((uint32_t)hallCount << 16u); + data1 = (uint32_t)maxHallCount | + ((uint32_t)((uint8_t)speedRaw) << 16u) | + ((uint32_t)byte7 << 24u); + if(!BspSeatMoveCan_Send(SEAT_MOVE_CAN_DIAGNOSTIC_ID, data0, data1)) + { + return false; + } + return SeatTimed_SendCurrentDiagnostic(motor); +} + +static bool SeatTimed_SendFirmwareIdentity(void) +{ + /* Bytes 0..3 are ASCII "PST1" (Passenger Seat Timed v1). */ + uint32_t data0 = (uint32_t)0x50u | + ((uint32_t)0x53u << 8u) | + ((uint32_t)0x54u << 16u) | + ((uint32_t)0x31u << 24u); + uint32_t data1 = (uint32_t)SEAT_MOVE_FIRMWARE_REVISION | + ((uint32_t)SEAT_MOVE_FIRMWARE_BUILD_ID << 8u) | + ((uint32_t)SEAT_MOVE_MOTOR_COUNT << 16u) | + ((uint32_t)SEAT_MOVE_CAN_PROTOCOL_VERSION << 24u); + + return BspSeatMoveCan_Send(SEAT_MOVE_CAN_FIRMWARE_ID_ID, data0, data1); +} + +static void SeatTimed_ServiceFeedback(void) +{ + uint32_t now = Motor_GetTimeMs(); + uint8_t motor; + + if(SeatTimed_TimeReached(now, s_nextSystemStatusMs)) + { + s_systemStatusPending = true; + s_nextSystemStatusMs = now + SEAT_MOVE_SYSTEM_STATUS_PERIOD_MS; + } + if(SeatTimed_TimeReached(now, s_nextFirmwareIdMs)) + { + s_firmwareIdPending = true; + s_nextFirmwareIdMs = now + SEAT_MOVE_FIRMWARE_ID_PERIOD_MS; + } + if(!s_motorPeriodicPending && + SeatTimed_TimeReached(now, s_nextMotorPollMs)) + { + s_motorPeriodicId = s_motorPollCursor; + s_motorStatusPendingMask |= (uint8_t)(1u << s_motorPeriodicId); + s_motorPeriodicPending = true; + } + if(!s_diagnosticPeriodicPending && + SeatTimed_TimeReached(now, s_nextDiagnosticPollMs)) + { + s_diagnosticPeriodicId = s_diagnosticPollCursor; + s_diagnosticPendingMask |= (uint8_t)(1u << s_diagnosticPeriodicId); + s_diagnosticPeriodicPending = true; + } + + if(s_systemStatusPending) + { + if(SeatTimed_SendSystemStatus()) + { + s_systemStatusPending = false; + s_systemAlive = (uint8_t)((s_systemAlive + 1u) & 0x0Fu); + if(s_ackNeedsClear) + { + g_seatTimedAck = SEAT_TIMED_ACK_NONE; + g_seatTimedRejectReason = SEAT_TIMED_REJECT_NONE; + s_ackNeedsClear = false; + } + g_seatTimedFeedbackTxCount++; + } + else + { + g_seatTimedFeedbackTxFailureCount++; + } + return; + } + if(s_firmwareIdPending) + { + if(SeatTimed_SendFirmwareIdentity()) + { + s_firmwareIdPending = false; + g_seatTimedFeedbackTxCount++; + } + else + { + g_seatTimedFeedbackTxFailureCount++; + } + return; + } + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + uint8_t bit = (uint8_t)(1u << motor); + + if((s_motorStatusPendingMask & bit) != 0u) + { + if(SeatTimed_SendMotorStatus(motor)) + { + s_motorStatusPendingMask &= (uint8_t)(~bit); + if(s_motorPeriodicPending && + (motor == s_motorPeriodicId)) + { + s_motorPollCursor = (uint8_t)((s_motorPollCursor + 1u) % + SEAT_MOVE_MOTOR_COUNT); + s_motorPeriodicPending = false; + s_nextMotorPollMs = now + SEAT_MOVE_MOTOR_STATUS_POLL_MS; + } + g_seatTimedFeedbackTxCount++; + } + else + { + g_seatTimedFeedbackTxFailureCount++; + } + return; + } + } + for(motor = 0u; motor < SEAT_MOVE_MOTOR_COUNT; motor++) + { + uint8_t bit = (uint8_t)(1u << motor); + + if((s_diagnosticPendingMask & bit) != 0u) + { + if(SeatTimed_SendDiagnostic(motor)) + { + s_diagnosticPendingMask &= (uint8_t)(~bit); + s_diagnosticAlive[motor] = (uint8_t) + ((s_diagnosticAlive[motor] + 1u) & 0x0Fu); + if(s_diagnosticPeriodicPending && + (motor == s_diagnosticPeriodicId)) + { + s_diagnosticPollCursor = (uint8_t) + ((s_diagnosticPollCursor + 1u) % + SEAT_MOVE_MOTOR_COUNT); + s_diagnosticPeriodicPending = false; + s_nextDiagnosticPollMs = now + + SEAT_MOVE_DIAGNOSTIC_POLL_MS; + } + g_seatTimedFeedbackTxCount++; + } + else + { + g_seatTimedFeedbackTxFailureCount++; + } + return; + } + } +} + +bool SeatTimedApplication_Init(void) +{ + uint32_t now; + + (void)memset(s_pending, 0, sizeof(s_pending)); + (void)memset(s_lastStatus, 0, sizeof(s_lastStatus)); + (void)memset(s_lastStatusValid, 0, sizeof(s_lastStatusValid)); + (void)memset(s_diagnosticAlive, 0, sizeof(s_diagnosticAlive)); + SeatMotorManager_Init(); + if(!BspSeatMoveCan_Init()) + { + SafetyManager_LatchFault(SAFETY_FAULT_CAN_INIT); + return false; + } + + now = Motor_GetTimeMs(); + s_nextStartMs = now; + s_nextSystemStatusMs = now; + s_nextMotorPollMs = now; + s_nextDiagnosticPollMs = now; + s_nextFirmwareIdMs = now; + s_systemStatusPending = true; + s_motorStatusPendingMask = SEAT_MOVE_ACTIVE_MOTOR_MASK; + s_diagnosticPendingMask = SEAT_MOVE_ACTIVE_MOTOR_MASK; + s_firmwareIdPending = true; + return true; +} + +void SeatTimedApplication_Service(void) +{ + bsp_seat_move_can_frame_t frame; + + if(g_bspSeatMoveCanBusOff != 0u) + { + SafetyManager_LatchFault(SAFETY_FAULT_CAN_BUS_OFF); + } + SafetyManager_Service(); + if(SafetyManager_IsInhibited()) + { + if(!s_inhibitHandled) + { + SeatTimedApplication_StopAll(g_seatTimedLastSequence); + s_inhibitHandled = true; + } + } + else + { + s_inhibitHandled = false; + } + + while(BspSeatMoveCan_Read(&frame)) + { + if(frame.identifier == SEAT_MOVE_CAN_COMMAND_ID) + { + SeatTimed_HandleCommand(&frame); + } + } + SeatTimed_ServiceDispatcher(); + SeatMotorManager_Service(); + SeatTimed_ServiceStateChanges(); + SeatTimed_ServiceFeedback(); +} + +/* The low-level driver declares this hook for blocking service primitives. + * This timed-only application never invokes those primitives, but supplies + * the hook so STOP_ALL/status remain safe if a diagnostic build calls one. */ +void Motor_CalibrationServiceHook(void) +{ + bsp_seat_move_can_frame_t frame; + + while(BspSeatMoveCan_Read(&frame)) + { + if(frame.identifier == SEAT_MOVE_CAN_COMMAND_ID) + { + SeatTimed_HandleCommand(&frame); + } + } + if(g_bspSeatMoveCanBusOff != 0u) + { + SafetyManager_LatchFault(SAFETY_FAULT_CAN_BUS_OFF); + } + SafetyManager_Service(); + SeatTimed_ServiceStateChanges(); + SeatTimed_ServiceFeedback(); +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.h new file mode 100644 index 0000000..2a253a1 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.h @@ -0,0 +1,11 @@ +#ifndef SEAT_TIMED_APPLICATION_H +#define SEAT_TIMED_APPLICATION_H + +#include +#include + +bool SeatTimedApplication_Init(void); +void SeatTimedApplication_Service(void); +void SeatTimedApplication_StopAll(uint16_t sequence); + +#endif /* SEAT_TIMED_APPLICATION_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.c new file mode 100644 index 0000000..9482008 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.c @@ -0,0 +1,687 @@ +#include "bsp_seat_backrest_heater.h" + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "seat_backrest_heater_config.h" + +static bool BspSeatBackrestHeater_ConfigClock(void); +static uint32_t BspSeatBackrestHeater_DutyToCompare(uint32_t dutyPercent); +static void BspSeatBackrestHeater_SetPinGpioLow(void); +static bool BspSeatBackrestHeaterCan_ConfigClock(void); +static bool BspSeatBackrestHeaterCan_ConfigPins(void); +static void BspSeatBackrestHeaterCan_IrqHandler(void); +static void BspSeatBackrestHeaterCan_RxCallback( + bool rxFifoMessage, + uint8_t rxBufferOrFifo, + cy_stc_canfd_msg_t *message); + +static uint32_t s_heaterDutyPercent = 0u; + +volatile uint32_t g_bspSeatBackrestHeaterStartFailStage = 0u; + +volatile uint32_t g_bspSeatBackrestHeaterCanInitStatus = + (uint32_t)CY_CANFD_SUCCESS; +volatile uint32_t g_bspSeatBackrestHeaterCanRxCount = 0u; +volatile uint32_t g_bspSeatBackrestHeaterCanRxQueueOverflowCount = 0u; +volatile uint32_t g_bspSeatBackrestHeaterCanTxCount = 0u; +volatile uint32_t g_bspSeatBackrestHeaterCanTxBusyCount = 0u; +volatile uint32_t g_bspSeatBackrestHeaterCanLastRxId = 0u; +volatile uint32_t g_bspSeatBackrestHeaterCanLastTxId = 0u; +volatile uint32_t g_bspSeatBackrestHeaterCanLastTxStatus = + (uint32_t)CY_CANFD_SUCCESS; + +static volatile bsp_seat_backrest_heater_can_frame_t + s_canRxQueue[SEAT_BACKREST_HEATER_CAN_RX_QUEUE_DEPTH]; +static volatile uint8_t s_canRxQueueHead = 0u; +static volatile uint8_t s_canRxQueueTail = 0u; + +static const cy_stc_id_filter_t s_canStandardIdFilters[] = +{ + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_BACKREST_HEATER_CAN_CONTROL_29E_ID, + SEAT_BACKREST_HEATER_CAN_CONTROL_29E_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_BACKREST_HEATER_CAN_CONFIG_2AA_ID, + SEAT_BACKREST_HEATER_CAN_CONFIG_2AA_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_BACKREST_HEATER_CAN_MODE_3CE_ID, + SEAT_BACKREST_HEATER_CAN_MODE_3CE_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_BACKREST_HEATER_CAN_SWITCH_42A_ID, + SEAT_BACKREST_HEATER_CAN_SWITCH_42A_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), +}; + +static cy_stc_sysint_irq_t s_canIrqConfig = +{ + .sysIntSrc = SEAT_BACKREST_HEATER_CAN_IRQN, + .intIdx = SEAT_BACKREST_HEATER_CAN_CPU_IRQ, + .isEnabled = true, +}; + +static cy_stc_canfd_config_t s_canConfig = +{ + .txCallback = NULL, + .rxCallback = BspSeatBackrestHeaterCan_RxCallback, + .rxFifoWithTopCallback = NULL, + .statusCallback = NULL, + .errorCallback = NULL, + .canFDMode = false, + .bitrate = + { + /* 40 MHz / (10 * (1 + 5 + 2)) = 500 kbit/s. */ + .prescaler = 10u - 1u, + .timeSegment1 = 5u - 1u, + .timeSegment2 = 2u - 1u, + .syncJumpWidth = 2u - 1u, + }, + .fastBitrate = + { + .prescaler = 0u, + .timeSegment1 = 0u, + .timeSegment2 = 0u, + .syncJumpWidth = 0u, + }, + .tdcConfig = + { + .tdcEnabled = false, + .tdcOffset = 0u, + .tdcFilterWindow = 0u, + }, + .sidFilterConfig = + { + .numberOfSIDFilters = + sizeof(s_canStandardIdFilters) / + sizeof(s_canStandardIdFilters[0]), + .sidFilter = s_canStandardIdFilters, + }, + .extidFilterConfig = + { + .numberOfEXTIDFilters = 0u, + .extidFilter = NULL, + .extIDANDMask = 0x1FFFFFFFu, + }, + .globalFilterConfig = + { + .nonMatchingFramesStandard = CY_CANFD_REJECT_NON_MATCHING, + .nonMatchingFramesExtended = CY_CANFD_REJECT_NON_MATCHING, + .rejectRemoteFramesStandard = true, + .rejectRemoteFramesExtended = true, + }, + .rxBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo1DataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo0DataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .txBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo0Config = + { + .mode = CY_CANFD_FIFO_MODE_BLOCKING, + .watermark = 0u, + .numberOfFifoElements = + SEAT_BACKREST_HEATER_CAN_RX_FIFO0_ELEMENTS, + .topPointerLogicEnabled = false, + }, + .rxFifo1Config = + { + .mode = CY_CANFD_FIFO_MODE_BLOCKING, + .watermark = 0u, + .numberOfFifoElements = 0u, + .topPointerLogicEnabled = false, + }, + .noOfRxBuffers = 0u, + .noOfTxBuffers = SEAT_BACKREST_HEATER_CAN_TX_BUFFER_COUNT, +}; + +static const cy_stc_tcpwm_pwm_config_t s_heaterPwmConfig = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PRESCALER_DIVBY_1, + .debug_pause = false, + .deadTime = 0u, + .deadTimeComp = 0u, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .countDirection = CY_TCPWM_COUNTER_COUNT_UP, + .cc0MatchMode = CY_TCPWM_PWM_TR_CTRL2_CLEAR, + .overflowMode = CY_TCPWM_PWM_TR_CTRL2_SET, + .underflowMode = CY_TCPWM_PWM_TR_CTRL2_NO_CHANGE, + .cc1MatchMode = CY_TCPWM_PWM_TR_CTRL2_NO_CHANGE, + .period = SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS - 1u, + .period_buff = 0u, + .enablePeriodSwap = false, + .enableLineSelSwap = false, + .compare0 = 0u, + .compare0_buff = 0u, + .enableCompare0Swap = false, + .compare1 = 0u, + .compare1_buff = 0u, + .enableCompare1Swap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = 0u, + .invertPWMOutN = 0u, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .switchInputMode = CY_TCPWM_INPUT_LEVEL, + .switchInput = 0u, + .reloadInputMode = CY_TCPWM_INPUT_LEVEL, + .reloadInput = 0u, + .startInputMode = CY_TCPWM_INPUT_LEVEL, + .startInput = 0u, + .kill0InputMode = CY_TCPWM_INPUT_LEVEL, + .kill0Input = 0u, + .kill1InputMode = CY_TCPWM_INPUT_LEVEL, + .kill1Input = 0u, + .countInputMode = CY_TCPWM_INPUT_LEVEL, + .countInput = 1u, + .immediateKill = true, + .pwmOnDisable = CY_TCPWM_PWM_OUT_MODE_LOW, + .trigger0EventCfg = CY_TCPWM_COUNTER_OVERFLOW, + .trigger1EventCfg = CY_TCPWM_COUNTER_OVERFLOW, +}; + +bool BspSeatBackrestHeater_ForceOff(void) +{ + cy_stc_gpio_pin_config_t pinConfig = + { + .outVal = 0u, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SEAT_BACKREST_HEATER_PWM_GPIO_HSIOM, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = CY_GPIO_DRIVE_FULL, + }; + cy_en_gpio_status_t status; + + status = Cy_GPIO_Pin_Init(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + &pinConfig); + Cy_GPIO_Write(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + 0u); + s_heaterDutyPercent = 0u; + + return ((status == CY_GPIO_SUCCESS) && + (Cy_GPIO_GetHSIOM(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN) == + SEAT_BACKREST_HEATER_PWM_GPIO_HSIOM)); +} + +bool BspSeatBackrestHeater_InitPwm(void) +{ + if(!BspSeatBackrestHeater_ConfigClock()) + { + return false; + } + + Cy_Tcpwm_Pwm_Disable(SEAT_BACKREST_HEATER_PWM_TCPWM); + if(Cy_Tcpwm_Pwm_Init(SEAT_BACKREST_HEATER_PWM_TCPWM, + &s_heaterPwmConfig) != CY_RET_SUCCESS) + { + return false; + } + + return ((Cy_Tcpwm_Pwm_GetPeriod(SEAT_BACKREST_HEATER_PWM_TCPWM) == + (SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS - 1u)) && + (Cy_Tcpwm_Pwm_GetCompare0(SEAT_BACKREST_HEATER_PWM_TCPWM) == 0u)); +} + +bool BspSeatBackrestHeater_Start(uint32_t dutyPercent) +{ + g_bspSeatBackrestHeaterStartFailStage = 0u; + if(!BspSeatBackrestHeater_SetDutyPercent(dutyPercent)) + { + g_bspSeatBackrestHeaterStartFailStage = 1u; + return false; + } + + /* P16.7 remains GPIO low until the PWM counter is confirmed running. */ + Cy_GPIO_Write(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + 0u); + Cy_Tcpwm_Pwm_SetCounter(SEAT_BACKREST_HEATER_PWM_TCPWM, + SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS - 1u); + Cy_Tcpwm_Pwm_Enable(SEAT_BACKREST_HEATER_PWM_TCPWM); + Cy_Tcpwm_TriggerStart(SEAT_BACKREST_HEATER_PWM_TCPWM); + Cy_SysTick_DelayInUs(2u); + + if((Cy_Tcpwm_Pwm_GetStatus(SEAT_BACKREST_HEATER_PWM_TCPWM) & + TCPWM_GRP_CNT_STATUS_RUNNING_Msk) == 0u) + { + g_bspSeatBackrestHeaterStartFailStage = 2u; + BspSeatBackrestHeater_FailSafeOff(); + return false; + } + + Cy_GPIO_SetDriveSel(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + CY_GPIO_DRIVE_FULL); + Cy_GPIO_SetDrivemode(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + CY_GPIO_DM_STRONG_IN_OFF); + Cy_GPIO_SetHSIOM(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + SEAT_BACKREST_HEATER_PWM_HSIOM); + + if(Cy_GPIO_GetHSIOM(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN) != + SEAT_BACKREST_HEATER_PWM_HSIOM) + { + g_bspSeatBackrestHeaterStartFailStage = 3u; + BspSeatBackrestHeater_FailSafeOff(); + return false; + } + + return true; +} + +bool BspSeatBackrestHeater_SetDutyPercent(uint32_t dutyPercent) +{ + uint32_t compare; + + /* A true OFF uses FailSafeOff, avoiding a possible zero-compare pulse. */ + if((dutyPercent == 0u) || (dutyPercent > 100u)) + { + return false; + } + + compare = BspSeatBackrestHeater_DutyToCompare(dutyPercent); + Cy_Tcpwm_Pwm_SetCompare0(SEAT_BACKREST_HEATER_PWM_TCPWM, compare); + + if(Cy_Tcpwm_Pwm_GetCompare0(SEAT_BACKREST_HEATER_PWM_TCPWM) != compare) + { + return false; + } + + s_heaterDutyPercent = dutyPercent; + return true; +} + +void BspSeatBackrestHeater_FailSafeOff(void) +{ + Cy_Tcpwm_Pwm_Disable(SEAT_BACKREST_HEATER_PWM_TCPWM); + BspSeatBackrestHeater_SetPinGpioLow(); + s_heaterDutyPercent = 0u; +} + +bool BspSeatBackrestHeater_IsRunning(void) +{ + return ((Cy_Tcpwm_Pwm_GetStatus(SEAT_BACKREST_HEATER_PWM_TCPWM) & + TCPWM_GRP_CNT_STATUS_RUNNING_Msk) != 0u); +} + +uint32_t BspSeatBackrestHeater_GetDutyPercent(void) +{ + return s_heaterDutyPercent; +} + +bool BspSeatBackrestHeaterCan_Init(void) +{ + cy_en_canfd_status_t canStatus; + + if(!BspSeatBackrestHeaterCan_ConfigClock() || + !BspSeatBackrestHeaterCan_ConfigPins()) + { + g_bspSeatBackrestHeaterCanInitStatus = + (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + if(Cy_SysInt_InitIRQ(&s_canIrqConfig) != CY_SYSINT_SUCCESS) + { + g_bspSeatBackrestHeaterCanInitStatus = + (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + Cy_SysInt_SetSystemIrqVector(s_canIrqConfig.sysIntSrc, + BspSeatBackrestHeaterCan_IrqHandler); + NVIC_SetPriority(s_canIrqConfig.intIdx, 0u); + NVIC_ClearPendingIRQ(s_canIrqConfig.intIdx); + + (void)Cy_CANFD_DeInit(SEAT_BACKREST_HEATER_CAN_TYPE); + canStatus = Cy_CANFD_Init(SEAT_BACKREST_HEATER_CAN_TYPE, &s_canConfig); + g_bspSeatBackrestHeaterCanInitStatus = (uint32_t)canStatus; + if(canStatus != CY_CANFD_SUCCESS) + { + return false; + } + + NVIC_EnableIRQ(s_canIrqConfig.intIdx); + return true; +} + +bool BspSeatBackrestHeaterCan_Read( + bsp_seat_backrest_heater_can_frame_t *frame) +{ + uint32_t interruptState; + uint8_t tail; + + if(frame == NULL) + { + return false; + } + + interruptState = Cy_SysLib_EnterCriticalSection(); + tail = s_canRxQueueTail; + if(tail == s_canRxQueueHead) + { + Cy_SysLib_ExitCriticalSection(interruptState); + return false; + } + + frame->identifier = s_canRxQueue[tail].identifier; + frame->data0 = s_canRxQueue[tail].data0; + frame->data1 = s_canRxQueue[tail].data1; + frame->dlc = s_canRxQueue[tail].dlc; + + tail++; + if(tail >= SEAT_BACKREST_HEATER_CAN_RX_QUEUE_DEPTH) + { + tail = 0u; + } + s_canRxQueueTail = tail; + Cy_SysLib_ExitCriticalSection(interruptState); + + return true; +} + +bool BspSeatBackrestHeaterCan_Send(uint32_t identifier, + uint32_t data0, + uint32_t data1) +{ + cy_stc_canfd_msg_t message; + uint8_t bufferIndex; + uint8_t dataIndex; + + if(identifier > 0x7FFu) + { + g_bspSeatBackrestHeaterCanLastTxStatus = + (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + message.canFDFormat = false; + message.idConfig.extended = false; + message.idConfig.identifier = identifier; + message.dataConfig.dataLengthCode = SEAT_BACKREST_HEATER_CAN_DLC; + message.dataConfig.data[0] = data0; + message.dataConfig.data[1] = data1; + for(dataIndex = 2u; + dataIndex < CY_CANFD_MESSAGE_DATA_BUFFER_SIZE; + dataIndex++) + { + message.dataConfig.data[dataIndex] = 0u; + } + + for(bufferIndex = 0u; + bufferIndex < SEAT_BACKREST_HEATER_CAN_TX_BUFFER_COUNT; + bufferIndex++) + { + cy_en_canfd_tx_buffer_status_t bufferStatus = + Cy_CANFD_GetTxBufferStatus(SEAT_BACKREST_HEATER_CAN_TYPE, + bufferIndex); + + if((bufferStatus != CY_CANFD_TX_BUFFER_PENDING) && + (bufferStatus != CY_CANFD_TX_BUFFER_CANCEL_REQUESTED)) + { + cy_en_canfd_status_t sendStatus; + + g_bspSeatBackrestHeaterCanLastTxId = identifier; + sendStatus = Cy_CANFD_UpdateAndTransmitMsgBuffer( + SEAT_BACKREST_HEATER_CAN_TYPE, + bufferIndex, + &message); + g_bspSeatBackrestHeaterCanLastTxStatus = (uint32_t)sendStatus; + if(sendStatus == CY_CANFD_SUCCESS) + { + g_bspSeatBackrestHeaterCanTxCount++; + return true; + } + return false; + } + } + + g_bspSeatBackrestHeaterCanTxBusyCount++; + return false; +} + +static bool BspSeatBackrestHeaterCan_ConfigClock(void) +{ + uint32_t periClockHz = 0u; + uint32_t divider; + uint32_t clockGroup; + + if(Cy_SysClk_GetClkPeriFrequency(&periClockHz) != CY_SYSCLK_SUCCESS) + { + return false; + } + + if((periClockHz < SEAT_BACKREST_HEATER_CAN_CLOCK_HZ) || + ((periClockHz % SEAT_BACKREST_HEATER_CAN_CLOCK_HZ) != 0u)) + { + return false; + } + + divider = periClockHz / SEAT_BACKREST_HEATER_CAN_CLOCK_HZ; + if((divider == 0u) || (divider > 256u)) + { + return false; + } + + clockGroup = Cy_SysClk_GetClockGroup(SEAT_BACKREST_HEATER_CAN_PCLK); + if(Cy_SysClk_PeriphDisableDivider( + clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_BACKREST_HEATER_CAN_DIVIDER_NUMBER) != CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphAssignDivider( + SEAT_BACKREST_HEATER_CAN_PCLK, + CY_SYSCLK_DIV_8_BIT, + SEAT_BACKREST_HEATER_CAN_DIVIDER_NUMBER) != CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphSetDivider( + clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_BACKREST_HEATER_CAN_DIVIDER_NUMBER, + divider - 1u) != CY_SYSCLK_SUCCESS) + { + return false; + } + + return (Cy_SysClk_PeriphEnableDivider( + clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_BACKREST_HEATER_CAN_DIVIDER_NUMBER) == + CY_SYSCLK_SUCCESS); +} + +static bool BspSeatBackrestHeaterCan_ConfigPins(void) +{ + cy_stc_gpio_pin_config_t rxConfig = + { + .outVal = 0u, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = SEAT_BACKREST_HEATER_CAN_RX_MUX, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_gpio_pin_config_t txConfig = + { + .outVal = 1u, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SEAT_BACKREST_HEATER_CAN_TX_MUX, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_gpio_pin_config_t transceiverConfig = + { + .outVal = SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_ENABLE, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_GPIO_HSIOM, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = CY_GPIO_DRIVE_FULL, + }; + + if(Cy_GPIO_Pin_Init(SEAT_BACKREST_HEATER_CAN_RX_PORT, + SEAT_BACKREST_HEATER_CAN_RX_PIN, + &rxConfig) != CY_GPIO_SUCCESS) + { + return false; + } + if(Cy_GPIO_Pin_Init(SEAT_BACKREST_HEATER_CAN_TX_PORT, + SEAT_BACKREST_HEATER_CAN_TX_PIN, + &txConfig) != CY_GPIO_SUCCESS) + { + return false; + } + if(Cy_GPIO_Pin_Init(SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PORT, + SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PIN, + &transceiverConfig) != CY_GPIO_SUCCESS) + { + return false; + } + + Cy_GPIO_Write(SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PORT, + SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PIN, + SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_ENABLE); + Cy_SysTick_DelayInUs(1000u); + + return (Cy_GPIO_ReadOut(SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PORT, + SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PIN) == + SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_ENABLE); +} + +static void BspSeatBackrestHeaterCan_IrqHandler(void) +{ + Cy_CANFD_IrqHandler(SEAT_BACKREST_HEATER_CAN_TYPE); +} + +static void BspSeatBackrestHeaterCan_RxCallback( + bool rxFifoMessage, + uint8_t rxBufferOrFifo, + cy_stc_canfd_msg_t *message) +{ + uint8_t head; + uint8_t nextHead; + + (void)rxFifoMessage; + (void)rxBufferOrFifo; + + if((message == NULL) || message->idConfig.extended || message->canFDFormat) + { + return; + } + + g_bspSeatBackrestHeaterCanRxCount++; + g_bspSeatBackrestHeaterCanLastRxId = message->idConfig.identifier; + + head = s_canRxQueueHead; + nextHead = head + 1u; + if(nextHead >= SEAT_BACKREST_HEATER_CAN_RX_QUEUE_DEPTH) + { + nextHead = 0u; + } + + if(nextHead == s_canRxQueueTail) + { + g_bspSeatBackrestHeaterCanRxQueueOverflowCount++; + return; + } + + s_canRxQueue[head].identifier = message->idConfig.identifier; + s_canRxQueue[head].dlc = message->dataConfig.dataLengthCode; + s_canRxQueue[head].data0 = message->dataConfig.data[0]; + s_canRxQueue[head].data1 = message->dataConfig.data[1]; + s_canRxQueueHead = nextHead; +} + +static bool BspSeatBackrestHeater_ConfigClock(void) +{ + uint32_t periClockHz = 0u; + uint32_t divider; + uint32_t clockGroup; + + if(Cy_SysClk_GetClkPeriFrequency(&periClockHz) != CY_SYSCLK_SUCCESS) + { + return false; + } + + if((periClockHz < SEAT_BACKREST_HEATER_COUNTER_CLOCK_HZ) || + ((periClockHz % SEAT_BACKREST_HEATER_COUNTER_CLOCK_HZ) != 0u)) + { + return false; + } + + divider = periClockHz / SEAT_BACKREST_HEATER_COUNTER_CLOCK_HZ; + if((divider == 0u) || (divider > 65536u)) + { + return false; + } + + clockGroup = Cy_SysClk_GetClockGroup(SEAT_BACKREST_HEATER_PWM_PCLK); + if(Cy_SysClk_PeriphDisableDivider(clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_BACKREST_HEATER_PWM_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphAssignDivider(SEAT_BACKREST_HEATER_PWM_PCLK, + CY_SYSCLK_DIV_16_BIT, + SEAT_BACKREST_HEATER_PWM_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphSetDivider(clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_BACKREST_HEATER_PWM_DIVIDER_NUMBER, + divider - 1u) != CY_SYSCLK_SUCCESS) + { + return false; + } + + return (Cy_SysClk_PeriphEnableDivider(clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_BACKREST_HEATER_PWM_DIVIDER_NUMBER) == + CY_SYSCLK_SUCCESS); +} + +static uint32_t BspSeatBackrestHeater_DutyToCompare(uint32_t dutyPercent) +{ + return (SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS * dutyPercent) / 100u; +} + +static void BspSeatBackrestHeater_SetPinGpioLow(void) +{ + Cy_GPIO_Write(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + 0u); + Cy_GPIO_SetHSIOM(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + SEAT_BACKREST_HEATER_PWM_GPIO_HSIOM); + Cy_GPIO_SetDriveSel(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + CY_GPIO_DRIVE_FULL); + Cy_GPIO_SetDrivemode(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + CY_GPIO_DM_STRONG_IN_OFF); + Cy_GPIO_Write(SEAT_BACKREST_HEATER_PWM_PORT, + SEAT_BACKREST_HEATER_PWM_PIN, + 0u); +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.h new file mode 100644 index 0000000..c9f33da --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_backrest_heater.h @@ -0,0 +1,62 @@ +#ifndef BSP_SEAT_BACKREST_HEATER_H +#define BSP_SEAT_BACKREST_HEATER_H + +#include +#include + +typedef struct +{ + uint32_t identifier; + uint32_t data0; + uint32_t data1; + uint8_t dlc; +} bsp_seat_backrest_heater_can_frame_t; + +/* Force the BTS7010 IN path to GPIO low before PWM initialization. */ +bool BspSeatBackrestHeater_ForceOff(void); + +/* Configure TCPWM1 counter 65 while P16.7 remains a strong GPIO low. */ +bool BspSeatBackrestHeater_InitPwm(void); + +/* Start a non-zero PWM duty, then connect P16.7 to TCPWM line 65. */ +bool BspSeatBackrestHeater_Start(uint32_t dutyPercent); + +/* Change a running non-zero duty. Use FailSafeOff for a true 0% output. */ +bool BspSeatBackrestHeater_SetDutyPercent(uint32_t dutyPercent); + +/* Disable TCPWM and restore P16.7 to strong GPIO low. */ +void BspSeatBackrestHeater_FailSafeOff(void); + +bool BspSeatBackrestHeater_IsRunning(void); +uint32_t BspSeatBackrestHeater_GetDutyPercent(void); + +/* + * Start-path diagnostic for bench/HIL fault isolation. + * 0 = no start failure, 1 = duty/compare write, 2 = counter did not run, + * 3 = P16.7 HSIOM switch/readback. + */ +extern volatile uint32_t g_bspSeatBackrestHeaterStartFailStage; + +/* Initialize the proven CAN4/TJA1044 board interface at 500 kbit/s. */ +bool BspSeatBackrestHeaterCan_Init(void); + +/* Pop one received standard Classic CAN frame from the interrupt-safe queue. */ +bool BspSeatBackrestHeaterCan_Read( + bsp_seat_backrest_heater_can_frame_t *frame); + +/* Send one 8-byte standard Classic CAN frame. */ +bool BspSeatBackrestHeaterCan_Send(uint32_t identifier, + uint32_t data0, + uint32_t data1); + +/* Watch-window diagnostics for CAN hardware integration. */ +extern volatile uint32_t g_bspSeatBackrestHeaterCanInitStatus; +extern volatile uint32_t g_bspSeatBackrestHeaterCanRxCount; +extern volatile uint32_t g_bspSeatBackrestHeaterCanRxQueueOverflowCount; +extern volatile uint32_t g_bspSeatBackrestHeaterCanTxCount; +extern volatile uint32_t g_bspSeatBackrestHeaterCanTxBusyCount; +extern volatile uint32_t g_bspSeatBackrestHeaterCanLastRxId; +extern volatile uint32_t g_bspSeatBackrestHeaterCanLastTxId; +extern volatile uint32_t g_bspSeatBackrestHeaterCanLastTxStatus; + +#endif /* BSP_SEAT_BACKREST_HEATER_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.c new file mode 100644 index 0000000..8571897 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.c @@ -0,0 +1,332 @@ +#include "bsp_seat_current_adc.h" + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "seat_current_adc_config.h" + +#define SEAT_CURRENT_ADC_DIV_ROUND_UP(a, b) (((a) + (b) - 1u) / (b)) + +typedef struct +{ + volatile stc_GPIO_PRT_t *gpioPort; + uint32_t gpioPin; + en_hsiom_sel_t gpioHsiom; + volatile stc_PASS_SAR_CH_t *adcChannel; + cy_en_adc_pin_address_t pinAddress; +} bsp_seat_current_adc_profile_t; + +static const bsp_seat_current_adc_profile_t s_profiles[] = +{ + { + SEAT_CURRENT_M0_PORT, + SEAT_CURRENT_M0_PIN, + SEAT_CURRENT_M0_GPIO_HSIOM, + SEAT_CURRENT_M0_CHANNEL, + SEAT_CURRENT_M0_PIN_ADDRESS, + }, + { + SEAT_CURRENT_M1_PORT, + SEAT_CURRENT_M1_PIN, + SEAT_CURRENT_M1_GPIO_HSIOM, + SEAT_CURRENT_M1_CHANNEL, + SEAT_CURRENT_M1_PIN_ADDRESS, + }, + { + SEAT_CURRENT_M2_PORT, + SEAT_CURRENT_M2_PIN, + SEAT_CURRENT_M2_GPIO_HSIOM, + SEAT_CURRENT_M2_CHANNEL, + SEAT_CURRENT_M2_PIN_ADDRESS, + }, + { + SEAT_CURRENT_M3_PORT, + SEAT_CURRENT_M3_PIN, + SEAT_CURRENT_M3_GPIO_HSIOM, + SEAT_CURRENT_M3_CHANNEL, + SEAT_CURRENT_M3_PIN_ADDRESS, + }, + { + SEAT_CURRENT_HEATER_PORT, + SEAT_CURRENT_HEATER_PIN, + SEAT_CURRENT_HEATER_GPIO_HSIOM, + SEAT_CURRENT_HEATER_CHANNEL, + SEAT_CURRENT_HEATER_PIN_ADDRESS, + }, + { + SEAT_CURRENT_FAN_PORT, + SEAT_CURRENT_FAN_PIN, + SEAT_CURRENT_FAN_GPIO_HSIOM, + SEAT_CURRENT_FAN_CHANNEL, + SEAT_CURRENT_FAN_PIN_ADDRESS, + }, +}; + +typedef char bsp_seat_current_adc_profile_count_must_match[ + ((sizeof(s_profiles) / sizeof(s_profiles[0])) == + (uint32_t)BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT) ? 1 : -1]; + +static bool s_initialized = false; +static bool s_sampleActive = false; +static uint16_t s_lastRaw[BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT]; +static bool s_lastRawValid[BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT]; + +static bool BspSeatCurrentAdc_ConfigClock(uint32_t *actualClockHz); +static bool BspSeatCurrentAdc_WaitDone( + volatile stc_PASS_SAR_CH_t *channel); +static void BspSeatCurrentAdc_ClearStatus( + volatile stc_PASS_SAR_CH_t *channel); + +bool BspSeatCurrentAdc_Init(void) +{ + uint32_t actualClockHz; + uint32_t samplingCycles; + uint32_t index; + cy_stc_gpio_pin_config_t pinConfig = + { + .outVal = 0u, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = HSIOM_SEL_GPIO, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_adc_config_t adcConfig = + { + .preconditionTime = 0u, + .powerupTime = 0u, + .enableIdlePowerDown = false, + .msbStretchMode = CY_ADC_MSB_STRETCH_MODE_1CYCLE, + .enableHalfLsbConv = false, + .sarMuxEnable = true, + .adcEnable = true, + .sarIpEnable = true, + }; + cy_stc_adc_channel_config_t channelConfig = + { + .triggerSelection = CY_ADC_TRIGGER_OFF, + .channelPriority = 0u, + .preenptionType = CY_ADC_PREEMPTION_FINISH_RESUME, + .isGroupEnd = true, + .doneLevel = CY_ADC_DONE_LEVEL_PULSE, + .pinAddress = CY_ADC_PIN_ADDRESS_AN0, + .portAddress = SEAT_CURRENT_ADC_PORT_ADDRESS, + .extMuxSelect = 0u, + .extMuxEnable = true, + .preconditionMode = CY_ADC_PRECONDITION_MODE_OFF, + .overlapDiagMode = CY_ADC_OVERLAP_DIAG_MODE_OFF, + .sampleTime = 0u, + .calibrationValueSelect = CY_ADC_CALIBRATION_VALUE_REGULAR, + .postProcessingMode = CY_ADC_POST_PROCESSING_MODE_NONE, + .resultAlignment = CY_ADC_RESULT_ALIGNMENT_RIGHT, + .signExtention = CY_ADC_SIGN_EXTENTION_UNSIGNED, + .averageCount = 0u, + .rightShift = 0u, + .rangeDetectionMode = CY_ADC_RANGE_DETECTION_MODE_INSIDE_RANGE, + .rangeDetectionLoThreshold = 0u, + .rangeDetectionHiThreshold = SEAT_CURRENT_ADC_FULL_SCALE, + .mask.grpDone = true, + .mask.grpCancelled = false, + .mask.grpOverflow = false, + .mask.chRange = false, + .mask.chPulse = false, + .mask.chOverflow = false, + }; + + if(s_initialized) + { + return true; + } + + for(index = 0u; + index < (uint32_t)BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT; + index++) + { + pinConfig.hsiom = s_profiles[index].gpioHsiom; + if(Cy_GPIO_Pin_Init(s_profiles[index].gpioPort, + s_profiles[index].gpioPin, + &pinConfig) != CY_GPIO_SUCCESS) + { + return false; + } + s_lastRaw[index] = 0u; + s_lastRawValid[index] = false; + } + + if(!BspSeatCurrentAdc_ConfigClock(&actualClockHz)) + { + return false; + } + samplingCycles = (uint32_t)SEAT_CURRENT_ADC_DIV_ROUND_UP( + (SEAT_CURRENT_ADC_SAMPLE_TIME_MIN_NS * (uint64_t)actualClockHz), + 1000000000ull); + if(samplingCycles == 0u) + { + samplingCycles = 1u; + } + channelConfig.sampleTime = (uint16_t)samplingCycles; + + Cy_Adc_DeInit(SEAT_CURRENT_ADC_INSTANCE); + if(Cy_Adc_Init(SEAT_CURRENT_ADC_INSTANCE, + &adcConfig) != CY_ADC_SUCCESS) + { + return false; + } + + for(index = 0u; + index < (uint32_t)BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT; + index++) + { + channelConfig.pinAddress = s_profiles[index].pinAddress; + if(Cy_Adc_Channel_Init(s_profiles[index].adcChannel, + &channelConfig) != CY_ADC_SUCCESS) + { + Cy_Adc_DeInit(SEAT_CURRENT_ADC_INSTANCE); + return false; + } + Cy_Adc_Channel_Enable(s_profiles[index].adcChannel); + } + + s_initialized = true; + return true; +} + +bool BspSeatCurrentAdc_Sample(bsp_seat_current_adc_signal_t signal, + uint16_t *raw) +{ + uint32_t index = (uint32_t)signal; + uint16_t sample = 0u; + cy_stc_adc_ch_status_t resultStatus = { false }; + volatile stc_PASS_SAR_CH_t *channel; + bool success = false; + + if(!s_initialized || s_sampleActive || + (index >= (uint32_t)BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT)) + { + return false; + } + + s_sampleActive = true; + channel = s_profiles[index].adcChannel; + BspSeatCurrentAdc_ClearStatus(channel); + Cy_Adc_Channel_SoftwareTrigger(channel); + if(BspSeatCurrentAdc_WaitDone(channel) && + (Cy_Adc_Channel_GetResult(channel, + &sample, + &resultStatus) == CY_ADC_SUCCESS) && + resultStatus.valid) + { + sample = (uint16_t)(sample & SEAT_CURRENT_ADC_FULL_SCALE); + s_lastRaw[index] = sample; + s_lastRawValid[index] = true; + if(raw != NULL) + { + *raw = sample; + } + success = true; + } + BspSeatCurrentAdc_ClearStatus(channel); + s_sampleActive = false; + return success; +} + +bool BspSeatCurrentAdc_GetLastRaw(bsp_seat_current_adc_signal_t signal, + uint16_t *raw) +{ + uint32_t index = (uint32_t)signal; + + if((raw == NULL) || + (index >= (uint32_t)BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT) || + !s_lastRawValid[index]) + { + return false; + } + *raw = s_lastRaw[index]; + return true; +} + +static bool BspSeatCurrentAdc_ConfigClock(uint32_t *actualClockHz) +{ + uint32_t periClockHz = 0u; + uint32_t divider; + uint32_t clockGroup = Cy_SysClk_GetClockGroup(SEAT_CURRENT_ADC_PCLK); + + if((actualClockHz == NULL) || + (Cy_SysClk_GetClkPeriFrequency(&periClockHz) != CY_SYSCLK_SUCCESS)) + { + return false; + } + divider = SEAT_CURRENT_ADC_DIV_ROUND_UP( + periClockHz, SEAT_CURRENT_ADC_OPERATION_FREQ_MAX_HZ); + if((divider == 0u) || (divider > 65536u)) + { + return false; + } + if(Cy_SysClk_PeriphDisableDivider( + clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_CURRENT_ADC_DIVIDER_NUMBER) != CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphAssignDivider( + SEAT_CURRENT_ADC_PCLK, + CY_SYSCLK_DIV_16_BIT, + SEAT_CURRENT_ADC_DIVIDER_NUMBER) != CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphSetDivider( + clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_CURRENT_ADC_DIVIDER_NUMBER, + divider - 1u) != CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphEnableDivider( + clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_CURRENT_ADC_DIVIDER_NUMBER) != CY_SYSCLK_SUCCESS) + { + return false; + } + + *actualClockHz = periClockHz / divider; + return true; +} + +static bool BspSeatCurrentAdc_WaitDone( + volatile stc_PASS_SAR_CH_t *channel) +{ + uint32_t timeout = SEAT_CURRENT_ADC_POLL_TIMEOUT; + cy_stc_adc_interrupt_source_t status = { false }; + + do + { + (void)Cy_Adc_Channel_GetInterruptStatus(channel, &status); + if(status.grpDone) + { + return true; + } + timeout--; + } while(timeout > 0u); + return false; +} + +static void BspSeatCurrentAdc_ClearStatus( + volatile stc_PASS_SAR_CH_t *channel) +{ + cy_stc_adc_interrupt_source_t clearSource = + { + .grpDone = true, + .grpCancelled = true, + .grpOverflow = true, + .chRange = false, + .chPulse = false, + .chOverflow = true, + }; + + (void)Cy_Adc_Channel_ClearInterruptStatus(channel, &clearSource); +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.h new file mode 100644 index 0000000..e1f5567 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_current_adc.h @@ -0,0 +1,27 @@ +#ifndef BSP_SEAT_CURRENT_ADC_H +#define BSP_SEAT_CURRENT_ADC_H + +#include +#include + +typedef enum +{ + BSP_SEAT_CURRENT_ADC_MOTOR0 = 0, + BSP_SEAT_CURRENT_ADC_MOTOR1, + BSP_SEAT_CURRENT_ADC_MOTOR2, + BSP_SEAT_CURRENT_ADC_MOTOR3, + BSP_SEAT_CURRENT_ADC_HEATER, + BSP_SEAT_CURRENT_ADC_FAN, + BSP_SEAT_CURRENT_ADC_SIGNAL_COUNT +} bsp_seat_current_adc_signal_t; + +/* Initializes PASS0 SAR1 once and enables every shared seat-current channel. */ +bool BspSeatCurrentAdc_Init(void); + +/* Main-loop polling API. It must not be called from an ISR. */ +bool BspSeatCurrentAdc_Sample(bsp_seat_current_adc_signal_t signal, + uint16_t *raw); +bool BspSeatCurrentAdc_GetLastRaw(bsp_seat_current_adc_signal_t signal, + uint16_t *raw); + +#endif /* BSP_SEAT_CURRENT_ADC_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.c new file mode 100644 index 0000000..018f767 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.c @@ -0,0 +1,659 @@ +#include "bsp_seat_fan.h" + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "seat_fan_config.h" + +static bool BspSeatFan_ConfigClock(void); +static uint32_t BspSeatFan_DutyToCompare(uint32_t dutyPercent); +static void BspSeatFan_SetPinGpioLow(volatile stc_GPIO_PRT_t *port, + uint32_t pin, + en_hsiom_sel_t gpioHsiom); +static bool BspSeatCan_ConfigClock(void); +static bool BspSeatCan_ConfigPins(void); +static void BspSeatCan_IrqHandler(void); +static void BspSeatCan_RxCallback(bool rxFifoMessage, + uint8_t rxBufferOrFifo, + cy_stc_canfd_msg_t *message); + +volatile uint32_t g_bspSeatCanInitStatus = (uint32_t)CY_CANFD_SUCCESS; +volatile uint32_t g_bspSeatCanRxCount = 0u; +volatile uint32_t g_bspSeatCanRxQueueOverflowCount = 0u; +volatile uint32_t g_bspSeatCanTxCount = 0u; +volatile uint32_t g_bspSeatCanTxBusyCount = 0u; +volatile uint32_t g_bspSeatCanLastRxId = 0u; +volatile uint32_t g_bspSeatCanLastTxId = 0u; +volatile uint32_t g_bspSeatCanLastTxStatus = (uint32_t)CY_CANFD_SUCCESS; + +static volatile bsp_seat_can_frame_t s_canRxQueue[SEAT_FAN_CAN_RX_QUEUE_DEPTH]; +static volatile uint8_t s_canRxQueueHead = 0u; +static volatile uint8_t s_canRxQueueTail = 0u; + +volatile uint32_t g_bspSeatFanStartFailStage = 0u; + +static const cy_stc_id_filter_t s_canStandardIdFilters[] = +{ + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_FAN_CAN_CONTROL_29E_ID, + SEAT_FAN_CAN_CONTROL_29E_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_FAN_CAN_CONFIG_2AA_ID, + SEAT_FAN_CAN_CONFIG_2AA_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_FAN_CAN_SWITCH_42A_ID, + SEAT_FAN_CAN_SWITCH_42A_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), +}; + +static cy_stc_sysint_irq_t s_canIrqConfig = +{ + .sysIntSrc = SEAT_FAN_CAN_IRQN, + .intIdx = SEAT_FAN_CAN_CPU_IRQ, + .isEnabled = true, +}; + +static cy_stc_canfd_config_t s_canConfig = +{ + .txCallback = NULL, + .rxCallback = BspSeatCan_RxCallback, + .rxFifoWithTopCallback = NULL, + .statusCallback = NULL, + .errorCallback = NULL, + .canFDMode = false, + .bitrate = + { + /* 40 MHz / (10 * (1 + 5 + 2)) = 500 kbit/s. */ + .prescaler = 10u - 1u, + .timeSegment1 = 5u - 1u, + .timeSegment2 = 2u - 1u, + .syncJumpWidth = 2u - 1u, + }, + .fastBitrate = + { + .prescaler = 0u, + .timeSegment1 = 0u, + .timeSegment2 = 0u, + .syncJumpWidth = 0u, + }, + .tdcConfig = + { + .tdcEnabled = false, + .tdcOffset = 0u, + .tdcFilterWindow = 0u, + }, + .sidFilterConfig = + { + .numberOfSIDFilters = + sizeof(s_canStandardIdFilters) / sizeof(s_canStandardIdFilters[0]), + .sidFilter = s_canStandardIdFilters, + }, + .extidFilterConfig = + { + .numberOfEXTIDFilters = 0u, + .extidFilter = NULL, + .extIDANDMask = 0x1FFFFFFFu, + }, + .globalFilterConfig = + { + .nonMatchingFramesStandard = CY_CANFD_REJECT_NON_MATCHING, + .nonMatchingFramesExtended = CY_CANFD_REJECT_NON_MATCHING, + .rejectRemoteFramesStandard = true, + .rejectRemoteFramesExtended = true, + }, + .rxBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo1DataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo0DataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .txBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo0Config = + { + .mode = CY_CANFD_FIFO_MODE_BLOCKING, + .watermark = 0u, + .numberOfFifoElements = SEAT_FAN_CAN_RX_FIFO0_ELEMENTS, + .topPointerLogicEnabled = false, + }, + .rxFifo1Config = + { + .mode = CY_CANFD_FIFO_MODE_BLOCKING, + .watermark = 0u, + .numberOfFifoElements = 0u, + .topPointerLogicEnabled = false, + }, + .noOfRxBuffers = 0u, + .noOfTxBuffers = SEAT_FAN_CAN_TX_BUFFER_COUNT, +}; + +static const cy_stc_tcpwm_pwm_config_t s_seatFanPwmConfig = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PRESCALER_DIVBY_1, + .debug_pause = false, + .deadTime = 0u, + .deadTimeComp = 0u, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .countDirection = CY_TCPWM_COUNTER_COUNT_UP, + .cc0MatchMode = CY_TCPWM_PWM_TR_CTRL2_CLEAR, + .overflowMode = CY_TCPWM_PWM_TR_CTRL2_SET, + .underflowMode = CY_TCPWM_PWM_TR_CTRL2_NO_CHANGE, + .cc1MatchMode = CY_TCPWM_PWM_TR_CTRL2_NO_CHANGE, + .period = SEAT_FAN_PWM_PERIOD_TICKS - 1u, + .period_buff = 0u, + .enablePeriodSwap = false, + .enableLineSelSwap = false, + .compare0 = SEAT_FAN_PWM_PERIOD_TICKS, + .compare0_buff = 0u, + .enableCompare0Swap = false, + .compare1 = 0u, + .compare1_buff = 0u, + .enableCompare1Swap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = 0u, + .invertPWMOutN = 0u, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .switchInputMode = CY_TCPWM_INPUT_LEVEL, + .switchInput = 0u, + .reloadInputMode = CY_TCPWM_INPUT_LEVEL, + .reloadInput = 0u, + .startInputMode = CY_TCPWM_INPUT_LEVEL, + .startInput = 0u, + .kill0InputMode = CY_TCPWM_INPUT_LEVEL, + .kill0Input = 0u, + .kill1InputMode = CY_TCPWM_INPUT_LEVEL, + .kill1Input = 0u, + .countInputMode = CY_TCPWM_INPUT_LEVEL, + .countInput = 1u, + .immediateKill = true, + .pwmOnDisable = CY_TCPWM_PWM_OUT_MODE_LOW, + .trigger0EventCfg = CY_TCPWM_COUNTER_OVERFLOW, + .trigger1EventCfg = CY_TCPWM_COUNTER_OVERFLOW, +}; + +bool BspSeatFan_ForceOff(void) +{ + cy_stc_gpio_pin_config_t pinConfig = + { + .outVal = 0u, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SEAT_FAN_PWM_GPIO_HSIOM, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = CY_GPIO_DRIVE_FULL, + }; + cy_en_gpio_status_t pwmPinStatus; + cy_en_gpio_status_t unusedPinStatus; + + pwmPinStatus = Cy_GPIO_Pin_Init(SEAT_FAN_PWM_PORT, + SEAT_FAN_PWM_PIN, + &pinConfig); + + pinConfig.hsiom = SEAT_FAN_UNUSED_GPIO_HSIOM; + unusedPinStatus = Cy_GPIO_Pin_Init(SEAT_FAN_UNUSED_PORT, + SEAT_FAN_UNUSED_PIN, + &pinConfig); + + /* Write the output latches again after configuration for an explicit safe state. */ + Cy_GPIO_Write(SEAT_FAN_PWM_PORT, SEAT_FAN_PWM_PIN, 0u); + Cy_GPIO_Write(SEAT_FAN_UNUSED_PORT, SEAT_FAN_UNUSED_PIN, 0u); + + return ((pwmPinStatus == CY_GPIO_SUCCESS) && + (unusedPinStatus == CY_GPIO_SUCCESS)); +} + +bool BspSeatFan_InitPwm(void) +{ + if(!BspSeatFan_ConfigClock()) + { + return false; + } + + Cy_Tcpwm_Pwm_Disable(SEAT_FAN_PWM_TCPWM); + + if(Cy_Tcpwm_Pwm_Init(SEAT_FAN_PWM_TCPWM, + &s_seatFanPwmConfig) != CY_RET_SUCCESS) + { + return false; + } + + return ((Cy_Tcpwm_Pwm_GetPeriod(SEAT_FAN_PWM_TCPWM) == + (SEAT_FAN_PWM_PERIOD_TICKS - 1u)) && + (Cy_Tcpwm_Pwm_GetCompare0(SEAT_FAN_PWM_TCPWM) == + SEAT_FAN_PWM_PERIOD_TICKS)); +} + +bool BspSeatFan_Start(uint32_t dutyPercent) +{ + g_bspSeatFanStartFailStage = 0u; + if(!BspSeatFan_SetDutyPercent(dutyPercent)) + { + g_bspSeatFanStartFailStage = 1u; + return false; + } + + /* + * P11.1 is still GPIO low here. Starting from PERIOD makes the first + * counter clock generate overflow immediately, which asserts LINE high + * for the 100% startup setting before the pin is switched to TCPWM. + */ + Cy_GPIO_Write(SEAT_FAN_PWM_PORT, SEAT_FAN_PWM_PIN, 0u); + Cy_Tcpwm_Pwm_SetCounter(SEAT_FAN_PWM_TCPWM, + SEAT_FAN_PWM_PERIOD_TICKS - 1u); + Cy_Tcpwm_Pwm_Enable(SEAT_FAN_PWM_TCPWM); + Cy_Tcpwm_TriggerStart(SEAT_FAN_PWM_TCPWM); + + /* Keep the pin at GPIO low until the 2 MHz counter has started and overflowed. */ + Cy_SysTick_DelayInUs(2u); + if((Cy_Tcpwm_Pwm_GetStatus(SEAT_FAN_PWM_TCPWM) & + TCPWM_GRP_CNT_STATUS_RUNNING_Msk) == 0u) + { + g_bspSeatFanStartFailStage = 2u; + BspSeatFan_FailSafeOff(); + return false; + } + + Cy_GPIO_SetDriveSel(SEAT_FAN_PWM_PORT, + SEAT_FAN_PWM_PIN, + CY_GPIO_DRIVE_FULL); + Cy_GPIO_SetDrivemode(SEAT_FAN_PWM_PORT, + SEAT_FAN_PWM_PIN, + CY_GPIO_DM_STRONG_IN_OFF); + Cy_GPIO_SetHSIOM(SEAT_FAN_PWM_PORT, + SEAT_FAN_PWM_PIN, + SEAT_FAN_PWM_HSIOM); + + if(Cy_GPIO_GetHSIOM(SEAT_FAN_PWM_PORT, + SEAT_FAN_PWM_PIN) != SEAT_FAN_PWM_HSIOM) + { + g_bspSeatFanStartFailStage = 3u; + BspSeatFan_FailSafeOff(); + return false; + } + + return true; +} + +bool BspSeatFan_SetDutyPercent(uint32_t dutyPercent) +{ + uint32_t compare; + + if(dutyPercent > 100u) + { + return false; + } + + compare = BspSeatFan_DutyToCompare(dutyPercent); + Cy_Tcpwm_Pwm_SetCompare0(SEAT_FAN_PWM_TCPWM, compare); + + return (Cy_Tcpwm_Pwm_GetCompare0(SEAT_FAN_PWM_TCPWM) == compare); +} + +void BspSeatFan_FailSafeOff(void) +{ + Cy_Tcpwm_Pwm_Disable(SEAT_FAN_PWM_TCPWM); + + BspSeatFan_SetPinGpioLow(SEAT_FAN_PWM_PORT, + SEAT_FAN_PWM_PIN, + SEAT_FAN_PWM_GPIO_HSIOM); + BspSeatFan_SetPinGpioLow(SEAT_FAN_UNUSED_PORT, + SEAT_FAN_UNUSED_PIN, + SEAT_FAN_UNUSED_GPIO_HSIOM); +} + +bool BspSeatCan_Init(void) +{ + cy_en_canfd_status_t canStatus; + + if(!BspSeatCan_ConfigClock() || !BspSeatCan_ConfigPins()) + { + g_bspSeatCanInitStatus = (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + if(Cy_SysInt_InitIRQ(&s_canIrqConfig) != CY_SYSINT_SUCCESS) + { + g_bspSeatCanInitStatus = (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + Cy_SysInt_SetSystemIrqVector(s_canIrqConfig.sysIntSrc, + BspSeatCan_IrqHandler); + NVIC_SetPriority(s_canIrqConfig.intIdx, 0u); + NVIC_ClearPendingIRQ(s_canIrqConfig.intIdx); + + (void)Cy_CANFD_DeInit(SEAT_FAN_CAN_TYPE); + canStatus = Cy_CANFD_Init(SEAT_FAN_CAN_TYPE, &s_canConfig); + g_bspSeatCanInitStatus = (uint32_t)canStatus; + if(canStatus != CY_CANFD_SUCCESS) + { + return false; + } + + NVIC_EnableIRQ(s_canIrqConfig.intIdx); + return true; +} + +bool BspSeatCan_Read(bsp_seat_can_frame_t *frame) +{ + uint32_t interruptState; + uint8_t tail; + + if(frame == NULL) + { + return false; + } + + interruptState = Cy_SysLib_EnterCriticalSection(); + tail = s_canRxQueueTail; + if(tail == s_canRxQueueHead) + { + Cy_SysLib_ExitCriticalSection(interruptState); + return false; + } + + frame->identifier = s_canRxQueue[tail].identifier; + frame->data0 = s_canRxQueue[tail].data0; + frame->data1 = s_canRxQueue[tail].data1; + frame->dlc = s_canRxQueue[tail].dlc; + + tail++; + if(tail >= SEAT_FAN_CAN_RX_QUEUE_DEPTH) + { + tail = 0u; + } + s_canRxQueueTail = tail; + Cy_SysLib_ExitCriticalSection(interruptState); + + return true; +} + +bool BspSeatCan_Send(uint32_t identifier, uint32_t data0, uint32_t data1) +{ + cy_stc_canfd_msg_t message; + uint8_t bufferIndex; + uint8_t dataIndex; + + if(identifier > 0x7FFu) + { + g_bspSeatCanLastTxStatus = (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + message.canFDFormat = false; + message.idConfig.extended = false; + message.idConfig.identifier = identifier; + message.dataConfig.dataLengthCode = SEAT_FAN_CAN_DLC; + message.dataConfig.data[0] = data0; + message.dataConfig.data[1] = data1; + for(dataIndex = 2u; + dataIndex < CY_CANFD_MESSAGE_DATA_BUFFER_SIZE; + dataIndex++) + { + message.dataConfig.data[dataIndex] = 0u; + } + + for(bufferIndex = 0u; + bufferIndex < SEAT_FAN_CAN_TX_BUFFER_COUNT; + bufferIndex++) + { + cy_en_canfd_tx_buffer_status_t bufferStatus = + Cy_CANFD_GetTxBufferStatus(SEAT_FAN_CAN_TYPE, bufferIndex); + + if((bufferStatus != CY_CANFD_TX_BUFFER_PENDING) && + (bufferStatus != CY_CANFD_TX_BUFFER_CANCEL_REQUESTED)) + { + cy_en_canfd_status_t sendStatus; + + g_bspSeatCanLastTxId = identifier; + sendStatus = Cy_CANFD_UpdateAndTransmitMsgBuffer( + SEAT_FAN_CAN_TYPE, + bufferIndex, + &message); + g_bspSeatCanLastTxStatus = (uint32_t)sendStatus; + if(sendStatus == CY_CANFD_SUCCESS) + { + g_bspSeatCanTxCount++; + return true; + } + return false; + } + } + + g_bspSeatCanTxBusyCount++; + return false; +} + +static bool BspSeatCan_ConfigClock(void) +{ + uint32_t periClockHz = 0u; + uint32_t divider; + uint32_t clockGroup; + + if(Cy_SysClk_GetClkPeriFrequency(&periClockHz) != CY_SYSCLK_SUCCESS) + { + return false; + } + + if((periClockHz < SEAT_FAN_CAN_CLOCK_HZ) || + ((periClockHz % SEAT_FAN_CAN_CLOCK_HZ) != 0u)) + { + return false; + } + + divider = periClockHz / SEAT_FAN_CAN_CLOCK_HZ; + if((divider == 0u) || (divider > 256u)) + { + return false; + } + + clockGroup = Cy_SysClk_GetClockGroup(SEAT_FAN_CAN_PCLK); + if(Cy_SysClk_PeriphDisableDivider(clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_FAN_CAN_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + + if(Cy_SysClk_PeriphAssignDivider(SEAT_FAN_CAN_PCLK, + CY_SYSCLK_DIV_8_BIT, + SEAT_FAN_CAN_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + + if(Cy_SysClk_PeriphSetDivider(clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_FAN_CAN_DIVIDER_NUMBER, + divider - 1u) != CY_SYSCLK_SUCCESS) + { + return false; + } + + return (Cy_SysClk_PeriphEnableDivider(clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_FAN_CAN_DIVIDER_NUMBER) == + CY_SYSCLK_SUCCESS); +} + +static bool BspSeatCan_ConfigPins(void) +{ + cy_stc_gpio_pin_config_t rxConfig = + { + .outVal = 0u, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = SEAT_FAN_CAN_RX_MUX, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_gpio_pin_config_t txConfig = + { + .outVal = 1u, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SEAT_FAN_CAN_TX_MUX, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_gpio_pin_config_t transceiverConfig = + { + .outVal = SEAT_FAN_CAN_TRANSCEIVER_ENABLE, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SEAT_FAN_CAN_TRANSCEIVER_GPIO_HSIOM, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = CY_GPIO_DRIVE_FULL, + }; + + if(Cy_GPIO_Pin_Init(SEAT_FAN_CAN_RX_PORT, + SEAT_FAN_CAN_RX_PIN, + &rxConfig) != CY_GPIO_SUCCESS) + { + return false; + } + if(Cy_GPIO_Pin_Init(SEAT_FAN_CAN_TX_PORT, + SEAT_FAN_CAN_TX_PIN, + &txConfig) != CY_GPIO_SUCCESS) + { + return false; + } + if(Cy_GPIO_Pin_Init(SEAT_FAN_CAN_TRANSCEIVER_PORT, + SEAT_FAN_CAN_TRANSCEIVER_PIN, + &transceiverConfig) != CY_GPIO_SUCCESS) + { + return false; + } + + Cy_GPIO_Write(SEAT_FAN_CAN_TRANSCEIVER_PORT, + SEAT_FAN_CAN_TRANSCEIVER_PIN, + SEAT_FAN_CAN_TRANSCEIVER_ENABLE); + Cy_SysTick_DelayInUs(1000u); + + return (Cy_GPIO_ReadOut(SEAT_FAN_CAN_TRANSCEIVER_PORT, + SEAT_FAN_CAN_TRANSCEIVER_PIN) == + SEAT_FAN_CAN_TRANSCEIVER_ENABLE); +} + +static void BspSeatCan_IrqHandler(void) +{ + Cy_CANFD_IrqHandler(SEAT_FAN_CAN_TYPE); +} + +static void BspSeatCan_RxCallback(bool rxFifoMessage, + uint8_t rxBufferOrFifo, + cy_stc_canfd_msg_t *message) +{ + uint8_t head; + uint8_t nextHead; + + (void)rxFifoMessage; + (void)rxBufferOrFifo; + + if((message == NULL) || message->idConfig.extended || message->canFDFormat) + { + return; + } + + g_bspSeatCanRxCount++; + g_bspSeatCanLastRxId = message->idConfig.identifier; + + head = s_canRxQueueHead; + nextHead = head + 1u; + if(nextHead >= SEAT_FAN_CAN_RX_QUEUE_DEPTH) + { + nextHead = 0u; + } + + if(nextHead == s_canRxQueueTail) + { + g_bspSeatCanRxQueueOverflowCount++; + return; + } + + s_canRxQueue[head].identifier = message->idConfig.identifier; + s_canRxQueue[head].dlc = message->dataConfig.dataLengthCode; + s_canRxQueue[head].data0 = message->dataConfig.data[0]; + s_canRxQueue[head].data1 = message->dataConfig.data[1]; + s_canRxQueueHead = nextHead; +} + +static bool BspSeatFan_ConfigClock(void) +{ + uint32_t periClockHz = 0u; + uint32_t divider; + uint32_t clockGroup; + + if(Cy_SysClk_GetClkPeriFrequency(&periClockHz) != CY_SYSCLK_SUCCESS) + { + return false; + } + + if((periClockHz < SEAT_FAN_COUNTER_CLOCK_HZ) || + ((periClockHz % SEAT_FAN_COUNTER_CLOCK_HZ) != 0u)) + { + return false; + } + + divider = periClockHz / SEAT_FAN_COUNTER_CLOCK_HZ; + if((divider == 0u) || (divider > 65536u)) + { + return false; + } + + clockGroup = Cy_SysClk_GetClockGroup(SEAT_FAN_PWM_PCLK); + + if(Cy_SysClk_PeriphDisableDivider(clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_FAN_PWM_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + + if(Cy_SysClk_PeriphAssignDivider(SEAT_FAN_PWM_PCLK, + CY_SYSCLK_DIV_16_BIT, + SEAT_FAN_PWM_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + + if(Cy_SysClk_PeriphSetDivider(clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_FAN_PWM_DIVIDER_NUMBER, + divider - 1u) != CY_SYSCLK_SUCCESS) + { + return false; + } + + return (Cy_SysClk_PeriphEnableDivider(clockGroup, + CY_SYSCLK_DIV_16_BIT, + SEAT_FAN_PWM_DIVIDER_NUMBER) == + CY_SYSCLK_SUCCESS); +} + +static uint32_t BspSeatFan_DutyToCompare(uint32_t dutyPercent) +{ + return (SEAT_FAN_PWM_PERIOD_TICKS * dutyPercent) / 100u; +} + +static void BspSeatFan_SetPinGpioLow(volatile stc_GPIO_PRT_t *port, + uint32_t pin, + en_hsiom_sel_t gpioHsiom) +{ + /* Set the latch low before changing HSIOM to avoid a transient high. */ + Cy_GPIO_Write(port, pin, 0u); + Cy_GPIO_SetHSIOM(port, pin, gpioHsiom); + Cy_GPIO_SetDriveSel(port, pin, CY_GPIO_DRIVE_FULL); + Cy_GPIO_SetDrivemode(port, pin, CY_GPIO_DM_STRONG_IN_OFF); + Cy_GPIO_Write(port, pin, 0u); +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.h new file mode 100644 index 0000000..abcdc15 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_fan.h @@ -0,0 +1,52 @@ +#ifndef BSP_SEAT_FAN_H +#define BSP_SEAT_FAN_H + +#include +#include + +typedef struct +{ + uint32_t identifier; + uint32_t data0; + uint32_t data1; + uint8_t dlc; +} bsp_seat_can_frame_t; + +/* Configure P11.1 and P11.2 as strong GPIO outputs at logic low. */ +bool BspSeatFan_ForceOff(void); + +/* Configure the peripheral clock and PWM0-60 while P11.1 remains GPIO low. */ +bool BspSeatFan_InitPwm(void); + +/* Start PWM and only then connect P11.1 to the TCPWM line output. */ +bool BspSeatFan_Start(uint32_t dutyPercent); + +/* Change the active PWM compare value. Valid range is 0 through 100 percent. */ +bool BspSeatFan_SetDutyPercent(uint32_t dutyPercent); + +/* Disable TCPWM and restore both known fan-control pins to GPIO low. */ +void BspSeatFan_FailSafeOff(void); + +/* Read-only HIL diagnostic: 0=none, 1=compare, 2=counter, 3=HSIOM. */ +extern volatile uint32_t g_bspSeatFanStartFailStage; + +/* Initialize the proven CAN4/TJA1044 board interface at 500 kbit/s. */ +bool BspSeatCan_Init(void); + +/* Pop one received standard Classic CAN frame from the interrupt-safe queue. */ +bool BspSeatCan_Read(bsp_seat_can_frame_t *frame); + +/* Send one 8-byte standard Classic CAN frame. */ +bool BspSeatCan_Send(uint32_t identifier, uint32_t data0, uint32_t data1); + +/* Watch-window diagnostics for hardware integration. */ +extern volatile uint32_t g_bspSeatCanInitStatus; +extern volatile uint32_t g_bspSeatCanRxCount; +extern volatile uint32_t g_bspSeatCanRxQueueOverflowCount; +extern volatile uint32_t g_bspSeatCanTxCount; +extern volatile uint32_t g_bspSeatCanTxBusyCount; +extern volatile uint32_t g_bspSeatCanLastRxId; +extern volatile uint32_t g_bspSeatCanLastTxId; +extern volatile uint32_t g_bspSeatCanLastTxStatus; + +#endif /* BSP_SEAT_FAN_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.c new file mode 100644 index 0000000..7f15ed9 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.c @@ -0,0 +1,400 @@ +#include "bsp_seat_move_can.h" + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "motor_control.h" +#include "seat_move_config.h" + +static bool BspSeatMoveCan_ConfigClock(void); +static bool BspSeatMoveCan_ConfigPins(void); +static void BspSeatMoveCan_IrqHandler(void); +static void BspSeatMoveCan_RxCallback(bool rxFifoMessage, + uint8_t rxBufferOrFifo, + cy_stc_canfd_msg_t *message); +static void BspSeatMoveCan_ErrorCallback(cy_en_canfd_bus_error_t error); + +volatile uint32_t g_bspSeatMoveCanInitStatus = (uint32_t)CY_CANFD_SUCCESS; +volatile uint32_t g_bspSeatMoveCanRxCount = 0u; +volatile uint32_t g_bspSeatMoveCanRxQueueOverflowCount = 0u; +volatile uint32_t g_bspSeatMoveCanTxCount = 0u; +volatile uint32_t g_bspSeatMoveCanTxBusyCount = 0u; +volatile uint32_t g_bspSeatMoveCanLastRxId = 0u; +volatile uint32_t g_bspSeatMoveCanLastTxId = 0u; +volatile uint32_t g_bspSeatMoveCanLastTxStatus = (uint32_t)CY_CANFD_SUCCESS; +volatile uint32_t g_bspSeatMoveCanBusOff = 0u; + +static volatile bsp_seat_move_can_frame_t + s_rxQueue[SEAT_MOVE_CAN_RX_QUEUE_DEPTH]; +static volatile uint8_t s_rxQueueHead = 0u; +static volatile uint8_t s_rxQueueTail = 0u; + +static const cy_stc_id_filter_t s_standardIdFilters[] = +{ + CANFD_CONFIG_STD_ID_FILTER_RANGE( + SEAT_MOVE_CAN_COMMAND_ID, + SEAT_MOVE_CAN_COMMAND_ID, + CY_CANFD_ID_FILTER_ELEMNT_CONFIG_STORE_RXFIFO0), +}; + +static cy_stc_sysint_irq_t s_canIrqConfig = +{ + .sysIntSrc = SEAT_MOVE_CAN_IRQN, + .intIdx = SEAT_MOVE_CAN_CPU_IRQ, + .isEnabled = true, +}; + +static cy_stc_canfd_config_t s_canConfig = +{ + .txCallback = NULL, + .rxCallback = BspSeatMoveCan_RxCallback, + .rxFifoWithTopCallback = NULL, + .statusCallback = NULL, + .errorCallback = BspSeatMoveCan_ErrorCallback, + .canFDMode = false, + .bitrate = + { + /* 40 MHz / (10 * (1 + 5 + 2)) = 500 kbit/s. */ + .prescaler = 10u - 1u, + .timeSegment1 = 5u - 1u, + .timeSegment2 = 2u - 1u, + .syncJumpWidth = 2u - 1u, + }, + .fastBitrate = + { + .prescaler = 0u, + .timeSegment1 = 0u, + .timeSegment2 = 0u, + .syncJumpWidth = 0u, + }, + .tdcConfig = + { + .tdcEnabled = false, + .tdcOffset = 0u, + .tdcFilterWindow = 0u, + }, + .sidFilterConfig = + { + .numberOfSIDFilters = + sizeof(s_standardIdFilters) / sizeof(s_standardIdFilters[0]), + .sidFilter = s_standardIdFilters, + }, + .extidFilterConfig = + { + .numberOfEXTIDFilters = 0u, + .extidFilter = NULL, + .extIDANDMask = 0x1FFFFFFFu, + }, + .globalFilterConfig = + { + .nonMatchingFramesStandard = CY_CANFD_REJECT_NON_MATCHING, + .nonMatchingFramesExtended = CY_CANFD_REJECT_NON_MATCHING, + .rejectRemoteFramesStandard = true, + .rejectRemoteFramesExtended = true, + }, + .rxBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo1DataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo0DataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .txBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_8, + .rxFifo0Config = + { + .mode = CY_CANFD_FIFO_MODE_BLOCKING, + .watermark = 0u, + .numberOfFifoElements = SEAT_MOVE_CAN_RX_FIFO0_ELEMENTS, + .topPointerLogicEnabled = false, + }, + .rxFifo1Config = + { + .mode = CY_CANFD_FIFO_MODE_BLOCKING, + .watermark = 0u, + .numberOfFifoElements = 0u, + .topPointerLogicEnabled = false, + }, + .noOfRxBuffers = 0u, + .noOfTxBuffers = SEAT_MOVE_CAN_TX_BUFFER_COUNT, +}; + +bool BspSeatMoveCan_Init(void) +{ + cy_en_canfd_status_t canStatus; + + s_rxQueueHead = 0u; + s_rxQueueTail = 0u; + g_bspSeatMoveCanBusOff = 0u; + if(!BspSeatMoveCan_ConfigClock() || !BspSeatMoveCan_ConfigPins()) + { + g_bspSeatMoveCanInitStatus = (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + if(Cy_SysInt_InitIRQ(&s_canIrqConfig) != CY_SYSINT_SUCCESS) + { + g_bspSeatMoveCanInitStatus = (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + Cy_SysInt_SetSystemIrqVector(s_canIrqConfig.sysIntSrc, + BspSeatMoveCan_IrqHandler); + NVIC_SetPriority(s_canIrqConfig.intIdx, 0u); + NVIC_ClearPendingIRQ(s_canIrqConfig.intIdx); + + (void)Cy_CANFD_DeInit(SEAT_MOVE_CAN_TYPE); + canStatus = Cy_CANFD_Init(SEAT_MOVE_CAN_TYPE, &s_canConfig); + g_bspSeatMoveCanInitStatus = (uint32_t)canStatus; + if(canStatus != CY_CANFD_SUCCESS) + { + return false; + } + + NVIC_EnableIRQ(s_canIrqConfig.intIdx); + return true; +} + +bool BspSeatMoveCan_Read(bsp_seat_move_can_frame_t *frame) +{ + uint32_t interruptState; + uint8_t tail; + + if(frame == NULL) + { + return false; + } + + interruptState = Cy_SysLib_EnterCriticalSection(); + tail = s_rxQueueTail; + if(tail == s_rxQueueHead) + { + Cy_SysLib_ExitCriticalSection(interruptState); + return false; + } + frame->identifier = s_rxQueue[tail].identifier; + frame->data0 = s_rxQueue[tail].data0; + frame->data1 = s_rxQueue[tail].data1; + frame->dlc = s_rxQueue[tail].dlc; + tail++; + if(tail >= SEAT_MOVE_CAN_RX_QUEUE_DEPTH) + { + tail = 0u; + } + s_rxQueueTail = tail; + Cy_SysLib_ExitCriticalSection(interruptState); + return true; +} + +bool BspSeatMoveCan_Send(uint32_t identifier, + uint32_t data0, + uint32_t data1) +{ + cy_stc_canfd_msg_t message = { 0 }; + uint8_t bufferIndex; + + if((identifier > 0x7FFu) || (g_bspSeatMoveCanBusOff != 0u)) + { + g_bspSeatMoveCanLastTxStatus = (uint32_t)CY_CANFD_BAD_PARAM; + return false; + } + + message.canFDFormat = false; + message.idConfig.extended = false; + message.idConfig.identifier = identifier; + message.dataConfig.dataLengthCode = SEAT_MOVE_CAN_DLC; + message.dataConfig.data[0] = data0; + message.dataConfig.data[1] = data1; + + for(bufferIndex = 0u; + bufferIndex < SEAT_MOVE_CAN_TX_BUFFER_COUNT; + bufferIndex++) + { + cy_en_canfd_tx_buffer_status_t bufferStatus = + Cy_CANFD_GetTxBufferStatus(SEAT_MOVE_CAN_TYPE, bufferIndex); + + if((bufferStatus != CY_CANFD_TX_BUFFER_PENDING) && + (bufferStatus != CY_CANFD_TX_BUFFER_CANCEL_REQUESTED)) + { + cy_en_canfd_status_t sendStatus; + + g_bspSeatMoveCanLastTxId = identifier; + sendStatus = Cy_CANFD_UpdateAndTransmitMsgBuffer( + SEAT_MOVE_CAN_TYPE, bufferIndex, &message); + g_bspSeatMoveCanLastTxStatus = (uint32_t)sendStatus; + if(sendStatus == CY_CANFD_SUCCESS) + { + g_bspSeatMoveCanTxCount++; + return true; + } + return false; + } + } + + g_bspSeatMoveCanTxBusyCount++; + return false; +} + +static bool BspSeatMoveCan_ConfigClock(void) +{ + uint32_t periClockHz = 0u; + uint32_t divider; + uint32_t clockGroup; + + if(Cy_SysClk_GetClkPeriFrequency(&periClockHz) != CY_SYSCLK_SUCCESS) + { + return false; + } + if((periClockHz < SEAT_MOVE_CAN_CLOCK_HZ) || + ((periClockHz % SEAT_MOVE_CAN_CLOCK_HZ) != 0u)) + { + return false; + } + + divider = periClockHz / SEAT_MOVE_CAN_CLOCK_HZ; + if((divider == 0u) || (divider > 256u)) + { + return false; + } + + clockGroup = Cy_SysClk_GetClockGroup(SEAT_MOVE_CAN_PCLK); + if(Cy_SysClk_PeriphDisableDivider(clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_MOVE_CAN_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphAssignDivider(SEAT_MOVE_CAN_PCLK, + CY_SYSCLK_DIV_8_BIT, + SEAT_MOVE_CAN_DIVIDER_NUMBER) != + CY_SYSCLK_SUCCESS) + { + return false; + } + if(Cy_SysClk_PeriphSetDivider(clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_MOVE_CAN_DIVIDER_NUMBER, + divider - 1u) != CY_SYSCLK_SUCCESS) + { + return false; + } + return (Cy_SysClk_PeriphEnableDivider(clockGroup, + CY_SYSCLK_DIV_8_BIT, + SEAT_MOVE_CAN_DIVIDER_NUMBER) == + CY_SYSCLK_SUCCESS); +} + +static bool BspSeatMoveCan_ConfigPins(void) +{ + cy_stc_gpio_pin_config_t rxConfig = + { + .outVal = 0u, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = SEAT_MOVE_CAN_RX_MUX, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_gpio_pin_config_t txConfig = + { + .outVal = 1u, + .driveMode = CY_GPIO_DM_STRONG, + .hsiom = SEAT_MOVE_CAN_TX_MUX, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = 0u, + }; + cy_stc_gpio_pin_config_t enableConfig = + { + .outVal = SEAT_MOVE_CAN_TRANSCEIVER_ENABLE, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = SEAT_MOVE_CAN_TRANSCEIVER_GPIO_HSIOM, + .intEdge = 0u, + .intMask = 0u, + .vtrip = 0u, + .slewRate = 0u, + .driveSel = CY_GPIO_DRIVE_FULL, + }; + + if(Cy_GPIO_Pin_Init(SEAT_MOVE_CAN_RX_PORT, + SEAT_MOVE_CAN_RX_PIN, + &rxConfig) != CY_GPIO_SUCCESS) + { + return false; + } + if(Cy_GPIO_Pin_Init(SEAT_MOVE_CAN_TX_PORT, + SEAT_MOVE_CAN_TX_PIN, + &txConfig) != CY_GPIO_SUCCESS) + { + return false; + } + if(Cy_GPIO_Pin_Init(SEAT_MOVE_CAN_TRANSCEIVER_PORT, + SEAT_MOVE_CAN_TRANSCEIVER_PIN, + &enableConfig) != CY_GPIO_SUCCESS) + { + return false; + } + + Cy_GPIO_Write(SEAT_MOVE_CAN_TRANSCEIVER_PORT, + SEAT_MOVE_CAN_TRANSCEIVER_PIN, + SEAT_MOVE_CAN_TRANSCEIVER_ENABLE); + Cy_SysTick_DelayInUs(1000u); + return (Cy_GPIO_ReadOut(SEAT_MOVE_CAN_TRANSCEIVER_PORT, + SEAT_MOVE_CAN_TRANSCEIVER_PIN) == + SEAT_MOVE_CAN_TRANSCEIVER_ENABLE); +} + +static void BspSeatMoveCan_IrqHandler(void) +{ + Cy_CANFD_IrqHandler(SEAT_MOVE_CAN_TYPE); +} + +static void BspSeatMoveCan_RxCallback(bool rxFifoMessage, + uint8_t rxBufferOrFifo, + cy_stc_canfd_msg_t *message) +{ + uint8_t head; + uint8_t nextHead; + + (void)rxFifoMessage; + (void)rxBufferOrFifo; + if((message == NULL) || message->idConfig.extended || message->canFDFormat) + { + return; + } + + g_bspSeatMoveCanRxCount++; + g_bspSeatMoveCanLastRxId = message->idConfig.identifier; + if((message->idConfig.identifier == SEAT_MOVE_CAN_COMMAND_ID) && + (message->dataConfig.dataLengthCode == SEAT_MOVE_CAN_DLC) && + (((uint8_t)(message->dataConfig.data[0] & 0xFFu)) == 0x09u) && + (((uint8_t)((message->dataConfig.data[0] >> 8u) & 0xFFu)) == 0x10u) && + (message->dataConfig.data[1] == 0u)) + { + Motor_RequestAbortAllFromIsr( + (uint16_t)(message->dataConfig.data[0] >> 16u)); + } + head = s_rxQueueHead; + nextHead = head + 1u; + if(nextHead >= SEAT_MOVE_CAN_RX_QUEUE_DEPTH) + { + nextHead = 0u; + } + if(nextHead == s_rxQueueTail) + { + g_bspSeatMoveCanRxQueueOverflowCount++; + return; + } + + s_rxQueue[head].identifier = message->idConfig.identifier; + s_rxQueue[head].dlc = message->dataConfig.dataLengthCode; + s_rxQueue[head].data0 = message->dataConfig.data[0]; + s_rxQueue[head].data1 = message->dataConfig.data[1]; + s_rxQueueHead = nextHead; +} + +static void BspSeatMoveCan_ErrorCallback(cy_en_canfd_bus_error_t error) +{ + if(error == CY_CANFD_BUSOFF) + { + g_bspSeatMoveCanBusOff = 1u; + } +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.h new file mode 100644 index 0000000..98106a7 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Bsp/bsp_seat_move_can.h @@ -0,0 +1,29 @@ +#ifndef BSP_SEAT_MOVE_CAN_H +#define BSP_SEAT_MOVE_CAN_H + +#include +#include + +typedef struct +{ + uint32_t identifier; + uint32_t data0; + uint32_t data1; + uint8_t dlc; +} bsp_seat_move_can_frame_t; + +bool BspSeatMoveCan_Init(void); +bool BspSeatMoveCan_Read(bsp_seat_move_can_frame_t *frame); +bool BspSeatMoveCan_Send(uint32_t identifier, uint32_t data0, uint32_t data1); + +extern volatile uint32_t g_bspSeatMoveCanInitStatus; +extern volatile uint32_t g_bspSeatMoveCanRxCount; +extern volatile uint32_t g_bspSeatMoveCanRxQueueOverflowCount; +extern volatile uint32_t g_bspSeatMoveCanTxCount; +extern volatile uint32_t g_bspSeatMoveCanTxBusyCount; +extern volatile uint32_t g_bspSeatMoveCanLastRxId; +extern volatile uint32_t g_bspSeatMoveCanLastTxId; +extern volatile uint32_t g_bspSeatMoveCanLastTxStatus; +extern volatile uint32_t g_bspSeatMoveCanBusOff; + +#endif /* BSP_SEAT_MOVE_CAN_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_backrest_heater_config.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_backrest_heater_config.h new file mode 100644 index 0000000..f7e2412 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_backrest_heater_config.h @@ -0,0 +1,155 @@ +#ifndef SEAT_BACKREST_HEATER_CONFIG_H +#define SEAT_BACKREST_HEATER_CONFIG_H + +#include "cy_project.h" +#include "cy_device_headers.h" + +/* + * Schematic-confirmed backrest-heater path: + * P16.7 / KBJRD -> R126 (1 kOhm) -> BTS7010-1EPA IN -> backrest heater. + * The rev_d SDK maps P16.7 to TCPWM1 line 65. + */ +#define SEAT_BACKREST_HEATER_PWM_PORT GPIO_PRT16 +#define SEAT_BACKREST_HEATER_PWM_PIN (7u) +#define SEAT_BACKREST_HEATER_PWM_GPIO_HSIOM P16_7_GPIO +#define SEAT_BACKREST_HEATER_PWM_HSIOM P16_7_TCPWM1_LINE65 +#define SEAT_BACKREST_HEATER_PWM_TCPWM TCPWM1_GRP0_CNT65 +#define SEAT_BACKREST_HEATER_PWM_PCLK PCLK_TCPWM1_CLOCKS65 + +#define SEAT_BACKREST_HEATER_PWM_DIVIDER_NUMBER (3u) +#define SEAT_BACKREST_HEATER_COUNTER_CLOCK_HZ (2000000u) +#define SEAT_BACKREST_HEATER_PWM_FREQUENCY_HZ (100u) +#define SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS \ + (SEAT_BACKREST_HEATER_COUNTER_CLOCK_HZ / \ + SEAT_BACKREST_HEATER_PWM_FREQUENCY_HZ) + +/* Three open-loop power levels. Tune only after thermal validation. */ +#define SEAT_BACKREST_HEATER_LOW_DUTY_PERCENT (30u) +#define SEAT_BACKREST_HEATER_MEDIUM_DUTY_PERCENT (60u) +#define SEAT_BACKREST_HEATER_HIGH_DUTY_PERCENT (90u) +#define SEAT_BACKREST_HEATER_DEFAULT_LEVEL (0u) + +#define SEAT_BACKREST_HEATER_TASK_PERIOD_US (1000u) +/* + * Do not sample at the 10 ms PWM period. Equal periods phase-lock the ADC + * to one PWM point and can report zero current continuously for a healthy + * low-duty heater. Seven milliseconds walks through every PWM phase while + * remaining slow enough for the existing SAR ADC service. + */ +#define SEAT_BACKREST_HEATER_SENSE_SAMPLE_MS (7u) +#define SEAT_BACKREST_HEATER_SENSE_MAX_ERRORS (3u) +#define SEAT_BACKREST_HEATER_MAX_ACTIVE_TIME_MS (600000u) + +/* + * Vehicle CAN4 wiring proven by D:\wcl\can and Seat_Fan_demo: + * P3.7 RX, P3.6 TX, P3.1 high enables the board TJA1044 circuit. + */ +#define SEAT_BACKREST_HEATER_CAN_TYPE CY_CANFD1_2_TYPE +#define SEAT_BACKREST_HEATER_CAN_RX_PORT GPIO_PRT3 +#define SEAT_BACKREST_HEATER_CAN_RX_PIN (7u) +#define SEAT_BACKREST_HEATER_CAN_RX_MUX P3_7_CANFD1_TTCAN_RX2 +#define SEAT_BACKREST_HEATER_CAN_TX_PORT GPIO_PRT3 +#define SEAT_BACKREST_HEATER_CAN_TX_PIN (6u) +#define SEAT_BACKREST_HEATER_CAN_TX_MUX P3_6_CANFD1_TTCAN_TX2 +#define SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PORT GPIO_PRT3 +#define SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_PIN (1u) +#define SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_GPIO_HSIOM P3_1_GPIO +#define SEAT_BACKREST_HEATER_CAN_TRANSCEIVER_ENABLE (1u) +#define SEAT_BACKREST_HEATER_CAN_PCLK PCLK_CANFD1_CLOCK_CAN2 +#define SEAT_BACKREST_HEATER_CAN_IRQN canfd_1_interrupts0_2_IRQn +#define SEAT_BACKREST_HEATER_CAN_CPU_IRQ CPUIntIdx2_IRQn +#define SEAT_BACKREST_HEATER_CAN_DIVIDER_NUMBER (0u) +#define SEAT_BACKREST_HEATER_CAN_CLOCK_HZ (40000000u) +#define SEAT_BACKREST_HEATER_CAN_TX_BUFFER_COUNT (4u) +#define SEAT_BACKREST_HEATER_CAN_RX_FIFO0_ELEMENTS (8u) +#define SEAT_BACKREST_HEATER_CAN_RX_QUEUE_DEPTH (8u) + +/* Classic CAN matrix messages, 11-bit IDs, 8-byte payloads, Intel bit order. */ +#define SEAT_BACKREST_HEATER_CAN_CONTROL_29E_ID (0x29Eu) +#define SEAT_BACKREST_HEATER_CAN_CONFIG_2AA_ID (0x2AAu) +#define SEAT_BACKREST_HEATER_CAN_MODE_3CE_ID (0x3CEu) +#define SEAT_BACKREST_HEATER_CAN_SWITCH_42A_ID (0x42Au) +#define SEAT_BACKREST_HEATER_CAN_FEEDBACK_4FA_ID (0x4FAu) +#define SEAT_BACKREST_HEATER_CAN_DLC (8u) +#define SEAT_BACKREST_HEATER_CAN_FEEDBACK_PERIOD_MS (100u) +#define SEAT_BACKREST_HEATER_CAN_ACCEPT_42A_COMMAND (1u) +#define SEAT_BACKREST_HEATER_DEFAULT_CAN_GEAR (2u) + +/* Safety watchdog and retained C-SPY session latch, derived from Seat_Fan_demo. */ +#define SEAT_BACKREST_HEATER_WDT_TIMEOUT_TICKS (3200u) +#define SEAT_BACKREST_HEATER_DEBUG_BREG_INDEX (3u) +#define SEAT_BACKREST_HEATER_DEBUG_ACTIVE_MAGIC (0x48444247u) /* "HDBG" */ +#define SEAT_BACKREST_HEATER_DEBUG_EXIT_MAGIC (0x484F4646u) /* "HOFF" */ + +/* + * Schematic-confirmed diagnostic current-sense path: + * KBJRD-AD -> P12.2 / ADC[1]_6. The BTS7010 IS pin uses a 1.2 kOhm + * sense resistor and the schematic annotates K=5000. The calculated current + * is for bench visibility only; production thresholds require calibration. + */ +#define SEAT_BACKREST_HEATER_SENSE_ENABLE (1u) +#define SEAT_BACKREST_HEATER_SENSE_PORT GPIO_PRT12 +#define SEAT_BACKREST_HEATER_SENSE_PIN (2u) +#define SEAT_BACKREST_HEATER_SENSE_GPIO_HSIOM P12_2_GPIO +#define SEAT_BACKREST_HEATER_SENSE_RESISTOR_OHM (1200u) +#define SEAT_BACKREST_HEATER_SENSE_KILIS (5000u) + +/* BTS7010 control facts confirmed on the power-driver schematic page. */ +#define SEAT_BACKREST_HEATER_BTS7010_IN_ACTIVE_HIGH (1u) +#define SEAT_BACKREST_HEATER_BTS7010_DEN_MCU_CONTROLLED (0u) + +#if !defined(CYT4BFBCJE) || !defined(CY_MCU_rev_d) +#error "Seat_Controller_demo requires CYT4BFBCJE rev_d headers." +#endif + +#if ((SEAT_BACKREST_HEATER_COUNTER_CLOCK_HZ % \ + SEAT_BACKREST_HEATER_PWM_FREQUENCY_HZ) != 0u) +#error "The heater counter clock must divide evenly by the PWM frequency." +#endif + +#if ((SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS == 0u) || \ + (SEAT_BACKREST_HEATER_PWM_PERIOD_TICKS > 65535u)) +#error "The heater PWM period does not fit TCPWM1 group 0 counter 65." +#endif + +#if ((SEAT_BACKREST_HEATER_LOW_DUTY_PERCENT == 0u) || \ + (SEAT_BACKREST_HEATER_LOW_DUTY_PERCENT >= \ + SEAT_BACKREST_HEATER_MEDIUM_DUTY_PERCENT) || \ + (SEAT_BACKREST_HEATER_MEDIUM_DUTY_PERCENT >= \ + SEAT_BACKREST_HEATER_HIGH_DUTY_PERCENT) || \ + (SEAT_BACKREST_HEATER_HIGH_DUTY_PERCENT > 100u)) +#error "Heater duties must be ordered LOW < MEDIUM < HIGH <= 100." +#endif + +#if (SEAT_BACKREST_HEATER_DEFAULT_LEVEL > 3u) +#error "Default heater level must be 0 (off) through 3 (high)." +#endif + +#if ((SEAT_BACKREST_HEATER_CAN_CONTROL_29E_ID > 0x7FFu) || \ + (SEAT_BACKREST_HEATER_CAN_CONFIG_2AA_ID > 0x7FFu) || \ + (SEAT_BACKREST_HEATER_CAN_MODE_3CE_ID > 0x7FFu) || \ + (SEAT_BACKREST_HEATER_CAN_SWITCH_42A_ID > 0x7FFu) || \ + (SEAT_BACKREST_HEATER_CAN_FEEDBACK_4FA_ID > 0x7FFu)) +#error "Seat heating CAN IDs must be 11-bit standard identifiers." +#endif + +#if (SEAT_BACKREST_HEATER_CAN_RX_QUEUE_DEPTH < 5u) +#error "The heater CAN receive queue must hold at least five frames." +#endif + +#if ((SEAT_BACKREST_HEATER_DEFAULT_CAN_GEAR == 0u) || \ + (SEAT_BACKREST_HEATER_DEFAULT_CAN_GEAR > 3u)) +#error "Default heater CAN gear must be in the range 1 through 3." +#endif + +#if ((SEAT_BACKREST_HEATER_SENSE_SAMPLE_MS == 0u) || \ + (SEAT_BACKREST_HEATER_SENSE_MAX_ERRORS == 0u) || \ + (SEAT_BACKREST_HEATER_MAX_ACTIVE_TIME_MS == 0u)) +#error "Heater sample period and maximum active time must be non-zero." +#endif + +#if (SEAT_BACKREST_HEATER_DEBUG_BREG_INDEX >= SRSS_BACKUP_NUM_BREG) +#error "The selected heater backup register is not present on this device." +#endif + +#endif /* SEAT_BACKREST_HEATER_CONFIG_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_current_adc_config.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_current_adc_config.h new file mode 100644 index 0000000..1862e6c --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_current_adc_config.h @@ -0,0 +1,71 @@ +#ifndef SEAT_CURRENT_ADC_CONFIG_H +#define SEAT_CURRENT_ADC_CONFIG_H + +#include "cy_project.h" +#include "cy_device_headers.h" + +/* + * PASS0 SAR1 is shared by all seat-current measurements. The schematic + * connects VREFH and the DRV8718 AREF rail to filtered 5 V, so raw-to-voltage + * calculations must use 5000 mV rather than the GPIO-domain 3.3 V supply. + * + * Logical motor mapping: + * M0 horizontal : ZYTTKZDY-AD, P10.6, ADC[1]_2 + * M1 seat pan : JXBKZDY-AD, P12.1, ADC[1]_5 + * M2 backrest : ZYKBKZDY-AD, P10.7, ADC[1]_3 + * M3 legrest : ZYGDKZDY-AD, P10.5, ADC[1]_1 + * heater current : KBJRD-AD, P12.2, ADC[1]_6 + * fan current : FSDY-AD, P12.6, ADC[1]_10 + */ +#define SEAT_CURRENT_ADC_INSTANCE PASS0_SAR1 +#define SEAT_CURRENT_ADC_PCLK PCLK_PASS0_CLOCK_SAR1 +#define SEAT_CURRENT_ADC_DIVIDER_NUMBER (4u) +#define SEAT_CURRENT_ADC_REFERENCE_MV (5000u) +#define SEAT_CURRENT_ADC_FULL_SCALE (4095u) +#define SEAT_CURRENT_ADC_OPERATION_FREQ_MAX_HZ (13340000u) +#define SEAT_CURRENT_ADC_SAMPLE_TIME_MIN_NS (600ull) +#define SEAT_CURRENT_ADC_POLL_TIMEOUT (100000u) + +#define SEAT_CURRENT_M0_PORT GPIO_PRT10 +#define SEAT_CURRENT_M0_PIN (6u) +#define SEAT_CURRENT_M0_GPIO_HSIOM P10_6_GPIO +#define SEAT_CURRENT_M0_CHANNEL PASS0_SAR1_CH2 +#define SEAT_CURRENT_M0_PIN_ADDRESS CY_ADC_PIN_ADDRESS_AN2 + +#define SEAT_CURRENT_M1_PORT GPIO_PRT12 +#define SEAT_CURRENT_M1_PIN (1u) +#define SEAT_CURRENT_M1_GPIO_HSIOM P12_1_GPIO +#define SEAT_CURRENT_M1_CHANNEL PASS0_SAR1_CH5 +#define SEAT_CURRENT_M1_PIN_ADDRESS CY_ADC_PIN_ADDRESS_AN5 + +#define SEAT_CURRENT_M2_PORT GPIO_PRT10 +#define SEAT_CURRENT_M2_PIN (7u) +#define SEAT_CURRENT_M2_GPIO_HSIOM P10_7_GPIO +#define SEAT_CURRENT_M2_CHANNEL PASS0_SAR1_CH3 +#define SEAT_CURRENT_M2_PIN_ADDRESS CY_ADC_PIN_ADDRESS_AN3 + +#define SEAT_CURRENT_M3_PORT GPIO_PRT10 +#define SEAT_CURRENT_M3_PIN (5u) +#define SEAT_CURRENT_M3_GPIO_HSIOM P10_5_GPIO +#define SEAT_CURRENT_M3_CHANNEL PASS0_SAR1_CH1 +#define SEAT_CURRENT_M3_PIN_ADDRESS CY_ADC_PIN_ADDRESS_AN1 + +#define SEAT_CURRENT_HEATER_PORT GPIO_PRT12 +#define SEAT_CURRENT_HEATER_PIN (2u) +#define SEAT_CURRENT_HEATER_GPIO_HSIOM P12_2_GPIO +#define SEAT_CURRENT_HEATER_CHANNEL PASS0_SAR1_CH6 +#define SEAT_CURRENT_HEATER_PIN_ADDRESS CY_ADC_PIN_ADDRESS_AN6 + +#define SEAT_CURRENT_FAN_PORT GPIO_PRT12 +#define SEAT_CURRENT_FAN_PIN (6u) +#define SEAT_CURRENT_FAN_GPIO_HSIOM P12_6_GPIO +#define SEAT_CURRENT_FAN_CHANNEL PASS0_SAR1_CH10 +#define SEAT_CURRENT_FAN_PIN_ADDRESS CY_ADC_PIN_ADDRESS_AN10 + +#define SEAT_CURRENT_ADC_PORT_ADDRESS CY_ADC_PORT_ADDRESS_SARMUX0 + +#if !defined(CYT4BFBCJE) || !defined(CY_MCU_rev_d) +#error "Seat current ADC mapping requires CYT4BFBCJE rev_d headers." +#endif + +#endif /* SEAT_CURRENT_ADC_CONFIG_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_fan_config.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_fan_config.h new file mode 100644 index 0000000..ba591bf --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_fan_config.h @@ -0,0 +1,139 @@ +#ifndef SEAT_FAN_CONFIG_H +#define SEAT_FAN_CONFIG_H + +#include "cy_project.h" +#include "cy_device_headers.h" + +/* + * Backrest fan: + * P11.1 -> KBFSDY-PWM-IN -> BTS7030 IN0 -> backrest fan. + * The schematic name "PWM0-60" maps to TCPWM1 group 0 counter 60 in SDL. + */ +#define SEAT_FAN_PWM_PORT GPIO_PRT11 +#define SEAT_FAN_PWM_PIN (1u) +#define SEAT_FAN_PWM_GPIO_HSIOM P11_1_GPIO +#define SEAT_FAN_PWM_HSIOM P11_1_TCPWM1_LINE60 +#define SEAT_FAN_PWM_TCPWM TCPWM1_GRP0_CNT60 +#define SEAT_FAN_PWM_PCLK PCLK_TCPWM1_CLOCKS60 + +/* + * Seat-cushion fan output is unused in this first version and must stay low: + * P11.2 -> ZDFSDY-PWM-IN. + */ +#define SEAT_FAN_UNUSED_PORT GPIO_PRT11 +#define SEAT_FAN_UNUSED_PIN (2u) +#define SEAT_FAN_UNUSED_GPIO_HSIOM P11_2_GPIO + +#define SEAT_FAN_PWM_DIVIDER_NUMBER (0u) +#define SEAT_FAN_COUNTER_CLOCK_HZ (2000000u) +#define SEAT_FAN_PWM_FREQUENCY_HZ (100u) +#define SEAT_FAN_PWM_PERIOD_TICKS \ + (SEAT_FAN_COUNTER_CLOCK_HZ / SEAT_FAN_PWM_FREQUENCY_HZ) + +#define SEAT_FAN_STARTUP_DUTY_PERCENT (100u) +#define SEAT_FAN_RUNNING_DUTY_PERCENT (70u) +#define SEAT_FAN_STARTUP_TIME_US (2000000u) +#define SEAT_FAN_DEBUG_POLL_TIME_US (1000u) +#define SEAT_FAN_WDT_TIMEOUT_TICKS (3200u) + +/* CAN-controlled application timing and the three physical fan levels. */ +#define SEAT_FAN_TASK_PERIOD_US (1000u) +#define SEAT_FAN_STARTUP_TIME_MS (SEAT_FAN_STARTUP_TIME_US / 1000u) +#define SEAT_FAN_GEAR1_DUTY_PERCENT (50u) +#define SEAT_FAN_GEAR2_DUTY_PERCENT (70u) +#define SEAT_FAN_GEAR3_DUTY_PERCENT (100u) +#define SEAT_FAN_DEFAULT_GEAR (2u) + +/* + * Vehicle CAN4 wiring proven by D:\wcl\can: + * P3.7 RX, P3.6 TX, P3.1 high enables the board TJA1044 circuit. + */ +#define SEAT_FAN_CAN_TYPE CY_CANFD1_2_TYPE +#define SEAT_FAN_CAN_RX_PORT GPIO_PRT3 +#define SEAT_FAN_CAN_RX_PIN (7u) +#define SEAT_FAN_CAN_RX_MUX P3_7_CANFD1_TTCAN_RX2 +#define SEAT_FAN_CAN_TX_PORT GPIO_PRT3 +#define SEAT_FAN_CAN_TX_PIN (6u) +#define SEAT_FAN_CAN_TX_MUX P3_6_CANFD1_TTCAN_TX2 +#define SEAT_FAN_CAN_TRANSCEIVER_PORT GPIO_PRT3 +#define SEAT_FAN_CAN_TRANSCEIVER_PIN (1u) +#define SEAT_FAN_CAN_TRANSCEIVER_GPIO_HSIOM P3_1_GPIO +#define SEAT_FAN_CAN_TRANSCEIVER_ENABLE (1u) +#define SEAT_FAN_CAN_PCLK PCLK_CANFD1_CLOCK_CAN2 +#define SEAT_FAN_CAN_IRQN canfd_1_interrupts0_2_IRQn +#define SEAT_FAN_CAN_CPU_IRQ CPUIntIdx2_IRQn +#define SEAT_FAN_CAN_DIVIDER_NUMBER (0u) +#define SEAT_FAN_CAN_CLOCK_HZ (40000000u) +#define SEAT_FAN_CAN_TX_BUFFER_COUNT (4u) +#define SEAT_FAN_CAN_RX_FIFO0_ELEMENTS (8u) +#define SEAT_FAN_CAN_RX_QUEUE_DEPTH (8u) + +/* Classic CAN matrix messages, 11-bit IDs, 8-byte payloads, Intel bit order. */ +#define SEAT_FAN_CAN_CONTROL_29E_ID (0x29Eu) +#define SEAT_FAN_CAN_CONFIG_2AA_ID (0x2AAu) +#define SEAT_FAN_CAN_SWITCH_42A_ID (0x42Au) +#define SEAT_FAN_CAN_FEEDBACK_4FA_ID (0x4FAu) +#define SEAT_FAN_CAN_DLC (8u) +#define SEAT_FAN_CAN_FEEDBACK_PERIOD_MS (100u) +#define SEAT_FAN_CAN_ACCEPT_42A_COMMAND (1u) + +/* FSDY-AD is P12.6 / ADC[1]_10 on the shared seat-current ADC. */ +#define SEAT_FAN_CURRENT_SAMPLE_MS (10u) + +/* + * BREG3 retains the debug-session state through debug/XRES/WDT resets. + * DEBUG_ACTIVE is written by firmware as soon as it observes C_DEBUGEN, so a + * debugger-induced reset cannot accidentally restart the fan even if the + * C-SPY exit hook was skipped. DEBUG_EXIT is written when detach is observed + * or by the C-SPY exit hook. A genuine POR releases either marker. + */ +#define SEAT_FAN_DEBUG_SESSION_BREG_INDEX (3u) +#define SEAT_FAN_DEBUG_ACTIVE_MAGIC (0x44424741u) /* ASCII "DBGA" */ +#define SEAT_FAN_DEBUG_EXIT_MAGIC (0x5346414Eu) /* ASCII "SFAN" */ + +#if !defined(CYT4BFBCJE) || !defined(CY_MCU_rev_d) +#error "Seat_Controller_demo must be built for CYT4BFBCJE with the rev_d headers." +#endif + +#if ((SEAT_FAN_COUNTER_CLOCK_HZ % SEAT_FAN_PWM_FREQUENCY_HZ) != 0u) +#error "The TCPWM counter clock must divide evenly by the requested PWM frequency." +#endif + +#if ((SEAT_FAN_PWM_PERIOD_TICKS == 0u) || (SEAT_FAN_PWM_PERIOD_TICKS > 65535u)) +#error "The PWM period does not fit TCPWM1 group 0 counter 60." +#endif + +#if ((SEAT_FAN_STARTUP_TIME_US % SEAT_FAN_DEBUG_POLL_TIME_US) != 0u) +#error "The startup duration must be an integer number of debug polling periods." +#endif + +#if ((SEAT_FAN_STARTUP_TIME_US % 1000u) != 0u) +#error "The fan startup time must be an integer number of milliseconds." +#endif + +#if ((SEAT_FAN_GEAR1_DUTY_PERCENT > SEAT_FAN_GEAR2_DUTY_PERCENT) || \ + (SEAT_FAN_GEAR2_DUTY_PERCENT > SEAT_FAN_GEAR3_DUTY_PERCENT) || \ + (SEAT_FAN_GEAR3_DUTY_PERCENT > 100u)) +#error "Fan gear duty percentages must be monotonic and no greater than 100." +#endif + +#if ((SEAT_FAN_DEFAULT_GEAR == 0u) || (SEAT_FAN_DEFAULT_GEAR > 3u)) +#error "The default physical fan gear must be in the range 1 through 3." +#endif + +#if ((SEAT_FAN_CAN_CONTROL_29E_ID > 0x7FFu) || \ + (SEAT_FAN_CAN_CONFIG_2AA_ID > 0x7FFu) || \ + (SEAT_FAN_CAN_SWITCH_42A_ID > 0x7FFu) || \ + (SEAT_FAN_CAN_FEEDBACK_4FA_ID > 0x7FFu)) +#error "Seat ventilation CAN IDs must be 11-bit standard identifiers." +#endif + +#if (SEAT_FAN_CAN_RX_QUEUE_DEPTH < 4u) +#error "The CAN receive queue must hold at least four frames." +#endif + +#if (SEAT_FAN_DEBUG_SESSION_BREG_INDEX >= SRSS_BACKUP_NUM_BREG) +#error "The selected backup register is not present on this device." +#endif + +#endif /* SEAT_FAN_CONFIG_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_move_config.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_move_config.h new file mode 100644 index 0000000..540fdab --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Config/seat_move_config.h @@ -0,0 +1,150 @@ +#ifndef SEAT_MOVE_CONFIG_H +#define SEAT_MOVE_CONFIG_H + +#include "cy_project.h" +#include "cy_device_headers.h" + +/* This configuration is intentionally tied to the timed-only IAR target. */ +#if !defined(PASSENGER_SEAT_TIMED_ONLY) +#error "Build this source only from Passenger_Seat_Timed_Controller_demo." +#endif + +#define SEAT_MOVE_MOTOR_COUNT (4u) +#define SEAT_MOVE_ACTIVE_MOTOR_MASK (0x0Fu) +#define SEAT_MOVE_TASK_PERIOD_US (1000u) +#define SEAT_MOVE_START_STAGGER_MS (100u) +#define SEAT_MOVE_MAX_CONCURRENT_MOTORS (4u) + +/* Timed-only CAN limits. ParamA is duration in ms. */ +#define SEAT_TIMED_MIN_DURATION_MS (300u) +#define SEAT_TIMED_M0_MAX_DURATION_MS (30000u) /* horizontal */ +#define SEAT_TIMED_M1_MAX_DURATION_MS (20000u) /* seat-pan */ +#define SEAT_TIMED_M2_MAX_DURATION_MS (30000u) /* backrest */ +#define SEAT_TIMED_M3_MAX_DURATION_MS (25000u) /* legrest */ +#define SEAT_TIMED_LEVEL_MIN_X10 (300u) +#define SEAT_TIMED_LEVEL_MAX_X10 (1000u) + +/* Logical MotorID and connected DRV8718 channel are identical. */ +#define SEAT_MOVE_LOGICAL_M0_PHYSICAL_MODE (0u) +#define SEAT_MOVE_LOGICAL_M1_PHYSICAL_MODE (1u) +#define SEAT_MOVE_LOGICAL_M2_PHYSICAL_MODE (2u) +#define SEAT_MOVE_LOGICAL_M3_PHYSICAL_MODE (3u) + +/* Retained by the verified motor manager; timed requests provide duty. */ +#define SEAT_MOVE_M0_DEFAULT_TIMEOUT_MS (12000u) +#define SEAT_MOVE_M1_DEFAULT_TIMEOUT_MS (8000u) +#define SEAT_MOVE_M2_DEFAULT_TIMEOUT_MS (12000u) +#define SEAT_MOVE_M3_DEFAULT_TIMEOUT_MS (30000u) +#define SEAT_MOVE_M0_DEFAULT_DUTY_PERCENT (90u) +#define SEAT_MOVE_M1_DEFAULT_DUTY_PERCENT (90u) +#define SEAT_MOVE_M2_DEFAULT_DUTY_PERCENT (90u) +#define SEAT_MOVE_M3_DEFAULT_DUTY_PERCENT (50u) +#define SEAT_MOVE_M3_BREAKAWAY_DUTY_PERCENT (50u) +#define SEAT_MOVE_POSITION_TARGET_HALL_TOLERANCE (4u) + +/* CAN4, classic CAN, 500 kbit/s. */ +#define SEAT_MOVE_CAN_TYPE CY_CANFD1_2_TYPE +#define SEAT_MOVE_CAN_RX_PORT GPIO_PRT3 +#define SEAT_MOVE_CAN_RX_PIN (7u) +#define SEAT_MOVE_CAN_RX_MUX P3_7_CANFD1_TTCAN_RX2 +#define SEAT_MOVE_CAN_TX_PORT GPIO_PRT3 +#define SEAT_MOVE_CAN_TX_PIN (6u) +#define SEAT_MOVE_CAN_TX_MUX P3_6_CANFD1_TTCAN_TX2 +#define SEAT_MOVE_CAN_TRANSCEIVER_PORT GPIO_PRT3 +#define SEAT_MOVE_CAN_TRANSCEIVER_PIN (1u) +#define SEAT_MOVE_CAN_TRANSCEIVER_GPIO_HSIOM P3_1_GPIO +#define SEAT_MOVE_CAN_TRANSCEIVER_ENABLE (1u) +#define SEAT_MOVE_CAN_PCLK PCLK_CANFD1_CLOCK_CAN2 +#define SEAT_MOVE_CAN_IRQN canfd_1_interrupts0_2_IRQn +#define SEAT_MOVE_CAN_CPU_IRQ CPUIntIdx2_IRQn +#define SEAT_MOVE_CAN_DIVIDER_NUMBER (0u) +#define SEAT_MOVE_CAN_CLOCK_HZ (40000000u) +#define SEAT_MOVE_CAN_TX_BUFFER_COUNT (8u) +#define SEAT_MOVE_CAN_RX_FIFO0_ELEMENTS (8u) +#define SEAT_MOVE_CAN_RX_QUEUE_DEPTH (16u) +#define SEAT_MOVE_CAN_DLC (8u) +#define SEAT_MOVE_CAN_PROTOCOL_VERSION (1u) + +#define SEAT_MOVE_CAN_COMMAND_ID (0x300u) +#define SEAT_MOVE_CAN_SYSTEM_STATUS_ID (0x301u) +#define SEAT_MOVE_CAN_MOTOR_STATUS_ID (0x302u) +#define SEAT_MOVE_CAN_DIAGNOSTIC_ID (0x303u) +#define SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID (0x304u) +#define SEAT_MOVE_CAN_FIRMWARE_ID_ID (0x307u) +#define SEAT_MOVE_FIRMWARE_REVISION (15u) +#define SEAT_MOVE_FIRMWARE_BUILD_ID (17u) + +#define SEAT_MOVE_SYSTEM_STATUS_PERIOD_MS (100u) +#define SEAT_MOVE_MOTOR_STATUS_POLL_MS (25u) +#define SEAT_MOVE_DIAGNOSTIC_POLL_MS (25u) +#define SEAT_MOVE_FIRMWARE_ID_PERIOD_MS (500u) + +/* Current-aware stall detection remains active for timed movement. */ +#define SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS (10u) +#define SEAT_MOVE_MOTOR_CURRENT_MAX_AGE_MS (100u) +#define SEAT_MOVE_MOTOR_CURRENT_BASELINE_FILTER_SHIFT (3u) +#define SEAT_MOVE_MOTOR_STALL_CURRENT_CONFIRM_MS (200u) +#define SEAT_MOVE_MOTOR_NO_MOTION_TIMEOUT_MS (5000u) +#define SEAT_MOVE_M0_STALL_CURRENT_DELTA_RAW (500u) +#define SEAT_MOVE_M1_STALL_CURRENT_DELTA_RAW (500u) +#define SEAT_MOVE_M2_STALL_CURRENT_DELTA_RAW (500u) +#define SEAT_MOVE_M3_STALL_CURRENT_DELTA_RAW (500u) +#define SEAT_MOVE_MOTOR_CURRENT_MAX_ERRORS (3u) + +/* Debug-detach and watchdog safety. HIL registers remain internal to the + * reused safety manager; this image exposes no HIL CAN command/filter. */ +#define SEAT_MOVE_DEBUG_SESSION_BREG_INDEX (3u) +#define SEAT_MOVE_DEBUG_ACTIVE_MAGIC (0x4D4F5641u) +#define SEAT_MOVE_DEBUG_EXIT_MAGIC (0x4D4F5645u) +#define SEAT_MOVE_WDT_TIMEOUT_TICKS (3200u) +#define SEAT_MOVE_HIL_WDT_MAGIC_BREG_INDEX (0u) +#define SEAT_MOVE_HIL_WDT_TOKEN_BREG_INDEX (1u) +#define SEAT_MOVE_HIL_WDT_CHECK_BREG_INDEX (2u) +#define SEAT_MOVE_HIL_WDT_MARKER (0x48494C36u) + +#if !defined(CYT4BFBCJE) || !defined(CY_MCU_rev_d) +#error "Timed passenger-seat firmware requires CYT4BFBCJE rev_d." +#endif + +#if (SEAT_MOVE_ACTIVE_MOTOR_MASK != 0x0Fu) +#error "All four passenger-seat motor outputs must be enabled." +#endif + +#if (SEAT_MOVE_MAX_CONCURRENT_MOTORS == 0u) || \ + (SEAT_MOVE_MAX_CONCURRENT_MOTORS > SEAT_MOVE_MOTOR_COUNT) +#error "Concurrent motor budget must be between one and four." +#endif + +#if ((SEAT_TIMED_MIN_DURATION_MS == 0u) || \ + (SEAT_TIMED_M0_MAX_DURATION_MS > 65535u) || \ + (SEAT_TIMED_M1_MAX_DURATION_MS > 65535u) || \ + (SEAT_TIMED_M2_MAX_DURATION_MS > 65535u) || \ + (SEAT_TIMED_M3_MAX_DURATION_MS > 65535u)) +#error "Timed-command duration limits must fit ParamA." +#endif + +#if ((SEAT_MOVE_CAN_COMMAND_ID > 0x7FFu) || \ + (SEAT_MOVE_CAN_SYSTEM_STATUS_ID > 0x7FFu) || \ + (SEAT_MOVE_CAN_MOTOR_STATUS_ID > 0x7FFu) || \ + (SEAT_MOVE_CAN_DIAGNOSTIC_ID > 0x7FFu) || \ + (SEAT_MOVE_CAN_CURRENT_DIAGNOSTIC_ID > 0x7FFu) || \ + (SEAT_MOVE_CAN_FIRMWARE_ID_ID > 0x7FFu)) +#error "Seat movement CAN identifiers must be 11-bit standard IDs." +#endif + +#if (SEAT_MOVE_FIRMWARE_REVISION > 0x0Fu) || \ + (SEAT_MOVE_FIRMWARE_BUILD_ID > 0xFFu) +#error "Firmware identity fields exceed their CAN encoding." +#endif + +#if ((SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS == 0u) || \ + (SEAT_MOVE_MOTOR_CURRENT_MAX_AGE_MS < \ + SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS) || \ + (SEAT_MOVE_MOTOR_STALL_CURRENT_CONFIRM_MS == 0u) || \ + (SEAT_MOVE_MOTOR_NO_MOTION_TIMEOUT_MS <= \ + SEAT_MOVE_MOTOR_STALL_CURRENT_CONFIRM_MS) || \ + (SEAT_MOVE_MOTOR_CURRENT_MAX_ERRORS == 0u)) +#error "Motor current/stall timing configuration is invalid." +#endif + +#endif /* SEAT_MOVE_CONFIG_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/BUILD_INFO_2026-09-16.md b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/BUILD_INFO_2026-09-16.md new file mode 100644 index 0000000..8cf0b17 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/BUILD_INFO_2026-09-16.md @@ -0,0 +1,25 @@ +# Build information — 2026-09-16 + +- Project: `Passenger_Seat_Timed_Controller_demo.ewp` +- Configuration: `rev_d` +- IAR command-line builder: 9.2.2.10770 +- IAR ARM compiler/linker: 9.40.1.364 +- Result: 0 errors, 0 warnings +- Read-only code: 40,626 bytes +- Read-only data: 1,977 bytes +- Read-write data: 6,182 bytes + +Artifacts: + +| File | SHA-256 | +|---|---| +| `IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.hex` | `7B47002B7B1A882A90717CE2727D60349B6C58CF0C1E95E48094C85EDB376CDC` | +| `IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.out` | `B0C740CB2BE02008BC03803B0A3422D817ABD1CF2BF977156294FB04BBDFAB7F` | + +The linker map contains `SeatMotor_MoveTimedDuty` as the sole linked +`SeatMotor_Move*`/calibration/homing entry point. No dynamic-mode, position +store, or thermal-controller application symbol is linked. The HEX contains +the `PST1`, revision 15, build 17 identity payload. + +This result is a compile/link verification only. No target was flashed and no +physical actuator movement was performed during this build. diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/README_Passenger_Seat_Timed_Controller.md b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/README_Passenger_Seat_Timed_Controller.md new file mode 100644 index 0000000..ddfcdd9 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Docs/README_Passenger_Seat_Timed_Controller.md @@ -0,0 +1,88 @@ +# 副驾座椅四轴定时控制固件 + +本目录是从 `Seat_Controller_demo` 独立出的副驾定时控制版本。原工程保持不变;本工程的 CAN 应用层只允许四轴定时运动,不提供位置、相对位移、回零、标定、动态模式或热控能力。 + +## IAR 工程 + +- 工程文件:`IAR/Passenger_Seat_Timed_Controller_demo.ewp` +- 目标器件:Infineon TRAVEO T2G `CYT4BFBCJE`,`rev_d` +- IAR 工程宏:`PASSENGER_SEAT_TIMED_ONLY=1` +- HEX 输出:`Passenger_Seat_Timed_Controller_demo.hex` +- 固件身份帧:CAN `0x307`,字节 0..3 为 ASCII `PST1`,Build ID 为 `17` + +工程复用原固件已验证的 DRV8718、Hall、电流检测、堵转/端点保护、看门狗和调试器退出安全逻辑。加热和风扇应用没有链接进固件;其 BSP 只用于启动及异常路径中强制输出关闭。 + +## 四轴能力 + +| MotorID | 机构 | 最短时间 | 最长时间 | 实际占空比限制 | +|---:|---|---:|---:|---:| +| 0 | 水平前后 | 300 ms | 30000 ms | 50%..95% | +| 1 | 坐垫升降 | 300 ms | 20000 ms | 50%..95% | +| 2 | 靠背角度 | 300 ms | 30000 ms | 50%..95% | +| 3 | 腿托升降 | 300 ms | 25000 ms | 固定上限 50% | + +四轴可并发,启动间隔至少 100 ms。同一轴收到更新的定时命令时,先停止该轴,再执行新命令;不影响其他轴。定时运动不依赖绝对位置有效性,但端点、堵转、电流和驱动故障保护始终生效。 + +## CAN 命令 + +CAN4 使用经典 CAN、标准 11 位 ID、500 kbit/s。接收过滤器只接受 `0x300`,DLC 必须为 8。 + +`0x300` 的 8 字节按小端编码: + +| 字节 | 字段 | +|---|---| +| B0 | Opcode | +| B1 | Control:bit1:0 MotorID,bit3:2 Direction,bit5:4 ProtocolVersion=1,bit7:6=0 | +| B3:B2 | Sequence,uint16 | +| B5:B4 | ParamA,uint16 | +| B7:B6 | ParamB,uint16 | + +支持的 Opcode: + +| Opcode | 功能 | Direction | ParamA | ParamB | +|---:|---|---|---|---| +| `0x03` | 定时运动 | `1` 向远端,`2` 向近端 | 时间,ms | 请求占空比 ×10,范围 300..1000 | +| `0x08` | 停止单轴 | `0` | `0` | `0` | +| `0x09` | 停止全部 | `0`,MotorID=`0` | `0` | `0` | +| `0x0C` | 查询单轴状态 | `0` | `0` | `0` | +| `0x0D` | 清除单轴任务故障 | `0` | `0xC33C` | `0` | + +请求占空比会被安全范围约束:M0..M2 最终为 50%..95%,M3 不超过 50%。`STOP_ALL` 不受序列号新旧限制,可用于随时重新同步和急停;其他命令要求 16 位 Sequence 按环形序列递增,完全相同的重复帧返回 Duplicate。 + +以下运动 Opcode 固定返回 `BAD_OPCODE(3)`: + +- `0x01` 绝对位置 +- `0x02` 相对位置 +- `0x0A` 行程标定 +- `0x0B` 已知行程回零 +- `0x0E` 启动动态模式 +- `0x0F` 停止动态模式 + +热控和 HIL 自愈帧不在硬件接收过滤器中,`0x306` 动态模式状态也不再发送。 + +## 状态反馈 + +保留与原座椅协议兼容的诊断帧: + +- `0x301`:系统状态、ACK、拒绝原因、活动/故障轴掩码 +- `0x302`:单轴任务状态;定时运行状态值为 `3` +- `0x303`:Hall、速度和故障诊断 +- `0x304`:电流诊断 +- `0x307`:固件身份 `PST1` + +`0x301` 中动态模式位和标定位始终为 0。位置有效位及百分比只作为 Hall 诊断信息返回,不用于目标位置控制。 + +## 构建与校验 + +1. 用 IAR Embedded Workbench for Arm 打开 `IAR/Passenger_Seat_Timed_Controller_demo.ewp`。 +2. 选择 `rev_d` 配置并 Build。 +3. 烧录前通过 `0x307` 确认目标固件身份为 `PST1`。 +4. 烧录和台架运动测试期间保证座椅机构无人员/障碍物,先验证 `STOP_ALL`,再逐轴低时长测试。 + +仓库静态校验: + +```text +python firmware/t2g/Passenger_Seat_Timed_Controller_demo/Tests/audit_timed_only.py +``` + +该脚本检查 IAR XML、工程引用、定时版编译宏、CAN 接收过滤器、允许的 Opcode,以及位置/动态/热控模块未被链接。 diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.c b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.c new file mode 100644 index 0000000..6bcb378 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.c @@ -0,0 +1,4340 @@ +/***************************************************************************//** +* \file motor_control.c +* +* CYT4BFBCJE CM0+ low-level four-channel DRV8718S-Q1 motor control. +*******************************************************************************/ + +#include "cy_project.h" +#include "cy_device_headers.h" +#include "bsp_seat_current_adc.h" +#include "motor_control.h" +#include "seat_move_config.h" + +#define MOTOR_DIAGNOSTIC_LOG_ENABLE (0u) + +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) +#include +#define MOTOR_LOG(...) printf(__VA_ARGS__) +#else +#define MOTOR_LOG(...) ((void)0) +#endif + +#define DRV8718_REG_IC_STAT1 (0x00u) +#define DRV8718_REG_IC_CTRL1 (0x07u) +#define DRV8718_REG_IC_CTRL2 (0x08u) +#define DRV8718_REG_BRG_CTRL1 (0x09u) +#define DRV8718_REG_BRG_CTRL2 (0x0Au) +#define DRV8718_REG_PWM_CTRL1 (0x0Bu) +#define DRV8718_REG_PWM_CTRL2 (0x0Cu) +#define DRV8718_REG_PWM_CTRL3 (0x0Du) +#define DRV8718_REG_PWM_CTRL4 (0x0Eu) + +#define DRV8718_WRITE_FRAME(addr, data) \ + ((uint16_t)((((uint16_t)(addr) & 0x3Fu) << 8u) | ((uint16_t)(data) & 0xFFu))) +#define DRV8718_READ_FRAME(addr) \ + ((uint16_t)(0x4000u | ((((uint16_t)(addr)) & 0x3Fu) << 8u))) + +/* BRG_CTRL value encoding per half bridge: 0=Hi-Z, 1=Low, 2=High, 3=PWM. */ +#define HB_CTRL_HIZ (0u) +#define HB_CTRL_LOW (1u) +#define HB_CTRL_HIGH (2u) +#define HB_CTRL_PWM (3u) + +#define PWM_SRC_IN1 (0u) +#define PWM_SRC_IN2 (1u) +#define PWM_SRC_IN3 (2u) +#define PWM_SRC_IN4 (3u) + +#define MOTOR_COAST_BRG_CTRL1 (0x00u) +#define MOTOR_COAST_BRG_CTRL2 (0x00u) + +#define MOTOR_PROFILE_COUNT ((uint32_t)MOTOR_MODE_COUNT) +#define MOTOR_PWM_DUTY_PERCENT (50ul) +#define HALL_SAMPLE_INTERVAL_US (2000ul) +#define MOTOR_SAFETY_CHECK_INTERVAL_MS (50ul) +#define MOTOR_SAFETY_WINDOW_MS (500ul) +#define MOTOR_MODE0_STARTUP_GRACE_MS (1000ul) +#define MOTOR_MODE1_STARTUP_GRACE_MS (1000ul) +#define MOTOR_MODE2_STARTUP_GRACE_MS (1000ul) +#define MOTOR_MODE3_STARTUP_GRACE_MS (2000ul) +#define MOTOR_SAFETY_WINDOW_SAMPLES \ + (MOTOR_SAFETY_WINDOW_MS / MOTOR_SAFETY_CHECK_INTERVAL_MS) +#define MOTOR_ENDPOINT_EDGE_THRESHOLD (0ul) +#define MOTOR_STALL_EDGE_THRESHOLD (2ul) +#define MOTOR_OPERATION_TIMEOUT_MS (70000ul) +#define MOTOR_REVERSAL_COAST_MS (100ul) +#define MOTOR_COAST_HALL_QUIET_MS (100ul) +#define MOTOR_COAST_SETTLE_TIMEOUT_MS (5000ul) +#define MOTOR_MAX_AUTOMATIC_REVERSALS (1u) +#define MOTOR_CALIBRATION_RANGE_MIN_PERCENT (70ul) +#define MOTOR_CALIBRATION_RANGE_MAX_PERCENT (130ul) +#define MOTOR_HOME_PROBE_VERIFY_EDGES (4ul) +#define MOTOR_HOME_RETURN_EDGE_TOLERANCE (1ul) +#define MOTOR_MAX_CALIBRATED_SPEED_MULTIPLIER (2ul) +#define MOTOR_SPEED_CONTROL_START_DELAY_MS (500ul) +#define MOTOR_SPEED_CONTROL_CHECK_MS (100ul) +#define MOTOR_SPEED_CONTROL_WINDOW_MS (500ul) +#define MOTOR_SPEED_PROGRESS_CONTROL_START_MS (100ul) +#define MOTOR_SPEED_CONTROL_MIN_DUTY_PERCENT (5u) +#define MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT (0u) +#define MOTOR_SPEED_PROGRESS_TOLERANCE_PULSES (1ul) +#define MOTOR_SPEED_CONTROL_HISTORY_SAMPLES \ + (MOTOR_SPEED_CONTROL_WINDOW_MS / MOTOR_SPEED_CONTROL_CHECK_MS) +#define MOTOR_SPEED_TOLERANCE_PERCENT (10ul) +#define MOTOR_MODE0_SPEED_STEP_PPS_X100 (500ul) +#define MOTOR_MODE1_SPEED_STEP_PPS_X100 (350ul) +#define MOTOR_MODE2_SPEED_STEP_PPS_X100 (500ul) +#define MOTOR_MODE3_SPEED_STEP_PPS_X100 (500ul) +#define DRV8718_SPI_TIMEOUT_LOOPS (100000ul) +#define DRV8718_STATUS_POLL_INTERVAL_MS (50ul) +#define DRV8718_SDO_HEADER_MASK (0xC000u) +#define DRV8718_SDO_HEADER_VALUE (0xC000u) +#define DRV8718_SDO_ALERT_MASK (0x3F00u) +#define DRV8718_IC_STAT1_SPI_OK (0x80u) +#define DRV8718_IC_STAT1_ALERT_MASK (0x3Fu) + +/* One fixed PWM mapping assigns one independent DRV input to each H-bridge. */ +#define DRV8718_PWM_CTRL1_ALL_MOTORS \ + ((uint8_t)((PWM_SRC_IN1 << 6u) | (PWM_SRC_IN1 << 4u) | \ + (PWM_SRC_IN4 << 2u) | PWM_SRC_IN4)) +#define DRV8718_PWM_CTRL2_ALL_MOTORS \ + ((uint8_t)((PWM_SRC_IN3 << 6u) | (PWM_SRC_IN3 << 4u) | \ + (PWM_SRC_IN2 << 2u) | PWM_SRC_IN2)) +#define MOTOR_PWM_CTRL3_HIGHSIDE (0x00u) +#define MOTOR_PWM_CTRL4_ACTIVE_HI (0x00u) +#define DRV8718_IC_CTRL1_ENABLE_UNLOCKED (0x86u) +#define DRV8718_IC_CTRL1_CLEAR_FAULTS (0x87u) +#define DRV8718_IC_CTRL2_DRVOFF_MODE (0x02u) + +#define SPI_BAUDRATE (1000000ul) +#define SPI_OVERSAMPLING (16ul) +#define SPI_INPUT_CLOCK_HZ (SPI_BAUDRATE * SPI_OVERSAMPLING) +#define SOURCE_CLOCK_HZ (80000000ul) +#define SCB4_DIVIDER_NO (1u) + +#define MOTOR_TIMER_INPUT_CLOCK_HZ (2000000ul) +#define MOTOR_TIMER_DIVIDER_NO (2u) +#define MOTOR_PWM_FREQUENCY_HZ (20000ul) +#define MOTOR_PWM_PERIOD_COUNTS (MOTOR_TIMER_INPUT_CLOCK_HZ / MOTOR_PWM_FREQUENCY_HZ) +#define MOTOR_PWM_COMPARE_COUNTS ((MOTOR_PWM_PERIOD_COUNTS * MOTOR_PWM_DUTY_PERCENT) / 100ul) + +#define HALL_TIMEBASE_TCPWM TCPWM1_GRP0_CNT20 +#define HALL_TIMEBASE_CLOCK PCLK_TCPWM1_CLOCKS20 +#define HALL_TIMEBASE_IRQ tcpwm_1_interrupts_20_IRQn +#define HALL_TIMEBASE_PERIOD_COUNTS \ + ((MOTOR_TIMER_INPUT_CLOCK_HZ / 1000000ul) * HALL_SAMPLE_INTERVAL_US) +#define MOTOR_MS_TO_TICKS(ms) \ + ((uint32_t)(((((uint64_t)(ms)) * 1000ull) + \ + HALL_SAMPLE_INTERVAL_US - 1ull) / HALL_SAMPLE_INTERVAL_US)) +#define MOTOR_TICKS_TO_MS(ticks) \ + ((uint32_t)((((uint64_t)(ticks)) * HALL_SAMPLE_INTERVAL_US) / 1000ull)) +#define MOTOR_SAFETY_CHECK_TICKS \ + MOTOR_MS_TO_TICKS(MOTOR_SAFETY_CHECK_INTERVAL_MS) + +#define DRV_DVDD_EN_PORT P3_1_GPIO_STD_PORT +#define DRV_DVDD_EN_PIN P3_1_GPIO_STD_PIN +#define DRV_NCS_PORT P31_2_GPIO_STD_PORT +#define DRV_NCS_PIN P31_2_GPIO_STD_PIN +#define DRV_NSLEEP_PORT P9_1_GPIO_STD_PORT +#define DRV_NSLEEP_PIN P9_1_GPIO_STD_PIN +#define DRV_DRVOFF_PORT P8_1_GPIO_STD_PORT +#define DRV_DRVOFF_PIN P8_1_GPIO_STD_PIN +#define DRV_IN1_PORT P1_0_GPIO_STD_PORT +#define DRV_IN1_PIN P1_0_GPIO_STD_PIN +#define DRV_IN1_PWM_MUX P1_0_TCPWM1_LINE12 +#define DRV_IN1_PWM_TCPWM TCPWM1_GRP0_CNT12 +#define DRV_IN1_PWM_CLOCK PCLK_TCPWM1_CLOCKS12 +#define DRV_IN2_PORT P5_4_GPIO_STD_PORT +#define DRV_IN2_PIN P5_4_GPIO_STD_PIN +#define DRV_IN2_PWM_MUX P5_4_TCPWM1_LINE13 +#define DRV_IN2_PWM_TCPWM TCPWM1_GRP0_CNT13 +#define DRV_IN2_PWM_CLOCK PCLK_TCPWM1_CLOCKS13 +#define DRV_IN3_PORT P5_5_GPIO_STD_PORT +#define DRV_IN3_PIN P5_5_GPIO_STD_PIN +#define DRV_IN3_PWM_MUX P5_5_TCPWM1_LINE14 +#define DRV_IN3_PWM_TCPWM TCPWM1_GRP0_CNT14 +#define DRV_IN3_PWM_CLOCK PCLK_TCPWM1_CLOCKS14 +#define DRV_IN4_PORT P8_0_GPIO_STD_PORT +#define DRV_IN4_PIN P8_0_GPIO_STD_PIN +#define DRV_IN4_PWM_MUX P8_0_TCPWM1_LINE19 +#define DRV_IN4_PWM_TCPWM TCPWM1_GRP0_CNT19 +#define DRV_IN4_PWM_CLOCK PCLK_TCPWM1_CLOCKS19 + +#define DRV_SPI_MISO_PORT P6_0_GPIO_STD_PORT +#define DRV_SPI_MISO_PIN P6_0_GPIO_STD_PIN +#define DRV_SPI_MISO_MUX P6_0_SCB4_SPI_MISO +#define DRV_SPI_MOSI_PORT P6_1_GPIO_STD_PORT +#define DRV_SPI_MOSI_PIN P6_1_GPIO_STD_PIN +#define DRV_SPI_MOSI_MUX P6_1_SCB4_SPI_MOSI +#define DRV_SPI_CLK_PORT P6_2_GPIO_STD_PORT +#define DRV_SPI_CLK_PIN P6_2_GPIO_STD_PIN +#define DRV_SPI_CLK_MUX P6_2_SCB4_SPI_CLK + +#define HALL_BACK_PORT P14_0_GPIO_STD_PORT +#define HALL_BACK_PIN P14_0_GPIO_STD_PIN +#define HALL_FOOT_2030_PORT P10_1_GPIO_STD_PORT +#define HALL_FOOT_2030_PIN P10_1_GPIO_STD_PIN +#define HALL_LEG_PORT P18_2_GPIO_STD_PORT +#define HALL_LEG_PIN P18_2_GPIO_STD_PIN +#define HALL_HEIGHT_PORT P12_5_GPIO_STD_PORT +#define HALL_HEIGHT_PIN P12_5_GPIO_STD_PIN + +#if ((SOURCE_CLOCK_HZ % MOTOR_TIMER_INPUT_CLOCK_HZ) != 0ul) +#error "MOTOR_TIMER_INPUT_CLOCK_HZ must divide SOURCE_CLOCK_HZ exactly." +#endif + +#if ((MOTOR_TIMER_INPUT_CLOCK_HZ % MOTOR_PWM_FREQUENCY_HZ) != 0ul) +#error "MOTOR_PWM_FREQUENCY_HZ must divide MOTOR_TIMER_INPUT_CLOCK_HZ exactly." +#endif + +#if ((HALL_SAMPLE_INTERVAL_US % 1000ul) != 0ul) +#error "HALL_SAMPLE_INTERVAL_US must be an integer number of milliseconds." +#endif + +#if ((MOTOR_SAFETY_WINDOW_MS % MOTOR_SAFETY_CHECK_INTERVAL_MS) != 0ul) +#error "MOTOR_SAFETY_WINDOW_MS must be a multiple of the safety check period." +#endif + +#if (((MOTOR_MODE0_STARTUP_GRACE_MS % \ + MOTOR_SAFETY_CHECK_INTERVAL_MS) != 0ul) || \ + ((MOTOR_MODE1_STARTUP_GRACE_MS % \ + MOTOR_SAFETY_CHECK_INTERVAL_MS) != 0ul) || \ + ((MOTOR_MODE2_STARTUP_GRACE_MS % \ + MOTOR_SAFETY_CHECK_INTERVAL_MS) != 0ul) || \ + ((MOTOR_MODE3_STARTUP_GRACE_MS % \ + MOTOR_SAFETY_CHECK_INTERVAL_MS) != 0ul)) +#error "Every axis startup grace must align with the safety check period." +#endif + +#if ((MOTOR_SAFETY_CHECK_INTERVAL_MS * 1000ul) < HALL_SAMPLE_INTERVAL_US) +#error "The safety task cannot run faster than the Hall sampling timebase." +#endif + +#if ((MOTOR_SPEED_CONTROL_WINDOW_MS % MOTOR_SPEED_CONTROL_CHECK_MS) != 0ul) +#error "MOTOR_SPEED_CONTROL_WINDOW_MS must be a multiple of the speed check period." +#endif + +#if ((MOTOR_SPEED_CONTROL_MIN_DUTY_PERCENT == 0u) || \ + (MOTOR_SPEED_CONTROL_MIN_DUTY_PERCENT >= MOTOR_SPEED_MIN_DUTY_PERCENT)) +#error "Adaptive speed duty must be below the fixed-duty command minimum." +#endif + +#if ((MOTOR_PWM_DUTY_PERCENT < MOTOR_SPEED_MIN_DUTY_PERCENT) || \ + (MOTOR_PWM_DUTY_PERCENT > MOTOR_SPEED_MAX_DUTY_PERCENT)) +#error "The default motor duty must stay inside the speed-control duty limits." +#endif + +typedef struct +{ + const char *name; + const char *hallName; + volatile stc_GPIO_PRT_t *pwmPort; + uint32_t pwmPin; + en_hsiom_sel_t pwmHsiom; + volatile stc_TCPWM_GRP_CNT_t *pwmTcpwm; + en_clk_dst_t pwmClock; + volatile stc_GPIO_PRT_t *hallPort; + uint32_t hallPin; + uint8_t bridgeRegister; + uint8_t bridgeMask; + uint8_t towardFarBridgeValue; + uint8_t towardNearBridgeValue; + uint32_t defaultMaxHallCount; + uint32_t maxPhysicalValueX100; + uint32_t maxSpeedPpsX100; + uint32_t speedStepPpsX100; + uint32_t startupGraceMs; + uint16_t stallCurrentDeltaRaw; +} motor_profile_t; + +typedef struct +{ + uint32_t rawRisingEdges; + uint32_t rawTotalEdges; + uint32_t positionHallCount; + uint32_t maxHallCount; + uint32_t targetHallCount; + uint32_t motionStartTicks; + uint32_t calibrationTimeoutTicks; + uint32_t scheduledStartTicks; + uint32_t coastStartTicks; + uint32_t activityStartTicks; + uint32_t activityRisingBaseline; + uint32_t activityTotalBaseline; + uint32_t activityMonitorStartTicks; + uint32_t activityWindowBaseline; + uint32_t currentSenseLastSampleTicks; + uint32_t lowHallStartTicks; + uint32_t lowHallEdgeBaseline; + uint32_t stallCurrentStartTicks; + uint32_t activityHistoryEdges[MOTOR_SAFETY_WINDOW_SAMPLES]; + uint32_t recentWindowEdges; + uint16_t currentSenseRaw; + uint16_t currentSenseBaselineRaw; + uint16_t currentSenseDeltaRaw; + uint16_t activityHistoryIndex; + uint16_t activityValidSamples; + motor_direction_t direction; + motor_direction_t eventDirection; + motor_direction_t scheduledDirection; + motor_direction_t coastDirection; + motor_event_t pendingEvent; + motor_event_t lastEvent; + motor_event_t moveResultEvent; + uint8_t lastLevel; + uint8_t automaticReverseCount; + uint8_t currentSenseErrorCount; + bool hallInitialized; + bool positionValid; + bool targetActive; + bool calibrating; + bool activityWindowReady; + bool activityMonitorStarted; + bool currentSenseValid; + bool currentSenseBaselineValid; + bool lowHallTracking; + bool stallCurrentTracking; + bool reverseAtEndpoint; + bool reverseAtStall; + bool startPending; + bool coastTracking; + bool operationActive; + bool eventWasTargetMove; + bool moveResultReady; + uint32_t moveCommandSequence; + uint32_t moveResultSequence; + uint32_t speedDurationMs; + uint32_t speedTravelValueX100; + uint32_t speedPlannedHallPulses; + uint32_t speedTargetPpsX100; + uint32_t speedActualPpsX100; + uint32_t maxSpeedPpsX100; + uint32_t speedControlStartTicks; + uint32_t speedLastSampleTicks; + uint32_t speedBaselineRawEdges; + uint32_t speedHistoryRawEdges[MOTOR_SPEED_CONTROL_HISTORY_SAMPLES]; + uint32_t speedHistoryTicks[MOTOR_SPEED_CONTROL_HISTORY_SAMPLES]; + uint8_t speedHistoryIndex; + uint8_t speedHistoryValidSamples; + uint8_t speedInitialDutyPercent; + uint8_t speedCurrentDutyPercent; + uint8_t fixedDutyPercent; + uint16_t latestAbortSequence; + uint16_t acceptedCommandSequence; + uint32_t cancellationGeneration; + uint32_t acceptedCancellationGeneration; + bool abortSequenceValid; + bool acceptedCommandValid; + bool speedControlEnabled; +} motor_runtime_t; + +static const motor_profile_t motorProfiles[] = +{ + { + "MOTOR_IN2_HB7_HB8_HORIZONTAL", + "HORIZONTAL_HALL", + DRV_IN2_PORT, + DRV_IN2_PIN, + DRV_IN2_PWM_MUX, + DRV_IN2_PWM_TCPWM, + DRV_IN2_PWM_CLOCK, + HALL_LEG_PORT, + HALL_LEG_PIN, + DRV8718_REG_BRG_CTRL2, + 0x0Fu, + (uint8_t)((HB_CTRL_PWM << 2u) | HB_CTRL_LOW), + (uint8_t)((HB_CTRL_LOW << 2u) | HB_CTRL_PWM), + MOTOR_MODE0_DEFAULT_MAX_HALL_COUNT, + MOTOR_MODE0_MAX_POSITION_MM_X100, + MOTOR_MODE0_MAX_SPEED_PPS_X100, + MOTOR_MODE0_SPEED_STEP_PPS_X100, + MOTOR_MODE0_STARTUP_GRACE_MS, + SEAT_MOVE_M0_STALL_CURRENT_DELTA_RAW, + }, + { + "MOTOR_IN3_HB5_HB6_SEAT_PAN", + "SEAT_PAN_HALL", + DRV_IN3_PORT, + DRV_IN3_PIN, + DRV_IN3_PWM_MUX, + DRV_IN3_PWM_TCPWM, + DRV_IN3_PWM_CLOCK, + HALL_FOOT_2030_PORT, + HALL_FOOT_2030_PIN, + DRV8718_REG_BRG_CTRL2, + 0xF0u, + (uint8_t)((HB_CTRL_PWM << 6u) | (HB_CTRL_LOW << 4u)), + (uint8_t)((HB_CTRL_LOW << 6u) | (HB_CTRL_PWM << 4u)), + MOTOR_MODE1_DEFAULT_MAX_HALL_COUNT, + MOTOR_MODE1_MAX_VERTICAL_MM_X100, + MOTOR_MODE1_MAX_SPEED_PPS_X100, + MOTOR_MODE1_SPEED_STEP_PPS_X100, + MOTOR_MODE1_STARTUP_GRACE_MS, + SEAT_MOVE_M1_STALL_CURRENT_DELTA_RAW, + }, + { + "MOTOR_IN4_HB3_HB4_BACKREST", + "BACKREST_HALL", + DRV_IN4_PORT, + DRV_IN4_PIN, + DRV_IN4_PWM_MUX, + DRV_IN4_PWM_TCPWM, + DRV_IN4_PWM_CLOCK, + HALL_BACK_PORT, + HALL_BACK_PIN, + DRV8718_REG_BRG_CTRL1, + 0x0Fu, + (uint8_t)((HB_CTRL_PWM << 2u) | HB_CTRL_LOW), + (uint8_t)((HB_CTRL_LOW << 2u) | HB_CTRL_PWM), + MOTOR_MODE2_DEFAULT_MAX_HALL_COUNT, + MOTOR_MODE2_MAX_ANGLE_DEG_X100, + MOTOR_MODE2_MAX_SPEED_PPS_X100, + MOTOR_MODE2_SPEED_STEP_PPS_X100, + MOTOR_MODE2_STARTUP_GRACE_MS, + SEAT_MOVE_M2_STALL_CURRENT_DELTA_RAW, + }, + { + "MOTOR_IN1_HB1_HB2_LEGREST", + "LEGREST_HALL", + DRV_IN1_PORT, + DRV_IN1_PIN, + DRV_IN1_PWM_MUX, + DRV_IN1_PWM_TCPWM, + DRV_IN1_PWM_CLOCK, + HALL_HEIGHT_PORT, + HALL_HEIGHT_PIN, + DRV8718_REG_BRG_CTRL1, + 0xF0u, + /* Keep direction aligned with the range-calibration firmware: + * near is legrest down/vertical and far is legrest up. */ + (uint8_t)((HB_CTRL_PWM << 6u) | (HB_CTRL_LOW << 4u)), + (uint8_t)((HB_CTRL_LOW << 6u) | (HB_CTRL_PWM << 4u)), + MOTOR_MODE3_DEFAULT_MAX_HALL_COUNT, + MOTOR_MODE3_MAX_ANGLE_DEG_X100, + MOTOR_MODE3_MAX_SPEED_PPS_X100, + MOTOR_MODE3_SPEED_STEP_PPS_X100, + MOTOR_MODE3_STARTUP_GRACE_MS, + SEAT_MOVE_M3_STALL_CURRENT_DELTA_RAW, + }, +}; + +/* Keep the public mode enumeration and the hardware profile table locked + * together. A missing profile must fail the build instead of indexing past + * the table from the 2 ms Hall ISR. */ +typedef char motor_profile_count_must_match_mode_count[ + ((sizeof(motorProfiles) / sizeof(motorProfiles[0])) == + (uint32_t)MOTOR_MODE_COUNT) ? 1 : -1]; + +static cy_stc_gpio_pin_config_t gpioOutCfg = +{ + .outVal = 0ul, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = HSIOM_SEL_GPIO, + .intEdge = 0ul, + .intMask = 0ul, + .vtrip = 0ul, + .slewRate = 0ul, + .driveSel = 0ul, +}; + +static cy_stc_gpio_pin_config_t spiPinCfg = +{ + .outVal = 0ul, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = HSIOM_SEL_GPIO, + .intEdge = 0ul, + .intMask = 0ul, + .vtrip = 0ul, + .slewRate = 0ul, + .driveSel = 0ul, +}; + +static cy_stc_gpio_pin_config_t gpioInCfg = +{ + .outVal = 0ul, + .driveMode = CY_GPIO_DM_HIGHZ, + .hsiom = HSIOM_SEL_GPIO, + .intEdge = 0ul, + .intMask = 0ul, + .vtrip = 0ul, + .slewRate = 0ul, + .driveSel = 0ul, +}; + +static cy_stc_gpio_pin_config_t pwmPinCfg = +{ + .outVal = 0ul, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = HSIOM_SEL_GPIO, + .intEdge = 0ul, + .intMask = 0ul, + .vtrip = 0ul, + .slewRate = 0ul, + .driveSel = 0ul, +}; + +static volatile motor_runtime_t motorRuntime[MOTOR_MODE_COUNT]; +static volatile uint32_t hallTimebaseTicks = 0ul; +static volatile uint32_t safetyTickDivider = 0ul; +static uint8_t bridgeCtrl1Shadow = MOTOR_COAST_BRG_CTRL1; +static uint8_t bridgeCtrl2Shadow = MOTOR_COAST_BRG_CTRL2; +static bool motorControlReady = false; +static bool pwmTimersInitialized = false; +static volatile bool driverFaultLatched = false; +static volatile bool safetyInhibitLatched = false; +static volatile bool motorServiceActive = false; +static volatile bool driverSpiActive = false; +static volatile uint8_t abortRequestedMask = 0u; +static bool watchdogServiceEnabled = false; +static bool driverStatusMonitoringEnabled = false; +static uint32_t driverStatusLastPollTicks = 0ul; +static uint32_t currentSenseLastServiceTicks = 0ul; + +static bool Motor_CalibrationRangeIsPlausible(uint32_t motorIndex, + uint32_t measuredPulses); +static bool Motor_WaitForCoastToSettle(motor_mode_t mode); + +CY_WEAK void Motor_CalibrationServiceHook(void) +{ + /* Optional application service point. */ +} + +static const cy_stc_tcpwm_pwm_config_t motorPwmCfg = +{ + .pwmMode = CY_TCPWM_PWM_MODE_PWM, + .clockPrescaler = CY_TCPWM_PRESCALER_DIVBY_1, + .debug_pause = false, + .cc0MatchMode = CY_TCPWM_PWM_TR_CTRL2_CLEAR, + .overflowMode = CY_TCPWM_PWM_TR_CTRL2_SET, + .underflowMode = CY_TCPWM_PWM_TR_CTRL2_NO_CHANGE, + .cc1MatchMode = CY_TCPWM_PWM_TR_CTRL2_NO_CHANGE, + .deadTime = 0ul, + .deadTimeComp = 0ul, + .runMode = CY_TCPWM_PWM_CONTINUOUS, + .period = MOTOR_PWM_PERIOD_COUNTS - 1ul, + .period_buff = 0ul, + .enablePeriodSwap = false, + .compare0 = MOTOR_PWM_COMPARE_COUNTS, + .compare1 = 0ul, + .enableCompare0Swap = false, + .enableCompare1Swap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .invertPWMOut = 0ul, + .invertPWMOutN = 0ul, + .killMode = CY_TCPWM_PWM_STOP_ON_KILL, + .switchInputMode = CY_TCPWM_INPUT_LEVEL, + .switchInput = 0ul, + .reloadInputMode = CY_TCPWM_INPUT_LEVEL, + .reloadInput = 0ul, + .startInputMode = CY_TCPWM_INPUT_LEVEL, + .startInput = 0ul, + .kill0InputMode = CY_TCPWM_INPUT_LEVEL, + .kill0Input = 0ul, + .kill1InputMode = CY_TCPWM_INPUT_LEVEL, + .kill1Input = 0ul, + .countInputMode = CY_TCPWM_INPUT_LEVEL, + .countInput = 1ul, + .immediateKill = true, + .pwmOnDisable = CY_TCPWM_PWM_OUT_MODE_LOW, +}; + +static const cy_stc_tcpwm_counter_config_t hallTimebaseCfg = +{ + .period = HALL_TIMEBASE_PERIOD_COUNTS - 1ul, + .clockPrescaler = CY_TCPWM_PRESCALER_DIVBY_1, + .runMode = CY_TCPWM_COUNTER_CONTINUOUS, + .countDirection = CY_TCPWM_COUNTER_COUNT_UP, + .debug_pause = false, + .compareOrCapture = CY_TCPWM_COUNTER_MODE_COMPARE, + .compare0 = 0ul, + .compare0_buff = 0ul, + .compare1 = 0ul, + .compare1_buff = 0ul, + .enableCompare0Swap = false, + .enableCompare1Swap = false, + .interruptSources = CY_TCPWM_INT_NONE, + .capture0InputMode = CY_TCPWM_INPUT_LEVEL, + .capture0Input = 0ul, + .reloadInputMode = CY_TCPWM_INPUT_LEVEL, + .reloadInput = 0ul, + .startInputMode = CY_TCPWM_INPUT_LEVEL, + .startInput = 0ul, + .stopInputMode = CY_TCPWM_INPUT_LEVEL, + .stopInput = 0ul, + .capture1InputMode = CY_TCPWM_INPUT_LEVEL, + .capture1Input = 0ul, + .countInputMode = CY_TCPWM_INPUT_LEVEL, + .countInput = 1ul, + .trigger0EventCfg = CY_TCPWM_COUNTER_OVERFLOW, + .trigger1EventCfg = CY_TCPWM_COUNTER_OVERFLOW, +}; + +static const cy_stc_sysint_irq_t hallTimebaseIrqCfg = +{ + .sysIntSrc = HALL_TIMEBASE_IRQ, + .intIdx = CPUIntIdx3_IRQn, + .isEnabled = true, +}; + +static const cy_stc_scb_spi_config_t spiCfg = +{ + .spiMode = CY_SCB_SPI_MASTER, + .subMode = CY_SCB_SPI_MOTOROLA, + .sclkMode = CY_SCB_SPI_CPHA0_CPOL0, + .oversample = SPI_OVERSAMPLING, + .rxDataWidth = 16ul, + .txDataWidth = 16ul, + .enableMsbFirst = true, + .enableFreeRunSclk = false, + .enableInputFilter = false, + .enableMisoLateSample = true, + .enableTransferSeperation = false, + .ssPolarity0 = false, + .ssPolarity1 = false, + .ssPolarity2 = false, + .ssPolarity3 = false, + .enableWakeFromSleep = false, + .rxFifoTriggerLevel = 0ul, + .rxFifoIntEnableMask = 0ul, + .txFifoTriggerLevel = 0ul, + .txFifoIntEnableMask = 0ul, + .masterSlaveIntEnableMask = 0ul, + .enableSpiDoneInterrupt = false, + .enableSpiBusErrorInterrupt = false, +}; + +static void SetPeripheFracDiv24_5(uint64_t targetFreq, uint64_t sourceFreq, uint8_t divNum) +{ + uint64_t temp = ((uint64_t)sourceFreq << 5ull); + uint32_t divSetting = (uint32_t)(temp / targetFreq); + + Cy_SysClk_PeriphSetFracDivider(Cy_SysClk_GetClockGroup(PCLK_SCB4_CLOCK), + CY_SYSCLK_DIV_24_5_BIT, + divNum, + (((divSetting >> 5ul) & 0x00000FFFul) - 1ul), + (divSetting & 0x0000001Ful)); +} + +static void InitOutputPin(volatile stc_GPIO_PRT_t *port, uint32_t pin, uint32_t initialValue) +{ + gpioOutCfg.outVal = initialValue; + gpioOutCfg.hsiom = HSIOM_SEL_GPIO; + Cy_GPIO_Pin_Init(port, pin, &gpioOutCfg); +} + +static bool Motor_ModeIsValid(motor_mode_t mode) +{ + return ((uint32_t)mode < MOTOR_PROFILE_COUNT); +} + +static bool Motor_SequenceIsNewer(uint16_t candidate, uint16_t reference) +{ + return ((int16_t)((uint16_t)(candidate - reference)) > 0); +} + +static bool Motor_CommandIsCurrentUnsafe( + const volatile motor_runtime_t *state) +{ + if(false != safetyInhibitLatched) + { + return false; + } + if(false != state->abortSequenceValid) + { + return false; + } + if(false == state->acceptedCommandValid) + { + return (0ul == state->cancellationGeneration); + } + return (state->acceptedCancellationGeneration == + state->cancellationGeneration); +} + +static uint32_t Motor_DutyPercentToCompare(uint8_t dutyPercent) +{ + return (MOTOR_PWM_PERIOD_COUNTS * (uint32_t)dutyPercent) / 100ul; +} + +static void Motor_ApplyDutyPercent(uint32_t motorIndex, uint8_t dutyPercent) +{ + Cy_Tcpwm_Pwm_SetCompare0(motorProfiles[motorIndex].pwmTcpwm, + Motor_DutyPercentToCompare(dutyPercent)); +} + +static void Motor_ResetSpeedMeasurementUnsafe(volatile motor_runtime_t *state) +{ + state->speedActualPpsX100 = 0ul; + state->speedControlStartTicks = hallTimebaseTicks; + state->speedLastSampleTicks = hallTimebaseTicks; + state->speedBaselineRawEdges = state->rawRisingEdges; + state->speedHistoryIndex = 0u; + state->speedHistoryValidSamples = 0u; +} + +static bool Motor_CalculateSpeedPlan(uint32_t motorIndex, + uint32_t maxHallCount, + uint32_t durationMs, + uint32_t travelValueX100, + uint32_t *plannedHallPulses, + uint32_t *targetPpsX100, + uint8_t *initialDutyPercent) +{ + const motor_profile_t *profile = &motorProfiles[motorIndex]; + uint64_t pulseNumerator; + uint64_t speedNumerator; + uint64_t speedDenominator; + uint32_t calculatedHallPulses; + uint32_t calculatedTargetPpsX100; + uint32_t initialDuty; + uint32_t dutySteps; + + if((NULL == plannedHallPulses) || (NULL == targetPpsX100) || + (NULL == initialDutyPercent) || (0ul == durationMs) || + (0ul == travelValueX100) || + (travelValueX100 > profile->maxPhysicalValueX100) || + (0ul == maxHallCount) || (0ul == profile->speedStepPpsX100)) + { + return false; + } + + pulseNumerator = ((uint64_t)travelValueX100) * maxHallCount; + calculatedHallPulses = (uint32_t) + ((pulseNumerator + (profile->maxPhysicalValueX100 / 2ul)) / + profile->maxPhysicalValueX100); + + speedNumerator = pulseNumerator * 1000ull * MOTOR_SPEED_VALUE_SCALE; + speedDenominator = ((uint64_t)profile->maxPhysicalValueX100) * + durationMs; + calculatedTargetPpsX100 = (uint32_t) + ((speedNumerator + (speedDenominator / 2ull)) / speedDenominator); + + if((0ul == calculatedHallPulses) || + (0ul == calculatedTargetPpsX100) || + (calculatedTargetPpsX100 > + motorRuntime[motorIndex].maxSpeedPpsX100)) + { + return false; + } + + dutySteps = (calculatedTargetPpsX100 + + profile->speedStepPpsX100 - 1ul) / + profile->speedStepPpsX100; + initialDuty = dutySteps * MOTOR_SPEED_DUTY_STEP_PERCENT; + if(initialDuty < MOTOR_SPEED_CONTROL_MIN_DUTY_PERCENT) + { + initialDuty = MOTOR_SPEED_CONTROL_MIN_DUTY_PERCENT; + } + else if(initialDuty > MOTOR_SPEED_MAX_DUTY_PERCENT) + { + initialDuty = MOTOR_SPEED_MAX_DUTY_PERCENT; + } + else + { + /* The estimated duty is already inside the allowed range. */ + } + + *plannedHallPulses = calculatedHallPulses; + *targetPpsX100 = calculatedTargetPpsX100; + *initialDutyPercent = (uint8_t)initialDuty; + return true; +} + +static uint8_t Hall_ReadLevel(uint32_t motorIndex) +{ + const motor_profile_t *motor = &motorProfiles[motorIndex]; + + return (Cy_GPIO_Read(motor->hallPort, motor->hallPin) != 0ul) ? 1u : 0u; +} + +static void Motor_ResetActivityWindowUnsafe(volatile motor_runtime_t *state) +{ + state->activityStartTicks = hallTimebaseTicks; + state->activityRisingBaseline = state->rawRisingEdges; + state->activityTotalBaseline = state->rawTotalEdges; + state->activityMonitorStartTicks = hallTimebaseTicks; + state->activityWindowBaseline = state->rawTotalEdges; + state->recentWindowEdges = 0ul; + state->activityHistoryIndex = 0u; + state->activityValidSamples = 0u; + state->activityWindowReady = false; + state->activityMonitorStarted = false; + state->lowHallStartTicks = hallTimebaseTicks; + state->lowHallEdgeBaseline = state->rawTotalEdges; + state->stallCurrentStartTicks = hallTimebaseTicks; + state->lowHallTracking = false; + state->stallCurrentTracking = false; +} + +static uint16_t Motor_AbsRawDelta(uint16_t sample, uint16_t baseline) +{ + return (sample >= baseline) ? + (uint16_t)(sample - baseline) : + (uint16_t)(baseline - sample); +} + +static bool Motor_CurrentSampleFreshFromIsr(uint32_t motorIndex) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + + return state->currentSenseValid && state->currentSenseBaselineValid && + ((uint32_t)(hallTimebaseTicks - + state->currentSenseLastSampleTicks) <= + MOTOR_MS_TO_TICKS(SEAT_MOVE_MOTOR_CURRENT_MAX_AGE_MS)); +} + +static bool Motor_PrimeCurrentSensing(void) +{ + uint32_t index; + + if(!BspSeatCurrentAdc_Init()) + { + return false; + } + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + uint16_t raw; + + if(!BspSeatCurrentAdc_Sample( + (bsp_seat_current_adc_signal_t) + ((uint32_t)BSP_SEAT_CURRENT_ADC_MOTOR0 + index), + &raw)) + { + return false; + } + motorRuntime[index].currentSenseRaw = raw; + motorRuntime[index].currentSenseBaselineRaw = raw; + motorRuntime[index].currentSenseDeltaRaw = 0u; + motorRuntime[index].currentSenseLastSampleTicks = hallTimebaseTicks; + motorRuntime[index].currentSenseErrorCount = 0u; + motorRuntime[index].currentSenseValid = true; + motorRuntime[index].currentSenseBaselineValid = true; + } + currentSenseLastServiceTicks = hallTimebaseTicks; + return true; +} + +static void Motor_ServiceCurrentSensing(void) +{ + uint32_t index; + + if((uint32_t)(hallTimebaseTicks - currentSenseLastServiceTicks) < + MOTOR_MS_TO_TICKS(SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS)) + { + return; + } + currentSenseLastServiceTicks = hallTimebaseTicks; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + uint16_t raw; + uint32_t savedIntrStatus; + bool stopped; + + if(!BspSeatCurrentAdc_Sample( + (bsp_seat_current_adc_signal_t) + ((uint32_t)BSP_SEAT_CURRENT_ADC_MOTOR0 + index), + &raw)) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(motorRuntime[index].currentSenseErrorCount < UINT8_MAX) + { + motorRuntime[index].currentSenseErrorCount++; + } + if(motorRuntime[index].currentSenseErrorCount >= + SEAT_MOVE_MOTOR_CURRENT_MAX_ERRORS) + { + motorRuntime[index].currentSenseValid = false; + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + continue; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + stopped = (motorRuntime[index].direction == MOTOR_DIRECTION_STOPPED) && + !motorRuntime[index].startPending; + motorRuntime[index].currentSenseRaw = raw; + motorRuntime[index].currentSenseLastSampleTicks = hallTimebaseTicks; + motorRuntime[index].currentSenseErrorCount = 0u; + motorRuntime[index].currentSenseValid = true; + + if(!motorRuntime[index].currentSenseBaselineValid) + { + motorRuntime[index].currentSenseBaselineRaw = raw; + motorRuntime[index].currentSenseBaselineValid = true; + } + else if(stopped) + { + uint32_t filtered = + (((uint32_t)motorRuntime[index].currentSenseBaselineRaw * + ((1ul << SEAT_MOVE_MOTOR_CURRENT_BASELINE_FILTER_SHIFT) - + 1ul)) + + (uint32_t)raw) >> + SEAT_MOVE_MOTOR_CURRENT_BASELINE_FILTER_SHIFT; + motorRuntime[index].currentSenseBaselineRaw = (uint16_t)filtered; + } + motorRuntime[index].currentSenseDeltaRaw = Motor_AbsRawDelta( + raw, motorRuntime[index].currentSenseBaselineRaw); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + } +} + +static void Motor_RequestEventFromIsr(uint32_t motorIndex, motor_event_t event) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + + if((state->pendingEvent == MOTOR_EVENT_NONE) && + ((state->direction != MOTOR_DIRECTION_STOPPED) || + ((event == MOTOR_EVENT_TIMEOUT) && (false != state->startPending)))) + { + if(state->direction != MOTOR_DIRECTION_STOPPED) + { + state->eventDirection = state->direction; + } + else if(false != state->coastTracking) + { + /* A timeout during a reversal pause must keep counting any + * remaining inertia in the old physical direction, not in the + * direction that had only been scheduled. */ + state->eventDirection = state->coastDirection; + } + else + { + state->eventDirection = MOTOR_DIRECTION_STOPPED; + } + state->eventWasTargetMove = state->targetActive; + state->pendingEvent = event; + state->targetActive = false; + state->startPending = false; + + /* Hardware PWM is stopped immediately; SPI bridge cleanup stays in main. */ + if(state->direction != MOTOR_DIRECTION_STOPPED) + { + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[motorIndex].pwmTcpwm); + } + } +} + +static void Motor_CheckOperationTimeoutsFromIsr(void) +{ + uint32_t index; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + uint32_t timeoutTicks = + ((false != motorRuntime[index].calibrating) && + (0ul != motorRuntime[index].calibrationTimeoutTicks)) ? + motorRuntime[index].calibrationTimeoutTicks : + MOTOR_MS_TO_TICKS(MOTOR_OPERATION_TIMEOUT_MS); + if((false != motorRuntime[index].operationActive) && + ((uint32_t)(hallTimebaseTicks - + motorRuntime[index].motionStartTicks) >= + timeoutTicks)) + { + Motor_RequestEventFromIsr(index, MOTOR_EVENT_TIMEOUT); + } + } +} + +static void Hall_AllInit(void) +{ + uint32_t index; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + Cy_GPIO_Pin_Init(motorProfiles[index].hallPort, + motorProfiles[index].hallPin, + &gpioInCfg); + + motorRuntime[index].rawRisingEdges = 0ul; + motorRuntime[index].rawTotalEdges = 0ul; + motorRuntime[index].positionHallCount = 0ul; + motorRuntime[index].maxHallCount = motorProfiles[index].defaultMaxHallCount; + motorRuntime[index].targetHallCount = 0ul; + motorRuntime[index].motionStartTicks = 0ul; + motorRuntime[index].calibrationTimeoutTicks = 0ul; + motorRuntime[index].scheduledStartTicks = 0ul; + motorRuntime[index].coastStartTicks = 0ul; + motorRuntime[index].currentSenseLastSampleTicks = 0ul; + motorRuntime[index].lowHallStartTicks = 0ul; + motorRuntime[index].lowHallEdgeBaseline = 0ul; + motorRuntime[index].stallCurrentStartTicks = 0ul; + motorRuntime[index].currentSenseRaw = 0u; + motorRuntime[index].currentSenseBaselineRaw = 0u; + motorRuntime[index].currentSenseDeltaRaw = 0u; + motorRuntime[index].direction = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].eventDirection = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].scheduledDirection = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].coastDirection = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].pendingEvent = MOTOR_EVENT_NONE; + motorRuntime[index].lastEvent = MOTOR_EVENT_NONE; + motorRuntime[index].moveResultEvent = MOTOR_EVENT_NONE; + motorRuntime[index].lastLevel = Hall_ReadLevel(index); + motorRuntime[index].automaticReverseCount = 0u; + motorRuntime[index].currentSenseErrorCount = 0u; + motorRuntime[index].hallInitialized = true; + motorRuntime[index].positionValid = false; + motorRuntime[index].targetActive = false; + motorRuntime[index].calibrating = false; + motorRuntime[index].currentSenseValid = false; + motorRuntime[index].currentSenseBaselineValid = false; + motorRuntime[index].lowHallTracking = false; + motorRuntime[index].stallCurrentTracking = false; + motorRuntime[index].reverseAtEndpoint = false; + motorRuntime[index].reverseAtStall = false; + motorRuntime[index].startPending = false; + motorRuntime[index].coastTracking = false; + motorRuntime[index].operationActive = false; + motorRuntime[index].eventWasTargetMove = false; + motorRuntime[index].moveResultReady = false; + motorRuntime[index].moveCommandSequence = 0ul; + motorRuntime[index].moveResultSequence = 0ul; + motorRuntime[index].speedDurationMs = 0ul; + motorRuntime[index].speedTravelValueX100 = 0ul; + motorRuntime[index].speedPlannedHallPulses = 0ul; + motorRuntime[index].speedTargetPpsX100 = 0ul; + motorRuntime[index].speedActualPpsX100 = 0ul; + motorRuntime[index].maxSpeedPpsX100 = + motorProfiles[index].maxSpeedPpsX100; + motorRuntime[index].speedInitialDutyPercent = + (uint8_t)MOTOR_PWM_DUTY_PERCENT; + motorRuntime[index].speedCurrentDutyPercent = + (uint8_t)MOTOR_PWM_DUTY_PERCENT; + motorRuntime[index].fixedDutyPercent = + (uint8_t)MOTOR_PWM_DUTY_PERCENT; + motorRuntime[index].latestAbortSequence = 0u; + motorRuntime[index].acceptedCommandSequence = 0u; + motorRuntime[index].cancellationGeneration = 0ul; + motorRuntime[index].acceptedCancellationGeneration = 0ul; + motorRuntime[index].abortSequenceValid = false; + motorRuntime[index].acceptedCommandValid = false; + motorRuntime[index].speedControlEnabled = false; + Motor_ResetSpeedMeasurementUnsafe(&motorRuntime[index]); + Motor_ResetActivityWindowUnsafe(&motorRuntime[index]); + } +} + +static void Hall_SampleMotorFromIsr(uint32_t motorIndex) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + motor_direction_t countingDirection; + uint8_t level = Hall_ReadLevel(motorIndex); + + if(false == state->hallInitialized) + { + state->lastLevel = level; + state->hallInitialized = true; + return; + } + + if(level != state->lastLevel) + { + state->rawTotalEdges++; + + if((state->direction == MOTOR_DIRECTION_STOPPED) && + (false != state->coastTracking)) + { + /* Any sampled Hall transition proves the mechanism is still + * moving. Extend direction attribution and delayed restart until + * a complete quiet interval has elapsed. */ + state->coastStartTicks = hallTimebaseTicks; + } + + if(level != 0u) + { + state->rawRisingEdges++; + + countingDirection = state->direction; + if((countingDirection == MOTOR_DIRECTION_STOPPED) && + (false != state->coastTracking)) + { + countingDirection = state->coastDirection; + } + + /* Keep the global position aligned with every sampled motor + * pulse, including the short interval after ISR kill and before + * main-loop event service. */ + if(countingDirection == MOTOR_DIRECTION_TOWARD_FAR) + { + if((false == state->positionValid) && + (state->positionHallCount < UINT32_MAX)) + { + /* An uncalibrated/invalid position has no trustworthy + * range ceiling. Keep every inferred far-direction pulse + * so calibration and failure recovery do not lose motion. */ + state->positionHallCount++; + } + else if((false != state->positionValid) && + (state->positionHallCount < state->maxHallCount)) + { + state->positionHallCount++; + } + } + else if(countingDirection == MOTOR_DIRECTION_TOWARD_NEAR) + { + if(state->positionHallCount > 0ul) + { + state->positionHallCount--; + } + } + else + { + /* Position is not changed while the motor is stopped. */ + } + + if((state->pendingEvent == MOTOR_EVENT_NONE) && + (false != state->targetActive) && + (state->direction != MOTOR_DIRECTION_STOPPED)) + { + if(((state->direction == MOTOR_DIRECTION_TOWARD_FAR) && + (state->positionHallCount >= state->targetHallCount)) || + ((state->direction == MOTOR_DIRECTION_TOWARD_NEAR) && + (state->positionHallCount <= state->targetHallCount))) + { + Motor_RequestEventFromIsr(motorIndex, + MOTOR_EVENT_TARGET_REACHED); + } + } + } + + state->lastLevel = level; + } + + /* A fixed delay alone can drop late inertia pulses. Close the inferred + * old-direction window only after no Hall edge has been sampled for the + * full quiet interval; an edge on the boundary resets this timer. */ + if((false != state->coastTracking) && + ((uint32_t)(hallTimebaseTicks - state->coastStartTicks) >= + MOTOR_MS_TO_TICKS(MOTOR_COAST_HALL_QUIET_MS))) + { + state->coastTracking = false; + state->coastDirection = MOTOR_DIRECTION_STOPPED; + } +} + +static void Motor_UpdateActivityWindowFromIsr(uint32_t motorIndex) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + uint32_t oldestCount; + uint16_t nextIndex; + + if(state->direction == MOTOR_DIRECTION_STOPPED) + { + return; + } + + /* Keep sampling Hall position every 2 ms from the physical PWM start, but + * do not use startup transients in the stall/endpoint window. Each axis + * has its own mechanical startup grace; after that grace establish a fresh + * raw-edge baseline and require one complete activity window. Calibration + * still maps missing Hall to the requested endpoint, while normal moves + * map it to stall. */ + if(false == state->activityMonitorStarted) + { + if((uint32_t)(hallTimebaseTicks - state->activityStartTicks) < + MOTOR_MS_TO_TICKS(motorProfiles[motorIndex].startupGraceMs)) + { + return; + } + + state->activityMonitorStarted = true; + state->activityMonitorStartTicks = hallTimebaseTicks; + state->activityWindowBaseline = state->rawTotalEdges; + state->recentWindowEdges = 0ul; + state->activityHistoryIndex = 0u; + state->activityValidSamples = 0u; + state->activityWindowReady = false; + return; + } + + if(state->activityValidSamples < MOTOR_SAFETY_WINDOW_SAMPLES) + { + state->activityHistoryEdges[state->activityHistoryIndex] = + state->rawTotalEdges; + state->activityValidSamples++; + state->recentWindowEdges = + state->rawTotalEdges - state->activityWindowBaseline; + } + else + { + oldestCount = + state->activityHistoryEdges[state->activityHistoryIndex]; + state->activityHistoryEdges[state->activityHistoryIndex] = + state->rawTotalEdges; + state->recentWindowEdges = state->rawTotalEdges - oldestCount; + } + + nextIndex = (uint16_t)(state->activityHistoryIndex + 1u); + if(nextIndex >= MOTOR_SAFETY_WINDOW_SAMPLES) + { + nextIndex = 0u; + } + state->activityHistoryIndex = nextIndex; + + if((state->activityValidSamples >= MOTOR_SAFETY_WINDOW_SAMPLES) && + ((uint32_t)(hallTimebaseTicks - state->activityMonitorStartTicks) >= + MOTOR_MS_TO_TICKS(MOTOR_SAFETY_WINDOW_MS))) + { + state->activityWindowReady = true; + } +} + +static void Motor_SafetyTaskFromIsr(void) +{ + uint32_t index; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + volatile motor_runtime_t *state = &motorRuntime[index]; + + Motor_UpdateActivityWindowFromIsr(index); + + if((state->direction == MOTOR_DIRECTION_STOPPED) || + (state->pendingEvent != MOTOR_EVENT_NONE) || + (false == state->activityWindowReady)) + { + continue; + } + + /* Long synchronized trajectories use pulse-density control whenever + * their requested speed is below the loaded mechanism's proven 50% + * breakaway duty. A zero-duty pause is intentional de-energization, + * not a no-motion fault. The absolute task/phase deadline still + * bounds the pause, and the activity window is reset when drive + * resumes. */ + if((false != state->speedControlEnabled) && + (state->speedCurrentDutyPercent == + MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT)) + { + state->lowHallTracking = false; + state->stallCurrentTracking = false; + continue; + } + + if(false != state->calibrating) + { + state->lowHallTracking = false; + state->stallCurrentTracking = false; + /* An endpoint requires a completely quiet Hall input. Counting + * both edges avoids classifying a slow motor as stopped merely + * because a 500 ms window contains a falling edge but no rising + * edge. Rising edges remain the calibrated position unit. */ + if(state->recentWindowEdges <= MOTOR_ENDPOINT_EDGE_THRESHOLD) + { + Motor_RequestEventFromIsr( + index, + (state->direction == MOTOR_DIRECTION_TOWARD_NEAR) ? + MOTOR_EVENT_NEAR_ENDPOINT : MOTOR_EVENT_FAR_ENDPOINT); + } + continue; + } + + /* + * A normal move is classified as STALL only when both independent + * observations overlap: low Hall activity and sustained high current. + * Low Hall with low/stale current is a separate no-motion/Hall-path + * failure and is stopped with TIMEOUT instead of being mislabeled as + * a mechanical stall. Endpoint seeking above deliberately remains + * Hall-based because no Hall at the requested end is its success + * condition, even though endpoint current can be high. + */ + if(state->recentWindowEdges <= MOTOR_STALL_EDGE_THRESHOLD) + { + bool currentFresh = Motor_CurrentSampleFreshFromIsr(index); + bool currentHigh = currentFresh && + (state->currentSenseDeltaRaw >= + motorProfiles[index].stallCurrentDeltaRaw); + + if(false == state->lowHallTracking) + { + state->lowHallTracking = true; + state->lowHallStartTicks = hallTimebaseTicks; + state->lowHallEdgeBaseline = state->rawTotalEdges; + state->stallCurrentTracking = false; + } + else if(state->rawTotalEdges != state->lowHallEdgeBaseline) + { + /* A slow but healthy mechanism may produce no more than two + * edges in every rolling 500 ms window. Any real Hall edge + * is progress and restarts the no-motion clock; otherwise a + * full-stroke M0 move is incorrectly stopped after five + * seconds even though its Hall count keeps increasing. */ + state->lowHallEdgeBaseline = state->rawTotalEdges; + state->lowHallStartTicks = hallTimebaseTicks; + } + + if(false != currentHigh) + { + if(false == state->stallCurrentTracking) + { + state->stallCurrentTracking = true; + state->stallCurrentStartTicks = hallTimebaseTicks; + } + else if((uint32_t)(hallTimebaseTicks - + state->stallCurrentStartTicks) >= + MOTOR_MS_TO_TICKS( + SEAT_MOVE_MOTOR_STALL_CURRENT_CONFIRM_MS)) + { + Motor_RequestEventFromIsr(index, MOTOR_EVENT_STALL); + } + else + { + /* High current confirmation is still accumulating. */ + } + } + else + { + state->stallCurrentTracking = false; + } + + if((state->pendingEvent == MOTOR_EVENT_NONE) && + ((uint32_t)(hallTimebaseTicks - state->lowHallStartTicks) >= + MOTOR_MS_TO_TICKS( + SEAT_MOVE_MOTOR_NO_MOTION_TIMEOUT_MS))) + { + Motor_RequestEventFromIsr(index, MOTOR_EVENT_TIMEOUT); + } + } + else + { + state->lowHallTracking = false; + state->stallCurrentTracking = false; + } + } +} + +static void Hall_TimebaseIrqHandler(void) +{ + uint32_t index; + + if(Cy_Tcpwm_Counter_GetTC_IntrMasked(HALL_TIMEBASE_TCPWM) != 0ul) + { + Cy_Tcpwm_Counter_ClearTC_Intr(HALL_TIMEBASE_TCPWM); + hallTimebaseTicks++; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + Hall_SampleMotorFromIsr(index); + } + + Motor_CheckOperationTimeoutsFromIsr(); + + safetyTickDivider++; + if(safetyTickDivider >= MOTOR_SAFETY_CHECK_TICKS) + { + safetyTickDivider = 0ul; + Motor_SafetyTaskFromIsr(); + } + } +} + +static uint32_t MotorControl_GetTicks(void) +{ + return hallTimebaseTicks; +} + +static void MotorControlTimers_Init(void) +{ + uint32_t index; + uint32_t divider = SOURCE_CLOCK_HZ / MOTOR_TIMER_INPUT_CLOCK_HZ; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + Cy_SysClk_PeriphAssignDivider(motorProfiles[index].pwmClock, + CY_SYSCLK_DIV_16_BIT, + MOTOR_TIMER_DIVIDER_NO); + } + Cy_SysClk_PeriphAssignDivider(HALL_TIMEBASE_CLOCK, + CY_SYSCLK_DIV_16_BIT, + MOTOR_TIMER_DIVIDER_NO); + Cy_SysClk_PeriphSetDivider(Cy_SysClk_GetClockGroup(motorProfiles[0].pwmClock), + CY_SYSCLK_DIV_16_BIT, + MOTOR_TIMER_DIVIDER_NO, + divider - 1ul); + Cy_SysClk_PeriphEnableDivider(Cy_SysClk_GetClockGroup(motorProfiles[0].pwmClock), + CY_SYSCLK_DIV_16_BIT, + MOTOR_TIMER_DIVIDER_NO); + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + (void)Cy_Tcpwm_Pwm_Init(motorProfiles[index].pwmTcpwm, &motorPwmCfg); + Cy_Tcpwm_Pwm_Enable(motorProfiles[index].pwmTcpwm); + Cy_Tcpwm_Pwm_SetCounter(motorProfiles[index].pwmTcpwm, 0ul); + } + pwmTimersInitialized = true; + + hallTimebaseTicks = 0ul; + safetyTickDivider = 0ul; + (void)Cy_Tcpwm_Counter_Init(HALL_TIMEBASE_TCPWM, &hallTimebaseCfg); + Cy_Tcpwm_Counter_ClearTC_Intr(HALL_TIMEBASE_TCPWM); + Cy_Tcpwm_Counter_SetTC_IntrMask(HALL_TIMEBASE_TCPWM); + + Cy_SysInt_InitIRQ(&hallTimebaseIrqCfg); + Cy_SysInt_SetSystemIrqVector(hallTimebaseIrqCfg.sysIntSrc, + Hall_TimebaseIrqHandler); + NVIC_SetPriority(hallTimebaseIrqCfg.intIdx, 3ul); + NVIC_ClearPendingIRQ(hallTimebaseIrqCfg.intIdx); + NVIC_EnableIRQ(hallTimebaseIrqCfg.intIdx); + + Cy_Tcpwm_Counter_Enable(HALL_TIMEBASE_TCPWM); + Cy_Tcpwm_TriggerStart(HALL_TIMEBASE_TCPWM); + motorControlReady = true; +} + +static void BoardPins_Init(void) +{ + InitOutputPin(DRV_DVDD_EN_PORT, DRV_DVDD_EN_PIN, 0ul); + InitOutputPin(DRV_NCS_PORT, DRV_NCS_PIN, 1ul); + InitOutputPin(DRV_NSLEEP_PORT, DRV_NSLEEP_PIN, 0ul); + /* Keep all bridge outputs disabled until initialization is verified. */ + InitOutputPin(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN, 1ul); + InitOutputPin(DRV_IN1_PORT, DRV_IN1_PIN, 0ul); + InitOutputPin(DRV_IN2_PORT, DRV_IN2_PIN, 0ul); + InitOutputPin(DRV_IN3_PORT, DRV_IN3_PIN, 0ul); + InitOutputPin(DRV_IN4_PORT, DRV_IN4_PIN, 0ul); + Hall_AllInit(); + + spiPinCfg.driveMode = CY_GPIO_DM_HIGHZ; + spiPinCfg.hsiom = DRV_SPI_MISO_MUX; + Cy_GPIO_Pin_Init(DRV_SPI_MISO_PORT, DRV_SPI_MISO_PIN, &spiPinCfg); + + spiPinCfg.driveMode = CY_GPIO_DM_STRONG_IN_OFF; + spiPinCfg.hsiom = DRV_SPI_MOSI_MUX; + Cy_GPIO_Pin_Init(DRV_SPI_MOSI_PORT, DRV_SPI_MOSI_PIN, &spiPinCfg); + + spiPinCfg.driveMode = CY_GPIO_DM_STRONG_IN_OFF; + spiPinCfg.hsiom = DRV_SPI_CLK_MUX; + Cy_GPIO_Pin_Init(DRV_SPI_CLK_PORT, DRV_SPI_CLK_PIN, &spiPinCfg); +} + +void Motor_ForceSafeOff(void) +{ + cy_stc_gpio_pin_config_t safeOutput = + { + .outVal = 0ul, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = HSIOM_SEL_GPIO, + .intEdge = 0ul, + .intMask = 0ul, + .vtrip = 0ul, + .slewRate = 0ul, + .driveSel = CY_GPIO_DRIVE_FULL, + }; + + if(false != pwmTimersInitialized) + { + Cy_Tcpwm_TriggerStopOrKill(DRV_IN1_PWM_TCPWM); + Cy_Tcpwm_TriggerStopOrKill(DRV_IN2_PWM_TCPWM); + Cy_Tcpwm_TriggerStopOrKill(DRV_IN3_PWM_TCPWM); + Cy_Tcpwm_TriggerStopOrKill(DRV_IN4_PWM_TCPWM); + } + + (void)Cy_GPIO_Pin_Init(DRV_IN1_PORT, DRV_IN1_PIN, &safeOutput); + (void)Cy_GPIO_Pin_Init(DRV_IN2_PORT, DRV_IN2_PIN, &safeOutput); + (void)Cy_GPIO_Pin_Init(DRV_IN3_PORT, DRV_IN3_PIN, &safeOutput); + (void)Cy_GPIO_Pin_Init(DRV_IN4_PORT, DRV_IN4_PIN, &safeOutput); + Cy_GPIO_Clr(DRV_IN1_PORT, DRV_IN1_PIN); + Cy_GPIO_Clr(DRV_IN2_PORT, DRV_IN2_PIN); + Cy_GPIO_Clr(DRV_IN3_PORT, DRV_IN3_PIN); + Cy_GPIO_Clr(DRV_IN4_PORT, DRV_IN4_PIN); + + safeOutput.outVal = 1ul; + (void)Cy_GPIO_Pin_Init(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN, &safeOutput); + Cy_GPIO_Set(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN); +} + +static void Scb4Spi_Init(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_SCB4_CLOCK, CY_SYSCLK_DIV_24_5_BIT, SCB4_DIVIDER_NO); + SetPeripheFracDiv24_5(SPI_INPUT_CLOCK_HZ, SOURCE_CLOCK_HZ, SCB4_DIVIDER_NO); + Cy_SysClk_PeriphEnableDivider(Cy_SysClk_GetClockGroup(PCLK_SCB4_CLOCK), + CY_SYSCLK_DIV_24_5_BIT, + SCB4_DIVIDER_NO); + + Cy_SCB_SPI_DeInit(SCB4); + (void)Cy_SCB_SPI_Init(SCB4, &spiCfg, NULL); + Cy_SCB_SPI_Enable(SCB4); +} + +static bool Drv8718_SpiTransfer16(uint16_t txWord, uint16_t *rxWord) +{ + uint32_t timeout; + uint32_t savedIntrStatus; + bool success = false; + + if(NULL == rxWord) + { + return false; + } + *rxWord = 0u; + + /* SCB4, nSCS and the shared DRV8718 register file have one owner. The + * current application calls this only from the main loop; the guard also + * prevents a future callback or nested service from interleaving frames. */ + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false != driverSpiActive) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return false; + } + driverSpiActive = true; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + Cy_SCB_SPI_ClearRxFifo(SCB4); + Cy_SCB_SPI_ClearTxFifo(SCB4); + + Cy_GPIO_Clr(DRV_NCS_PORT, DRV_NCS_PIN); + Cy_SysTick_DelayInUs(1ul); + + if(Cy_SCB_SPI_Write(SCB4, txWord) != 1ul) + { + goto transfer_done; + } + + timeout = DRV8718_SPI_TIMEOUT_LOOPS; + while((false == Cy_SCB_SPI_IsTxComplete(SCB4)) && (timeout > 0ul)) + { + timeout--; + } + + if(false == Cy_SCB_SPI_IsTxComplete(SCB4)) + { + goto transfer_done; + } + + timeout = DRV8718_SPI_TIMEOUT_LOOPS; + while((0ul == Cy_SCB_SPI_GetNumInRxFifo(SCB4)) && (timeout > 0ul)) + { + timeout--; + } + + if((Cy_SCB_SPI_GetNumInRxFifo(SCB4) > 0ul) && + (Cy_SCB_SPI_ReadArray(SCB4, rxWord, 1ul) == 1ul)) + { + success = ((*rxWord & DRV8718_SDO_HEADER_MASK) == + DRV8718_SDO_HEADER_VALUE); + if((false != success) && + (false != driverStatusMonitoringEnabled) && + ((*rxWord & DRV8718_SDO_ALERT_MASK) != 0u)) + { + success = false; + } + } + +transfer_done: + Cy_SysTick_DelayInUs(1ul); + Cy_GPIO_Set(DRV_NCS_PORT, DRV_NCS_PIN); + Cy_SysTick_DelayInUs(1ul); + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + driverSpiActive = false; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + return success; +} + +static bool Drv8718_WriteRegRaw(uint8_t addr, uint8_t data) +{ + uint16_t frame = DRV8718_WRITE_FRAME(addr, data); + uint16_t rxWord; + + return Drv8718_SpiTransfer16(frame, &rxWord); +} + +static bool Drv8718_ReadRegRaw(uint8_t addr, uint8_t *data) +{ + uint16_t frame = DRV8718_READ_FRAME(addr); + uint16_t rxWord; + + if((NULL == data) || + (false == Drv8718_SpiTransfer16(frame, &rxWord))) + { + return false; + } + + *data = (uint8_t)(rxWord & 0xFFu); + return true; +} + +static bool Drv8718_WriteRegVerified(uint8_t addr, uint8_t data) +{ + uint8_t readback; + + if(false == Drv8718_WriteRegRaw(addr, data)) + { + return false; + } + + return (Drv8718_ReadRegRaw(addr, &readback) && (readback == data)); +} + +static void Motor_EnablePwmInput(const motor_profile_t *motor) +{ + pwmPinCfg.outVal = 0ul; + pwmPinCfg.hsiom = motor->pwmHsiom; + Cy_GPIO_Pin_Init(motor->pwmPort, motor->pwmPin, &pwmPinCfg); +} + +static bool Drv8718_Init(void) +{ + bool success = true; + uint8_t driverStatus = 0u; + + driverStatusMonitoringEnabled = false; + + Cy_GPIO_Set(DRV_DVDD_EN_PORT, DRV_DVDD_EN_PIN); + Cy_GPIO_Set(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN); + Cy_SysTick_DelayInUs(10000ul); + + Cy_GPIO_Set(DRV_NSLEEP_PORT, DRV_NSLEEP_PIN); + Cy_SysTick_DelayInUs(10000ul); + + success = Drv8718_WriteRegVerified(DRV8718_REG_IC_CTRL2, + DRV8718_IC_CTRL2_DRVOFF_MODE); + if(false != success) + { + success = Drv8718_WriteRegVerified(DRV8718_REG_BRG_CTRL1, + MOTOR_COAST_BRG_CTRL1); + } + if(false != success) + { + success = Drv8718_WriteRegVerified(DRV8718_REG_BRG_CTRL2, + MOTOR_COAST_BRG_CTRL2); + } + if(false != success) + { + success = Drv8718_WriteRegVerified(DRV8718_REG_PWM_CTRL1, + DRV8718_PWM_CTRL1_ALL_MOTORS); + } + if(false != success) + { + success = Drv8718_WriteRegVerified(DRV8718_REG_PWM_CTRL2, + DRV8718_PWM_CTRL2_ALL_MOTORS); + } + if(false != success) + { + success = Drv8718_WriteRegVerified(DRV8718_REG_PWM_CTRL3, + MOTOR_PWM_CTRL3_HIGHSIDE); + } + if(false != success) + { + success = Drv8718_WriteRegVerified(DRV8718_REG_PWM_CTRL4, + MOTOR_PWM_CTRL4_ACTIVE_HI); + } + if(false != success) + { + success = Drv8718_WriteRegRaw(DRV8718_REG_IC_CTRL1, + DRV8718_IC_CTRL1_CLEAR_FAULTS); + Cy_SysTick_DelayInUs(1000ul); + } + if(false != success) + { + success = Drv8718_WriteRegVerified( + DRV8718_REG_IC_CTRL1, + DRV8718_IC_CTRL1_ENABLE_UNLOCKED); + } + if(false != success) + { + success = Drv8718_ReadRegRaw(DRV8718_REG_IC_STAT1, &driverStatus) && + ((driverStatus & DRV8718_IC_STAT1_SPI_OK) != 0u) && + ((driverStatus & DRV8718_IC_STAT1_ALERT_MASK) == 0u); + } + + if(false != success) + { + bridgeCtrl1Shadow = MOTOR_COAST_BRG_CTRL1; + bridgeCtrl2Shadow = MOTOR_COAST_BRG_CTRL2; + driverFaultLatched = false; + driverStatusMonitoringEnabled = true; + driverStatusLastPollTicks = hallTimebaseTicks; + Cy_GPIO_Clr(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN); + } + else + { + driverFaultLatched = true; + driverStatusMonitoringEnabled = false; + Cy_GPIO_Set(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN); + } + + return success; +} + +static void Motor_SetPwmInputLow(const motor_profile_t *motor) +{ + pwmPinCfg.outVal = 0ul; + pwmPinCfg.hsiom = HSIOM_SEL_GPIO; + Cy_GPIO_Pin_Init(motor->pwmPort, motor->pwmPin, &pwmPinCfg); + Cy_GPIO_Clr(motor->pwmPort, motor->pwmPin); +} + +static void Motor_EnterDriverFault(void) +{ + uint32_t index; + uint32_t savedIntrStatus; + + driverFaultLatched = true; + driverStatusMonitoringEnabled = false; + Cy_GPIO_Set(DRV_DRVOFF_PORT, DRV_DRVOFF_PIN); + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + if(false != pwmTimersInitialized) + { + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[index].pwmTcpwm); + } + Motor_SetPwmInputLow(&motorProfiles[index]); + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + volatile motor_runtime_t *state = &motorRuntime[index]; + bool hadTarget = state->targetActive || state->eventWasTargetMove || + state->moveResultReady; + + state->direction = MOTOR_DIRECTION_STOPPED; + state->eventDirection = MOTOR_DIRECTION_STOPPED; + state->scheduledDirection = MOTOR_DIRECTION_STOPPED; + state->pendingEvent = MOTOR_EVENT_NONE; + state->lastEvent = MOTOR_EVENT_DRIVER_FAULT; + state->targetActive = false; + state->calibrating = false; + state->startPending = false; + state->coastTracking = false; + state->operationActive = false; + state->eventWasTargetMove = false; + /* The status is shared by all bridges. Once it faults, software + * cannot prove which axis moved before DRVOFF or assign later inertia + * pulses to a reliable direction, so no absolute count remains clean. */ + state->positionValid = false; + if(false != hadTarget) + { + state->moveResultEvent = MOTOR_EVENT_DRIVER_FAULT; + state->moveResultSequence = state->moveCommandSequence; + state->moveResultReady = true; + } + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); +} + +static void Motor_PollDriverStatus(void) +{ + uint8_t driverStatus; + + if((false == driverStatusMonitoringEnabled) || + (false != driverFaultLatched) || + ((uint32_t)(hallTimebaseTicks - driverStatusLastPollTicks) < + MOTOR_MS_TO_TICKS(DRV8718_STATUS_POLL_INTERVAL_MS))) + { + return; + } + + driverStatusLastPollTicks = hallTimebaseTicks; + if((false == Drv8718_ReadRegRaw(DRV8718_REG_IC_STAT1, &driverStatus)) || + ((driverStatus & DRV8718_IC_STAT1_SPI_OK) == 0u) || + ((driverStatus & DRV8718_IC_STAT1_ALERT_MASK) != 0u)) + { + Motor_EnterDriverFault(); + } +} + +static bool Motor_WriteBridgeBits(uint32_t motorIndex, uint8_t bridgeValue) +{ + const motor_profile_t *motor = &motorProfiles[motorIndex]; + uint8_t oldValue; + uint8_t newValue; + bool success; + + if(false != driverFaultLatched) + { + return false; + } + + if(motor->bridgeRegister == DRV8718_REG_BRG_CTRL1) + { + oldValue = bridgeCtrl1Shadow; + newValue = (uint8_t)((oldValue & (uint8_t)(~motor->bridgeMask)) | + (bridgeValue & motor->bridgeMask)); + success = Drv8718_WriteRegVerified(DRV8718_REG_BRG_CTRL1, newValue); + if(false != success) + { + bridgeCtrl1Shadow = newValue; + } + } + else + { + oldValue = bridgeCtrl2Shadow; + newValue = (uint8_t)((oldValue & (uint8_t)(~motor->bridgeMask)) | + (bridgeValue & motor->bridgeMask)); + success = Drv8718_WriteRegVerified(DRV8718_REG_BRG_CTRL2, newValue); + if(false != success) + { + bridgeCtrl2Shadow = newValue; + } + } + + if(false == success) + { + Motor_EnterDriverFault(); + } + return success; +} + +static bool Motor_StopHardware(uint32_t motorIndex) +{ + const motor_profile_t *motor = &motorProfiles[motorIndex]; + + Cy_Tcpwm_TriggerStopOrKill(motor->pwmTcpwm); + Motor_SetPwmInputLow(motor); + return Motor_WriteBridgeBits(motorIndex, 0u); +} + +static bool Motor_PrepareHardwareStart(uint32_t motorIndex, + motor_direction_t direction) +{ + const motor_profile_t *motor = &motorProfiles[motorIndex]; + uint8_t bridgeValue = + (direction == MOTOR_DIRECTION_TOWARD_FAR) ? + motor->towardFarBridgeValue : motor->towardNearBridgeValue; + + /* Last-line application isolation: a build-disabled bridge can never be + * energized, even if a corrupted command reaches this layer. */ + if((SEAT_MOVE_ACTIVE_MOTOR_MASK & + (uint8_t)(1u << motorIndex)) == 0u) + { + return false; + } + + Cy_Tcpwm_TriggerStopOrKill(motor->pwmTcpwm); + Motor_SetPwmInputLow(motor); + if(false == Motor_WriteBridgeBits(motorIndex, bridgeValue)) + { + return false; + } + return true; +} + +static void Motor_CommitPreparedHardwareStartUnsafe(uint32_t motorIndex) +{ + const motor_profile_t *motor = &motorProfiles[motorIndex]; + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + uint8_t dutyPercent = state->fixedDutyPercent; + + /* The bridge was configured while the PWM pin remained GPIO-low. The + * caller holds the Hall ISR critical section while publishing the running + * state and enabling PWM, so a timeout/event cannot be inserted between + * the state transition and the physical start. */ + if((false != state->speedControlEnabled) && + (false == state->calibrating)) + { + dutyPercent = state->speedInitialDutyPercent; + /* Dynamic trajectories may need a low steady-state PWM to stretch a + * short Hall travel over tens of seconds. Give every loaded axis the + * proven 50% breakaway pulse first; after the 500 ms measurement delay + * the closed loop may ramp below the public fixed-duty command floor. */ + if(dutyPercent < MOTOR_SPEED_MIN_DUTY_PERCENT) + { + dutyPercent = MOTOR_SPEED_MIN_DUTY_PERCENT; + } + } + state->speedCurrentDutyPercent = dutyPercent; + Motor_ResetSpeedMeasurementUnsafe(state); + Motor_ApplyDutyPercent(motorIndex, dutyPercent); + Cy_Tcpwm_Pwm_SetCounter(motor->pwmTcpwm, 0ul); + Cy_Tcpwm_TriggerStart(motor->pwmTcpwm); + Motor_EnablePwmInput(motor); +} + +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) +static const char *Motor_EventToString(motor_event_t event) +{ + switch(event) + { + case MOTOR_EVENT_NONE: + return "none"; + case MOTOR_EVENT_TARGET_REACHED: + return "target_reached"; + case MOTOR_EVENT_NEAR_ENDPOINT: + return "near_endpoint"; + case MOTOR_EVENT_FAR_ENDPOINT: + return "far_endpoint"; + case MOTOR_EVENT_STALL: + return "stall"; + case MOTOR_EVENT_TIMEOUT: + return "timeout"; + case MOTOR_EVENT_ABORTED: + return "aborted"; + case MOTOR_EVENT_DRIVER_FAULT: + return "driver_fault"; + case MOTOR_EVENT_CALIBRATION_FAILED: + return "calibration_failed"; + default: + return "unknown"; + } +} + +static const char *Motor_DirectionToString(motor_direction_t direction) +{ + switch(direction) + { + case MOTOR_DIRECTION_TOWARD_FAR: + return "toward_far"; + case MOTOR_DIRECTION_TOWARD_NEAR: + return "toward_near"; + default: + return "stopped"; + } +} +#endif + +static void Motor_BeginCoastTrackingUnsafe(volatile motor_runtime_t *state, + motor_direction_t direction) +{ + if(direction != MOTOR_DIRECTION_STOPPED) + { + state->coastDirection = direction; + state->coastStartTicks = hallTimebaseTicks; + state->coastTracking = true; + } +} + +static void Motor_SetMoveResultUnsafe(volatile motor_runtime_t *state, + motor_event_t event) +{ + state->moveResultEvent = event; + state->moveResultSequence = state->moveCommandSequence; + state->moveResultReady = true; +} + +static void Motor_BeginMoveCommandUnsafe(volatile motor_runtime_t *state) +{ + state->moveCommandSequence++; + if(0ul == state->moveCommandSequence) + { + /* Reserve zero for "no move command has ever been accepted". */ + state->moveCommandSequence = 1ul; + } + state->moveResultEvent = MOTOR_EVENT_NONE; + state->moveResultSequence = 0ul; + state->moveResultReady = false; +} + +static bool Motor_OperationTimeoutExpiredUnsafe( + const volatile motor_runtime_t *state) +{ + uint32_t timeoutTicks = + ((false != state->calibrating) && + (0ul != state->calibrationTimeoutTicks)) ? + state->calibrationTimeoutTicks : + MOTOR_MS_TO_TICKS(MOTOR_OPERATION_TIMEOUT_MS); + + return (false != state->operationActive) && + ((uint32_t)(hallTimebaseTicks - state->motionStartTicks) >= + timeoutTicks); +} + +static void Motor_CompleteTargetMoveUnsafe(volatile motor_runtime_t *state) +{ + state->direction = MOTOR_DIRECTION_STOPPED; + state->eventDirection = MOTOR_DIRECTION_STOPPED; + state->scheduledDirection = MOTOR_DIRECTION_STOPPED; + state->startPending = false; + state->coastTracking = false; + state->coastDirection = MOTOR_DIRECTION_STOPPED; + state->operationActive = false; + state->targetActive = false; + state->eventWasTargetMove = false; + state->lastEvent = MOTOR_EVENT_TARGET_REACHED; + Motor_SetMoveResultUnsafe(state, MOTOR_EVENT_TARGET_REACHED); +} + +static bool Motor_TryStartScheduledHardware(uint32_t motorIndex, + bool requireCoastElapsed) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + motor_direction_t direction = MOTOR_DIRECTION_STOPPED; + motor_direction_t finalDirection = MOTOR_DIRECTION_STOPPED; + uint32_t savedIntrStatus; + bool eligible = false; + bool targetCompleted = false; + bool committed = false; + bool accepted = false; + + /* Phase one only selects a candidate direction. The PWM input remains + * GPIO-low throughout the (comparatively slow) verified SPI write. */ + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((false != state->startPending) && + (state->pendingEvent == MOTOR_EVENT_NONE) && + (false == driverFaultLatched) && + Motor_CommandIsCurrentUnsafe(state) && + ((false == requireCoastElapsed) || + (((uint32_t)(hallTimebaseTicks - state->scheduledStartTicks) >= + MOTOR_MS_TO_TICKS(MOTOR_REVERSAL_COAST_MS)) && + (false == state->coastTracking)))) + { + if(false != Motor_OperationTimeoutExpiredUnsafe(state)) + { + Motor_RequestEventFromIsr(motorIndex, MOTOR_EVENT_TIMEOUT); + } + else if((false != state->targetActive) && + (state->positionHallCount == state->targetHallCount)) + { + Motor_CompleteTargetMoveUnsafe(state); + targetCompleted = true; + } + else + { + direction = (false != state->targetActive) ? + ((state->targetHallCount > state->positionHallCount) ? + MOTOR_DIRECTION_TOWARD_FAR : + MOTOR_DIRECTION_TOWARD_NEAR) : + state->scheduledDirection; + eligible = (direction != MOTOR_DIRECTION_STOPPED); + } + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false != targetCompleted) + { + /* A completed settling cycle must leave both the PWM input and bridge + * high impedance, even if a future caller never services again. */ + return Motor_StopHardware(motorIndex); + } + if(false == eligible) + { + return false; + } + if(false == Motor_PrepareHardwareStart(motorIndex, direction)) + { + return false; + } + + /* Phase two rechecks every ISR-owned condition after SPI. PWM and the + * published running direction are committed together with interrupts + * masked, closing the timeout/target race at hardware start. */ + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((false != state->startPending) && + (state->pendingEvent == MOTOR_EVENT_NONE) && + (false == driverFaultLatched) && + Motor_CommandIsCurrentUnsafe(state)) + { + if(false != Motor_OperationTimeoutExpiredUnsafe(state)) + { + Motor_RequestEventFromIsr(motorIndex, MOTOR_EVENT_TIMEOUT); + } + else + { + if(false != state->targetActive) + { + if(state->positionHallCount == state->targetHallCount) + { + Motor_CompleteTargetMoveUnsafe(state); + targetCompleted = true; + } + else + { + finalDirection = + (state->targetHallCount > state->positionHallCount) ? + MOTOR_DIRECTION_TOWARD_FAR : + MOTOR_DIRECTION_TOWARD_NEAR; + } + } + else + { + finalDirection = state->scheduledDirection; + } + + if((false == targetCompleted) && + (finalDirection == direction)) + { + state->direction = direction; + state->scheduledDirection = MOTOR_DIRECTION_STOPPED; + state->startPending = false; + state->coastTracking = false; + state->coastDirection = MOTOR_DIRECTION_STOPPED; + Motor_ResetActivityWindowUnsafe(state); + Motor_CommitPreparedHardwareStartUnsafe(motorIndex); + committed = true; + accepted = true; + } + else if(false == targetCompleted) + { + /* A last coast pulse changed which side of the target we are + * on during SPI. Keep the command pending and retry from the + * newly observed side on the next service pass. */ + state->scheduledDirection = finalDirection; + accepted = true; + } + else + { + accepted = true; + } + } + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false == committed) + { + if((false != driverFaultLatched) || + (false == Motor_StopHardware(motorIndex))) + { + return false; + } + } + + return accepted; +} + +static uint8_t Motor_StartDirectionInternal(motor_mode_t mode, + motor_direction_t direction, + bool targetActive, + uint32_t targetHallCount, + bool calibrating, + bool clearLastEvent, + motor_direction_t coastFromDirection, + bool preserveOperationTimer) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + motor_direction_t currentDirection; + bool needsCoast; + bool stopCurrentHardware; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode)) || + (false != safetyInhibitLatched) || (false != driverFaultLatched) || + ((direction != MOTOR_DIRECTION_TOWARD_FAR) && + (direction != MOTOR_DIRECTION_TOWARD_NEAR))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((motorRuntime[index].pendingEvent != MOTOR_EVENT_NONE) || + (false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index]))) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + currentDirection = motorRuntime[index].direction; + + if(coastFromDirection == MOTOR_DIRECTION_STOPPED) + { + coastFromDirection = currentDirection; + if((coastFromDirection == MOTOR_DIRECTION_STOPPED) && + (false != motorRuntime[index].coastTracking)) + { + coastFromDirection = motorRuntime[index].coastDirection; + } + } + stopCurrentHardware = (currentDirection != MOTOR_DIRECTION_STOPPED); + needsCoast = (coastFromDirection != MOTOR_DIRECTION_STOPPED) && + ((currentDirection == MOTOR_DIRECTION_STOPPED) || + (coastFromDirection != direction)); + + if(false != stopCurrentHardware) + { + /* Close the ISR race before the slower SPI bridge update below. */ + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[index].pwmTcpwm); + } + motorRuntime[index].pendingEvent = MOTOR_EVENT_NONE; + motorRuntime[index].eventDirection = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].targetActive = targetActive; + motorRuntime[index].targetHallCount = targetHallCount; + motorRuntime[index].calibrating = calibrating; + motorRuntime[index].eventWasTargetMove = false; + if((false != targetActive) && (false != clearLastEvent)) + { + Motor_BeginMoveCommandUnsafe(&motorRuntime[index]); + } + if((false == preserveOperationTimer) || + (false == motorRuntime[index].operationActive)) + { + motorRuntime[index].motionStartTicks = hallTimebaseTicks; + motorRuntime[index].operationActive = true; + motorRuntime[index].automaticReverseCount = 0u; + } + if(false != clearLastEvent) + { + motorRuntime[index].lastEvent = MOTOR_EVENT_NONE; + } + if(false != needsCoast) + { + motorRuntime[index].direction = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].scheduledDirection = direction; + motorRuntime[index].scheduledStartTicks = hallTimebaseTicks; + motorRuntime[index].startPending = true; + Motor_BeginCoastTrackingUnsafe(&motorRuntime[index], + coastFromDirection); + } + else + { + /* Direct starts use the same two-phase commit as delayed reversals. + * Keeping startPending set lets the 1 ms ISR cancel an expired + * operation while the verified bridge SPI write is in progress. */ + motorRuntime[index].direction = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].scheduledDirection = direction; + motorRuntime[index].scheduledStartTicks = hallTimebaseTicks; + motorRuntime[index].startPending = true; + motorRuntime[index].coastTracking = false; + motorRuntime[index].coastDirection = MOTOR_DIRECTION_STOPPED; + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false != stopCurrentHardware) + { + Motor_SetPwmInputLow(&motorProfiles[index]); + if(false == Motor_WriteBridgeBits(index, 0u)) + { + return MOTOR_API_FAILURE; + } + } + + if(false != needsCoast) + { + return MOTOR_API_SUCCESS; + } + + return (false != Motor_TryStartScheduledHardware(index, false)) ? + MOTOR_API_SUCCESS : MOTOR_API_FAILURE; +} + +static void Motor_ServiceScheduledStart(uint32_t motorIndex) +{ + (void)Motor_TryStartScheduledHardware(motorIndex, true); +} + +static void Motor_ServicePendingEvent(uint32_t motorIndex) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + motor_event_t event; + motor_direction_t eventDirection; + motor_direction_t reverseDirection = MOTOR_DIRECTION_STOPPED; +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) + uint32_t recentPulses; + uint32_t position; +#endif + uint32_t savedIntrStatus; + bool wasCalibrating; + bool hadTargetMove; + bool shouldReverse = false; + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + event = state->pendingEvent; + if(event == MOTOR_EVENT_NONE) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return; + } + + eventDirection = state->eventDirection; + wasCalibrating = state->calibrating; + hadTargetMove = state->eventWasTargetMove; +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) + recentPulses = state->recentWindowEdges; +#endif + state->pendingEvent = MOTOR_EVENT_NONE; + state->direction = MOTOR_DIRECTION_STOPPED; + state->eventDirection = MOTOR_DIRECTION_STOPPED; + state->scheduledDirection = MOTOR_DIRECTION_STOPPED; + state->startPending = false; + state->targetActive = false; + state->lastEvent = event; + state->eventWasTargetMove = false; + Motor_BeginCoastTrackingUnsafe(state, eventDirection); + + if(false != hadTargetMove) + { + /* Crossing the requested target completes the move without automatic + * reverse correction. Inertia Hall pulses remain assigned to the old + * direction and are preserved in the global position; the final count + * is allowed to remain beyond the requested target. */ + Motor_SetMoveResultUnsafe(state, event); + } + + if(event == MOTOR_EVENT_NEAR_ENDPOINT) + { + reverseDirection = MOTOR_DIRECTION_TOWARD_FAR; + shouldReverse = (false == wasCalibrating) && + state->reverseAtEndpoint && + (state->automaticReverseCount < + MOTOR_MAX_AUTOMATIC_REVERSALS); + } + else if(event == MOTOR_EVENT_FAR_ENDPOINT) + { + reverseDirection = MOTOR_DIRECTION_TOWARD_NEAR; + shouldReverse = (false == wasCalibrating) && + state->reverseAtEndpoint && + (state->automaticReverseCount < + MOTOR_MAX_AUTOMATIC_REVERSALS); + } + else if(event == MOTOR_EVENT_STALL) + { + reverseDirection = + (eventDirection == MOTOR_DIRECTION_TOWARD_FAR) ? + MOTOR_DIRECTION_TOWARD_NEAR : MOTOR_DIRECTION_TOWARD_FAR; + shouldReverse = (false == wasCalibrating) && + state->reverseAtStall && + (state->automaticReverseCount < + MOTOR_MAX_AUTOMATIC_REVERSALS); + } + else + { + /* Target and timeout events always stop. */ + } + if(false != shouldReverse) + { + state->automaticReverseCount++; + } + else + { + state->operationActive = false; + } +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) + position = state->positionHallCount; +#endif + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false == Motor_StopHardware(motorIndex)) + { + return; + } + + MOTOR_LOG("MOTOR_EVENT mode=%lu profile=%s event=%s direction=%s " + "recent_%lums_edges=%lu hall_position=%lu reverse=%lu\r\n", + (unsigned long)motorIndex, + motorProfiles[motorIndex].name, + Motor_EventToString(event), + Motor_DirectionToString(eventDirection), + (unsigned long)MOTOR_SAFETY_WINDOW_MS, + (unsigned long)recentPulses, + (unsigned long)position, + (unsigned long)((false != shouldReverse) ? 1ul : 0ul)); + + if(false != shouldReverse) + { + (void)Motor_StartDirectionInternal((motor_mode_t)motorIndex, + reverseDirection, + false, + 0ul, + false, + false, + eventDirection, + true); + } +} + +static void Motor_SpeedControlService(uint32_t motorIndex) +{ + volatile motor_runtime_t *state = &motorRuntime[motorIndex]; + uint32_t nowTicks; + uint32_t baseTicks; + uint32_t baseRawEdges; + uint32_t rawEdges; + uint32_t elapsedTicks; + uint32_t elapsedMs; + uint32_t actualPpsX100; + uint32_t targetPpsX100; + uint32_t planElapsedMs; + uint32_t plannedProgressPulses; + uint32_t actualProgressPulses; + uint32_t savedIntrStatus; + uint8_t historyIndex; + uint8_t newDutyPercent; + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + nowTicks = hallTimebaseTicks; + if((false == state->speedControlEnabled) || + (state->direction == MOTOR_DIRECTION_STOPPED) || + (false != state->calibrating) || + (false != state->startPending) || + (state->pendingEvent != MOTOR_EVENT_NONE) || + (false != driverFaultLatched) || + ((uint32_t)(nowTicks - state->speedLastSampleTicks) < + MOTOR_MS_TO_TICKS(MOTOR_SPEED_CONTROL_CHECK_MS))) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return; + } + + rawEdges = state->rawRisingEdges; + historyIndex = state->speedHistoryIndex; + if(state->speedHistoryValidSamples < + MOTOR_SPEED_CONTROL_HISTORY_SAMPLES) + { + baseRawEdges = state->speedBaselineRawEdges; + baseTicks = state->speedControlStartTicks; + state->speedHistoryValidSamples++; + } + else + { + baseRawEdges = state->speedHistoryRawEdges[historyIndex]; + baseTicks = state->speedHistoryTicks[historyIndex]; + } + + state->speedHistoryRawEdges[historyIndex] = rawEdges; + state->speedHistoryTicks[historyIndex] = nowTicks; + historyIndex++; + if(historyIndex >= MOTOR_SPEED_CONTROL_HISTORY_SAMPLES) + { + historyIndex = 0u; + } + state->speedHistoryIndex = historyIndex; + state->speedLastSampleTicks = nowTicks; + + elapsedTicks = (uint32_t)(nowTicks - baseTicks); + planElapsedMs = MOTOR_TICKS_TO_MS( + (uint32_t)(nowTicks - state->speedControlStartTicks)); + if(planElapsedMs > state->speedDurationMs) + { + planElapsedMs = state->speedDurationMs; + } + plannedProgressPulses = (uint32_t) + (((uint64_t)state->speedPlannedHallPulses * planElapsedMs + + (state->speedDurationMs / 2ul)) / state->speedDurationMs); + actualProgressPulses = rawEdges - state->speedBaselineRawEdges; + + /* Loaded axes need a short 50% breakaway pulse, but waiting for the full + * 500 ms speed window lets a short-travel axis build an unrecoverable + * lead. Position progress is meaningful from the first 100 ms sample, + * so de-energize an already-ahead axis immediately. Driving it at an + * arbitrary sub-breakaway duty can create current without Hall progress + * and was the cause of false cradle STALLs. */ + if(((uint32_t)(nowTicks - state->speedControlStartTicks) >= + MOTOR_MS_TO_TICKS(MOTOR_SPEED_PROGRESS_CONTROL_START_MS)) && + (actualProgressPulses > + (plannedProgressPulses + MOTOR_SPEED_PROGRESS_TOLERANCE_PULSES))) + { + if(state->speedCurrentDutyPercent != + MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT) + { + state->speedCurrentDutyPercent = + MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT; + Motor_ApplyDutyPercent(motorIndex, + MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT); + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return; + } + if(((uint32_t)(nowTicks - state->speedControlStartTicks) < + MOTOR_MS_TO_TICKS(MOTOR_SPEED_CONTROL_START_DELAY_MS)) || + (elapsedTicks < MOTOR_MS_TO_TICKS(MOTOR_SPEED_CONTROL_WINDOW_MS))) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return; + } + + elapsedMs = MOTOR_TICKS_TO_MS(elapsedTicks); + if(0ul == elapsedMs) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return; + } + + actualPpsX100 = (uint32_t) + (((((uint64_t)(rawEdges - baseRawEdges)) * 1000ull * + MOTOR_SPEED_VALUE_SCALE) + (elapsedMs / 2ul)) / elapsedMs); + targetPpsX100 = state->speedTargetPpsX100; + newDutyPercent = state->speedCurrentDutyPercent; + state->speedActualPpsX100 = actualPpsX100; + + /* Speed-only regulation cannot synchronize very short and long axes: the + * loaded motor breakaway pulse puts a short travel several seconds ahead + * even when its eventual speed is correct. Track the time-position line + * as well. An axis ahead of the line drops immediately to the adaptive + * floor; an axis behind it ramps up. Within one Hall pulse, the ordinary + * measured-speed loop keeps each energized burst bounded. */ + if(actualProgressPulses > + (plannedProgressPulses + MOTOR_SPEED_PROGRESS_TOLERANCE_PULSES)) + { + newDutyPercent = MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT; + } + else if((actualProgressPulses + MOTOR_SPEED_PROGRESS_TOLERANCE_PULSES) < + plannedProgressPulses) + { + if(newDutyPercent < MOTOR_SPEED_MIN_DUTY_PERCENT) + { + newDutyPercent = MOTOR_SPEED_MIN_DUTY_PERCENT; + } + else if(newDutyPercent < MOTOR_SPEED_MAX_DUTY_PERCENT) + { + newDutyPercent = (uint8_t) + (newDutyPercent + MOTOR_SPEED_DUTY_STEP_PERCENT); + if(newDutyPercent > MOTOR_SPEED_MAX_DUTY_PERCENT) + { + newDutyPercent = MOTOR_SPEED_MAX_DUTY_PERCENT; + } + } + } + else if((((uint64_t)actualPpsX100) * 100ull) < + (((uint64_t)targetPpsX100) * + (100ul - MOTOR_SPEED_TOLERANCE_PERCENT))) + { + if(newDutyPercent < MOTOR_SPEED_MIN_DUTY_PERCENT) + { + newDutyPercent = MOTOR_SPEED_MIN_DUTY_PERCENT; + } + else if(newDutyPercent < MOTOR_SPEED_MAX_DUTY_PERCENT) + { + newDutyPercent = (uint8_t) + (newDutyPercent + MOTOR_SPEED_DUTY_STEP_PERCENT); + if(newDutyPercent > MOTOR_SPEED_MAX_DUTY_PERCENT) + { + newDutyPercent = MOTOR_SPEED_MAX_DUTY_PERCENT; + } + } + } + else if((((uint64_t)actualPpsX100) * 100ull) > + (((uint64_t)targetPpsX100) * + (100ul + MOTOR_SPEED_TOLERANCE_PERCENT))) + { + if(newDutyPercent > MOTOR_SPEED_MIN_DUTY_PERCENT) + { + if(newDutyPercent >= (MOTOR_SPEED_MIN_DUTY_PERCENT + + MOTOR_SPEED_DUTY_STEP_PERCENT)) + { + newDutyPercent = (uint8_t) + (newDutyPercent - MOTOR_SPEED_DUTY_STEP_PERCENT); + } + else + { + newDutyPercent = MOTOR_SPEED_MIN_DUTY_PERCENT; + } + } + else if(newDutyPercent != MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT) + { + newDutyPercent = MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT; + } + } + else + { + /* The measured speed is inside the +/-10 percent deadband. */ + } + + if(newDutyPercent != state->speedCurrentDutyPercent) + { + if((state->speedCurrentDutyPercent == + MOTOR_SPEED_CONTROL_PAUSE_DUTY_PERCENT) && + (newDutyPercent >= MOTOR_SPEED_MIN_DUTY_PERCENT)) + { + /* Resume gets a fresh 500 ms activity window, matching a normal + * hardware start. This prevents the first loaded-current sample + * from being compared with the intentionally quiet pause. */ + Motor_ResetActivityWindowUnsafe(state); + } + state->speedCurrentDutyPercent = newDutyPercent; + Motor_ApplyDutyPercent(motorIndex, newDutyPercent); + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); +} + +void Motor_ServiceAll(void) +{ + uint32_t index; + uint32_t savedIntrStatus; + uint8_t abortMask; + + if(false == motorControlReady) + { + return; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false != motorServiceActive) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return; + } + motorServiceActive = true; + abortMask = abortRequestedMask; + abortRequestedMask = 0u; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(0u != abortMask) + { + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + if((abortMask & (uint8_t)(1u << index)) != 0u) + { + bool stopRequested; + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + stopRequested = motorRuntime[index].abortSequenceValid && + (false == Motor_CommandIsCurrentUnsafe( + &motorRuntime[index])); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + if(false != stopRequested) + { + (void)Motor_StopMode((motor_mode_t)index); + } + } + } + } + + /* ADC polling is main-loop-only. The 2 ms Hall ISR consumes only the + * atomically published cache and can never block on a conversion. */ + Motor_ServiceCurrentSensing(); + Motor_PollDriverStatus(); + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + Motor_ServicePendingEvent(index); + Motor_ServiceScheduledStart(index); + Motor_SpeedControlService(index); + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + motorServiceActive = false; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); +} + +bool Motor_IsDriverFaultLatched(void) +{ + return driverFaultLatched; +} + +uint8_t Motor_AcknowledgeCommand(motor_mode_t mode, uint16_t sequence) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + volatile motor_runtime_t *state; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + state = &motorRuntime[index]; + if(false != safetyInhibitLatched) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + if((false != state->acceptedCommandValid) && + Motor_SequenceIsNewer(state->acceptedCommandSequence, sequence)) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + if(false != state->abortSequenceValid) + { + if(state->latestAbortSequence == sequence) + { + state->abortSequenceValid = false; + abortRequestedMask &= (uint8_t)(~(uint8_t)(1u << index)); + } + else + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + } + state->acceptedCommandSequence = sequence; + state->acceptedCancellationGeneration = state->cancellationGeneration; + state->acceptedCommandValid = true; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +bool Motor_IsCommandCurrent(motor_mode_t mode, uint16_t sequence) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + bool current; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return false; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + current = Motor_CommandIsCurrentUnsafe(&motorRuntime[index]) && + motorRuntime[index].acceptedCommandValid && + (motorRuntime[index].acceptedCommandSequence == sequence); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return current; +} + +void Motor_RequestAbortMaskFromIsr(uint8_t motorMask, uint16_t sequence) +{ + uint32_t index; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + if((motorMask & (uint8_t)(1u << index)) != 0u) + { + volatile motor_runtime_t *state = &motorRuntime[index]; + bool staleAccepted = state->acceptedCommandValid && + Motor_SequenceIsNewer(state->acceptedCommandSequence, + sequence); + bool staleAbort = state->abortSequenceValid && + Motor_SequenceIsNewer(state->latestAbortSequence, sequence); + + if((false == staleAccepted) && (false == staleAbort)) + { + state->latestAbortSequence = sequence; + state->cancellationGeneration++; + state->abortSequenceValid = true; + abortRequestedMask |= (uint8_t)(1u << index); + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[index].pwmTcpwm); + } + } + } +} + +void Motor_RequestAbortAllFromIsr(uint16_t sequence) +{ + uint32_t index; + + /* System/STOP_ALL cancellation is also the protocol resynchronization + * barrier. It must remain effective even when sequence restarts at zero. */ + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + motorRuntime[index].latestAbortSequence = sequence; + motorRuntime[index].cancellationGeneration++; + motorRuntime[index].abortSequenceValid = true; + motorRuntime[index].acceptedCommandValid = false; + abortRequestedMask |= (uint8_t)(1u << index); + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[index].pwmTcpwm); + } +} + +void Motor_LatchSafetyInhibitFromIsr(uint16_t sequence) +{ + /* Publish the independent gate before the sequence-based abort. A later + * STOP may replace that sequence for resynchronization, but it must not + * clear an independent latched safety shutdown. */ + safetyInhibitLatched = true; + Motor_RequestAbortAllFromIsr(sequence); +} + +void Motor_StopAll(void) +{ + uint32_t index; + + for(index = 0ul; index < MOTOR_PROFILE_COUNT; index++) + { + (void)Motor_StopMode((motor_mode_t)index); + } +} + +uint8_t Motor_StopMode(motor_mode_t mode) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + motor_direction_t oldDirection; + motor_event_t priorLastEvent; + bool hadTargetMove; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + oldDirection = motorRuntime[index].direction; + priorLastEvent = motorRuntime[index].lastEvent; + hadTargetMove = motorRuntime[index].targetActive || + motorRuntime[index].eventWasTargetMove; + Motor_BeginCoastTrackingUnsafe(&motorRuntime[index], oldDirection); + motorRuntime[index].direction = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].eventDirection = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].scheduledDirection = MOTOR_DIRECTION_STOPPED; + motorRuntime[index].pendingEvent = MOTOR_EVENT_NONE; + if(false != driverFaultLatched) + { + motorRuntime[index].lastEvent = MOTOR_EVENT_DRIVER_FAULT; + } + else if(false != hadTargetMove) + { + motorRuntime[index].lastEvent = MOTOR_EVENT_ABORTED; + } + else if((priorLastEvent == MOTOR_EVENT_NEAR_ENDPOINT) || + (priorLastEvent == MOTOR_EVENT_FAR_ENDPOINT) || + (priorLastEvent == MOTOR_EVENT_STALL) || + (priorLastEvent == MOTOR_EVENT_TIMEOUT) || + (priorLastEvent == MOTOR_EVENT_DRIVER_FAULT) || + (priorLastEvent == MOTOR_EVENT_CALIBRATION_FAILED)) + { + /* The bridge has already stopped for this terminal event. Preserve + * it across the manager's cleanup stop and a later STOP_ALL so 0x303 + * keeps the physical failure reason available to the host. Starting + * a genuinely new motion command still clears lastEvent. */ + motorRuntime[index].lastEvent = priorLastEvent; + } + else + { + motorRuntime[index].lastEvent = MOTOR_EVENT_NONE; + } + motorRuntime[index].targetActive = false; + motorRuntime[index].calibrating = false; + motorRuntime[index].startPending = false; + motorRuntime[index].operationActive = false; + motorRuntime[index].eventWasTargetMove = false; + if(false != hadTargetMove) + { + Motor_SetMoveResultUnsafe(&motorRuntime[index], MOTOR_EVENT_ABORTED); + } + else + { + /* An explicit stop invalidates any unconsumed completion from an + * older command, so a later Wait cannot report a stale result. */ + motorRuntime[index].moveResultEvent = MOTOR_EVENT_NONE; + motorRuntime[index].moveResultSequence = 0ul; + motorRuntime[index].moveResultReady = false; + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false != driverFaultLatched) + { + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[index].pwmTcpwm); + Motor_SetPwmInputLow(&motorProfiles[index]); + return MOTOR_API_FAILURE; + } + + return (false != Motor_StopHardware(index)) ? + MOTOR_API_SUCCESS : MOTOR_API_FAILURE; +} + +uint8_t Motor_SetFixedDutyPercent(motor_mode_t mode, uint8_t dutyPercent) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + bool applyImmediately; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode)) || + (false != safetyInhibitLatched) || + (dutyPercent < MOTOR_SPEED_MIN_DUTY_PERCENT) || + (dutyPercent > MOTOR_SPEED_MAX_DUTY_PERCENT) || + (false != driverFaultLatched)) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((false != safetyInhibitLatched) || (false != driverFaultLatched) || + (false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index]))) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + motorRuntime[index].fixedDutyPercent = dutyPercent; + motorRuntime[index].speedControlEnabled = false; + motorRuntime[index].speedDurationMs = 0ul; + motorRuntime[index].speedTravelValueX100 = 0ul; + motorRuntime[index].speedPlannedHallPulses = 0ul; + motorRuntime[index].speedTargetPpsX100 = 0ul; + motorRuntime[index].speedInitialDutyPercent = dutyPercent; + motorRuntime[index].speedCurrentDutyPercent = dutyPercent; + Motor_ResetSpeedMeasurementUnsafe(&motorRuntime[index]); + applyImmediately = + (motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) && + (false == motorRuntime[index].calibrating) && + (motorRuntime[index].pendingEvent == MOTOR_EVENT_NONE); + if(false != applyImmediately) + { + Motor_ApplyDutyPercent(index, dutyPercent); + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_StartOpenLoop(motor_mode_t mode, motor_direction_t direction) +{ + return Motor_StartDirectionInternal(mode, + direction, + false, + 0ul, + false, + true, + MOTOR_DIRECTION_STOPPED, + false); +} + +bool Motor_IsMoving(motor_mode_t mode) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + bool moving; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return false; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + moving = (motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) || + motorRuntime[index].startPending || + motorRuntime[index].coastTracking; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return moving; +} + +bool Motor_WaitUntilStopped(motor_mode_t mode) +{ + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return false; + } + if(Motor_IsMoving(mode)) + { + (void)Motor_StopMode(mode); + } + return Motor_WaitForCoastToSettle(mode) && !Motor_IsMoving(mode); +} + +uint8_t Motor_ValidatePersistentState(motor_mode_t mode, + const motor_persistent_state_t *state) +{ + uint32_t index = (uint32_t)mode; + + if((NULL == state) || (false == Motor_ModeIsValid(mode)) || + (0ul == state->maxHallCount) || + (false == Motor_CalibrationRangeIsPlausible( + index, state->maxHallCount)) || + (state->positionValid && + (state->positionHallCount > state->maxHallCount)) || + (0ul == state->maxSpeedPulsesPerSecondX100) || + (state->maxSpeedPulsesPerSecondX100 > + (motorProfiles[index].maxSpeedPpsX100 * + MOTOR_MAX_CALIBRATED_SPEED_MULTIPLIER))) + { + return MOTOR_API_FAILURE; + } + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_ApplyPersistentState(motor_mode_t mode, + const motor_persistent_state_t *state) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + + if((false == motorControlReady) || + (MOTOR_API_SUCCESS != Motor_ValidatePersistentState(mode, state))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) || + motorRuntime[index].startPending || + motorRuntime[index].coastTracking || + (motorRuntime[index].pendingEvent != MOTOR_EVENT_NONE)) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + motorRuntime[index].positionHallCount = state->positionHallCount; + motorRuntime[index].maxHallCount = state->maxHallCount; + motorRuntime[index].maxSpeedPpsX100 = + state->maxSpeedPulsesPerSecondX100; + motorRuntime[index].rawRisingEdges = state->rawRisingEdges; + motorRuntime[index].positionValid = state->positionValid; + motorRuntime[index].lastEvent = MOTOR_EVENT_NONE; + Motor_ResetActivityWindowUnsafe(&motorRuntime[index]); + Motor_ResetSpeedMeasurementUnsafe(&motorRuntime[index]); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_GetPersistentState(motor_mode_t mode, + motor_persistent_state_t *state) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + + if((NULL == state) || (false == motorControlReady) || + (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + state->positionHallCount = motorRuntime[index].positionHallCount; + state->maxHallCount = motorRuntime[index].maxHallCount; + state->maxSpeedPulsesPerSecondX100 = + motorRuntime[index].maxSpeedPpsX100; + state->rawRisingEdges = motorRuntime[index].rawRisingEdges; + state->positionValid = motorRuntime[index].positionValid; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_InvalidatePosition(motor_mode_t mode) +{ + motor_persistent_state_t state; + + if(mode >= MOTOR_MODE_COUNT) + { + return MOTOR_API_FAILURE; + } + /* The CAN hook may run in the same owner-loop iteration that accepted a + * STOP. Finish the bounded stop and Hall-coast transition before + * enforcing the persistent-state API's stopped-axis precondition. */ + if(Motor_IsMoving(mode)) + { + (void)Motor_StopMode(mode); + } + if((false == Motor_WaitForCoastToSettle(mode)) || + Motor_IsMoving(mode) || + (MOTOR_API_SUCCESS != Motor_GetPersistentState(mode, &state))) + { + return MOTOR_API_FAILURE; + } + state.positionValid = false; + return Motor_ApplyPersistentState(mode, &state); +} + +uint8_t Motor_SetMaximumSpeedPpsX100(motor_mode_t mode, + uint32_t maxSpeedPpsX100) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode)) || + (false != safetyInhibitLatched) || + (false != driverFaultLatched) || (0ul == maxSpeedPpsX100) || + (maxSpeedPpsX100 > + (motorProfiles[index].maxSpeedPpsX100 * + MOTOR_MAX_CALIBRATED_SPEED_MULTIPLIER))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) || + motorRuntime[index].startPending || + motorRuntime[index].coastTracking || + (motorRuntime[index].pendingEvent != MOTOR_EVENT_NONE) || + (false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index]))) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + motorRuntime[index].maxSpeedPpsX100 = maxSpeedPpsX100; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint32_t Motor_GetTimeMs(void) +{ + return MOTOR_TICKS_TO_MS(hallTimebaseTicks); +} + +uint8_t Motor_GetCurrentInfo(motor_mode_t mode, motor_current_info_t *info) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + uint32_t ageTicks; + + if((NULL == info) || (false == motorControlReady) || + (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + ageTicks = hallTimebaseTicks - + motorRuntime[index].currentSenseLastSampleTicks; + info->mode = mode; + info->sampleValid = motorRuntime[index].currentSenseValid && + (ageTicks <= + MOTOR_MS_TO_TICKS(SEAT_MOVE_MOTOR_CURRENT_MAX_AGE_MS)); + info->baselineValid = motorRuntime[index].currentSenseBaselineValid; + info->raw = motorRuntime[index].currentSenseRaw; + info->baselineRaw = motorRuntime[index].currentSenseBaselineRaw; + info->deltaRaw = motorRuntime[index].currentSenseDeltaRaw; + info->stallThresholdRaw = motorProfiles[index].stallCurrentDeltaRaw; + info->highCurrent = info->sampleValid && info->baselineValid && + (info->deltaRaw >= info->stallThresholdRaw); + info->hallActivityLow = motorRuntime[index].activityWindowReady && + (motorRuntime[index].recentWindowEdges <= + MOTOR_STALL_EDGE_THRESHOLD); + info->calibrating = motorRuntime[index].calibrating; + info->sampleAgeMs = MOTOR_TICKS_TO_MS(ageTicks); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +void Motor_SetWatchdogServiceEnabled(bool enabled) +{ + watchdogServiceEnabled = enabled; +} + +uint8_t Motor_GetPositionInfo(motor_mode_t mode, motor_position_info_t *info) +{ + uint32_t index = (uint32_t)mode; + uint32_t hallCount; + uint32_t scaledHallCount; + uint32_t maxHallCount; + uint32_t maxValueX100; + uint32_t savedIntrStatus; + + if((NULL == info) || (false == motorControlReady) || + (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + hallCount = motorRuntime[index].positionHallCount; + maxHallCount = motorRuntime[index].maxHallCount; + info->positionValid = motorRuntime[index].positionValid; + info->direction = motorRuntime[index].direction; + info->lastEvent = motorRuntime[index].lastEvent; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(0ul == maxHallCount) + { + return MOTOR_API_FAILURE; + } + scaledHallCount = hallCount; + if(scaledHallCount > maxHallCount) + { + scaledHallCount = maxHallCount; + } + + maxValueX100 = motorProfiles[index].maxPhysicalValueX100; + info->mode = mode; + info->hallCount = hallCount; + info->maxHallCount = maxHallCount; + info->maxValueX100 = maxValueX100; + info->valueX100 = (uint32_t) + (((((uint64_t)scaledHallCount) * maxValueX100) + + (maxHallCount / 2ul)) / + maxHallCount); + info->percentX100 = (uint32_t) + (((((uint64_t)scaledHallCount) * 10000ul) + + (maxHallCount / 2ul)) / + maxHallCount); + info->horizontalMmX100 = 0ul; + info->verticalMmX100 = 0ul; + if(mode == MOTOR_MODE_0_LINEAR) + { + info->positionMmX100 = info->valueX100; + info->horizontalMmX100 = info->valueX100; + info->angleDegX100 = 0ul; + } + else if(mode == MOTOR_MODE_1_ANGLE) + { + info->positionMmX100 = info->valueX100; + info->horizontalMmX100 = (uint32_t) + (((((uint64_t)scaledHallCount) * + MOTOR_MODE1_MAX_HORIZONTAL_MM_X100) + + (maxHallCount / 2ul)) / + maxHallCount); + info->verticalMmX100 = info->valueX100; + info->angleDegX100 = 0ul; + } + else + { + info->positionMmX100 = 0ul; + info->angleDegX100 = info->valueX100; + } + + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_SetSafetyOptions(motor_mode_t mode, + const motor_safety_options_t *options) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + + if((NULL == options) || (false == motorControlReady) || + (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + motorRuntime[index].reverseAtEndpoint = options->reverseAtEndpoint; + motorRuntime[index].reverseAtStall = options->reverseAtStall; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_SetSpeedPlan(motor_mode_t mode, + uint32_t durationMs, + uint32_t travelValueX100) +{ + uint32_t index = (uint32_t)mode; + uint32_t maxHallCount; + uint32_t plannedHallPulses; + uint32_t targetPpsX100; + uint32_t savedIntrStatus; + uint8_t initialDutyPercent; + bool applyImmediately; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode)) || + (false != safetyInhibitLatched) || (false != driverFaultLatched)) + { + return MOTOR_API_FAILURE; + } + + Motor_ServiceAll(); + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + maxHallCount = motorRuntime[index].maxHallCount; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false == Motor_CalculateSpeedPlan(index, + maxHallCount, + durationMs, + travelValueX100, + &plannedHallPulses, + &targetPpsX100, + &initialDutyPercent)) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((false != safetyInhibitLatched) || (false != driverFaultLatched) || + (false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index]))) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + + motorRuntime[index].speedDurationMs = durationMs; + motorRuntime[index].speedTravelValueX100 = travelValueX100; + motorRuntime[index].speedPlannedHallPulses = plannedHallPulses; + motorRuntime[index].speedTargetPpsX100 = targetPpsX100; + motorRuntime[index].speedInitialDutyPercent = initialDutyPercent; + motorRuntime[index].speedCurrentDutyPercent = initialDutyPercent; + motorRuntime[index].speedControlEnabled = true; + Motor_ResetSpeedMeasurementUnsafe(&motorRuntime[index]); + + applyImmediately = + (motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) && + (false == motorRuntime[index].calibrating) && + (motorRuntime[index].pendingEvent == MOTOR_EVENT_NONE); + if(false != applyImmediately) + { + Motor_ApplyDutyPercent(index, initialDutyPercent); + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_DisableSpeedControl(motor_mode_t mode) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + bool applyImmediately; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + Motor_ServiceAll(); + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + motorRuntime[index].speedControlEnabled = false; + motorRuntime[index].speedDurationMs = 0ul; + motorRuntime[index].speedTravelValueX100 = 0ul; + motorRuntime[index].speedPlannedHallPulses = 0ul; + motorRuntime[index].speedTargetPpsX100 = 0ul; + motorRuntime[index].speedInitialDutyPercent = + motorRuntime[index].fixedDutyPercent; + motorRuntime[index].speedCurrentDutyPercent = + motorRuntime[index].fixedDutyPercent; + Motor_ResetSpeedMeasurementUnsafe(&motorRuntime[index]); + + applyImmediately = + (motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) && + (false == motorRuntime[index].calibrating) && + (motorRuntime[index].pendingEvent == MOTOR_EVENT_NONE) && + (false == driverFaultLatched); + if(false != applyImmediately) + { + Motor_ApplyDutyPercent(index, motorRuntime[index].fixedDutyPercent); + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return (false == driverFaultLatched) ? + MOTOR_API_SUCCESS : MOTOR_API_FAILURE; +} + +uint8_t Motor_GetSpeedInfo(motor_mode_t mode, motor_speed_info_t *info) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + + if((NULL == info) || (false == motorControlReady) || + (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + info->mode = mode; + info->enabled = motorRuntime[index].speedControlEnabled; + info->durationMs = motorRuntime[index].speedDurationMs; + info->travelValueX100 = motorRuntime[index].speedTravelValueX100; + info->plannedHallPulses = motorRuntime[index].speedPlannedHallPulses; + info->targetPulsesPerSecondX100 = + motorRuntime[index].speedTargetPpsX100; + info->actualPulsesPerSecondX100 = + motorRuntime[index].speedActualPpsX100; + info->initialDutyPercent = motorRuntime[index].speedInitialDutyPercent; + info->currentDutyPercent = motorRuntime[index].speedCurrentDutyPercent; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_StartMoveToValue(motor_mode_t mode, uint32_t targetValueX100) +{ + uint32_t index = (uint32_t)mode; + uint32_t maxValueX100; + uint32_t targetHallCount = 0ul; + uint32_t savedIntrStatus; + volatile motor_runtime_t *state; + motor_direction_t directStartDirection = MOTOR_DIRECTION_STOPPED; + motor_direction_t actualDirection; + bool stopHardware = false; + bool startDirectly = false; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode)) || + (false != driverFaultLatched)) + { + return MOTOR_API_FAILURE; + } + + Motor_ServiceAll(); + maxValueX100 = motorProfiles[index].maxPhysicalValueX100; + if(targetValueX100 > maxValueX100) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + state = &motorRuntime[index]; + if((false == state->positionValid) || (0ul == state->maxHallCount) || + (false != state->calibrating) || + (state->pendingEvent != MOTOR_EVENT_NONE) || + (false == Motor_CommandIsCurrentUnsafe(state)) || + (false != driverFaultLatched)) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + return MOTOR_API_FAILURE; + } + + targetHallCount = (uint32_t) + (((((uint64_t)targetValueX100) * state->maxHallCount) + + (maxValueX100 / 2ul)) / maxValueX100); + actualDirection = state->direction; + + /* All target replacement decisions use this single atomic position + * snapshot. This avoids selecting a direction from one Hall count and + * committing the command after an ISR has already crossed the target. */ + Motor_BeginMoveCommandUnsafe(state); + state->targetHallCount = targetHallCount; + state->targetActive = true; + state->calibrating = false; + state->eventWasTargetMove = false; + state->lastEvent = MOTOR_EVENT_NONE; + + if(false != state->startPending) + { + /* An explicit direction-change coast is already in progress. Keep + * its original coast and absolute timeout clocks; the delayed-start + * service recomputes the direction requested by the latest command + * from the final settled Hall count. */ + state->scheduledDirection = + (targetHallCount == state->positionHallCount) ? + MOTOR_DIRECTION_STOPPED : + ((targetHallCount > state->positionHallCount) ? + MOTOR_DIRECTION_TOWARD_FAR : MOTOR_DIRECTION_TOWARD_NEAR); + if(false == state->operationActive) + { + state->motionStartTicks = hallTimebaseTicks; + state->operationActive = true; + state->automaticReverseCount = 0u; + } + } + else if(actualDirection != MOTOR_DIRECTION_STOPPED) + { + bool targetStillAhead = + ((actualDirection == MOTOR_DIRECTION_TOWARD_FAR) && + (targetHallCount > state->positionHallCount)) || + ((actualDirection == MOTOR_DIRECTION_TOWARD_NEAR) && + (targetHallCount < state->positionHallCount)); + + if(false == state->operationActive) + { + state->motionStartTicks = hallTimebaseTicks; + state->operationActive = true; + state->automaticReverseCount = 0u; + } + + if(false == targetStillAhead) + { + /* The replacement target is at or behind the live position. Kill + * PWM in the same critical section, count inertia in the old + * direction, and apply the explicitly requested direction change + * only after settling. */ + Cy_Tcpwm_TriggerStopOrKill(motorProfiles[index].pwmTcpwm); + state->direction = MOTOR_DIRECTION_STOPPED; + state->scheduledDirection = MOTOR_DIRECTION_STOPPED; + state->scheduledStartTicks = hallTimebaseTicks; + state->startPending = true; + Motor_BeginCoastTrackingUnsafe(state, actualDirection); + stopHardware = true; + } + /* A target still ahead in the actual direction is an atomic target + * replacement only: PWM, safety window, and timeout are preserved. */ + } + else if(false != state->coastTracking) + { + /* Even a same-direction retarget waits for residual motion to settle. + * Otherwise a coast pulse during SPI can cross the target just before + * PWM is enabled and force an avoidable one-pulse overshoot. */ + state->scheduledDirection = + (targetHallCount == state->positionHallCount) ? + MOTOR_DIRECTION_STOPPED : + ((targetHallCount > state->positionHallCount) ? + MOTOR_DIRECTION_TOWARD_FAR : MOTOR_DIRECTION_TOWARD_NEAR); + state->scheduledStartTicks = state->coastStartTicks; + state->startPending = true; + if(false == state->operationActive) + { + state->motionStartTicks = hallTimebaseTicks; + state->operationActive = true; + state->automaticReverseCount = 0u; + } + } + else if(targetHallCount == state->positionHallCount) + { + /* With no running or coasting direction, Hall transitions cannot alter + * the inferred global position; immediate exact completion is safe. */ + state->automaticReverseCount = 0u; + Motor_CompleteTargetMoveUnsafe(state); + } + else + { + directStartDirection = + (targetHallCount > state->positionHallCount) ? + MOTOR_DIRECTION_TOWARD_FAR : MOTOR_DIRECTION_TOWARD_NEAR; + startDirectly = true; + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false != stopHardware) + { + return (false != Motor_StopHardware(index)) ? + MOTOR_API_SUCCESS : MOTOR_API_FAILURE; + } + if(false != startDirectly) + { + /* The command sequence was already created atomically above. */ + return Motor_StartDirectionInternal(mode, + directStartDirection, + true, + targetHallCount, + false, + false, + MOTOR_DIRECTION_STOPPED, + false); + } + + return MOTOR_API_SUCCESS; +} + +uint8_t Motor_WaitForMove(motor_mode_t mode) +{ + uint32_t index = (uint32_t)mode; + uint32_t savedIntrStatus; + uint32_t waitSequence; + uint32_t currentSequence; + motor_event_t resultEvent; + bool resultReady; + bool movePending; + bool motorStillRunning; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode))) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + waitSequence = motorRuntime[index].moveCommandSequence; + resultReady = motorRuntime[index].moveResultReady && + (motorRuntime[index].moveResultSequence == waitSequence); + movePending = motorRuntime[index].targetActive || + motorRuntime[index].startPending || + ((motorRuntime[index].pendingEvent != MOTOR_EVENT_NONE) && + motorRuntime[index].eventWasTargetMove); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if((0ul == waitSequence) || ((false == resultReady) && + (false == movePending))) + { + return MOTOR_API_FAILURE; + } + + for(;;) + { + Motor_ServiceAll(); + Motor_CalibrationServiceHook(); + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + currentSequence = motorRuntime[index].moveCommandSequence; + resultReady = motorRuntime[index].moveResultReady && + (motorRuntime[index].moveResultSequence == waitSequence); + resultEvent = motorRuntime[index].moveResultEvent; + movePending = motorRuntime[index].targetActive || + motorRuntime[index].startPending || + ((motorRuntime[index].pendingEvent != MOTOR_EVENT_NONE) && + motorRuntime[index].eventWasTargetMove); + motorStillRunning = + (motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) || + motorRuntime[index].startPending || + motorRuntime[index].coastTracking; + if((false != resultReady) && (false == motorStillRunning)) + { + motorRuntime[index].moveResultReady = false; + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(currentSequence != waitSequence) + { + return MOTOR_API_FAILURE; + } + if(false != resultReady) + { + if(false == motorStillRunning) + { + return (resultEvent == MOTOR_EVENT_TARGET_REACHED) ? + MOTOR_API_SUCCESS : MOTOR_API_FAILURE; + } + + /* A requested safety reverse is part of the same operation. + * Wait remains blocking until the one permitted reverse stops at + * its next safety event or the absolute operation timeout. */ + movePending = true; + } + if(false == movePending) + { + return MOTOR_API_FAILURE; + } + + if(false != watchdogServiceEnabled) + { + Cy_WDT_ClearWatchdog(); + } + __WFI(); + } +} + +uint8_t Motor_MoveToValue(motor_mode_t mode, uint32_t targetValueX100) +{ + if(MOTOR_API_SUCCESS != Motor_StartMoveToValue(mode, targetValueX100)) + { + return MOTOR_API_FAILURE; + } + + return Motor_WaitForMove(mode); +} + +static bool Motor_WaitForCoastToSettle(motor_mode_t mode) +{ + uint32_t index = (uint32_t)mode; + uint32_t waitStartTicks = MotorControl_GetTicks(); + uint32_t savedIntrStatus; + bool coastTracking; + bool invalidState; + + for(;;) + { + Motor_ServiceAll(); + Motor_CalibrationServiceHook(); + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + coastTracking = motorRuntime[index].coastTracking; + invalidState = (false != driverFaultLatched) || + (false == Motor_CommandIsCurrentUnsafe( + &motorRuntime[index])) || + (motorRuntime[index].direction != + MOTOR_DIRECTION_STOPPED) || + (false != motorRuntime[index].startPending) || + (motorRuntime[index].pendingEvent != MOTOR_EVENT_NONE); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false != invalidState) + { + return false; + } + if(false == coastTracking) + { + return true; + } + if((uint32_t)(MotorControl_GetTicks() - waitStartTicks) >= + MOTOR_MS_TO_TICKS(MOTOR_COAST_SETTLE_TIMEOUT_MS)) + { + return false; + } + + if(false != watchdogServiceEnabled) + { + Cy_WDT_ClearWatchdog(); + } + __WFI(); + } +} + +static void Motor_UpdateCalibrationTravel(uint32_t motorIndex, + uint32_t rawRisingStart, + uint32_t rawTotalStart, + uint32_t *travelPulses, + uint32_t *travelEdges) +{ + uint32_t rawRisingEnd; + uint32_t rawTotalEnd; + uint32_t savedIntrStatus; + + if((NULL != travelPulses) || (NULL != travelEdges)) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + rawRisingEnd = motorRuntime[motorIndex].rawRisingEdges; + rawTotalEnd = motorRuntime[motorIndex].rawTotalEdges; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + if(NULL != travelPulses) + { + *travelPulses = rawRisingEnd - rawRisingStart; + } + if(NULL != travelEdges) + { + *travelEdges = rawTotalEnd - rawTotalStart; + } + } +} + +static uint8_t Motor_CalibrationProbeMotion( + motor_mode_t mode, + motor_direction_t direction, + uint32_t legTimeoutMs, + uint32_t *travelEdges) +{ + uint32_t index = (uint32_t)mode; + uint32_t verifyEdges = MOTOR_HOME_PROBE_VERIFY_EDGES; + uint32_t rawTotalStart; + uint32_t rawTotalEnd; + uint32_t savedIntrStatus; + motor_event_t lastEvent; + motor_direction_t currentDirection; + bool startPending; + + if(NULL != travelEdges) + { + *travelEdges = 0ul; + } + + /* A Hall-only endpoint search cannot distinguish "already at endpoint" + * from "bridge energized but the loaded motor never started". When a + * near seek reports an endpoint with too little travel, move across a few + * real Hall transitions and then let the caller seek near again. Both + * edges are used for this proof so its result does not depend on Hall + * phase or travel direction. */ + if(false == Motor_WaitForCoastToSettle(mode)) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + motorRuntime[index].calibrationTimeoutTicks = + MOTOR_MS_TO_TICKS(legTimeoutMs); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(MOTOR_API_SUCCESS != + Motor_StartDirectionInternal(mode, + direction, + false, + 0ul, + true, + true, + MOTOR_DIRECTION_STOPPED, + false)) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + /* Captured atomically with PWM commit by + * Motor_ResetActivityWindowUnsafe(). */ + rawTotalStart = motorRuntime[index].activityTotalBaseline; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + for(;;) + { + Motor_ServiceAll(); + Motor_CalibrationServiceHook(); + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + rawTotalEnd = motorRuntime[index].rawTotalEdges; + lastEvent = motorRuntime[index].lastEvent; + currentDirection = motorRuntime[index].direction; + startPending = motorRuntime[index].startPending; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if((rawTotalEnd - rawTotalStart) >= verifyEdges) + { + if((MOTOR_API_SUCCESS != Motor_StopMode(mode)) || + (false == Motor_WaitForCoastToSettle(mode))) + { + Motor_UpdateCalibrationTravel(index, + 0ul, + rawTotalStart, + NULL, + travelEdges); + return MOTOR_API_FAILURE; + } + Motor_UpdateCalibrationTravel(index, + 0ul, + rawTotalStart, + NULL, + travelEdges); + return MOTOR_API_SUCCESS; + } + + if((lastEvent != MOTOR_EVENT_NONE) || + ((currentDirection == MOTOR_DIRECTION_STOPPED) && + (false == startPending))) + { + (void)Motor_StopMode(mode); + (void)Motor_WaitForCoastToSettle(mode); + Motor_UpdateCalibrationTravel(index, + 0ul, + rawTotalStart, + NULL, + travelEdges); + return MOTOR_API_FAILURE; + } + + if(false != watchdogServiceEnabled) + { + Cy_WDT_ClearWatchdog(); + } + __WFI(); + } +} + +static uint8_t Motor_CalibrationSeekEndpoint(motor_mode_t mode, + motor_direction_t direction, + uint32_t legTimeoutMs, + uint32_t *travelPulses, + uint32_t *travelEdges) +{ + uint32_t index = (uint32_t)mode; + uint32_t rawRisingStart; + uint32_t rawRisingEnd; + uint32_t rawTotalStart; + uint32_t rawTotalEnd; + uint32_t savedIntrStatus; + motor_event_t expectedEvent = + (direction == MOTOR_DIRECTION_TOWARD_NEAR) ? + MOTOR_EVENT_NEAR_ENDPOINT : MOTOR_EVENT_FAR_ENDPOINT; + motor_event_t lastEvent; + motor_direction_t currentDirection; + bool startPending; + bool coastTracking; + + if(NULL != travelPulses) + { + *travelPulses = 0ul; + } + if(NULL != travelEdges) + { + *travelEdges = 0ul; + } + + /* Exclude residual motion from a previous operation or calibration leg. + * This wait is Hall-only and bounded, matching the observable hardware. */ + if(false == Motor_WaitForCoastToSettle(mode)) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + motorRuntime[index].calibrationTimeoutTicks = + MOTOR_MS_TO_TICKS(legTimeoutMs); + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(MOTOR_API_SUCCESS != + Motor_StartDirectionInternal(mode, + direction, + false, + 0ul, + true, + true, + MOTOR_DIRECTION_STOPPED, + false)) + { + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + /* Motor_ResetActivityWindowUnsafe captured both baselines in the same + * critical section that committed PWM start, after the bridge SPI phase. */ + rawRisingStart = motorRuntime[index].activityRisingBaseline; + rawTotalStart = motorRuntime[index].activityTotalBaseline; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + for(;;) + { + Motor_ServiceAll(); + Motor_CalibrationServiceHook(); + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + lastEvent = motorRuntime[index].lastEvent; + currentDirection = motorRuntime[index].direction; + startPending = motorRuntime[index].startPending; + coastTracking = motorRuntime[index].coastTracking; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if((lastEvent == expectedEvent) && + (currentDirection == MOTOR_DIRECTION_STOPPED) && + (false == startPending)) + { + if((false != coastTracking) && + (false == Motor_WaitForCoastToSettle(mode))) + { + (void)Motor_StopMode(mode); + Motor_UpdateCalibrationTravel(index, + rawRisingStart, + rawTotalStart, + travelPulses, + travelEdges); + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((motorRuntime[index].lastEvent != expectedEvent) || + (motorRuntime[index].direction != MOTOR_DIRECTION_STOPPED) || + (false != motorRuntime[index].startPending) || + (false != motorRuntime[index].coastTracking) || + (false == Motor_CommandIsCurrentUnsafe( + &motorRuntime[index])) || + (false != driverFaultLatched)) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + (void)Motor_StopMode(mode); + Motor_UpdateCalibrationTravel(index, + rawRisingStart, + rawTotalStart, + travelPulses, + travelEdges); + return MOTOR_API_FAILURE; + } + rawRisingEnd = motorRuntime[index].rawRisingEdges; + rawTotalEnd = motorRuntime[index].rawTotalEdges; + motorRuntime[index].calibrating = false; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + if(NULL != travelPulses) + { + *travelPulses = rawRisingEnd - rawRisingStart; + } + if(NULL != travelEdges) + { + *travelEdges = rawTotalEnd - rawTotalStart; + } + return MOTOR_API_SUCCESS; + } + + if((lastEvent != MOTOR_EVENT_NONE) || + ((currentDirection == MOTOR_DIRECTION_STOPPED) && + (false == startPending))) + { + (void)Motor_StopMode(mode); + (void)Motor_WaitForCoastToSettle(mode); + Motor_UpdateCalibrationTravel(index, + rawRisingStart, + rawTotalStart, + travelPulses, + travelEdges); + return MOTOR_API_FAILURE; + } + + if(false != watchdogServiceEnabled) + { + Cy_WDT_ClearWatchdog(); + } + __WFI(); + } +} + +static bool Motor_CalibrationRangeIsPlausible(uint32_t motorIndex, + uint32_t measuredPulses) +{ + uint64_t nominal = motorProfiles[motorIndex].defaultMaxHallCount; + uint64_t minimum = + (nominal * MOTOR_CALIBRATION_RANGE_MIN_PERCENT) / 100ull; + uint64_t maximum = + (nominal * MOTOR_CALIBRATION_RANGE_MAX_PERCENT) / 100ull; + + return (measuredPulses >= 8ul) && + (((uint64_t)measuredPulses) >= minimum) && + (((uint64_t)measuredPulses) <= maximum); +} + +uint8_t Motor_Calibrate(motor_mode_t mode, + motor_calibration_action_t action, + uint32_t legTimeoutMs, + motor_calibration_result_t *result) +{ + motor_calibration_result_t localResult; + uint32_t index = (uint32_t)mode; + uint32_t measuredPulses = 0ul; + uint32_t measuredEdges = 0ul; + uint32_t probeEdges = 0ul; + uint32_t preloadEdges = 0ul; + uint8_t probeAttempt = 0u; +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) + uint32_t firstNearPulses = 0ul; + uint32_t firstNearEdges = 0ul; +#endif + uint32_t previousMaxHallCount = 0ul; + uint32_t speedDurationMs = 0ul; + uint32_t speedTravelValueX100 = 0ul; + uint32_t speedPlannedHallPulses = 0ul; + uint32_t speedTargetPpsX100 = 0ul; + uint32_t savedIntrStatus; + uint8_t speedInitialDutyPercent = (uint8_t)MOTOR_PWM_DUTY_PERCENT; + uint8_t status = MOTOR_API_FAILURE; + bool speedPlanEnabled = false; + bool speedPlanValid = false; + + localResult.nearEndpointFound = false; + localResult.farEndpointFound = false; + localResult.measuredMaxHallCount = 0ul; + + if((false == motorControlReady) || (false == Motor_ModeIsValid(mode)) || + (false != safetyInhibitLatched) || (false != driverFaultLatched) || + (0ul == legTimeoutMs) || + ((action != MOTOR_CALIBRATE_FIND_NEAR) && + (action != MOTOR_CALIBRATE_FIND_FAR) && + (action != MOTOR_CALIBRATE_FIND_BOTH))) + { + if(NULL != result) + { + *result = localResult; + } + return MOTOR_API_FAILURE; + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index])) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + if(NULL != result) + { + *result = localResult; + } + return MOTOR_API_FAILURE; + } + previousMaxHallCount = motorRuntime[index].maxHallCount; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(MOTOR_API_SUCCESS != Motor_StopMode(mode)) + { + goto calibration_failed; + } + + MOTOR_LOG("CAL_START mode=%lu profile=%s action=%lu\r\n", + (unsigned long)index, + motorProfiles[index].name, + (unsigned long)action); + + if(action == MOTOR_CALIBRATE_FIND_NEAR) + { + status = Motor_CalibrationSeekEndpoint( + mode, MOTOR_DIRECTION_TOWARD_NEAR, + legTimeoutMs, &measuredPulses, &measuredEdges); +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) + firstNearPulses = measuredPulses; + firstNearEdges = measuredEdges; +#endif + if((status == MOTOR_API_SUCCESS) && + (measuredEdges < MOTOR_HOME_PROBE_VERIFY_EDGES)) + { + /* Do not turn a non-start into a fake Hall zero. A genuine + * already-near condition is proved by moving across several Hall + * edges toward far and seeking the same path back toward near. */ + /* A loaded mechanism can need more than one bounded energize + * cycle to leave a mechanical hard stop. Retry the departure, + * but still require real Hall edges before accepting the home. + * This improves endpoint breakaway without weakening the open + * Hall / disconnected-motor diagnostic. Keep the same four-edge + * proof on M3 as the other axes: accepting a single complete Hall + * pulse can make a temporarily stuck legrest look like a real + * mechanical endpoint and incorrectly rewrite its position to + * Hall=0 before the linkage is fully lowered. */ + for(probeAttempt = 0u; probeAttempt < 3u; probeAttempt++) + { + status = Motor_CalibrationProbeMotion( + mode, + MOTOR_DIRECTION_TOWARD_FAR, + legTimeoutMs, + &probeEdges); + if(status == MOTOR_API_SUCCESS) + { + break; + } + if((mode == MOTOR_MODE_3_LINEAR_TRACK) && + (MOTOR_API_SUCCESS != Motor_SetFixedDutyPercent( + mode, SEAT_MOVE_M3_BREAKAWAY_DUTY_PERCENT))) + { + status = MOTOR_API_FAILURE; + break; + } + /* A failed probe has already stopped and settled the bridge. + * Briefly re-energize toward the known hard stop before the + * next departure. On the loaded M3 linkage this alternating + * preload releases static lash which repeated starts in the + * same direction do not. Its result is deliberately ignored: + * only a later far probe with real Hall edges can pass. */ + if(probeAttempt < 2u) + { + preloadEdges = 0ul; + (void)Motor_CalibrationProbeMotion( + mode, + MOTOR_DIRECTION_TOWARD_NEAR, + legTimeoutMs, + &preloadEdges); + } + } + if(status == MOTOR_API_SUCCESS) + { + status = Motor_CalibrationSeekEndpoint( + mode, MOTOR_DIRECTION_TOWARD_NEAR, + legTimeoutMs, &measuredPulses, &measuredEdges); + if((status == MOTOR_API_SUCCESS) && + (((uint64_t)measuredEdges + + MOTOR_HOME_RETURN_EDGE_TOLERANCE) < + (uint64_t)probeEdges)) + { + status = MOTOR_API_FAILURE; + } + } + } +#if (MOTOR_DIAGNOSTIC_LOG_ENABLE != 0u) + MOTOR_LOG("CAL_HOME_VERIFY mode=%lu first_rising=%lu " + "first_edges=%lu probe_edges=%lu return_rising=%lu " + "return_edges=%lu status=%lu\r\n", + (unsigned long)index, + (unsigned long)firstNearPulses, + (unsigned long)firstNearEdges, + (unsigned long)probeEdges, + (unsigned long)measuredPulses, + (unsigned long)measuredEdges, + (unsigned long)status); +#endif + if(status == MOTOR_API_SUCCESS) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index])) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + status = MOTOR_API_FAILURE; + goto calibration_failed; + } + motorRuntime[index].positionHallCount = 0ul; + motorRuntime[index].positionValid = true; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + localResult.nearEndpointFound = true; + } + else + { + status = MOTOR_API_FAILURE; + } + } + else if(action == MOTOR_CALIBRATE_FIND_FAR) + { + status = Motor_CalibrationSeekEndpoint( + mode, MOTOR_DIRECTION_TOWARD_FAR, + legTimeoutMs, &measuredPulses, NULL); + if(status == MOTOR_API_SUCCESS) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index])) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + status = MOTOR_API_FAILURE; + goto calibration_failed; + } + motorRuntime[index].positionHallCount = previousMaxHallCount; + motorRuntime[index].positionValid = true; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + localResult.farEndpointFound = true; + } + else + { + status = MOTOR_API_FAILURE; + } + } + else + { + status = Motor_CalibrationSeekEndpoint( + mode, MOTOR_DIRECTION_TOWARD_NEAR, legTimeoutMs, NULL, NULL); + if(status == MOTOR_API_SUCCESS) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index])) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + status = MOTOR_API_FAILURE; + goto calibration_failed; + } + motorRuntime[index].positionHallCount = 0ul; + motorRuntime[index].positionValid = false; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + localResult.nearEndpointFound = true; + status = Motor_CalibrationSeekEndpoint( + mode, MOTOR_DIRECTION_TOWARD_FAR, + legTimeoutMs, &measuredPulses, NULL); + } + + if((status == MOTOR_API_SUCCESS) && + Motor_CalibrationRangeIsPlausible(index, measuredPulses)) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + speedPlanEnabled = motorRuntime[index].speedControlEnabled; + speedDurationMs = motorRuntime[index].speedDurationMs; + speedTravelValueX100 = + motorRuntime[index].speedTravelValueX100; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + + if(false != speedPlanEnabled) + { + speedPlanValid = Motor_CalculateSpeedPlan( + index, + measuredPulses, + speedDurationMs, + speedTravelValueX100, + &speedPlannedHallPulses, + &speedTargetPpsX100, + &speedInitialDutyPercent); + } + + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if(false == Motor_CommandIsCurrentUnsafe(&motorRuntime[index])) + { + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + status = MOTOR_API_FAILURE; + goto calibration_failed; + } + motorRuntime[index].maxHallCount = measuredPulses; + motorRuntime[index].positionHallCount = measuredPulses; + motorRuntime[index].positionValid = true; + if(false != speedPlanEnabled) + { + if(false != speedPlanValid) + { + motorRuntime[index].speedPlannedHallPulses = + speedPlannedHallPulses; + motorRuntime[index].speedTargetPpsX100 = + speedTargetPpsX100; + motorRuntime[index].speedInitialDutyPercent = + speedInitialDutyPercent; + motorRuntime[index].speedCurrentDutyPercent = + speedInitialDutyPercent; + Motor_ResetSpeedMeasurementUnsafe(&motorRuntime[index]); + } + else + { + /* A range change can make an old physical speed plan + * exceed the measured motor maximum. Disable it rather + * than silently commanding an impossible speed. */ + motorRuntime[index].speedControlEnabled = false; + motorRuntime[index].speedDurationMs = 0ul; + motorRuntime[index].speedTravelValueX100 = 0ul; + motorRuntime[index].speedPlannedHallPulses = 0ul; + motorRuntime[index].speedTargetPpsX100 = 0ul; + motorRuntime[index].speedActualPpsX100 = 0ul; + motorRuntime[index].speedInitialDutyPercent = + (uint8_t)MOTOR_PWM_DUTY_PERCENT; + motorRuntime[index].speedCurrentDutyPercent = + (uint8_t)MOTOR_PWM_DUTY_PERCENT; + } + } + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + localResult.farEndpointFound = true; + localResult.measuredMaxHallCount = measuredPulses; + } + else + { + status = MOTOR_API_FAILURE; + } + } + + if((status == MOTOR_API_SUCCESS) && + (action != MOTOR_CALIBRATE_FIND_BOTH)) + { + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + localResult.measuredMaxHallCount = motorRuntime[index].maxHallCount; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + } + +calibration_failed: + if(status != MOTOR_API_SUCCESS) + { + if(false == driverFaultLatched) + { + (void)Motor_StopMode(mode); + } + + /* Physical motion cannot be rolled back. Preserve the live Hall + * count, but invalidate the absolute position after any failed + * calibration. Only the uncommitted range parameter is restored. */ + savedIntrStatus = Cy_SysLib_EnterCriticalSection(); + if((action == MOTOR_CALIBRATE_FIND_BOTH) && + (false != localResult.nearEndpointFound)) + { + /* The near endpoint established a new zero. Keep every observed + * far-leg pulse even when it exceeds the previous range. */ + motorRuntime[index].positionHallCount = measuredPulses; + } + motorRuntime[index].maxHallCount = previousMaxHallCount; + motorRuntime[index].positionValid = false; + motorRuntime[index].calibrating = false; + motorRuntime[index].operationActive = false; + motorRuntime[index].lastEvent = (false != driverFaultLatched) ? + MOTOR_EVENT_DRIVER_FAULT : + MOTOR_EVENT_CALIBRATION_FAILED; + Cy_SysLib_ExitCriticalSection(savedIntrStatus); + } + + if(NULL != result) + { + *result = localResult; + } + + MOTOR_LOG("CAL_DONE mode=%lu status=%lu near=%lu far=%lu max_hall=%lu\r\n", + (unsigned long)index, + (unsigned long)status, + (unsigned long)((false != localResult.nearEndpointFound) ? 1ul : 0ul), + (unsigned long)((false != localResult.farEndpointFound) ? 1ul : 0ul), + (unsigned long)localResult.measuredMaxHallCount); + return status; +} + +uint8_t Motor0_GetPosition(motor_position_info_t *info) +{ + return Motor_GetPositionInfo(MOTOR_MODE_0_LINEAR, info); +} + +uint8_t Motor1_GetPosition(motor_position_info_t *info) +{ + return Motor_GetPositionInfo(MOTOR_MODE_1_ANGLE, info); +} + +uint8_t Motor2_GetAngle(motor_position_info_t *info) +{ + return Motor_GetPositionInfo(MOTOR_MODE_2_ANGLE, info); +} + +uint8_t Motor3_GetAngle(motor_position_info_t *info) +{ + return Motor_GetPositionInfo(MOTOR_MODE_3_LINEAR_TRACK, info); +} + +uint8_t Motor0_MoveToPositionMmX100(uint32_t positionMmX100) +{ + return Motor_MoveToValue(MOTOR_MODE_0_LINEAR, positionMmX100); +} + +uint8_t Motor1_MoveToVerticalMmX100(uint32_t verticalMmX100) +{ + return Motor_MoveToValue(MOTOR_MODE_1_ANGLE, verticalMmX100); +} + +uint8_t Motor2_MoveToAngleDegX100(uint32_t angleDegX100) +{ + return Motor_MoveToValue(MOTOR_MODE_2_ANGLE, angleDegX100); +} + +uint8_t Motor3_MoveToAngleDegX100(uint32_t angleDegX100) +{ + return Motor_MoveToValue(MOTOR_MODE_3_LINEAR_TRACK, angleDegX100); +} + +uint8_t Motor0_SetSpeedPlan(uint32_t durationMs, uint32_t distanceMmX100) +{ + return Motor_SetSpeedPlan(MOTOR_MODE_0_LINEAR, + durationMs, + distanceMmX100); +} + +uint8_t Motor1_SetSpeedPlan(uint32_t durationMs, uint32_t verticalMmX100) +{ + return Motor_SetSpeedPlan(MOTOR_MODE_1_ANGLE, + durationMs, + verticalMmX100); +} + +uint8_t Motor2_SetSpeedPlan(uint32_t durationMs, uint32_t angleDegX100) +{ + return Motor_SetSpeedPlan(MOTOR_MODE_2_ANGLE, + durationMs, + angleDegX100); +} + +uint8_t Motor3_SetSpeedPlan(uint32_t durationMs, uint32_t angleDegX100) +{ + return Motor_SetSpeedPlan(MOTOR_MODE_3_LINEAR_TRACK, + durationMs, + angleDegX100); +} + +uint8_t Motor_Init(void) +{ + bool driverInitOk; + bool currentSenseInitOk; + + MOTOR_LOG("\r\nCYT4BFBCJE CM0+ DRV8718S-Q1 motor demo start\r\n"); + + safetyInhibitLatched = false; + BoardPins_Init(); + Scb4Spi_Init(); + driverInitOk = Drv8718_Init(); + currentSenseInitOk = BspSeatCurrentAdc_Init(); + MotorControlTimers_Init(); + if((false == driverInitOk) || (false == currentSenseInitOk) || + !Motor_PrimeCurrentSensing()) + { + Motor_EnterDriverFault(); + return MOTOR_API_FAILURE; + } + + MOTOR_LOG("MOTOR_TIMING pwm_hz=%lu hall_sample_us=%lu safety_check_ms=%lu " + "window_ms=%lu startup_grace_ms=%lu/%lu/%lu/%lu " + "endpoint_edge_threshold=%lu stall_edge_threshold=%lu\r\n", + (unsigned long)MOTOR_PWM_FREQUENCY_HZ, + (unsigned long)HALL_SAMPLE_INTERVAL_US, + (unsigned long)MOTOR_SAFETY_CHECK_INTERVAL_MS, + (unsigned long)MOTOR_SAFETY_WINDOW_MS, + (unsigned long)MOTOR_MODE0_STARTUP_GRACE_MS, + (unsigned long)MOTOR_MODE1_STARTUP_GRACE_MS, + (unsigned long)MOTOR_MODE2_STARTUP_GRACE_MS, + (unsigned long)MOTOR_MODE3_STARTUP_GRACE_MS, + (unsigned long)MOTOR_ENDPOINT_EDGE_THRESHOLD, + (unsigned long)MOTOR_STALL_EDGE_THRESHOLD); + + MOTOR_LOG("MOTOR_CURRENT sample_ms=%lu max_age_ms=%lu " + "confirm_ms=%lu no_motion_ms=%lu thresholds=%u/%u/%u/%u\r\n", + (unsigned long)SEAT_MOVE_MOTOR_CURRENT_SAMPLE_MS, + (unsigned long)SEAT_MOVE_MOTOR_CURRENT_MAX_AGE_MS, + (unsigned long)SEAT_MOVE_MOTOR_STALL_CURRENT_CONFIRM_MS, + (unsigned long)SEAT_MOVE_MOTOR_NO_MOTION_TIMEOUT_MS, + (unsigned int)motorProfiles[0].stallCurrentDeltaRaw, + (unsigned int)motorProfiles[1].stallCurrentDeltaRaw, + (unsigned int)motorProfiles[2].stallCurrentDeltaRaw, + (unsigned int)motorProfiles[3].stallCurrentDeltaRaw); + + MOTOR_LOG("MOTOR_READY position_is_invalid_until_endpoint_calibration\r\n"); + + return MOTOR_API_SUCCESS; +} + +/* [] END OF FILE */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.h b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.h new file mode 100644 index 0000000..ffe68d4 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/Driver/motor_control.h @@ -0,0 +1,277 @@ +#ifndef MOTOR_CONTROL_H +#define MOTOR_CONTROL_H + +#include +#include + +#define MOTOR_API_SUCCESS (0u) +#define MOTOR_API_FAILURE (1u) +#define MOTOR_PHYSICAL_VALUE_SCALE (100ul) + +/* + * 2026-07-30 endpoint-to-endpoint range calibration. Bench verification + * established identity mapping: logical M0..M3 use physical mode 0..3. + */ +#define MOTOR_MODE0_DEFAULT_MAX_HALL_COUNT (480ul) /* horizontal */ +#define MOTOR_MODE0_MAX_POSITION_MM_X100 (21500ul) +#define MOTOR_MODE1_DEFAULT_MAX_HALL_COUNT (374ul) /* seat pan */ +#define MOTOR_MODE1_MAX_VERTICAL_MM_X100 (5600ul) +#define MOTOR_MODE1_MAX_HORIZONTAL_MM_X100 (5100ul) +/* Compatibility name used by the generic scalar position API. */ +#define MOTOR_MODE1_MAX_ANGLE_DEG_X100 \ + MOTOR_MODE1_MAX_VERTICAL_MM_X100 +#define MOTOR_MODE2_DEFAULT_MAX_HALL_COUNT (917ul) /* backrest */ +#define MOTOR_MODE2_MAX_ANGLE_DEG_X100 (6800ul) +#define MOTOR_MODE3_DEFAULT_MAX_HALL_COUNT (647ul) /* legrest */ +#define MOTOR_MODE3_MAX_ANGLE_DEG_X100 (7200ul) +/* Compatibility name used by the generic scalar position API. */ +#define MOTOR_MODE3_MAX_POSITION_MM_X100 \ + MOTOR_MODE3_MAX_ANGLE_DEG_X100 + +#define MOTOR_SPEED_VALUE_SCALE (100ul) +#define MOTOR_SPEED_MIN_DUTY_PERCENT (50u) +#define MOTOR_SPEED_MAX_DUTY_PERCENT (95u) +#define MOTOR_SPEED_DUTY_STEP_PERCENT (5u) +#define MOTOR_MODE0_MAX_SPEED_PPS_X100 (8600ul) +#define MOTOR_MODE1_MAX_SPEED_PPS_X100 (6100ul) +#define MOTOR_MODE2_MAX_SPEED_PPS_X100 (9000ul) +#define MOTOR_MODE3_MAX_SPEED_PPS_X100 (8600ul) + +typedef enum +{ + MOTOR_MODE_0_LINEAR = 0, + MOTOR_MODE_1_ANGLE, + MOTOR_MODE_2_ANGLE, + MOTOR_MODE_3_LINEAR_TRACK, + MOTOR_MODE_COUNT +} motor_mode_t; + +typedef enum +{ + MOTOR_DIRECTION_STOPPED = 0, + MOTOR_DIRECTION_TOWARD_FAR, + MOTOR_DIRECTION_TOWARD_NEAR +} motor_direction_t; + +typedef enum +{ + MOTOR_EVENT_NONE = 0, + MOTOR_EVENT_TARGET_REACHED, + MOTOR_EVENT_NEAR_ENDPOINT, + MOTOR_EVENT_FAR_ENDPOINT, + MOTOR_EVENT_STALL, + MOTOR_EVENT_TIMEOUT, + MOTOR_EVENT_ABORTED, + MOTOR_EVENT_DRIVER_FAULT, + MOTOR_EVENT_CALIBRATION_FAILED +} motor_event_t; + +typedef enum +{ + MOTOR_CALIBRATE_FIND_NEAR = 0, + MOTOR_CALIBRATE_FIND_FAR, + MOTOR_CALIBRATE_FIND_BOTH +} motor_calibration_action_t; + +typedef struct +{ + motor_mode_t mode; + bool positionValid; + motor_direction_t direction; + motor_event_t lastEvent; + uint32_t hallCount; + uint32_t maxHallCount; + uint32_t valueX100; + uint32_t maxValueX100; + uint32_t positionMmX100; + uint32_t horizontalMmX100; + uint32_t verticalMmX100; + uint32_t angleDegX100; + uint32_t percentX100; +} motor_position_info_t; + +typedef struct +{ + bool reverseAtEndpoint; + bool reverseAtStall; +} motor_safety_options_t; + +typedef struct +{ + bool nearEndpointFound; + bool farEndpointFound; + uint32_t measuredMaxHallCount; +} motor_calibration_result_t; + +typedef struct +{ + motor_mode_t mode; + bool enabled; + uint32_t durationMs; + uint32_t travelValueX100; + uint32_t plannedHallPulses; + uint32_t targetPulsesPerSecondX100; + uint32_t actualPulsesPerSecondX100; + uint8_t initialDutyPercent; + uint8_t currentDutyPercent; +} motor_speed_info_t; + +typedef struct +{ + motor_mode_t mode; + bool sampleValid; + bool baselineValid; + bool highCurrent; + bool hallActivityLow; + bool calibrating; + uint16_t raw; + uint16_t baselineRaw; + uint16_t deltaRaw; + uint16_t stallThresholdRaw; + uint32_t sampleAgeMs; +} motor_current_info_t; + +typedef struct +{ + uint32_t positionHallCount; + uint32_t maxHallCount; + uint32_t maxSpeedPulsesPerSecondX100; + uint32_t rawRisingEdges; + bool positionValid; +} motor_persistent_state_t; + +/* Hardware initialization. SystemInit() and global IRQ enable remain owned by main. */ +uint8_t Motor_Init(void); +/* Immediate GPIO-only safe state, also valid before Motor_Init(). */ +void Motor_ForceSafeOff(void); + +/* The Hall timebase is a precise 2 ms hardware interrupt. */ +uint32_t Motor_GetTimeMs(void); +void Motor_SetWatchdogServiceEnabled(bool enabled); + +/* + * Physical values use fixed point x100: 215.00 mm is 21500 and + * 68.00 degrees is 6800. positionValid is restored from a verified clean + * record or becomes true after a known endpoint has been found. + * + * Ownership contract: call all control APIs and Motor_ServiceAll from one + * main-loop/owner context. They are not ISR-safe, thread-safe, or reentrant. + * The four motors may still run concurrently after sequential non-blocking + * start calls from that owner. + */ +uint8_t Motor_GetPositionInfo(motor_mode_t mode, motor_position_info_t *info); +uint8_t Motor_GetCurrentInfo(motor_mode_t mode, motor_current_info_t *info); + +/* Each mode has independent endpoint and stall reverse switches. */ +uint8_t Motor_SetSafetyOptions(motor_mode_t mode, + const motor_safety_options_t *options); + +/* Open-loop primitives used by the standardized application controller. */ +uint8_t Motor_SetFixedDutyPercent(motor_mode_t mode, uint8_t dutyPercent); +uint8_t Motor_StartOpenLoop(motor_mode_t mode, motor_direction_t direction); +bool Motor_IsMoving(motor_mode_t mode); +/* Complete a commanded stop plus bounded Hall-coast tracking before a + * safety decision that requires the mechanism to be physically settled. */ +bool Motor_WaitUntilStopped(motor_mode_t mode); + +/* + * Restore/store Hall-domain state. These calls are accepted only while the + * selected motor is stopped. max speed uses Hall rising edges/s x100. + */ +uint8_t Motor_ValidatePersistentState(motor_mode_t mode, + const motor_persistent_state_t *state); +uint8_t Motor_ApplyPersistentState(motor_mode_t mode, + const motor_persistent_state_t *state); +uint8_t Motor_GetPersistentState(motor_mode_t mode, + motor_persistent_state_t *state); +/* Bench HIL support: invalidate only the stopped axis' absolute-position + * confidence while preserving its measured Hall count and confirmed range. + * Production command handling never calls this API. */ +uint8_t Motor_InvalidatePosition(motor_mode_t mode); +uint8_t Motor_SetMaximumSpeedPpsX100(motor_mode_t mode, + uint32_t maxSpeedPpsX100); + +/* + * Pair an owner-context command with cancellation published asynchronously. + * An acknowledge succeeds when no cancellation is pending, or when sequence + * exactly matches it. It fails if a newer cancellation has already arrived. + */ +uint8_t Motor_AcknowledgeCommand(motor_mode_t mode, uint16_t sequence); +bool Motor_IsCommandCurrent(motor_mode_t mode, uint16_t sequence); + +/* + * Start is non-blocking and permits all four modes to move concurrently. + * Wait and MoveToValue return 0 only after the target is reached; endpoint, + * stall, invalid position, invalid target, and timeout return 1. + * Replacing a target still ahead in the same direction does not restart PWM + * or refresh safety/timeout clocks. A direction change waits at least 100 ms + * and until Hall has been quiet for 100 ms. Crossing a target stops PWM once; + * residual Hall pulses remain in the global position and may leave the final + * count beyond the target. No automatic reverse correction is performed. + * If a safety reverse is enabled, Wait remains blocked until that reverse has + * stopped at its next safety event or at the absolute operation timeout. + */ +uint8_t Motor_StartMoveToValue(motor_mode_t mode, uint32_t targetValueX100); +uint8_t Motor_WaitForMove(motor_mode_t mode); +uint8_t Motor_MoveToValue(motor_mode_t mode, uint32_t targetValueX100); +uint8_t Motor_StopMode(motor_mode_t mode); + +/* + * Configure closed-loop speed from a planned travel amount and duration. + * durationMs is milliseconds. travelValueX100 is mm x100 for mode 0 and + * degrees x100 for modes 1/2, and mm x100 for mode 3. This configures speed + * only; use an existing move API to start motion. After each real PWM start + * the controller waits + * 500 ms, then evaluates a 500 ms rolling Hall window every 100 ms. A speed + * error outside +/-10 percent changes that motor's duty by one 5 percent step. + */ +uint8_t Motor_SetSpeedPlan(motor_mode_t mode, + uint32_t durationMs, + uint32_t travelValueX100); +uint8_t Motor_DisableSpeedControl(motor_mode_t mode); +uint8_t Motor_GetSpeedInfo(motor_mode_t mode, motor_speed_info_t *info); + +/* + * Calibration is blocking for the selected mode; other active modes continue. + * A new range is committed only after validation. Failure restores the old + * range, preserves observed motion, and invalidates absolute position because + * physical travel cannot be rolled back. Each leg requires Hall coast + * tracking to settle before/after travel; quiet wait is bounded to five seconds. + * legTimeoutMs is the independent motion timeout applied to each endpoint leg. + */ +uint8_t Motor_Calibrate(motor_mode_t mode, + motor_calibration_action_t action, + uint32_t legTimeoutMs, + motor_calibration_result_t *result); + +/* Application override used to keep CAN/status/safety services alive while + * the selected motor executes the blocking endpoint-calibration primitive. */ +void Motor_CalibrationServiceHook(void); + +/* Call continuously from the main loop; the ISR still kills PWM immediately. */ +void Motor_ServiceAll(void); + +/* ISR-safe immediate PWM kill; bridge Hi-Z is completed by Motor_ServiceAll. */ +void Motor_RequestAbortMaskFromIsr(uint8_t motorMask, uint16_t sequence); +void Motor_RequestAbortAllFromIsr(uint16_t sequence); +/* Irreversible until reset; unlike STOP, no sequence acknowledge can clear it. */ +void Motor_LatchSafetyInhibitFromIsr(uint16_t sequence); +void Motor_StopAll(void); + +/* A latched driver fault requires a power cycle before motion is accepted. */ +bool Motor_IsDriverFaultLatched(void); + +uint8_t Motor0_GetPosition(motor_position_info_t *info); +uint8_t Motor1_GetPosition(motor_position_info_t *info); +uint8_t Motor2_GetAngle(motor_position_info_t *info); +uint8_t Motor3_GetAngle(motor_position_info_t *info); +uint8_t Motor0_MoveToPositionMmX100(uint32_t positionMmX100); +uint8_t Motor1_MoveToVerticalMmX100(uint32_t verticalMmX100); +uint8_t Motor2_MoveToAngleDegX100(uint32_t angleDegX100); +uint8_t Motor3_MoveToAngleDegX100(uint32_t angleDegX100); +uint8_t Motor0_SetSpeedPlan(uint32_t durationMs, uint32_t distanceMmX100); +uint8_t Motor1_SetSpeedPlan(uint32_t durationMs, uint32_t verticalMmX100); +uint8_t Motor2_SetSpeedPlan(uint32_t durationMs, uint32_t angleDegX100); +uint8_t Motor3_SetSpeedPlan(uint32_t durationMs, uint32_t angleDegX100); + +#endif /* MOTOR_CONTROL_H */ diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewd b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewd new file mode 100644 index 0000000..557cdc1 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewd @@ -0,0 +1,1619 @@ + + + 4 + + rev_d + + ARM + + 1 + + C-SPY + 2 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewp b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewp new file mode 100644 index 0000000..88a9886 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.ewp @@ -0,0 +1,2359 @@ + + + 4 + + rev_d + + ARM + + 1 + + General + 3 + + 36 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 38 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + ILINK + 0 + + 27 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BUILDACTION + 2 + + + + + hdr + + cmsis + + include + + $PROJ_DIR$\..\..\common\hdr\cmsis\include\cmsis_compiler.h + + + $PROJ_DIR$\..\..\common\hdr\cmsis\include\core_cm0plus.h + + + + + rev_b + + rev_c + rev_d + rtos + + + ip + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_backup_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_canfd.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_cpuss.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_crypto.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_dmac.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_dw.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_efuse_data_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_efuse_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_eth.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_evtgen.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_fault.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_flashc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_flexray.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_gpio_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_headers.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_hsiom_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_i2s_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_ipc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_lin.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_pass.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_peri_ms_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_peri_pclk_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_peri_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_prot.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_scb_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_sdhc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_sflash_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_smartio_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_smif_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_srss_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\ip\cyip_tcpwm_v2.h + + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\bb_bsp_tviibh8m.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\cy_device_headers.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_b\cyt4bf_config.h + + + + rev_c + + rev_b + rev_d + rtos + + + ip + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_backup_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_canfd.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_cpuss.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_crypto.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_dmac.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_dw.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_efuse_data_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_efuse_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_eth.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_evtgen.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_fault.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_flashc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_flexray.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_gpio_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_headers.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_hsiom_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_i2s_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_ipc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_lin.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_pass.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_peri_ms_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_peri_pclk_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_peri_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_prot.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_scb_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_sdhc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_sflash_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_smartio_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_smif_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_srss_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\ip\cyip_tcpwm_v2.h + + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\bb_bsp_tviibh8m.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\cy_device_headers.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_c\cyt4bf_config.h + + + + rev_d + + rev_b + rev_c + + + ip + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_backup_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_canfd.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_coredefines.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_cpuss.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_crypto.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_dmac.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_dw.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_efuse_data_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_efuse_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_eth.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_evtgen.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_fault.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_flashc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_flexray.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_gpio_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_headers.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_hsiom_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_i2s_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_ipc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_lin.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_pass.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_peri_ms_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_peri_pclk_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_peri_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_prot.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_scb_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_sdhc.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_sflash_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_smartio_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_smif_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_srss_v3.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\ip\cyip_tcpwm_v2.h + + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\bb_bsp_tviibh8m.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\cy_device_headers.h + + + $PROJ_DIR$\..\..\tviibh8m\hdr\rev_d\cyt4bf_config.h + + + + rtos + + rev_b + rev_c + rev_d + + + $PROJ_DIR$\..\..\common\src\rtos\include\atomic.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\croutine.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\deprecated_definitions.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\event_groups.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\FreeRTOS.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\FreeRTOSConfig.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\list.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\message_buffer.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\mpu_prototypes.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\mpu_wrappers.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\portable.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\projdefs.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\queue.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\semphr.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\stack_macros.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\StackMacros.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\stream_buffer.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\task.h + + + $PROJ_DIR$\..\..\common\src\rtos\include\timers.h + + + + $PROJ_DIR$\..\..\common\hdr\cy_project.h + + + + src + + drivers + + adc + + $PROJ_DIR$\..\..\common\src\drivers\adc\cy_adc.c + + + $PROJ_DIR$\..\..\common\src\drivers\adc\cy_adc.h + + + + audioss + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\audioss\cy_i2s.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\audioss\cy_i2s.h + + + + canfd + + $PROJ_DIR$\..\..\common\src\drivers\canfd\cy_canfd.c + + + $PROJ_DIR$\..\..\common\src\drivers\canfd\cy_canfd.h + + + + cpu + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\cpu\cy_cpu.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\cpu\cy_cpu.h + + + + crypto + + $PROJ_DIR$\..\..\common\src\drivers\crypto\cy_crypto.h + + + $PROJ_DIR$\..\..\common\src\drivers\crypto\cy_crypto_common.h + + + $PROJ_DIR$\..\..\common\src\drivers\crypto\cy_crypto_config.c + + + $PROJ_DIR$\..\..\common\src\drivers\crypto\cy_crypto_config.h + + + $PROJ_DIR$\..\..\common\src\drivers\crypto\cy_crypto_server.h + + + + dma + + $PROJ_DIR$\..\..\common\src\drivers\dma\cy_mdma.c + + + $PROJ_DIR$\..\..\common\src\drivers\dma\cy_mdma.h + + + $PROJ_DIR$\..\..\common\src\drivers\dma\cy_pdma.c + + + $PROJ_DIR$\..\..\common\src\drivers\dma\cy_pdma.h + + + + ethernet + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\cdn_errno.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\cdn_stdint.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\cedi.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\cps_v2.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\cy_ethif.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\cy_ethif.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\edd.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\edd_int.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\edd_rx.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\edd_tx.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\emac_regs.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\emac_regs_macro.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\ethernet\log.h + + + + evtgen + + $PROJ_DIR$\..\..\common\src\drivers\evtgen\cy_evtgen.c + + + $PROJ_DIR$\..\..\common\src\drivers\evtgen\cy_evtgen.h + + + + flash + + $PROJ_DIR$\..\..\common\src\drivers\flash\cy_flash.c + + + $PROJ_DIR$\..\..\common\src\drivers\flash\cy_flash.h + + + + flexray + + api + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_control_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_init.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_interrupt_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_rx_handler.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_status_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_time_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_timer_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\api\cy_fr_api_tx_handler.c + + + + ccal + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_control_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_init.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_interrupt_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_rx_handler.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_status_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_time_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_timer_service.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\flexray\ccal\cy_fr_ccal_tx_handler.c + + + + + gpio + + $PROJ_DIR$\..\..\common\src\drivers\gpio\cy_gpio.c + + + $PROJ_DIR$\..\..\common\src\drivers\gpio\cy_gpio.h + + + + ipc + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_config.h + + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_drv.c + + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_drv.h + + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_pipe.c + + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_pipe.h + + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_sema.c + + + $PROJ_DIR$\..\..\common\src\drivers\ipc\cy_ipc_sema.h + + + + lin + + $PROJ_DIR$\..\..\common\src\drivers\lin\cy_lin.c + + + $PROJ_DIR$\..\..\common\src\drivers\lin\cy_lin.h + + + + lvd + + $PROJ_DIR$\..\..\common\src\drivers\lvd\cy_lvd.c + + + $PROJ_DIR$\..\..\common\src\drivers\lvd\cy_lvd.h + + + + mcwdt + + $PROJ_DIR$\..\..\common\src\drivers\mcwdt\cy_mcwdt.c + + + $PROJ_DIR$\..\..\common\src\drivers\mcwdt\cy_mcwdt.h + + + + mpu + + $PROJ_DIR$\..\..\common\src\drivers\mpu\cy_mpu.c + + + $PROJ_DIR$\..\..\common\src\drivers\mpu\cy_mpu.h + + + + prot + + $PROJ_DIR$\..\..\common\src\drivers\prot\cy_prot.c + + + $PROJ_DIR$\..\..\common\src\drivers\prot\cy_prot.h + + + + scb + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_common.c + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_common.h + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_ezi2c.c + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_ezi2c.h + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_i2c.c + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_i2c.h + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_spi.c + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_spi.h + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_uart.c + + + $PROJ_DIR$\..\..\common\src\drivers\scb\cy_scb_uart.h + + + + sd_host + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sd_host\cy_sd_host.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sd_host\cy_sd_host.h + + + + smartio + + $PROJ_DIR$\..\..\common\src\drivers\smartio\cy_smartio.c + + + $PROJ_DIR$\..\..\common\src\drivers\smartio\cy_smartio.h + + + + smif + + $PROJ_DIR$\..\..\common\src\drivers\smif\common\cy_smif.c + + + $PROJ_DIR$\..\..\common\src\drivers\smif\common\cy_smif.h + + + $PROJ_DIR$\..\..\common\src\drivers\smif\common\cy_smif_memslot.c + + + $PROJ_DIR$\..\..\common\src\drivers\smif\common\cy_smif_memslot.h + + + $PROJ_DIR$\..\..\common\src\drivers\smif\ver2\cy_smif_ver_specific.c + + + $PROJ_DIR$\..\..\common\src\drivers\smif\ver2\cy_smif_ver_specific.h + + + + srom + + $PROJ_DIR$\..\..\common\src\drivers\srom\cy_srom.c + + + $PROJ_DIR$\..\..\common\src\drivers\srom\cy_srom.h + + + + sysclk + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sysclk\cy_sysclk.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sysclk\cy_sysclk.h + + + + sysflt + + $PROJ_DIR$\..\..\common\src\drivers\sysflt\cy_sysflt.c + + + $PROJ_DIR$\..\..\common\src\drivers\sysflt\cy_sysflt.h + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sysflt\cy_sysflt_config.h + + + + sysint + + $PROJ_DIR$\..\..\common\src\drivers\sysint\cy_sysint.c + + + $PROJ_DIR$\..\..\common\src\drivers\sysint\cy_sysint.h + + + + syslib + + $PROJ_DIR$\..\..\common\src\drivers\syslib\cy_syslib.c + + + $PROJ_DIR$\..\..\common\src\drivers\syslib\cy_syslib.h + + + $PROJ_DIR$\..\..\common\src\drivers\syslib\iar\cy_syslib_iar.s + + + + syspm + + $PROJ_DIR$\..\..\common\src\drivers\syspm\cy_syspm.c + + + $PROJ_DIR$\..\..\common\src\drivers\syspm\cy_syspm.h + + + + sysreghc + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sysreghc\cy_sysreghc.c + + + $PROJ_DIR$\..\..\tviibh8m\src\drivers\sysreghc\cy_sysreghc.h + + + + sysreset + + $PROJ_DIR$\..\..\common\src\drivers\sysreset\cy_sysreset.c + + + $PROJ_DIR$\..\..\common\src\drivers\sysreset\cy_sysreset.h + + + + sysrtc + + $PROJ_DIR$\..\..\common\src\drivers\sysrtc\cy_sysrtc.c + + + $PROJ_DIR$\..\..\common\src\drivers\sysrtc\cy_sysrtc.h + + + + systick + + $PROJ_DIR$\..\..\common\src\drivers\systick\cy_systick.c + + + $PROJ_DIR$\..\..\common\src\drivers\systick\cy_systick.h + + + + syswdt + + $PROJ_DIR$\..\..\common\src\drivers\syswdt\cy_syswdt.c + + + $PROJ_DIR$\..\..\common\src\drivers\syswdt\cy_syswdt.h + + + + tcpwm + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm.c + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm.h + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_counter.c + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_counter.h + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_pwm.c + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_pwm.h + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_quaddec.c + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_quaddec.h + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_sr.c + + + $PROJ_DIR$\..\..\common\src\drivers\tcpwm\cy_tcpwm_sr.h + + + + trigmux + + $PROJ_DIR$\..\..\common\src\drivers\trigmux\cy_trigmux.c + + + $PROJ_DIR$\..\..\common\src\drivers\trigmux\cy_trigmux.h + + + + + interrupts + + rev_b + + rev_c + rev_d + rtos + + + $PROJ_DIR$\..\..\tviibh8m\src\interrupts\rev_b\cy_interrupt_map.c + + + $PROJ_DIR$\..\..\tviibh8m\src\interrupts\rev_b\cy_interrupt_map_cm0plus.h + + + + rev_c + + rev_b + rev_d + rtos + + + $PROJ_DIR$\..\..\tviibh8m\src\interrupts\rev_c\cy_interrupt_map.c + + + $PROJ_DIR$\..\..\tviibh8m\src\interrupts\rev_c\cy_interrupt_map_cm0plus.h + + + + rev_d + + rev_b + rev_c + + + $PROJ_DIR$\..\..\tviibh8m\src\interrupts\rev_d\cy_interrupt_map.c + + + $PROJ_DIR$\..\..\tviibh8m\src\interrupts\rev_d\cy_interrupt_map_cm0plus.h + + + + + mw + + aic261 + + $PROJ_DIR$\..\..\common\src\mw\aic261\cy_aic261.c + + + $PROJ_DIR$\..\..\common\src\mw\aic261\cy_aic261.h + + + + button + + $PROJ_DIR$\..\..\common\src\mw\button\cy_button.c + + + $PROJ_DIR$\..\..\common\src\mw\button\cy_button.h + + + + eth_phy + + $PROJ_DIR$\..\..\tviibh8m\src\mw\eth_phy\cy_dp83867.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\eth_phy\cy_dp83867.h + + + + flash + + $PROJ_DIR$\..\..\common\src\mw\flash\cy_mw_flash.c + + + $PROJ_DIR$\..\..\common\src\mw\flash\cy_mw_flash.h + + + + power + + $PROJ_DIR$\..\..\tviibh8m\src\mw\power\cy_power.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\power\cy_power.h + + + + semihosting + + $PROJ_DIR$\..\..\common\src\mw\semihosting\cy_semihosting.c + + + $PROJ_DIR$\..\..\common\src\mw\semihosting\cy_semihosting.h + + + + smif_mem + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_device_common.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_device_common.h + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_hb_flash.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_hb_flash.h + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_s25fl.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_s25fl.h + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_s25fs.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_s25fs.h + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_semp.c + + + $PROJ_DIR$\..\..\tviibh8m\src\mw\smif_mem\cy_smif_semp.h + + + + sw_timer + + $PROJ_DIR$\..\..\common\src\mw\sw_timer\cy_sw_tmr.c + + + $PROJ_DIR$\..\..\common\src\mw\sw_timer\cy_sw_tmr.h + + + + + rtos + + rev_b + rev_c + rev_d + + + mem_mgmt + + $PROJ_DIR$\..\..\common\src\rtos\portable\MemMang\heap_4.c + + + + portable + + $PROJ_DIR$\..\..\common\src\rtos\portable\IAR\ARM_CM7\r0p1\port.c + + + $PROJ_DIR$\..\..\common\src\rtos\portable\IAR\ARM_CM7\r0p1\portasm.s + + + $PROJ_DIR$\..\..\common\src\rtos\portable\IAR\ARM_CM7\r0p1\portmacro.h + + + + $PROJ_DIR$\..\..\common\src\rtos\croutine.c + + + $PROJ_DIR$\..\..\common\src\rtos\event_groups.c + + + $PROJ_DIR$\..\..\common\src\rtos\list.c + + + $PROJ_DIR$\..\..\common\src\rtos\queue.c + + + $PROJ_DIR$\..\..\common\src\rtos\stream_buffer.c + + + $PROJ_DIR$\..\..\common\src\rtos\tasks.c + + + $PROJ_DIR$\..\..\common\src\rtos\timers.c + + + + startup + + $PROJ_DIR$\..\..\common\src\startup\startup.c + + + $PROJ_DIR$\..\..\common\src\startup\iar\startup_cm0plus.s + + + $PROJ_DIR$\..\..\common\src\startup\startup_customize.h + + + + system + + rev_b + + rev_c + rev_d + rtos + + + $PROJ_DIR$\..\..\tviibh8m\src\system\rev_b\system_cyt4bf.h + + + $PROJ_DIR$\..\..\tviibh8m\src\system\rev_b\system_tviibh8m_cm0plus.c + + + + rev_c + + rev_b + rev_d + rtos + + + $PROJ_DIR$\..\..\tviibh8m\src\system\rev_c\system_cyt4bf.h + + + $PROJ_DIR$\..\..\tviibh8m\src\system\rev_c\system_tviibh8m_cm0plus.c + + + + rev_d + + rev_b + rev_c + + + $PROJ_DIR$\..\..\tviibh8m\src\system\rev_d\system_cyt4bf.h + + + $PROJ_DIR$\..\..\tviibh8m\src\system\rev_d\system_tviibh8m_cm0plus.c + + + + + $PROJ_DIR$\..\App\main_cm0plus.c + + + + Passenger_Seat_Timed_Controller_demo + + App + + $PROJ_DIR$\..\App\seat_timed_application.c + + + $PROJ_DIR$\..\App\seat_timed_application.h + + + $PROJ_DIR$\..\App\seat_motor_manager.c + + + $PROJ_DIR$\..\App\seat_motor_manager.h + + + $PROJ_DIR$\..\App\safety_manager.c + + + $PROJ_DIR$\..\App\safety_manager.h + + + + Bsp + + $PROJ_DIR$\..\Bsp\bsp_seat_move_can.c + + + $PROJ_DIR$\..\Bsp\bsp_seat_move_can.h + + + $PROJ_DIR$\..\Bsp\bsp_seat_backrest_heater.c + + + $PROJ_DIR$\..\Bsp\bsp_seat_backrest_heater.h + + + $PROJ_DIR$\..\Bsp\bsp_seat_current_adc.c + + + $PROJ_DIR$\..\Bsp\bsp_seat_current_adc.h + + + $PROJ_DIR$\..\Bsp\bsp_seat_fan.c + + + $PROJ_DIR$\..\Bsp\bsp_seat_fan.h + + + + Driver + + $PROJ_DIR$\..\Driver\motor_control.c + + + $PROJ_DIR$\..\Driver\motor_control.h + + + + Config + + $PROJ_DIR$\..\Config\seat_move_config.h + + + $PROJ_DIR$\..\Config\seat_backrest_heater_config.h + + + $PROJ_DIR$\..\Config\seat_fan_config.h + + + $PROJ_DIR$\..\Config\seat_current_adc_config.h + + + + Docs + + $PROJ_DIR$\..\Docs\README_Passenger_Seat_Timed_Controller.md + + + $PROJ_DIR$\..\Docs\BUILD_INFO_2026-09-16.md + + + + IAR + + $PROJ_DIR$\Passenger_Seat_Timed_Controller_demo.mac + + + + diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.mac b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.mac new file mode 100644 index 0000000..8be97b5 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_demo.mac @@ -0,0 +1,185 @@ +/* C-SPY host-side safety hook for the timed-only passenger-seat controller. */ + +execUserSetup() +{ + /* A new Download and Debug session releases a previous debug-exit latch. */ + __writeMemory32(0x00000000, 0x4027100C, "Memory"); + __message "Passenger_Seat_Timed_Controller_demo: C-SPY setup cleared the debug-session latch.\n"; +} + +execUserExit() +{ + __var value; + __var safe; + + /* Retain safe-off across debug/XRES/WDT resets. */ + __writeMemory32(0x4D4F5645, 0x4027100C, "Memory"); + + /* Assert DRVOFF=P8.1 before touching PWM or pin muxing. */ + __writeMemory32(0x00000002, 0x40310408, "Memory"); + + /* Disable TCPWM1 group-0 counters IN1/IN2/IN3/IN4 and Hall timebase. */ + value = __readMemory32(0x40580600, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580600, "Memory"); + value = __readMemory32(0x40580680, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580680, "Memory"); + value = __readMemory32(0x40580700, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580700, "Memory"); + value = __readMemory32(0x40580980, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580980, "Memory"); + value = __readMemory32(0x40580A00, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580A00, "Memory"); + + /* Disable fan TCPWM60 and heater TCPWM65 before changing their muxes. */ + value = __readMemory32(0x40581E00, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40581E00, "Memory"); + value = __readMemory32(0x40582080, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40582080, "Memory"); + + /* Force P11.1/P11.2 fan paths and P16.7 heater path to GPIO low. */ + __writeMemory32(0x00000006, 0x40310584, "Memory"); + __writeMemory32(0x00000080, 0x40310804, "Memory"); + value = __readMemory32(0x403000B0, "Memory"); + __writeMemory32(value & 0xFFE0E0FF, 0x403000B0, "Memory"); + value = __readMemory32(0x40300104, "Memory"); + __writeMemory32(value & 0xE0FFFFFF, 0x40300104, "Memory"); + value = __readMemory32(0x403105C4, "Memory"); + __writeMemory32((value & 0xFFFFF00F) | 0x00000660, + 0x403105C4, "Memory"); + value = __readMemory32(0x40310844, "Memory"); + __writeMemory32((value & 0x0FFFFFFF) | 0x60000000, + 0x40310844, "Memory"); + __writeMemory32(0x00000006, 0x40310584, "Memory"); + __writeMemory32(0x00000080, 0x40310804, "Memory"); + + /* Preload IN1=P1.0, IN2/IN3=P5.4/P5.5 and IN4=P8.0 low. */ + __writeMemory32(0x00000001, 0x40310084, "Memory"); + __writeMemory32(0x00000030, 0x40310284, "Memory"); + __writeMemory32(0x00000001, 0x40310404, "Memory"); + + /* Select GPIO for every DRV8718 PWM input. */ + value = __readMemory32(0x40300010, "Memory"); + __writeMemory32(value & 0xFFFFFFE0, 0x40300010, "Memory"); + value = __readMemory32(0x40300054, "Memory"); + __writeMemory32(value & 0xFFFFE0E0, 0x40300054, "Memory"); + value = __readMemory32(0x40300080, "Memory"); + __writeMemory32(value & 0xFFFFE0E0, 0x40300080, "Memory"); + + /* Strong output, input buffer off (CY_GPIO_DM_STRONG_IN_OFF = 0x6). */ + value = __readMemory32(0x403100C4, "Memory"); + __writeMemory32((value & 0xFFFFFFF0) | 0x00000006, + 0x403100C4, "Memory"); + value = __readMemory32(0x403102C4, "Memory"); + __writeMemory32((value & 0xFF00FFFF) | 0x00660000, + 0x403102C4, "Memory"); + value = __readMemory32(0x40310444, "Memory"); + __writeMemory32((value & 0xFFFFFF00) | 0x00000066, + 0x40310444, "Memory"); + + /* Full drive strength for the same output pins. */ + value = __readMemory32(0x403100CC, "Memory"); + __writeMemory32(value & 0xFFFCFFFF, 0x403100CC, "Memory"); + value = __readMemory32(0x403102CC, "Memory"); + __writeMemory32(value & 0xF0FFFFFF, 0x403102CC, "Memory"); + value = __readMemory32(0x4031044C, "Memory"); + __writeMemory32(value & 0xFFF0FFFF, 0x4031044C, "Memory"); + + /* Reassert the final physical levels after mux/drive configuration. */ + __writeMemory32(0x00000001, 0x40310084, "Memory"); + __writeMemory32(0x00000030, 0x40310284, "Memory"); + __writeMemory32(0x00000001, 0x40310404, "Memory"); + __writeMemory32(0x00000002, 0x40310408, "Memory"); + + /* Verify the retained latch, every PWM counter, every PWM HSIOM field and + every physical output latch before C-SPY releases the target. */ + safe = 1; + value = __readMemory32(0x4027100C, "Memory"); + if(value != 0x4D4F5645) + { + safe = 0; + } + value = __readMemory32(0x40580600, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580680, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580700, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580980, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580A00, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40581E00, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40582080, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40310580, "Memory"); + if(value & 0x00000006) + { + safe = 0; + } + value = __readMemory32(0x40310800, "Memory"); + if(value & 0x00000080) + { + safe = 0; + } + value = __readMemory32(0x40300010, "Memory"); + if(value & 0x0000001F) + { + safe = 0; + } + value = __readMemory32(0x40300054, "Memory"); + if(value & 0x00001F1F) + { + safe = 0; + } + value = __readMemory32(0x40300080, "Memory"); + if(value & 0x00001F1F) + { + safe = 0; + } + value = __readMemory32(0x40310080, "Memory"); + if(value & 0x00000001) + { + safe = 0; + } + value = __readMemory32(0x40310280, "Memory"); + if(value & 0x00000030) + { + safe = 0; + } + value = __readMemory32(0x40310400, "Memory"); + if((value & 0x00000003) != 0x00000002) + { + safe = 0; + } + + if(safe == 0) + { + __message "Passenger_Seat_Timed_Controller_demo ERROR: C-SPY safe-off register verification failed.\n"; + } + else + { + __message "Passenger_Seat_Timed_Controller_demo: C-SPY exit forced motor, fan and heater outputs low.\n"; + } +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_program.mac b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_program.mac new file mode 100644 index 0000000..97c68a9 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/Passenger_Seat_Timed_Controller_program.mac @@ -0,0 +1,213 @@ +/* C-SPY program-only safety hook used by the authorized backend flasher. + * It forces every output safe but deliberately clears the debug-session + * marker so --leave_target_running can boot normal firmware afterwards. */ + +execUserSetup() +{ + __var value; + + /* Make the pre-download target safe before the flash loader or the new + application can run. The post-session block below repeats and verifies + the same invariants when C-SPY reaches the normal exit hook. */ + __writeMemory32(0x00000002, 0x40310408, "Memory"); + value = __readMemory32(0x40580600, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580600, "Memory"); + value = __readMemory32(0x40580680, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580680, "Memory"); + value = __readMemory32(0x40580700, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580700, "Memory"); + value = __readMemory32(0x40580980, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580980, "Memory"); + value = __readMemory32(0x40580A00, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580A00, "Memory"); + value = __readMemory32(0x40581E00, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40581E00, "Memory"); + value = __readMemory32(0x40582080, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40582080, "Memory"); + __writeMemory32(0x00000001, 0x40310084, "Memory"); + __writeMemory32(0x00000030, 0x40310284, "Memory"); + __writeMemory32(0x00000001, 0x40310404, "Memory"); + __writeMemory32(0x00000006, 0x40310584, "Memory"); + __writeMemory32(0x00000080, 0x40310804, "Memory"); + + /* A new Download and Debug session releases a previous debug-exit latch. */ + __writeMemory32(0x00000000, 0x4027100C, "Memory"); + __message "Passenger_Seat_Timed_Controller_demo: C-SPY setup forced outputs safe and cleared the debug-session latch.\n"; +} + +execUserExit() +{ + __var value; + __var safe; + + /* This is a program-only session, not an interactive debugger detach. */ + __writeMemory32(0x00000000, 0x4027100C, "Memory"); + + /* Assert DRVOFF=P8.1 before touching PWM or pin muxing. */ + __writeMemory32(0x00000002, 0x40310408, "Memory"); + + /* Disable TCPWM1 group-0 counters IN1/IN2/IN3/IN4 and Hall timebase. */ + value = __readMemory32(0x40580600, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580600, "Memory"); + value = __readMemory32(0x40580680, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580680, "Memory"); + value = __readMemory32(0x40580700, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580700, "Memory"); + value = __readMemory32(0x40580980, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580980, "Memory"); + value = __readMemory32(0x40580A00, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40580A00, "Memory"); + + /* Disable fan TCPWM60 and heater TCPWM65 before changing their muxes. */ + value = __readMemory32(0x40581E00, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40581E00, "Memory"); + value = __readMemory32(0x40582080, "Memory"); + __writeMemory32(value & 0x7FFFFFFF, 0x40582080, "Memory"); + + /* Force P11.1/P11.2 fan paths and P16.7 heater path to GPIO low. */ + __writeMemory32(0x00000006, 0x40310584, "Memory"); + __writeMemory32(0x00000080, 0x40310804, "Memory"); + value = __readMemory32(0x403000B0, "Memory"); + __writeMemory32(value & 0xFFE0E0FF, 0x403000B0, "Memory"); + value = __readMemory32(0x40300104, "Memory"); + __writeMemory32(value & 0xE0FFFFFF, 0x40300104, "Memory"); + value = __readMemory32(0x403105C4, "Memory"); + __writeMemory32((value & 0xFFFFF00F) | 0x00000660, + 0x403105C4, "Memory"); + value = __readMemory32(0x40310844, "Memory"); + __writeMemory32((value & 0x0FFFFFFF) | 0x60000000, + 0x40310844, "Memory"); + __writeMemory32(0x00000006, 0x40310584, "Memory"); + __writeMemory32(0x00000080, 0x40310804, "Memory"); + + /* Preload IN1=P1.0, IN2/IN3=P5.4/P5.5 and IN4=P8.0 low. */ + __writeMemory32(0x00000001, 0x40310084, "Memory"); + __writeMemory32(0x00000030, 0x40310284, "Memory"); + __writeMemory32(0x00000001, 0x40310404, "Memory"); + + /* Select GPIO for every DRV8718 PWM input. */ + value = __readMemory32(0x40300010, "Memory"); + __writeMemory32(value & 0xFFFFFFE0, 0x40300010, "Memory"); + value = __readMemory32(0x40300054, "Memory"); + __writeMemory32(value & 0xFFFFE0E0, 0x40300054, "Memory"); + value = __readMemory32(0x40300080, "Memory"); + __writeMemory32(value & 0xFFFFE0E0, 0x40300080, "Memory"); + + /* Strong output, input buffer off (CY_GPIO_DM_STRONG_IN_OFF = 0x6). */ + value = __readMemory32(0x403100C4, "Memory"); + __writeMemory32((value & 0xFFFFFFF0) | 0x00000006, + 0x403100C4, "Memory"); + value = __readMemory32(0x403102C4, "Memory"); + __writeMemory32((value & 0xFF00FFFF) | 0x00660000, + 0x403102C4, "Memory"); + value = __readMemory32(0x40310444, "Memory"); + __writeMemory32((value & 0xFFFFFF00) | 0x00000066, + 0x40310444, "Memory"); + + /* Full drive strength for the same output pins. */ + value = __readMemory32(0x403100CC, "Memory"); + __writeMemory32(value & 0xFFFCFFFF, 0x403100CC, "Memory"); + value = __readMemory32(0x403102CC, "Memory"); + __writeMemory32(value & 0xF0FFFFFF, 0x403102CC, "Memory"); + value = __readMemory32(0x4031044C, "Memory"); + __writeMemory32(value & 0xFFF0FFFF, 0x4031044C, "Memory"); + + /* Reassert the final physical levels after mux/drive configuration. */ + __writeMemory32(0x00000001, 0x40310084, "Memory"); + __writeMemory32(0x00000030, 0x40310284, "Memory"); + __writeMemory32(0x00000001, 0x40310404, "Memory"); + __writeMemory32(0x00000002, 0x40310408, "Memory"); + + /* Verify the retained latch, every PWM counter, every PWM HSIOM field and + every physical output latch before C-SPY releases the target. */ + safe = 1; + value = __readMemory32(0x4027100C, "Memory"); + if(value != 0x00000000) + { + safe = 0; + } + value = __readMemory32(0x40580600, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580680, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580700, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580980, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40580A00, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40581E00, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40582080, "Memory"); + if(value & 0x80000000) + { + safe = 0; + } + value = __readMemory32(0x40310580, "Memory"); + if(value & 0x00000006) + { + safe = 0; + } + value = __readMemory32(0x40310800, "Memory"); + if(value & 0x00000080) + { + safe = 0; + } + value = __readMemory32(0x40300010, "Memory"); + if(value & 0x0000001F) + { + safe = 0; + } + value = __readMemory32(0x40300054, "Memory"); + if(value & 0x00001F1F) + { + safe = 0; + } + value = __readMemory32(0x40300080, "Memory"); + if(value & 0x00001F1F) + { + safe = 0; + } + value = __readMemory32(0x40310080, "Memory"); + if(value & 0x00000001) + { + safe = 0; + } + value = __readMemory32(0x40310280, "Memory"); + if(value & 0x00000030) + { + safe = 0; + } + value = __readMemory32(0x40310400, "Memory"); + if((value & 0x00000003) != 0x00000002) + { + safe = 0; + } + + if(safe == 0) + { + __message "Passenger_Seat_Timed_Controller_demo ERROR: C-SPY safe-off register verification failed.\n"; + } + else + { + __message "Passenger_Seat_Timed_Controller_demo: program-only exit forced all outputs low and released the debug latch.\n"; + } +} diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.hex b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.hex new file mode 100644 index 0000000..e13e7d6 --- /dev/null +++ b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.hex @@ -0,0 +1,2690 @@ +:020000041000EA +:1000000000000228F59E0010ADA5001025A30010E9 +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000E5A3001038 +:100030000000000000000000B1A50010B5A50010F0 +:1000400025990010499900106D99001091990010A0 +:10005000B5990010D9990010FD990010219A00104F +:10006000B9A50010BDA50010C1A50010C5A50010C0 +:10007000C9A50010CDA50010D1A50010D5A5001070 +:1000800000B5010009B2002905D40121C006C00E47 +:100090008140C648016000BD00B5010009B20029D9 +:1000A00005D40121C006C00E8140C148016000BDD9 +:1000B000F0B5020012B2002A18D41822BD4B040079 +:1000C00024B2A408A4001C59FF250600F60016401F +:1000D000B540AC438901C9B20500ED002A4091400A +:1000E000214300B28008800019501CE00F22B24C5E +:1000F000182503001BB21340083B9B089B00060019 +:1001000036B23240083A92089200A258FF26070001 +:10011000FF002F40BE40B2438901C9B2C000054074 +:10012000A9401143E150F0BD0269CA401000C00768 +:10013000C00F704701228A408260704701228A40C6 +:1001400042607047C22189004058C005C00D704709 +:10015000C121890041180A6880235B0213430B60A8 +:10016000C121890041180A68B54B13400B60C121B9 +:10017000890040587047822189004058C005C00D51 +:10018000704782218900415808000004C00F704761 +:1001900038B504002000FFF7EEFF05002000FFF750 +:1001A000F0FF2818002801D1012000E00020C0B293 +:1001B00032BD8121890041180A6880235B02134304 +:1001C0000B608121890041180A689D4B13400B6028 +:1001D00081218900405870470168802212060A4335 +:1001E0000260704780B5FFF7ADFF02BD80B5FFF735 +:1001F000AFFF01BD80B5FFF7CBFF02BD80B5FFF7B4 +:10020000D8FF01BD80B503F090F802BD80B503F0C2 +:100210009EF802BD00B5022801D301200FE00B00BB +:10022000DBB2042B01DB012009E0B34B800018187E +:10023000C9B2405C824201D3012000E0002000BD31 +:10024000F8B504001F00022C01D3012023E01500A3 +:100250000E002A003100C9B22000FFF7DBFF0128A1 +:1002600001D1012017E03000C0B2002816D1FF2FC5 +:1002700012D8CB4861034018A900401880214901D9 +:1002800040180168C74A0A403902FF231B020B408D +:10029000134303600020F2BD0120FCE7F6B2012EFB +:1002A00016D180204002874210D2BD486103401819 +:1002B000A9004018A021490140180168C54A0A4018 +:1002C0003902C54B0B4013430360E3E70120E2E72B +:1002D0000120E0E7F8B504001F00022C01D3012043 +:1002E00036E015000E002A003100C9B22000FFF7E9 +:1002F00091FF012801D101202AE006983100C9B2FE +:10030000022928D1802149028F4222D2202820D2DE +:10031000A34962038A18AB00D218C0235B01D2182C +:100320001668AC4B33403E02AB4F37401F4317605B +:1003300062038918AA008918C022520189180A6824 +:10034000F8239A43C000F823034013430B600020B6 +:10035000F2BD0120FCE7F6B2032E24D1802149042E +:100360008F421ED220281CD28D4962038A18AB000E +:10037000D218E0235B01D2181368DBB23E021E43A1 +:10038000166062038918AA008918E02252018918B0 +:100390000A68F8239A43C000F823034013430B6014 +:1003A000D5E70120D4E70120D2E7000000E100E01A +:1003B00080E200E000E400E01CED00E000B200128A +:1003C000C0B27047F8B505000F001600280000B253 +:1003D000FFF7F4FF04002000C0B2022801D301207F +:1003E0002CE032003900C9B22000C0B2FFF712FF82 +:1003F000012801D1012021E069482100C9B2490347 +:1004000041182A00D2B292008918C02212018A58DB +:10041000C9491140FFB23B02C02292001A400A4370 +:10042000FF218A43F1B21143E4B262038018EDB2B6 +:10043000AA008018C022120181500020F2BD0000E5 +:10044000FFFFFEFF70B50400022C01D3012028E05D +:1004500015000E002A003100C9B22000FFF7DAFEB5 +:10046000012801D101201CE04D4861034158802240 +:1004700012060A43C02189041143FF2212040A43D1 +:10048000AD4B1340F6B23202C0218900114019432E +:10049000FF229143EAB20A4361034250610340588C +:1004A000002070BDDCB506000F0010001900069C8E +:1004B0004901C20E1143400132003B0002F05BFFD4 +:1004C000060091204000FFF779FFF106C90E009168 +:1004D00071090B051B0D5B1E2200D2B20321C0B2B5 +:1004E000FFF7F8FED3BD80B51300A74A13600023C1 +:1004F000137203F006F801BDB8A4001000B5C0B235 +:10050000042801D2012000E00020C0B200BD00B5E7 +:10051000401A00B2012801DB012000E00020C0B237 +:1005200000BD00B5BE490978002901D000201FE0B8 +:1005300082214900415C002901D0002018E0FF2100 +:10054000891D415C002908D1FC214058002801D1B7 +:10055000012000E00020C0B20AE08021490041589B +:10056000FC228058814201D1012000E00020C0B26D +:1005700000BD00B5C0B264214843642103F000F817 +:1005800000BD10B504000800C0B2FFF7F2FF010083 +:10059000A448A2018018406903F0D0F910BD000002 +:1005A00000000440FF00FFFF10B40021B42281507E +:1005B0009D4A1368BC2403511268C023C2500268CC +:1005C000C423C2500A00F023C254F122815410BC4B +:1005D00070470000FF0000FF00FFFF00F1B582B090 +:1005E0001800904B029CA4011C19089B002B14D0EE +:1005F000099B002B11D00A9B002B0ED00092009A71 +:10060000002A0AD0002808D0E26A824205D30A00F4 +:10061000002A02D0616B002901D1002054E00021A2 +:10062000002303F08FF906000F00E06A4008002164 +:1006300080197941E26A002302F09DFE0500300036 +:1006400039007A4A002303F07DF906000F00E06AC2 +:100650000021009A002303F075F902000B000096B8 +:100660000197100019004008CE0730434908009E4A +:10067000019F8019794102F07EFE0600002D0BD00B +:10068000002E09D0BE4802998422520051434018DE +:10069000B8214058B04201D2002015E0606B3018FC +:1006A000401E616B02F06CFF05214843052801D212 +:1006B000052002E0602800D35F2008990D600999A9 +:1006C0000E600A9908700120FEBD80B55549800171 +:1006D0000818016AC069FFF727FD002801D0012032 +:1006E00000E00020C0B202BD10B44F490A68426267 +:1006F000026882624268C2620A68026342684263B8 +:100700000022026713007A24035313007C2403534E +:1007100013008C24035513008D2403550B68C36309 +:10072000436803640968416411009023C154912116 +:10073000425410BC70470000FFFCFFFF00B50200F0 +:100740000B0092B29BB29A4201D3401A00E0081A01 +:1007500080B200BD00B58A49842252005043081877 +:100760008E21415C00290BD08F21415C002907D0EC +:100770002D490968806B081A332801D2012000E056 +:100780000020C0B200BD00002C120028F8B503F014 +:10079000F4F9002801D1002041E0002425002EE0DA +:1007A00084214900764A6846038828004843101887 +:1007B0007426835368460388280048431018762619 +:1007C0008353230028004843101878268353164883 +:1007D0000368280048431018836323002800484317 +:1007E00010188726835501231E002800484310183F +:1007F0008E27C655694350188F2143546D1C042D14 +:1008000008D269462800C0B203F046FA0028C7D1D2 +:10081000002004E004480068934908600120F2BD0C +:100820008B1B00288C9A0010241B0028A086010036 +:10083000FEB58D488D4909680268891A052900D2DC +:100840009DE08A4909680160002452E0D2B2002A82 +:100850003ED02000704328187621405A072141439A +:10086000684600880818C1082000704328187622BE +:1008700081522DE00022684601882000704328182C +:100880007423C1527948016820007043281881639D +:1008900000212000704328188723C15401210B0038 +:1008A0002000704328188E27C35520007043281855 +:1008B0008F23C05C0028C9D168460288200070439D +:1008C00028187623C2522000704328188F228154A2 +:1008D0002000704328187621415A68460088FFF7A7 +:1008E0002DFF6643A91978228852019803F0D4FAA3 +:1008F000641C042C43D269462000C0B203F0CCF93A +:10090000002825D103F0C4FA84225200584B21005C +:10091000514359188725495DFF290AD021005143C9 +:10092000591887254D5D6D1C2100514359188726A4 +:100930008D552100514359188725495D032904D35A +:10094000002162439A188E23D15403F0A5FACFE711 +:1009500003F09EFA019084267600454D20007043F6 +:1009600028187E21405C002884D12000704328187C +:100970009421405C002800D07CE701227BE7F7BD92 +:100980000013002810B53A4A84235B004343D21871 +:100990008223D35C002B35D17E23D35C002B07D17F +:1009A0000B00DBB2052B2DD19423D35C002B29D077 +:1009B0007E23D35C002B04D07E23D35C7F2413558D +:1009C0000BE09523D35C002B04D08123D35C7F24E0 +:1009D000135502E000237F2413558A23D35C972408 +:1009E00013558223D15400218A23D1549423D15406 +:1009F0007E21515C002905D0D34980010818406947 +:100A000003F053FA10BD38B5002429E0CF4B13E0B2 +:100A100084214900164A2000484310188B23C05CEB +:100A20000028F3D020004843101880690028EDD03A +:100A30002000484310188369200048431018962569 +:100A4000405D00280BD0094800686143511849698E +:100A5000401A984203D305212000FFF793FF641C3E +:100A6000042CD5D331BD0000301B0028241B0028E6 +:100A700000130028F8B500273C0061E1B44AB248F1 +:100A8000A1014018016AB048A301C018C06902F072 +:100A900038FD84256D00AF4E20006843375020009C +:100AA0006843301847602000684330188760A648C4 +:100AB000A1014018816A200068433018C1602000FD +:100AC00068433018076120006843301847612000F0 +:100AD000684330188761200068433018C7612000E0 +:100AE000684330180762200068433018876320008D +:100AF00068433018C763200068433018076420003B +:100B00006843301847643900200068433018742265 +:100B10008152390020006843301876228152390012 +:100B20002000684330187822815239002000684341 +:100B300030187E22815439002000684330187F220B +:100B400081543900200068433018802281543900D4 +:100B50002000684330188122815439002000684306 +:100B600030188222815439002000684330188322D3 +:100B700081543900200068433018842281542000B9 +:100B8000FFF7A3FD0100200068433018852281543F +:100B90003900200068433018862281543900200033 +:100BA000684330188722815401212000684330189F +:100BB00088228154390020006843301889228154EA +:100BC00039002000684330188A22815439002000FF +:100BD000684330188B228154390020006843301854 +:100BE0008E22815439002000684330188F228154AE +:100BF00039002000684330189022815439002000C9 +:100C0000684330189122815439002000684330181D +:100C10009222815439002000684330189322815475 +:100C20003900200068433018942281543900200094 +:100C300068433018952281543900200068433018E9 +:100C4000962281543900200068433018972281543D +:100C500039002000684330189822815420006843EE +:100C600030189C214750200068433018A02147507D +:100C7000200068433018A4214750200068433018F2 +:100C8000A8214750200068433018AC21475020006D +:100C900068433018B0214750200068433018B42111 +:100CA00047502948A1014018016B200068433018C3 +:100CB000B82281503221200068433018F22281543A +:100CC000200068433018F322815420006843301814 +:100CD000F42281543900200068433018F6228152F2 +:100CE0003900200068433018F82281522000684300 +:100CF0003018FC21475020006843301880214900FB +:100D00004750390020006843301882225200815435 +:100D10003900200068433018FF22921D81543900A9 +:100D20002000684330188322520081542000684319 +:100D30003018FFF739FC65437019FFF7D5FC641CC8 +:100D4000042C00D29AE6F1BD8C9A0010B8880000FD +:100D5000941200280013002870B50600BF488421B3 +:100D60004900714344183000FFF7AFFC05008820AC +:100D7000205C002805D1852025540120882160545D +:100D80007EE028008521615CC0B2884268D060683E +:100D9000401C60607E20205C002806D19520205CED +:100DA000002802D07348006820622800C0B20028E2 +:100DB00054D02068401C20607E20205C0100C9B215 +:100DC000002905D19521615C002901D08120205C9A +:100DD0000100C9B2012918D18920205C002808D15E +:100DE000A0680021C943884203D0A068401CA060CD +:100DF00014E08920205C002810D0A068E1688842B7 +:100E00000CD2A068401CA06008E0C0B2022805D146 +:100E1000A068002802D0A068401EA0608220205C4C +:100E200000281BD18A20205C002817D07E20205C5F +:100E3000002813D07E20205C012803D1A0682169FE +:100E4000884207D27E20205C022807D12069A16851 +:100E5000884203D301213000FFF794FD85202554FB +:100E60009520205C00280BD042480068216A401A77 +:100E7000322805D3002001009522A154812160541D +:100E800070BD70B575498422520042438C187E2192 +:100E9000615C00296CD08D21615C00292CD1354E1C +:100EA00035689C4980010818806B0021FA22920065 +:100EB000002302F047FD02000B0097480021801834 +:100EC0005941FA22D200002302F055FA616A691AE8 +:100ED00081424DD301208D216054306820636068C9 +:100EE00060630020206701007A22A15201007C2269 +:100EF000A1528C2160543BE07C20205A0A2810D259 +:100F00007A20205A616880B28000201881647C2099 +:100F1000205A401C7C2160526068616B401A206737 +:100F20000FE07A20205A80B280002018806C7A214D +:100F3000615A626889B2890061188A646168081A16 +:100F400020677A20205A401C010089B20A2900D368 +:100F500000207A2160527C20205A0A2808D30548B4 +:100F60000068216B401AFA2802D301208C216054BA +:100F700070BD0000241B002870B50026340019E065 +:100F800030009021685430009121685411E0300005 +:100F9000912168548220285C00280AD1C148006849 +:100FA000E96B401A9749884203D305212000FFF7D7 +:100FB000E9FC641C042C00D387E028488421490004 +:100FC000614345182000FFF75CFF7E20285C002865 +:100FD00007D08220285C002803D18C20285C0028C0 +:100FE00000D1E6E783204000285C00280AD0F320E7 +:100FF000285C002806D130009021685430009121EF +:101000006854D6E78B20285C002814D0300090214B +:101010006854300091216854286F00280AD17E203E +:10102000285C022801D1022100E00321C9B220007E +:10103000FFF7A8FCBDE7286F0328A1D22000FFF727 +:1010400089FBC0B200280BD07820285A3149A20170 +:101050008918898F884203D3012002E000130028F9 +:1010600030009021695C00290BD101219022A95404 +:101070008C490968E9636968296431009122A9549F +:1010800008E069682A6C914204D06968296485493E +:101090000968E963C0B2002800D178E79120285C94 +:1010A000002806D10120912168547E4800686864B8 +:1010B00070E77C480068696C401A642800D269E7D0 +:1010C00004212000FFF75EFC64E770BD38B59C4C3E +:1010D000200003F009F800281BD0200003F009F8D5 +:1010E00070480168491C01600024250003E02800C5 +:1010F000FFF732FE6D1C042DF9D3FFF784FCA448E2 +:101100000168491C01600168192902D30460FFF7D6 +:1011100033FF31BD8C9A0010CF07000070B5282531 +:101120000026340009E0022201219A48A301C018D8 +:101130001823C05EFFF746F9641C042CF3D3022287 +:101140000121FF204230FFF73DF9924C1820205E2C +:10115000FFF734F92B005B1E02220121C0B2FFF71A +:101160006FF81820205EFFF729F902220121C0B292 +:10117000FFF768F9350011E08749A8012018406998 +:1011800002F056FAA8012018406902F0D1FB0021B4 +:10119000A8012018406902F0D3FB6D1C042DEBD38D +:1011A000012420007D4908703E48066078480660AA +:1011B000634E7B49300002F07FFE300002F099FF61 +:1011C000300002F08BFF774D280002F09BFF76493C +:1011D0000020285E02F0B5FF03210220285EFEF702 +:1011E00067FF0220285EFEF757FF0220285EFEF709 +:1011F00047FF300002F06CFF300002F050FEAC48B8 +:10120000047070BDC4090000F8B500220121A9488E +:10121000FFF769F901220221A748FFF764F90022CC +:101220000121A648FFF75FF9A54D01220121280001 +:10123000FFF759F900220021A248FFF754F9A24C08 +:10124000002204212000FFF74EF900220521200092 +:10125000FFF749F9002200212800FFF744F9FFF7C2 +:1012600009FC9A480090082000990860984E1324C1 +:101270003470984FC04A0021380002F042F9062528 +:10128000009805603470BC4A0121380002F039F939 +:10129000009805603470B84A0221380002F031F934 +:1012A000F1BD0000241B002878B58DB06846B34915 +:1012B000342202F059FF3948007800280BD0B0489A +:1012C00002F0F3FDAF4802F0F0FDAF4802F0EDFD93 +:1012D000AE4802F0EAFD7B4E6A460021300002F083 +:1012E00010F9794D6A460421280002F00AF96A468D +:1012F0000521280002F005F9714C6A460021200002 +:1013000002F0FFF800213000FEF718FF042128004A +:10131000FEF714FF05212800FEF710FF0021200032 +:10132000FEF70CFF012000906A460121200002F028 +:10133000E8F801212000FEF7FDFE0EB070BD0000B0 +:10134000000A58401CB591246400012203212000AA +:10135000FFF738F8012000908D4A00238D480021C6 +:10136000FFF7A0F82000FFF729F801220321C0B2FF +:10137000FFF768F8884C200003F058F800228749EE +:10138000200002F019FF2000FEF726FF13BD000029 +:10139000281B00288C9A0010809E0010891B0028B2 +:1013A000B89F0010C0A40010CD100010F2B50600C8 +:1013B00000273C000098002801D1002077E0380089 +:1013C0000099088002F064FDCD490978002903D016 +:1013D00002F062FD00206AE00121C94A117002F0AA +:1013E0005BFD6D4D2800FEF701FF2800FEF706FFAC +:1013F00002213148FEF7A2FE012003F09FF8B6B2A9 +:1014000031002800FEF702FF01283ED1BD4E00E06A +:10141000761E2800FEF7EEFE002801D1002EF7D13F +:101420002800FEF7E7FE00282FD0B64E00E0761E1B +:101430002800FEF7D7FE002801D1002EF7D12800A2 +:10144000FEF7D0FE002820D0012200992800FEF7E8 +:10145000D9FE012819D1C020000200990988014055 +:10146000814201D1012400E03C002000C0B20028EC +:101470000BD0A5480078002807D000980088FC21F0 +:1014800089010140002900D03C00012003F056F8FA +:1014900002210948FEF74EFE012003F04FF802F04A +:1014A000F7FC97490F7002F0F7FC2000C0B2F2BDC4 +:1014B000881B002880013140800F3140800431407A +:1014C0000004314080003140800231406412002825 +:1014D000681200280003314080B5C0B20202FC202F +:1014E00080011040C9B20843694680B2FFF75EFF31 +:1014F00002BD1CB50C00C0B20002FC2189010140F4 +:101500008020C0010843002C05D0694680B2FFF757 +:101510004DFF002801D1002003E0684600882070BC +:10152000012016BD38B505000C002100C9B2280005 +:10153000C0B2FFF7D1FF002801D100200FE06946BB +:101540002800C0B2FFF7D5FF002806D06846007813 +:10155000E4B2A04201D1012000E00020C0B232BDBF +:1015600080B5B44A00211160017C1172C1688068A5 +:1015700001F0C7FF01BD00006012002868A2001042 +:1015800000065840800658400007584080095840DF +:1015900000B4C4040024F40000006440ECA0001077 +:1015A000F8B50126300000246846047056480470DF +:1015B0000121A148FEF7BEFDC24F01213800FEF710 +:1015C000B9FD9E4D280002F0B9FF01219C48FEF7AD +:1015D000B1FD280002F0B2FF02210820FFF7A2FFB0 +:1015E00005002800C0B2002804D000210920FFF720 +:1015F00099FF05002800C0B2002804D000210A206D +:10160000FFF790FF05002800C0B2002804D00F218A +:101610000B20FFF787FF05002800C0B2002804D088 +:10162000A5210C20FFF77EFF05002800C0B200288E +:1016300004D000210D20FFF775FF05002800C0B27F +:10164000002804D000210E20FFF76CFF05002800C1 +:10165000C0B2002808D087210720FFF73DFF050012 +:10166000FA20800002F06AFF2800C0B2002804D0EF +:1016700086210720FFF756FF05002800C0B200288A +:101680000ED069460020FFF734FF002807D06846D7 +:101690000078BF210140802901D1350000E02500FC +:1016A0002800C0B2002810D0A1480470A1480470DE +:1016B000B948047014480670B8480068B849086012 +:1016C00001213800FEF73AFD07E0B34806700E48E6 +:1016D000047001213800FEF72DFD2800C0B2F2BDD4 +:1016E00010B50400534A002010601072E168A06831 +:1016F00001F007FFE168A068FEF720FD10BD0000C3 +:101700008D1B0028A0860100901B0028F8B501243D +:101710002000A149087000252800A949087001216E +:101720006848FEF707FD2E000FE0A6480078002865 +:1017300005D0A548B1014018406902F0B6FBA248A7 +:10174000B1014018FFF7CCFF761C042EEDD302F058 +:101750009FFB0090280044E02A0011E0B849842251 +:101760005200424389188A228A5C002A07D19722B4 +:101770008A5C002A03D198228A5C002AECD02200DD +:101780002B007E268B552B007F268B552B00802629 +:101790008B552B0082268B55072383268B552E00D5 +:1017A0008A27CE552E008B27CE552E009427CE5556 +:1017B0002E009527CE552E009627CE552E00972722 +:1017C000CE552E008927CE55D2B2002A08D08422C9 +:1017D0008B549C228A58A023CA5022009823CA54B2 +:1017E000401C0428BAD3009802F056FBF1BD80B526 +:1017F0007348007800280AD067480078002806D18E +:10180000674866490A680368D21A192A00D20FE0AD +:101810000968016069460020FFF76BFE002805D0CB +:1018200068460078BF210140802901D0FFF76EFF94 +:1018300001BD0000C81200288001314010270000BF +:101840008004314070B5604A80011018524A127805 +:10185000002A01D0002034E02422825C092A14D11D +:10186000334D2A782523C35C9A432523C45C0C405E +:1018700014432100C9B20920FFF754FE06003000CE +:10188000C0B2002815D02C7013E02A4D2A782523E9 +:10189000C35C9A432523C45C0C4014432100C9B2A5 +:1018A0000A20FFF73FFE06003000C0B2002800D03B +:1018B0002C703000C0B2002801D1FFF727FF3000A4 +:1018C000C0B270BD0004314038B504003E48A101EB +:1018D0004518686902F0E9FA2800FFF701FF0021C6 +:1018E0002000FFF7AFFF32BD70B505003648AA01F2 +:1018F0008618C9B2012902D12620345C01E02720D4 +:10190000345C0F20E840C00701D400200FE070696C +:1019100002F0CBFA3000FFF7E3FE2100C9B2280045 +:10192000FFF790FF002801D1002000E0012070BDEA +:10193000861B0028871B002870B504002248A101DF +:1019400045183F488421490061434018F421465C12 +:1019500083214900415C00290AD08B21415C002988 +:1019600006D1F221465C3100C9B2322900D23226BA +:10197000F3214654FEF718FE3100C9B22000FEF7ED +:1019800000FE0021686901F0DBFF686902F087FA58 +:101990002800FFF7E5FD70BD8A1B0028241B0028E6 +:1019A0002C1B002800B50A00D2B2002A07D08122E1 +:1019B0008154AD490968016201219522815400BD1D +:1019C000901B0028891B00288C9A001084228154C7 +:1019D0009C214158A02281500121982281547047B6 +:1019E00000B59C214158491C9C2281509C214158A2 +:1019F000002902D101219C22815000210A00842368 +:101A0000C254A02281509822815400BD00B58B2180 +:101A1000415C002904D08169002901D0816900E07E +:101A200092499622825C002A07D08F4A1268406948 +:101A3000101A884201D3012000E00020C0B200BD8E +:101A40000013002880B500217E2281547F2281541A +:101A50008022815494228154952281548122815480 +:101A6000962281548A228154972281540121832213 +:101A700081540121FFF7AAFF01BDF3B583B07C4873 +:101A8000039984225200514344180020694608708B +:101A900000250020694648700027002069468870AC +:101AA000002602F0F5F901909420205C00284DD02A +:101AB0008220205C002849D16E480078002845D15A +:101AC0002000FEF72EFD002840D06846007CC0B202 +:101AD000002809D064480068E169401A322835D3EB +:101AE0009520205C002831D12000FFF78FFF0028CF +:101AF00004D005210398FEF745FF27E08A20205CEB +:101B0000002808D0A0682169884204D12000FFF78E +:101B100099FF01271AE08A20205C002807D0A068DE +:101B20002169884201D2012003E0022001E08020E7 +:101B3000205C6946087068460078002803D00120C0 +:101B40006946487002E0002069464870019802F03A +:101B5000A3F93800C0B2002803D00398FFF7B4FE01 +:101B600080E068464078002801D100207AE068468D +:101B700001780398FFF7B8FE002801D1002071E03A +:101B800002F086F901909420205C002856D0822033 +:101B9000205C002852D13748007800284ED1200020 +:101BA000FEF7BFFC002849D02000FFF72FFF0028D8 +:101BB00004D005210398FEF7E5FE3FE08A20205C73 +:101BC000002810D0A0682169884204D12000FFF7C6 +:101BD00039FF012709E0A0682169884201D2012567 +:101BE00003E0022501E08020255C3800C0B2002817 +:101BF0001CD1280069460978C0B2884216D16846CF +:101C000000787E216054002080216054942160542B +:101C100095216054812160542000FEF765FD0398F2 +:101C2000FFF78AFE01266846867007E0FFB2002FA4 +:101C300003D180202554012600E00126019802F0FE +:101C40002BF96846807800280AD10A4800780028D5 +:101C500004D10398FFF738FE002801D1002001E0ED +:101C60003000C0B205B0F0BD241B0028B8880000C9 +:101C7000001300288A1B0028F6B583B00D001F0052 +:101C80000400E4B29C490978002916D0C0B2FEF7DE +:101C900035FC002811D09948007800280DD19848CB +:101CA0000078002809D16846057068460078012848 +:101CB00005D068460078022801D001201AE102F020 +:101CC000E7F80190842676008E4D20007043281896 +:101CD0008221405C002806D1200070432818FEF7BE +:101CE00020FC002804D1019802F0D6F8012001E17F +:101CF0002000704328187E21415C0CA80078002841 +:101D000013D10CA801700CA8007800280DD1200078 +:101D1000704328189522805C002806D0200070436C +:101D200028188122805C0CAA10700800C0B200281C +:101D300003D001206A46507002E000206A465070CD +:101D40000CA8007800280CD0C9B2002905D00CA836 +:101D5000007869460978884203D001206946887076 +:101D600002E000206946887068464078002805D067 +:101D7000C548A1014018406902F097F80A990297F6 +:101D80006846027C00272000704328188223C7542D +:101D90002000704328187F23C75420007043281860 +:101DA0008A23C254029B200070432818036120003C +:101DB000704328188B23C1542000704328189721A2 +:101DC0004754D2B2002A08D00BA80078002804D0CB +:101DD000200070432818FFF703FE0D98C0B20028BA +:101DE00006D02000704328189621405C002810D1AE +:101DF000A648016820007043281841610121200095 +:101E00007043281896228154200070432818862198 +:101E100047540BA80078002804D0200070432818ED +:101E2000832147546846807800281ED020007043E4 +:101E300028187E21475468460178200070432818EE +:101E40008022815491480168200070432818C161A4 +:101E50000121200070432818942281540CA8017895 +:101E60006643A819FFF79EFD20E020007043281864 +:101E70007E2147546846017820007043281880224C +:101E8000815482480168200070432818C1610121F3 +:101E90002000704328189422815420007043281891 +:101EA000952147546643A81981214754019801F0B0 +:101EB000F3FF6846407800280CD07348A101401811 +:101EC000FFF70EFC00212000FFF7BCFC002801D129 +:101ED00001200FE068468078002801D0002009E04A +:101EE00000212000FFF7C9FD002801D0380000E0E4 +:101EF0000120C0B205B0F0BD881B00288B1B002854 +:101F00008A1B00280013002880B50121FFF7B5FDCA +:101F100001BDF1B586B05E48069984225200514356 +:101F200044180027002501F0B3FF01908220205CB7 +:101F30006946087068460078002803D1019801F0CE +:101F4000ABFF9EE07F20205C694608748B20205CFC +:101F5000694648709720205C6946887000263000EA +:101F60008221605430007E21605430007F21605413 +:101F700030008021605430009421605430008A2168 +:101F80006054684600788321605430009721605483 +:101F90006846017C2000FFF705FD68468078002830 +:101FA00004D0684601782000FFF710FD68460078ED +:101FB00002280FD101252F0068464078002807D15C +:101FC0009220205C002803D08620205C002830D09E +:101FD00035002EE068460078032810D102276846B5 +:101FE0004078002809D19220205C002805D0862066 +:101FF000205C002801D101251BE0350019E068466E +:102000000078042815D16846007C012801D10227F8 +:1020100000E0012768464078002809D19320205C21 +:10202000002805D08620205C002801D1012500E091 +:1020300035002800C0B2002805D08620205C401C56 +:102040008621605401E096202654019801F024FF77 +:102050000698FFF739FC002813D0EDB2002D10D000 +:10206000012003906846007C02900020019000202F +:102070000090002300223900C9B20698C0B2FFF7D1 +:10208000FBFD07B0F0BD00008C9A0010241B002857 +:1020900000130028F1B584B0B1480499842252009D +:1020A0005143451801F0F4FE0090AE4804688320C7 +:1020B0004000285C002818D07E20285C002814D01E +:1020C0008B20285C002810D19420285C00280CD19B +:1020D0008220285C002808D1A3480078002804D179 +:1020E000C0202858201A322803D2009801F0D4FECC +:1020F00034E128680190F020285CF121695C052911 +:102100000AD2C42169580391BC216958F122AA5C02 +:10211000521CF123EA540CE00100C9B2890069188D +:10212000C822895803910100C9B289006918DC22CC +:102130008958019A0300DBB29B00EB18C8269A511C +:102140000200D2B29200AA18DC23D450401C020034 +:10215000D2B2052A00D30020F022A854C0202C506F +:10216000601A0290BC202858201A0021FA22D200BE +:10217000002301F0E7FBFA229200002301F0FBF8B4 +:102180000200A4202858904201D2A4202A58AC2052 +:102190002858A4216E580021002301F0D3FB02002F +:1021A0000B007008002180185941A422AA5800236E +:1021B00001F0E1F806000198C4216958471ABC20D3 +:1021C0002858201A322812D33000401CB8420ED2B0 +:1021D000F320285C002806D00020F3216854002159 +:1021E0000498FEF7CEF9009801F056FEB6E0BC2048 +:1021F0002858201AFA2802D30298FA2803D2009805 +:1022000001F04AFEAAE002980021FA22D20000233F +:1022100001F098FBFA229200002301F0ACF80400D0 +:10222000002C03D1009801F037FE97E00198039944 +:10223000401A0021AF4A002301F084FB02000B008A +:1022400060080021801859412200002301F093F812 +:102250000190B02028580290F3202C5C0198B42102 +:1022600068503000401CB84201D200245BE07F1C63 +:10227000B74210D22000C0B2322801D2322452E03C +:102280002000C0B25F284ED2641D2000C0B260287A +:1022900049D35F2447E0019800216422002301F024 +:1022A00051FB06000F00029800215A22002301F082 +:1022B00049FB8F4213D801D3864210D22000C0B20E +:1022C000322801D232242EE02000C0B25F282AD268 +:1022D000641D2000C0B2602825D35F2423E002984B +:1022E00000216E22002301F02DFB06000F00019853 +:1022F00000216422002301F025FB8F4213D801D373 +:10230000864210D22000C0B2332807D32000C0B2CA +:10231000372801D3FB3406E0322404E02000C0B2A9 +:10232000002800D000242000F321695CC0B288425C +:1023300011D0F320285C002806D12000C0B232283A +:1023400002D32800FEF7D0F9F3202C542100C9B2A3 +:102350000498FEF716F9009801F09EFD05B0F0BD57 +:1023600000130028241B00288A1B0028FEB5A5485E +:10237000007800285DD001F08BFDC3490978002961 +:1023800002D001F089FD54E001273900BE4A1170E6 +:10239000B8490A786B461A70002422000A7001F0CE +:1023A0007BFD6846007800282BD0250027E026001A +:1023B0001AE0684600783900A94008421ED001F0B2 +:1023C00067FD019084214900B04A28004843101855 +:1023D00082235B00C05C0028E9D069435018FEF7F7 +:1023E000A0F80028E3D13E00019801F055FDF6B2B7 +:1023F000002E03D02800C0B200F059F96D1C042D46 +:10240000D7D3FEF715FAFFF7F2F9250009E0280007 +:10241000FFF77FFD2800FFF777FD2800FFF73AFE62 +:102420006D1C042DF3D301F033FD97490C7001F0BE +:1024300033FDF7BD964800787047F8B50E000700E9 +:10244000FFB270490978002904D0C0B2FEF756F8EF +:10245000002801D1012046E001F01AFD04008B485C +:1024600084214900794345188A480078002804D01F +:10247000200001F011FD012035E0FF20801D285CC7 +:1024800000280CD0310089B2F820285AFEF73FF816 +:10249000002804D0200001F0FFFC012023E082206E +:1024A0004000285C00280FD0F620285A310089B25D +:1024B000884219D100208221490068546D48017872 +:1024C0000122BA4091430170F8202E52FC20285876 +:1024D0008021490068500120FF21891D6854200097 +:1024E00001F0DAFC0020F2BD200001F0D5FC012053 +:1024F000F9E70000A0860100F2B50400E4B241490A +:102500000978002904D0C0B2FDF7F8FF002801D1F6 +:10251000002025E001F0BCFC070084256D005B4E27 +:10252000200068433018FDF7FCFF002812D020007F +:1025300068433018FF21891D405C00280AD0684696 +:1025400000886C433119F822895A80B2814201D146 +:10255000012400E00024380001F09EFC2000C0B2FD +:10256000F2BDF3B581B000262DE000200EE000247E +:1025700082204000385C0028F7D068460189F620A8 +:10258000385AFDF7C4FF0028EFD028002043C0B21E +:10259000002817D168460089F6217852FC20385867 +:1025A000401CFC2178502800822149007854314891 +:1025B0000178B5400D430570AF48B101401840693E +:1025C00001F073FC761C042E1AD2012568460079AE +:1025D0002900B1400842F5D02C48842149007143BC +:1025E0004718FF20801D385C0028C0D0684601894C +:1025F000F820385AFDF78BFF0028B8D02C00B7E739 +:10260000F7BD0000881B0028F1B5002425002EE04E +:10261000842149001D4A6846038828004843101851 +:10262000F6268353280048431018FC23C3585B1C2C +:10263000280048431018FC26835101231E0028005F +:102640004843101882277F00C6552000694351185F +:10265000FF22921D885407480178AB400B4303705A +:102660008548A9014018406901F01FFC6D1C042D2C +:10267000CED3F1BD8E1B002880B50121054A117013 +:1026800080B2FFF7C1FF01BD8C1B0028001300289A +:102690008A1B00288B1B002810B5002404E02000B2 +:1026A000C0B200F004F8641C042CF8D310BDFEB5D1 +:1026B0000400E4B2B9490978002904D0C0B2FDF79A +:1026C0001DFF002801D10120D5E001F0E1FB0190C0 +:1026D00084256D00B24E2000684330187E21415C95 +:1026E0002000684330188322805C6A461070200006 +:1026F000684330188A22805C002806D12000684395 +:1027000030189722805C002803D001206A46507060 +:1027100002E000206A465070C9B2200068433018B9 +:10272000FFF740F9002739002000684330187E2267 +:10273000815439002000684330187F2281543900C9 +:1027400020006843301880228154390020006843FB +:10275000301882228154B3480078002806D007211F +:102760002000684330188322815430E06846407866 +:10277000002806D0062120006843301883228154A7 +:1027800025E068460078022813D0684600780328C0 +:102790000FD06846007804280BD0684600780528DA +:1027A00007D068460078072803D0684600780828D4 +:1027B00007D168460178200068433018832281548D +:1027C00005E0390020006843301883228154390025 +:1027D0002000684330188A22815439002000684361 +:1027E00030188B228154390020006843301894221D +:1027F00081543900200068433018962281543900F2 +:102800002000684330189722815468464078002899 +:1028100005D0062165437019FFF7D8F80FE039009D +:102820002000684330188422815420006843301807 +:10283000A0214750380065437119982288540198A7 +:1028400001F02AFB7748007800280BD00A4DA00140 +:102850002818406901F029FBA0012818FEF740FF65 +:10286000012008E02000FFF72FF8002801D03800F1 +:1028700000E00120C0B2FEBD8C9A0010FEB50D0034 +:102880000400E4B245490978002913D0C0B2FDF72D +:1028900035FE00280ED0644E307800280AD16846F4 +:1028A00005706846007832382E2803D25D4D2878AE +:1028B000002801D001206FE001F0EAFA01903078A1 +:1028C00000280CD12878002809D184256D00344EC9 +:1028D000200068433018FDF724FE002804D1019839 +:1028E00001F0DAFA012057E06846017820006843D9 +:1028F0003018F42281540027390020006843301832 +:10290000832252008154200068433018A42147508C +:10291000200068433018A821475020006843301831 +:10292000AC214750200068433018B021475068461A +:102930000178200068433018F222815468460178FB +:10294000200068433018F322815420006843301877 +:10295000FDF72AFE2000684330187E21405C0028E5 +:102960000ED02000684330188B21405C002807D12E +:10297000654370198221405C002801D10127FFE7DF +:10298000FFB2002F04D0684601782000FDF7F9FD62 +:10299000019801F081FA0020FEBD0000881B00288C +:1029A00000130028F8B500220392002202920122AF +:1029B00001920022009200230022C9B2C0B2FFF7A8 +:1029C0005BF905B000BD38B50400E4B231490978BF +:1029D000002904D0C0B2FDF791FD002801D10020EC +:1029E0001FE001F055FA842252002B4B2100514385 +:1029F00059187E25495D00290CD1210051435918F1 +:102A00009425495D002905D1544319199522895C03 +:102A1000002901D0012400E0002401F03DFA20004B +:102A2000C0B232BD8A1B00288B1B002870B50C0079 +:102A30000500EDB2002C08D016490978002904D011 +:102A4000C0B2FDF75BFD002801D1012020E001F0BC +:102A50001FFA84225200104B2900514359188968EB +:102A60002160290051435918C96861602900514308 +:102A70005918B8268959A160290051435958E16075 +:102A8000554359198922895C217401F005FA002007 +:102A900070BD0000881B002800130028F8B50D0049 +:102AA0000400E4B275490978002918D0C0B2FDF7D6 +:102AB00025FD002813D07248007800280FD1BF48A8 +:102AC000007800280BD100950098002807D02848EE +:102AD000A1014018006B40000099884201D20120FA +:102AE00036E001F0D5F9070084256D00B54E2000D1 +:102AF000684330187E21405C00281BD120006843C9 +:102B000030189421405C002814D12000684330180C +:102B10009521405C00280DD12000684330188221A7 +:102B2000405C002806D1200068433018FDF7F9FC0E +:102B3000002804D1380001F0AFF9012008E0009826 +:102B40006C433119B8228850380001F0A5F90020F3 +:102B5000F2BD00B59C4800680021FA22D200002393 +:102B600000F0F0FEFA229200002300F004FC00BD09 +:102B70008C9A0010F8B505000C002E00F6B2002C5F +:102B800009D03E480078002805D02800C0B2FDF7E3 +:102B9000B5FC002801D101206CE001F079F90700B3 +:102BA0008948016884225200864B3000504318182F +:102BB000806B091A25703000504318188E25405D2F +:102BC000002803D0332901D2012000E000206070EA +:102BD0003000504318188F25405DA07030005043DE +:102BE00018187425405BE080300050431818762593 +:102BF000405B20813000504318187825405B60818D +:102C00006F48B5014019808FA0816078002808D0F6 +:102C1000A078002805D06089A589A84201D30120A9 +:102C200000E00020E0703000504318188C25405D13 +:102C3000002807D0300050431818006F032801D235 +:102C4000012000E000202071564398198B22805CFF +:102C5000607108000021FA22D200002300F072FE09 +:102C6000FA229200002300F086FB2061380001F078 +:102C700013F90020F2BDA84908707047881B00288E +:102C80008B1B0028FEB505000C002E00F6B2002CB0 +:102C900009D0A2480078002805D02800C0B2FDF76E +:102CA0002DFC002801D1012086E001F0F1F801900F +:102CB00084214900434A3000484310188768300097 +:102CC00048431018C068009030004843101889230A +:102CD000C05C60703000484310187E23C05CA07058 +:102CE000714350188321405CE070019801F0D4F8E2 +:102CF0000098002801D101205EE001970098019919 +:102D0000884201D2009801902D48B1014018C26A52 +:102D1000257067600098A06022610198002100235F +:102D200000F010FE02000B000098400800218018FF +:102D30005941009A002300F01EFBE0600198002139 +:102D4000774A002300F0FEFD02000B0000984008C7 +:102D5000002180185941009A002300F00CFB6062AA +:102D60000026A661E6612800C0B2002805D1E0680F +:102D70006061E068A06126621DE0EDB2012D17D10F +:102D8000E068606101980021664A002300F0DAFDE6 +:102D900002000B0000984008002180185941009A59 +:102DA000002300F0E8FAA061E068E061266202E03A +:102DB0006661E06820620020FEBD00008A1B0028DA +:102DC0008C9A001000130028241B0028F8B588B046 +:102DD0000D0016000400E4B25049097800290CD017 +:102DE000C0B2FDF78BFB002807D077480078002899 +:102DF00003D176480078002801D001208AE00696A9 +:102E00000795FFF7B3FA01F043F8842676006D4D7D +:102E1000210071436918CF6801F03EF803A80290C1 +:102E200004A8019005A80090069B079A390020008D +:102E3000FDF7D4FB002801D101206BE001F028F858 +:102E400007006148007800280AD16048007800280F +:102E500006D1200070432818FDF763FB002804D139 +:102E6000380001F019F8012054E007992000704360 +:102E70002818A42281500699200070432818A822FF +:102E800081500599200070432818AC228150049984 +:102E9000200070432818B02281506846017B200032 +:102EA00070432818F22281546846017B2000704349 +:102EB0002818F3228154012120007043281883220E +:102EC00052008154200070432818FDF76DFB20004C +:102ED000704328187E21405C00280ED020007043EB +:102EE00028188B21405C002807D16643A81982214D +:102EF000405C002801D1012000E00020C0B2002881 +:102F000004D06846017B2000FDF73BFB380000F051 +:102F1000C3FF002009B0F0BD8F1B0028881B0028CC +:102F200010270000EC13000070B505000C002E0007 +:102F3000F6B2002C09D026480078002805D02800D9 +:102F4000C0B2FDF7DBFA002801D1012038E000F023 +:102F50009FFF257084225200B84B3100514359180D +:102F600083256D00495D6170310051435918A425D6 +:102F700049596160310051435918A8254959A16048 +:102F8000310051435918AC254959E1603100514392 +:102F90005918B02549592161310051435918B425B8 +:102FA00049596161310051435918F225495D217633 +:102FB00056439919F322895C617600F06DFF002079 +:102FC00070BD0000001300288B1B00288A1B0028FE +:102FD000881B0028F1B586B00C006846007E019081 +:102FE0000026300030006946087430006946887059 +:102FF00030006946487092480078002809D0684639 +:10300000007EFDF77BFA002803D08E4D287800283B +:1030100001D0012010E10394FFF7A8F98A48019933 +:1030200089014018C76A0398874201D2012003E151 +:1030300000F02EFF029081480199842252005143F2 +:1030400044188920205C002812D0E06800280FD0A6 +:103050008B20205C00280BD18220205C002807D127 +:103060002000FDF75EFA002802D02878002804D05E +:10307000029800F011FF0120DEE003980021E268D1 +:10308000002300F05FFC02000B007808002180188C +:1030900059413A00002300F06EF907007E20205CC1 +:1030A000694608702000FEF79BFC276101258A20F5 +:1030B000255430008B21605430009721605430003B +:1030C000832160549420205C002819D0A068874296 +:1030D00001D1300005E0A068B84201D2280000E02C +:1030E0000220802160549620205C00287DD1574822 +:1030F000006860619620255430008621605474E099 +:1031000068460078002839D068460078012802D146 +:10311000A068B84206D368460078022804D1A068A7 +:10312000874201D2280000E030009621615C00292E +:1031300007D14649096861619621655431008622AC +:10314000A154C0B2002850D13F48019989014018CC +:10315000406900F0AAFE30007E21605430008021DA +:1031600060543A480068E06194202554684601782C +:103170002000FEF717FC6846857036E09520205C3D +:1031800000281DD0A068874201D1300005E0A0686A +:10319000B84201D2280000E0022080216054206A59 +:1031A000E061942025549620205C00281DD12748FA +:1031B000006860619620255430008621605414E038 +:1031C000A068874206D13000862160542000FEF7B7 +:1031D00039FC0AE0A068B84202D26846057402E0F1 +:1031E00002206946087468464570029800F054FE53 +:1031F00068468078002809D00198FEF765FB002812 +:1032000001D0300000E02800C0B215E068464078E8 +:10321000002810D000200390002002900020019090 +:10322000002000903B0001226846017C6846007E39 +:10323000FEF722FD00E0002007B0F0BD00130028DB +:10324000881B00288A1B00288C9A0010241B002849 +:1032500038B500200E490870FDF7D6FFFEF772F86A +:10326000FEF79EF9050000F088FC0400FDF756FF0C +:10327000EDB2002D06D0E4B2002C03D0FDF786FAA3 +:10328000002803D1FEF742FA012000E0002032BD01 +:103290008B1B0028D021890040587047C22189002B +:1032A0004058C005C00D7047902292008150704771 +:1032B000822189004058C005C00D704700B50068E4 +:1032C000800B8007800F002801D1802000E0402083 +:1032D00000BD00B5C02189004058C006C00E0828B6 +:1032E00001D2012000E00020C0B200BDF8B504000A +:1032F0000D0016002000FFF7ECFF002809D02F007A +:103300000025B54210D22000FFF7C4FF78556D1C90 +:10331000F7E72F00002505E02000FFF7BBFF69005D +:1033200078526D1CB542F7D3F1BDF8B507000D001A +:1033300016003800FFF7B2FF0400A64200D23400A6 +:10334000290022003800FFF7D1FF2000F2BDF8B5B8 +:1033500005000C0000262800FFF7B0FF070028003A +:10336000FFF7A6FF874204D021002800FFF79CFF4B +:1033700001263000F2BD12422DD0994231D970B5EC +:1033800000251B4209D00C00002112E0110000F0C2 +:10339000F7F80A000021002370BD0942F6D000248E +:1033A000012649186441944200D3A41A7641F8D307 +:1033B0003100012601E0764109D2001864416D41D7 +:1033C000A41A9D41F7D2A4185D41B619F5D3300077 +:1033D00022002B0070BD1B42CFD108B501F0E8F8E8 +:1033E00008BD01D19042CAD202000B00002100208A +:1033F0007047000070B55F4BC018C00900015E4BFC +:10340000C31804290CD21F251C68CE002800B04028 +:103410008443D2B21540C800854025431D600CE0AE +:10342000FC311F255C68CE002800B0408443D2B236 +:103430001540C800854025435D6070BD00B5002A79 +:1034400003D101228A40426002E001228A40826068 +:1034500000BD30B403008C000F25596C2800A0403B +:1034600081431540A5400D435D6430BC704730B4C6 +:10347000030001259C6C28008840844315408D4042 +:1034800025439D6430BC704730B403000125DC6CDB +:1034900028008840844315408D402543DD6430BCBE +:1034A000704730B403004C0010340325D96C280059 +:1034B000A04081431540A5400D43DD6430BC7047FA +:1034C000426901228A4042614069704730B403007A +:1034D00001259C6928008840844315408D40254380 +:1034E0009D6130BC704730B403004C000325196C5B +:1034F0002800A04081431540A5400D431D6430BC09 +:103500007047F8B504000025002C30D01600002EBE +:103510002DD00F00326839002000FFF78FFF327A7C +:1035200039002000FFF766FF726939002000FFF7BD +:103530009EFFB26939002000FFF7A6FFF26939004B +:103540002000FFF7AEFF726839002000FFF781FF0F +:10355000F26839002000FFF7C6FF39002000FFF7AE +:10356000AFFF326939002000FFF7B0FF00E0034DE4 +:103570002800F2BD0000CFBF0000304001005A001B +:103580000022030A8B420BD203098B4219D2430853 +:103590008B422ED2411A00D201465241104670474A +:1035A000FF2209023FD012068B4205D312120902F4 +:1035B0008B4201D31212090203098B4219D300E096 +:1035C000090AC3098B4201D3CB01C01A52418309B6 +:1035D0008B4201D38B01C01A524143098B4201D364 +:1035E0004B01C01A524103098B4201D30B01C01A8F +:1035F0005241C3088B4201D3CB00C01A5241830809 +:103600008B4201D38B00C01A524143088B4201D335 +:103610004B00C01A5241884200D3401A5241CFD2C7 +:1036200001461046704708B500F0C4FF08BD000011 +:10363000F8B501231A00002800D151E1002900D17A +:103640004EE1A84A12680C7AA74D1540A4048022C6 +:10365000D20214402C430322CE681640A34D2540CD +:103660003604C024A40234402C430D786E07760F34 +:103670009F4D25403606E024E40434402C438E78E8 +:103680009C4D2540B4078026F60534402C43282560 +:103690004D5D0126B4431D40254334240C5D0226B4 +:1036A000B5436400022634402C430D7F0426B44306 +:1036B000AD000426354025434C7F0826B543E40081 +:1036C000082634402C4340254E5D1E408A4D25403F +:1036D000B4028026F60034402C4340254D5DEDB207 +:1036E0006D081E002E40F6B2844D254074028026DF +:1036F000B60034402C4370254E5D814D2540340288 +:103700008026760034402C4371254E5D16407D4D59 +:1037100025403603C024A40134402C4304600C7AB5 +:10372000002C02D10023836006E00C7A012C02D128 +:103730004B69836000E083600B6A03614B6A4361FD +:10374000CB6A83610B6BC3614B6903628B69436214 +:103750006D4B1C684423CB5CDBB2FF25AC43234399 +:103760004C240C5DE4B2694D1D402404FF231B046E +:1037700023402B435C240C5DE4B21D022D0A23067A +:103780002B436C240C5DE4B2614D1D402402FF23E9 +:103790001B0223402B4343645E4B1B6864240C5D77 +:1037A000E4B25B4D1D402402FF231B0223402B4348 +:1037B00054240C5DE4B2FF25AB431C438464564B98 +:1037C0001C684123CB5C13400325AC432343602496 +:1037D0000C5D1440514E1E40A302C0252D011D401A +:1037E00035434823CE5C16403023DB4330241D4054 +:1037F000370127402F4350254D5D1540484E3E4030 +:103800002F02C025AD003D40354358268E5D164041 +:10381000C027BD43B701C0263E402E4368254D5DFD +:1038200015400C27BE43AF000C253D403543C56411 +:103830003C4D2D6807267227CF5D3740009707273C +:10384000BD432F00009D3D437327CF5D3E40702751 +:10385000BD43370170263E402E43466535254D5DFC +:103860008567314D2D680E7C16400327BD432E43DE +:10387000CD7C1540C027BE43AF01C0253D40354338 +:103880004E7C16400C27BD43B7000C263E402E430D +:103890008D7C2A403340120114401C430465234AA6 +:1038A0001268CB8894B21A0422438B889BB21B0AFD +:1038B0009BB2174C14401B02FF2212021A402243F3 +:1038C0000B78052B05D10979C9B2FF239A4311431F +:1038D00004E04978FF239A43C9B2114301630022EF +:1038E0001000F2BD8CA50010FFFFFBFFFFFFFCFFE7 +:1038F000FFFFFFF8FFFFFFBFFFFBFFFFFFFDFFFF25 +:10390000FFFEFFFFFFCFFFFF90A50010FFFF00FFAE +:10391000FF00FFFF94A5001098A50010FFF3FFFF24 +:10392000FFFCFFFF9CA50010A0A50010A4A500109F +:103930000168802212060A430260704701617047E5 +:103940008160704730B4434351435D18010C0C0053 +:10395000130C5C432D1980B2434392B251430024AF +:10396000C918644124040B04090C09195043C018F8 +:10397000694130BC7047000000B5022801D3012026 +:103980000FE00B00DBB2042B01DB012009E0BE4B92 +:1039900080001818C9B2405C824201D3012000E0C7 +:1039A000002000BDF8B504001F00022C01D3012047 +:1039B00023E015000E002A003100C9B22000FFF7F5 +:1039C000DBFF012801D1012017E03000C0B2002840 +:1039D00016D1FF2F12D8AD4861034018A900401836 +:1039E0008021490140180168A94A0A403902FF2391 +:1039F0001B020B40134303600020F2BD0120FCE7D3 +:103A0000F6B2012E16D180204002874210D29F4884 +:103A100061034018A9004018A0214901401801681D +:103A20009C4A0A403902C94B0B4013430360E3E749 +:103A30000120E2E70120E0E700B20012C0B27047C7 +:103A4000F8B505000F001600280000B2FFF7F4FFDC +:103A500004002000C0B2022801D301202CE0320073 +:103A60003900C9B22000C0B2FFF786FF012801D19A +:103A7000012021E085482100C9B2490341182A00EC +:103A8000D2B292008918C02212018A58B04911405E +:103A9000FFB23B02C02292001A400A43FF218A4330 +:103AA000F1B21143E4B262038018EDB2AA008018AB +:103AB000C022120181500020F2BD70B50400022C1A +:103AC00001D3012028E015000E002A003100C9B200 +:103AD0002000FFF751FF012801D101201CE06B48B5 +:103AE00061034158802212060A43C0218904114310 +:103AF000FF2212040A43964B1340F6B23202C02151 +:103B0000890011401943FF229143EAB20A4361033D +:103B1000425061034058002070BD70B50400022C73 +:103B200001D3012028E015000E002A003100C9B29F +:103B30002000FFF721FF012801D101201CE053489C +:103B4000610341588022D2050A43C02189041143F0 +:103B5000FF2212040A437E4B1340F6B23202C02108 +:103B6000890011401943FF229143EAB20A436103DD +:103B7000425061034058002070BDF8B598B00BA8C2 +:103B8000342100F029FD9A4803C801AA03C2083A6B +:103B900003A8A549202200F0E7FAAA4800780028E7 +:103BA00001D001206DE000252C0007E02800A64987 +:103BB000620088522800A5490855641C062C14D2BE +:103BC000A348142161434118097A0BAA11720BAA68 +:103BD000142161434118496814236343C058FFF717 +:103BE00090FC0028E2D000204BE0684600F0B2F8DC +:103BF000002801D1002044E0009800219622920084 +:103C00000023FFF79FFE934A002312184B41100038 +:103C10001900914A0023FFF7AEFB002800D10120D4 +:103C200003AFB8818D4E300000F054FD01A9300083 +:103C300000F0ECFC002801D0002022E02C0006E07F +:103C4000142060432818C06800F042FE641C062C53 +:103C500013D27F4D142060432818007C787103A98B +:103C6000142060432818C06800F038FD0028E7D011 +:103C7000300000F02FFD002003E0012071490870A2 +:103C8000012019B0F0BD0000B8A4001000000440ED +:103C9000FF00FFFFFF0000FFF8B584B00E00C0B2C8 +:103CA0000290002528006946088004212A0003AC00 +:103CB000200000F081FC2C0062480078002806D02B +:103CC000674F3878002802D10298062801D30020D7 +:103CD00039E0012038705E4802991422514340189F +:103CE000C0680190019800F0A1F8019800F0FCFD77 +:103CF000019800F07FF800281FD003AA69460198B8 +:103D000000F0F8FD002818D103A8C078002814D0CE +:103D1000684600880005000D6946088068460088EE +:103D20004949029A52008852012448480299445451 +:103D3000002E02D0684600883080019800F076F8A6 +:103D40003D702000C0B205B0F0BD000000FFFF00D4 +:103D5000FFFCFFFFF8B5070000200090FF262C367F +:103D60003000FFF769FE0500002F04D0684601F01F +:103D7000D1FA002801D0002038E0009839494018D5 +:103D80003949FFF7FDFB0400002C02D0374884427C +:103D900001D300202AE0042201212800FFF7BDFE04 +:103DA000002801D0002021E0042201213000FFF78B +:103DB00047FE002801D0002018E0631E04220121E4 +:103DC0002800FFF7EFFD002801D000200EE00422BC +:103DD00001212800FFF771FE002801D0002005E036 +:103DE00000982100FFF7CCFB38600120F2BD0000F5 +:103DF000A0A400107CB505001D4C062100226E46D3 +:103E0000300000F0D9FB6946280000F05FFE6846EC +:103E10000078002803D1641E002CF4D101E00120B9 +:103E200000E0002076BD0000E4A20010E0B51149DA +:103E30000CC9083969460CC10839694600F0F0FD23 +:103E400007BD0000801B0028D01A0028E81A0028AF +:103E5000089E0010FFC99A3B00CA9A3B0010904090 +:103E6000811B00285F8DCB00608DCB00010001001D +:103E7000A0860100A8A400100000000000000000BF +:103E8000801C800803D0401C801EFCD100BF7047FE +:103E9000EFF3108072B6704780F31088704740309F +:103EA000016810220A43026070474030016808220E +:103EB0000A43026070470000F8B5012422004C2339 +:103EC000CB5C052B03D24D23CB5C052B01D310001B +:103ED000E2E0002800D1DEE0002900D1DBE06F4AFB +:103EE00012684B7923406E4D15409B048022D2020C +:103EF00013402B4303228D7915406A4E1E402B043C +:103F0000C025AD021D40354307230E7A1E40664F83 +:103F10002F403606E025ED0435403D43CE79634F12 +:103F20002F40B5078026F60535403D430E7D01271D +:103F3000BD4326402E4324254D5D0227BE436D0020 +:103F400002273D40354305600D7906003036009666 +:103F5000009E3668FF27BE43EDB23543009E3560B4 +:103F60004D79012D0BD18C79002C02D10024846075 +:103F700006E08C79012C03D10C68846000E0846039 +:103F8000CC6804610C694461CC6984610C6AC461C9 +:103F90000C680462464C25680C7EE4B2FF26B543EB +:103FA0002C4330254D5DEEB2424D25403604FF24B2 +:103FB000240434402C4340254D5DEDB22402240AF4 +:103FC0002E06264348240C5DE7B2FF2424023A4D16 +:103FD0002E403F02274037434764384E3668382723 +:103FE000CF5DFFB20097FF27BE43009F37432826CF +:103FF0008E5DF6B23D40360234402C438464304C32 +:1040000025688C7D14400326B5432C4325254E5D41 +:1040100016402C4D2540B602C024240134402C43C8 +:104020002C254D5D15403026B4432E0130253540FA +:10403000254334240C5D1440234E2E402502C02419 +:10404000A4002C4034433C254D5D1540C026B443AC +:10405000AE01C0253540254344240C5D22400C248C +:10406000A54394000C2222402A43C264174A1468D4 +:104070004C228A5C1A400725AC4322434D240C5D38 +:1040800023407024A2431C01702323401343436543 +:10409000497D816700221000F2BD000078A5001064 +:1040A000FFFFFBFFFFFFFCFFFFFFFFF8FFFFFFBF6E +:1040B0007CA50010FFFF00FFFF00FFFF80A50010A0 +:1040C00084A50010FFF3FFFFFFFCFFFF88A5001091 +:1040D0000168802212060A43026070477830016846 +:1040E00001220A4302607047C16F0800C007C00F79 +:1040F0007047010070310A68012313430B60006FA1 +:104100007047000030B5010000221000134B1B68FF +:10411000002914D08C786407640F0725AB431C4337 +:104120000B79002B01D00122FFE763005B08D20767 +:104130001A430B4B0024095F89005A5000E00648DF +:1041400030BD00B5074A1368002B03D0126800B2D7 +:104150008000115000BD00000100560074A5001041 +:10416000008020402412002870B4103A03D378C98C +:10417000103A78C0FBD2530701D318C918C001D533 +:1041800008C908C0D20704D30B880380891C801C8F +:10419000002A01D50B78037070BC70478B0701D1E2 +:1041A0008307E1D0124205D00B78491C0370401CF4 +:1041B000521EF9D170470000F7B5AD4BAD4A1568F6 +:1041C000AD4A1668AD4A12680192AD4A1268009273 +:1041D000002422002200002800D11EE10A00002A4B +:1041E00000D11AE15168002901D1936805E05168B6 +:1041F000022901D1230000E0022311695769B94265 +:1042000001D3116900E05169092909D29D4929406A +:104210002125555D002D15D080256D000D4313E03F +:10422000112905D2974F2F408021C9013943EFE76B +:10423000212905D2934F2F40802109023943E7E716 +:104240008B48EBE0904D0D40D168491E0907090FDE +:104250000F27BD4329438D4D0D408021490429433B +:104260000160117F002901D0210000E0012101251A +:104270000127BE43294031430E00516809092940F6 +:104280000227BE434900022739403143D67E10271A +:10429000B943360110273E400E43517E2027BE43CE +:1042A00049012027394031431668012E00D02500EE +:1042B0004E007608E90731430425A9435D00042632 +:1042C00035400D4308218D43D90008231940294367 +:1042D000537F6D4D0D40190280235B001940294327 +:1042E000957F80239B006A4E0E406902194031433E +:1042F000D67F684D0D40B1028026F600314029433B +:104300002025565D644D2940F60280273F013E403E +:104310000E4311798F07BF0F5C4931403F06C0261D +:10432000B6043E400E430662167E009F5649394051 +:10433000360280277F003E400E43977E544931402D +:104340007E021E400E431169491EC906C90E1F2771 +:10435000BE433143C026B60081512421515CC9B20D +:104360000091C121890041180E68FF27BE43009FBC +:1043700037430F60167E019F43493940360280273C +:104380007F003E400E435169491EC906C90E1F27D2 +:10439000BE4331438026B60081512C21515CC9B205 +:1043A00000918121890041180E68FF27BE43009FBC +:1043B00037430F60116B1B4E8151916A184E81512A +:1043C0003821515CF026360186190096009E376828 +:1043D0002F4E3E4049020B40334300990B60392178 +:1043E000515CF4221201821813681D40C902802317 +:1043F0001B011940294311600B49445002980028C1 +:104400000AD002980460029884610298C4600298FD +:10441000C46126480299086223001800FEBD00000E +:10442000C80F0000880F0000C80E00001B49016083 +:10443000C02189040162FF220832C0218900425054 +:104440000021C1239B00C15080239B00C2508122C8 +:1044500092008150124A8150154A8150114A815070 +:10446000114A8150134A8150134A8150704700000D +:104470000140AA0064A5001068A500106CA50010FA +:1044800070A50010FF3FFFFFFFFEFFFFFFFFFFFCD7 +:10449000FFFDFFFFFFFBFFFFFFF7FFFF0F00000324 +:1044A000C80E0000C80F0000880F0000EFCDAB0061 +:1044B000880E0000080F0000480F0000F8B5040047 +:1044C0000D00334F387800280ED02D4E18222D497C +:1044D000300000F069FF0020F075CF2040002A492D +:1044E0000860002000F0C0FF2000290001223A707F +:1044F00080225204002399420AD301D8904207D364 +:10450000244A04000D0024A003C80019694102E0F8 +:104510000200002000211D4B00241C60204D2A6059 +:10452000214A146005221A601A68D203FCD51C6067 +:104530000029DDD10028DBD13C70F1BD70B505004C +:10454000184E306800280ED10D4C18220D4920005D +:1045500000F02AFF0020E075E52040000A490860CD +:10456000002000F081FF2C0030681049FFF708F8A8 +:10457000002122000023FFF7E5F9FFF79FFF70BD40 +:104580005C1A0028A0A000101C1B002810E000E00E +:10459000851B0028FFFFFF00010000FFFFFFFFFF5A +:1045A00014E000E0681B002818E000E040420F0023 +:1045B00070470000704700001206130A1A43130CDC +:1045C0001A4300BF094205D0830707D00270401C80 +:1045D000491EF9D1704700000022FFE7130010398F +:1045E00006D330B41400150010393CC0FCD230BCE6 +:1045F000490700D30CC000D504C0890002D3028053 +:10460000801C002900D5027070470000F8B5020038 +:1046100000231800A94C2468002959D000920A7878 +:104620001207120F009D10352E680F27BE4332432C +:104630002A604A78FF25AC43D2B222438C78002C02 +:1046400001D0012400E01C009D4D15402402802271 +:10465000520014402C430122CE781640994D25403B +:1046600074028026B60034402C430D79002D01D011 +:10467000160000E01E00944D2540B4028026F6008E +:1046800034402C434D79002D01D0160000E01E006F +:104690008E4D254074078026B60534402C438D7915 +:1046A000002D01D0160000E01E00A14D2540B407EA +:1046B0008026F60534402C43C979002901D0130027 +:1046C000FFE762005208D9071143009A116000E029 +:1046D0009848F2BD0021016001617047F0B585B0D6 +:1046E0000C000025019594490E68944909680491CD +:1046F00093490968039193490F68934909680291A6 +:10470000002C00D1D4E00090009800F0E7F8029966 +:104710008020C000084380218900014380204000A0 +:1047200008430222024301210A4304201043009A55 +:10473000106120784007400F07229643304362788B +:104740005207520F702398431201702616400643F9 +:104750000322A07810407D4B33400602C020800029 +:1047600030401843E378002B01D00B0000E02B0011 +:10477000774E0640D80280231B011840304323792E +:10478000002B01D00B0000E02B0046007608D80774 +:104790003043009B186060798006800E049B3F26A2 +:1047A000B3431843A3791340C026B0439B01C026EE +:1047B0001E400643E07943075B0F664830401E0207 +:1047C000E023DB0033400343207A002801D00D00B2 +:1047D000FFE75F4E1E40E80280231B011840304374 +:1047E000657A1540874B03402D03C0208001284087 +:1047F0001843A57A1540844B0340AD03C020000246 +:1048000028401843A3891D052D0D804B03402D041E +:104810007F4828401843A37B0B4045006D08D8070C +:104820002843009B5860E07B4007400F039B07250F +:10483000AB431843237C0B404025A8439B014025F4 +:104840002B400343607C014080208343C8018021CA +:1048500008401843A17C6F4B03400902FF2000026F +:1048600008401843E17CC906C90E6B4B034009049C +:10487000F820400308401843217D0A406749014061 +:104880009205C02000041040084300998860E08A27 +:10489000390C090480B20843218B82B2080410430A +:1048A0000099C86021001A31009800F055F801E025 +:1048B00020480190019805B0F0BD0000D4A400107C +:1048C000FFFEFFFFFFFDFFFFFFFBFFFFFFFFFFDF1F +:1048D0003830016801220A430260704738300168AD +:1048E00001229143016070473C30016801220A4374 +:1048F0000260704710B503000020002916D0002A7E +:1049000014D05B6A1C000C80190F0C00E407E40F44 +:104910001470990F0C00E407E40F9470590F0C0009 +:10492000E407E40F5470D90FD17000E0014810BDC6 +:10493000FFFFFFBF0100DA00D8A40010DCA40010C4 +:10494000E0A40010E4A40010E8A40010FFFCFFFFA6 +:10495000FFF7FFFFFFF8FFFFF0B50A000023190083 +:104960006F4C2468002A49D05579002D01D00126CA +:1049700000E01E006B4D2540B4028026F600344056 +:104980002C431579002D01D0012600E01E00664D54 +:10499000254074028026B60034402C43D578002D83 +:1049A00001D0012600E01E00604D25403402802623 +:1049B000760034402C435578002D01D0012500E0CD +:1049C0001D000226B4436D000226354025431478AD +:1049D000002C01D0012400E01C0001260127BD436A +:1049E00034402C439278002A00D11E0004229443C4 +:1049F000B20004231A402243826100E047490800C4 +:104A0000F0BD0000FFCFFFFFFF3FFFFFFFFF00F003 +:104A10000000FF0FFF00FFFFFFFFE0FFFFFF3FFF72 +:104A2000F0B50A0000231900414C2468002A49D03F +:104A30005579002D01D0012600E01E00394D25409A +:104A4000B4028026F60034402C431579002D01D0A5 +:104A5000012600E01E00344D254074028026B60079 +:104A600034402C43D578002D01D0012600E01E00F3 +:104A70002E4D254034028026760034402C43557854 +:104A8000002D01D0012500E01D000226B4436D0079 +:104A90000226354025431478002C01D0012400E083 +:104AA0001C0001260127BD4334402C439278002A84 +:104AB00000D11E0004229443B20004231A40224372 +:104AC000026100E015490800F0BD000010B50200C9 +:104AD000002000291FD01269930A1C00E407E40F8C +:104AE0004C71530A1C00E407E40F0C71130A1C00FC +:104AF000E407E40FCC7053081C00E407E40F4C708B +:104B000013001C00E407E40F0C7092081300DB078D +:104B1000DB0F8B7000E0014810BD00000100DA00DF +:104B2000ECA40010FFFBFFFFFFFDFFFFFFFEFFFFF8 +:104B3000F0A4001000B5012027490A68520802407D +:104B4000002A01D0022001E00968084000BD274882 +:104B500001680800C007C00F704700B5C21E022AD6 +:104B600001D3012002E0C01E0860002000BD1CB57A +:104B7000FF246946FFF7F1FFC0B2002802D02000F1 +:104B8000C0B207E03C480099890041580800C007BE +:104B9000C00FC0B216BD00B5002801D0032801D354 +:104BA000012002E0401E0860002000BD1CB5FF246B +:104BB0006946FFF7F0FFC0B2002802D02000C0B263 +:104BC00008E03448009909014018C1680800C0078E +:104BD000C00FC0B216BD0000241526402E48006844 +:104BE00081080800C007C00F70470000401526402C +:104BF00038B504002000C0B208280DD3274D182274 +:104C00002749280000F0D0FB0020E87525482649F8 +:104C10000860002000F028FC24482100C9B2890067 +:104C200041580A00D205D20F002A05D0E4B2A100F3 +:104C300040580007000F00E0FF2032BD38B50500E6 +:104C40002800C0B208280ED3144C182214492000A2 +:104C500000F0AAFB0020E0758920000112490860DD +:104C6000002000F001FC1148EDB2A90040580009F5 +:104C70008007800F32BD0000401626400F480068B4 +:104C8000000AC0B270470E480068000AC0B2704700 +:104C90000000000000192640100027405C1A002880 +:104CA00008A000105B0800001C1B002840122640D2 +:104CB00004480068000AC0B270470000101020408D +:104CC0000C1020400810204038B50400072C0ED3EB +:104CD000124D18221249280000F066FB0020E875EA +:104CE000CE2040000F490860002000F0BDFB0A48BC +:104CF000A10040584007400F010009B2042907D124 +:104D00000448A1004058C106C90E80204000084355 +:104D100000B232BD00012640001226405C1A002875 +:104D200054A000101C1B00281E4909688A03920B1E +:104D30000260090E0A00D207D20FC2711749096832 +:104D40000A00D204D20C82800A00120CD2B2028174 +:104D5000090CC9B24181264909680F220B00134092 +:104D600003730B091A4042730A0AD204D20CC2819F +:104D7000090F8907890F0174094909680A0A52074E +:104D8000520F82710A00120CD205D20D4282890F95 +:104D90000A00D207D20F0275704700003415264072 +:104DA0003C152640301526401CB50C006946FFF71F +:104DB000D4FE0100C9B2002901D0C0B217E00D48ED +:104DC0000099890040584106490E21601F21020ABE +:104DD0000A406260020C1140A160010F8907890F2F +:104DE0006173C00E0100C907C90F2173002016BDF1 +:104DF00038152640001626401CB50C006946FFF702 +:104E0000CAFE0100C9B2002901D0C0B233E01A487D +:104E1000009909014158CAB222601F220B0A1340AF +:104E200063600B0C1A40A260090F8907890F217378 +:104E30000099090141184A68D10F61730721130FC6 +:104E40000B40002B01D0012300E00023A3731202CA +:104E5000120A2261009A120180188068C20F22751E +:104E6000020E1300DB07DB0F63750200A275000C56 +:104E70000140E175002016BD0019264080B50100F3 +:104E800086481822FFF770F9012085490870002034 +:104E900002BD000000B583490968C90F002907D089 +:104EA0007F490978002907D100210160032000BD56 +:104EB000002101600320FAE77849096801600020B9 +:104EC000F5E7000010B50400FFF734FE002803D119 +:104ED0000020206003200BE071480078002804D0F7 +:104EE0006E4880682060002002E0002020600320DF +:104EF00010BD00B56A490978002904D0674949689E +:104F00000160002002E000210160032000BD0000DC +:104F100000B565490968C90F002907D060490978BB +:104F2000002907D100210160032000BD002101609C +:104F30000320FAE75949C96801600020F5E700003D +:104F400000B55A490968C90F002907D054490978A2 +:104F5000002907D100210160032000BD002101606C +:104F60000320FAE74D49096901600020F5E70000D8 +:104F700010B50400FFF732FE002803D100202060A6 +:104F800003200BE046480078002804D043484069DD +:104F90002060002002E000202060032010BD0000FF +:104FA00010B50C00C0B2FFF78FFE00280CD0401ED9 +:104FB0000ED0401E10D087214900401A10D0401E4C +:104FC00012D0C01E14D017E02000FFF763FF16E0D8 +:104FD0002000FFF78EFF12E02000FFF773FF0EE0C6 +:104FE0002000FFF795FF0AE02000FFF7C1FF06E071 +:104FF0002000FFF7A5FF02E000202060032010BD85 +:1050000080B501000020FFF7CBFF02BD80B5032271 +:10501000D2B2824203D200200860012003E0401C8B +:10502000C0B2FFF7BDFF02BD30B587B004006846CF +:10503000FFF7E6FF0100C9B2002903D0002121607B +:10504000C0B228E001A8FFF76FFE01AD287C02285E +:1050500003D10098206000201DE07B480068C00F4D +:10506000002808D0FFF773FDC0B2002807D1002048 +:10507000206003200FE00098206000200BE00098E3 +:1050800001994843A988FEF77BFAE979491CFEF7A4 +:1050900077FA2060002007B030BD0000441A0028D5 +:1050A000841B002818152640081526400C1526409C +:1050B000F0B58BB004000D0069462000C0B2FFF7C8 +:1050C000A5FF0100C9B2002903D000212960C0B2A8 +:1050D000B7E02000C0B2022848D307A92000C0B220 +:1050E000401CFFF761FEC0B200280DD0824E18228E +:1050F0008249300000F058F90020F075804881495D +:105100000860002000F0B0F97F482100C9B2890092 +:10511000401808380068C00F002807D007A8407B57 +:10512000022807D10098286000208AE000982860B3 +:10513000002086E0E4B2641C2000FFF718FD0100A7 +:10514000C9B2002902D0C0B2FF2803D100202860D4 +:10515000032076E00098079948430899FEF710FA73 +:105160000999FEF70DFA286000206AE001A92000E5 +:10517000C0B2401CFFF740FEC0B200280DD05E4E0A +:1051800018225E49300000F00FF90020F0755F48EA +:105190005C490860002000F067F95D482100C9B251 +:1051A00009014058C00F002807D001AE307B02280B +:1051B00007D100982860002043E000982860002074 +:1051C0003FE0E4B2641C2000FFF7F0FC0100C9B22C +:1051D000002902D0C0B2FF2803D10020286003209C +:1051E0002FE0707B012821D100980021019E00272B +:1051F0003F06320A17433606059A002392197B416F +:10520000FEF7A0FB06000F0002980021039A00237E +:10521000FEF798FB02000B0030003900FEF7ABF8F8 +:10522000000E0A021043090E286009E00098019957 +:1052300048430299FEF7A4F90399FEF7A1F9286003 +:1052400000200BB0F0BD00003015264010B5032340 +:10525000421E0400E4B2002C03D10800FFF7E4FE74 +:105260000CE01400DBB2E4B2A34204D31000C0B2DD +:10527000FFF71EFF02E0C0B2FFF792FE10BD38B587 +:1052800004000D002000C0B2FFF7B2FC0100C9B25B +:10529000FF2904D12800FFF7FDFDC0B21BE06946DD +:1052A000C0B2FFF7D3FF0100C9B2002903D000212B +:1052B0002960C0B20FE02000C0B2FFF7BFFCC0B24F +:1052C000002805D002280BD006D303280CD00FE00D +:1052D00000982860002032BD009840082860F9E757 +:1052E000009880082860F5E70098C0082860F1E77A +:1052F000002028600320EEE75C1A002854A000106C +:10530000630900001C1B0028001626407F090000CE +:10531000001926401CB5040069460020FFF7AFFFC6 +:105320000100C9B2002903D000212160C0B209E008 +:10533000FFF7A9FC01000098C9B2491CFEF720F94B +:105340002060002016BD1CB5040069460020FFF750 +:1053500096FF0100C9B2002903D000212160C0B22C +:1053600008E0FFF78BFC01000098491CFEF708F9E4 +:105370002060002016BD1CB504006846FFF7E3FF5F +:105380000100C9B2002901D0C0B208E0FFF790FCCB +:1053900001000098491CFEF7F3F82060002016BDBC +:1053A00080B5FFF7E8FF02BD71B58B0709D0521E2B +:1053B00028D30B780370401C1B421FD0491C8B075D +:1053C000F5D1121F3ED3274CE50140C9331BB3432F +:1053D0002B4209D1830716D140C0121F32D340C9D6 +:1053E000331BB3432B42F7D0121DFF231E4205D0BF +:1053F0000670401C360A521E1E42F9D111000022CE +:10540000FFF7E0F871BDDB4216D0401E4670360A49 +:105410004680360C0671001D121F06D340C9331B8F +:10542000B3432B42F2D0401CDEE7401C0AE040C9E7 +:10543000331BB3432B42D7D10680360C4680001D68 +:10544000121FF4D2121D0BD00B780370521E07D01E +:10545000401C491C1B42F7D10370401C521EFBD15B +:1054600071BD00000101010100B501BEFEE780B57C +:105470000C4A0D490B68934210D00A6002684A60DA +:1054800042688A608268CA60C2680A6102694A61C9 +:1054900042698A618269CA61C069086200F008F8DD +:1054A00001BD0000F3F2F1F0201A002870477047A8 +:1054B00000B5FEE700B5401A002801D4012000E045 +:1054C0000020C0B200BD00B5401A00B2012801DBC7 +:1054D000012000E00020C0B200BD00B500281BD0B4 +:1054E000002919D002780B789A4215D142784B786E +:1054F0009A4211D182788B789A420DD182888B881A +:105500009A4209D1C288CB889A4205D1008909897B +:10551000884201D1012000E00020C0B200BD00B5EA +:105520000100C9B2042903D28B49C0B2085C00E073 +:105530000420C0B200BD10B50C000100C9B204299E +:1055400001D2002C01D1002006E0C0B2FFF7E7FF36 +:105550002100C0B201F044FD10BD10B50400002CC4 +:1055600002D06078042801D3002011E02089401D7A +:105570000A21FEF705F8322800D23220602800D335 +:105580005F206178032902D1332800D33220C0B2D2 +:1055900010BD00B5714B1870714B1970002A05D001 +:1055A0001178704B197091886F4A1180C0B2002831 +:1055B00003D001206D49087002E000206B4908709B +:1055C00001206B49087000BDF8B50500002D05D01D +:1055D0000C00002C02D01600002E01D100203BE070 +:1055E0000A21002227003800FEF7E6FF68682070D5 +:1055F0006868000A03210A00024062700200D2B209 +:1056000092080A40A2706A68120CA280AA68E2801E +:10561000AA68120C22812A68C0239B009A4202D1F8 +:105620002A7B082A03D001203070002014E0F022E9 +:105630000240102A03D00220307000200CE02078B5 +:10564000C01E05D0401F012802D9001F012801D823 +:10565000012001E031700020F2BD00B5002801D02A +:10566000002901D1002055E04278042A03D3042008 +:10567000087000204EE00278092A06D14278002AFC +:1056800003D004200870002044E00278032A1FD1D0 +:105690008278012A06D08278022A03D00520087079 +:1056A000002037E0C28896235B009A420CD3B44AAC +:1056B00043789B00D258C3889A4205D30089B14AE7 +:1056C0008018B14A904222D306200870002021E0C1 +:1056D0008278002A03D00520087000201AE00278A2 +:1056E0000D2A0AD1C288A94B9A4202D1008900280A +:1056F0000DD00620087000200CE0C288002A02D1DC +:105700000089002803D006200870002002E0002055 +:105710000870012000BD80B58EB00100C9B2042917 +:1057200015D29B490200D2B20C235A438918897AB8 +:1057300000290AD16946C0B2FFF7FDFE002806D055 +:1057400068463221405C002801D0012000E00020A2 +:10575000C0B20FB000BD0000A8A50010961B002825 +:10576000971B0028981B00287C1B00289C1B0028E6 +:10577000FC12002838B50024250007E02000C0B244 +:10578000FFF7C9FF002800D06D1C641C2000C0B2C8 +:105790000428F3D32800C0B232BD38B500252C0050 +:1057A0000AE02800C0B2FFF7B6FF002803D02000AF +:1057B0000124AC4004436D1C2800C0B20428F0D37F +:1057C0002000C0B232BD38B58EB000252C001BE0E1 +:1057D00069462800C0B2FFF7AEFE002813D0684625 +:1057E000417804290BD04178062908D0417807294F +:1057F00005D04178082902D04078092803D120003B +:105800000124AC4004436D1C2800C0B20428DFD33F +:105810002000C0B20FB030BD38B58EB000252C00CE +:1058200010E069462800C0B2FFF785FE002808D0C6 +:1058300068463421405C002803D020000124AC409D +:1058400004436D1C2800C0B20428EAD32000C0B273 +:105850000FB030BDF8B504002000C0B2042837D224 +:105860000F002000C0B2FFF75AFE060001253900E4 +:1058700089B22800B040C0B2FCF773FEFCF776FD99 +:10588000390089B23000C0B2FCF7D7FDBFB2390091 +:105890003000C0B201F0BAF800203D492200D2B277 +:1058A0000C235A43891888723A490A782800A04084 +:1058B00082430A70C04801782A00A2400A4302705D +:1058C000BE4801782A00A2400A430270BC48057015 +:1058D000F1BDF8B50700380080B2FCF795FEFCF783 +:1058E00045FD0026340018E02000C0B2FFF717FE87 +:1058F0000500390089B22800C0B2FCF79EFD3900CE +:1059000089B22800C0B201F081F821482100C9B253 +:105910000C22514340188672641C2000C0B2042837 +:10592000E2D31C4806700F20A3490870A3490870F1 +:105930000120A3490870F1BD38B501004C78144D21 +:105940002000C0B20C22504328180A22FEF726FC81 +:10595000012001002200D2B20C235A43AA189172EE +:105960000C490A780300A34013430B7092490A784C +:105970000300A34013430B709149087031BD000030 +:1059800074A40010D4FEFFFFBD0200003CC3000061 +:10599000F0190028991B00287FB5012421006A46D0 +:1059A000117088490A68521C0A606A4601A9FFF70B +:1059B0000BFE002805D0694601A8FFF74EFE00281F +:1059C0000AD181480168491C016001AA6846017832 +:1059D0000220FFF7DEFDDFE001AD2878092836D090 +:1059E000B748017800291ED0A988B64A128891428A +:1059F00019D1B548007800280BD0B44901A8FFF7A9 +:105A00006CFD002805D001AA00210320FFF7C1FD8D +:105A100008E06D480168491C016001AA08210220C4 +:105A2000FFF7B7FDB8E00078002810D0A54801883E +:105A3000A888FFF748FD002809D163480168491C80 +:105A4000016001AA08210220FFF7A3FDA4E02000C5 +:105A50009B49087020009C490870A88899490880D3 +:105A60009A4801A94CC94CC00C390C38287809282F +:105A70000CD1A888FFF72DFF01AA00210420FFF711 +:105A800088FD93480168491C016085E02878082852 +:105A90000DD1A9886878FFF7DDFE01AA0021012059 +:105AA000FFF777FD8A480168491C016074E0287897 +:105AB0000C2813D1687884403F4801782143017055 +:105AC0003E4801780C43047001AA00210120FFF731 +:105AD00060FD7F480168491C01605DE028780D2861 +:105AE0003BD16878FFF717FE002809D0B24801685B +:105AF000491C016001AA09210220FFF74AFD4BE081 +:105B000001F05AFC00280BD1FCF794FC002807D1C7 +:105B10006878FFF704FDC0B201F036FA002805D11D +:105B200001AA0B210220FFF734FD35E0224801785D +:105B30006A78230093400B430370204801786A7809 +:105B400094400C43047001AA00210120FFF721FDBD +:105B50005F480168491C01601EE001F02DFC00282F +:105B600005D001AA0B210220FFF713FD14E068788D +:105B7000FFF7D1FD002810D0A9886878FFF76AFEEA +:105B800001A8FFF7D9FE01AA00210120FFF701FDBE +:105B90004F480168491C01607FBDFFF7EBFD0428F9 +:105BA000EED385480168491C016001AA0A21022040 +:105BB000FFF7EFFCF0E70000FD120028FE120028BE +:105BC000FC120028341B0028381B002838B50400BC +:105BD000002C02D02078032801D000200FE0200004 +:105BE000FFF7BBFC05006078FFF799FCA1880091E6 +:105BF0002B00DBB2E288A178C0B201F061F932BDBE +:105C0000F8B584B0FCF7A5FF009001F0D5FB0028A3 +:105C100006D16A4801680098FFF74CFC002800D1C3 +:105C20004BE0002000E0401C0100C9B2042944D22E +:105C30000326634F39780D183540624C2900C9B2EC +:105C40000C2251436118897A0029ECD001A829005F +:105C5000C9B20C22514361180A22FEF79FFA0020B4 +:105C60002900C9B20C225143611888720124564997 +:105C70000A782000A84082430A702800401C064091 +:105C80003E70009864304D49086001A8FFF79EFF00 +:105C9000002804D101AA0E210220FFF77AFCA648B1 +:105CA00001782200AA400A430270A4480178220029 +:105CB000AA400A430270A248047005B0F0BD00007B +:105CC0009A1B00287E1B00289B1B0028DC1A00283A +:105CD000401B002800B502780B789A4227D1427801 +:105CE0004B789A4223D182788B789A421FD1C2781E +:105CF000CB789A421BD142684B689A4217D1302226 +:105D0000825C3023CB5C9A4211D13222825C3223F6 +:105D1000CB5C9A420BD13122825C3123CB5C9A421C +:105D200005D13422805C3422895C884201D0012074 +:105D300000E00020C0B200BD38B58EB0002435E0D0 +:105D400069462000C0B2FFF7F6FB00282DD07D4D3C +:105D50002000C0B2285C00280AD07B482100C9B2CC +:105D60003822514341186846FFF7B4FF00281CD081 +:105D700075482100C9B2382251434018694638227B +:105D8000FEF7F2F9012001002200D2B2A9546A49BB +:105D90000A780300A34013430B7068490A78030094 +:105DA000A34013430B7066490870641C2000C0B206 +:105DB0000428C5D30FB030BD3C1B0028541B00285D +:105DC0009E1B0028F0190028991B002800B50078B8 +:105DD000002808D0012808D0032808D0042804D0BF +:105DE000092806D007E0002006E0012004E0032097 +:105DF00002E0062000E0072000BD00B54078002842 +:105E000010D0012810D0022810D0032810D0042868 +:105E100012D005280ED0062810D0072810D0092847 +:105E200010D011E0002010E001200EE002200CE074 +:105E300003200AE0042008E0052006E0062004E034 +:105E4000072002E00B2000E0092000BD80B501F032 +:105E5000B3FA002808D001F0B9FA002801D10320D4 +:105E600000E00420C0B210E0FFF7ADFC002803D131 +:105E700001F0ACFA002801D0042006E0FFF78DFC09 +:105E8000002801D0022000E0012002BDF8B5FFF794 +:105E900084FC6946C870FFF796FC0400FFF7BCFC61 +:105EA000694688702000C0B2002803D101F08EFA44 +:105EB000002801D0012500E00025884807780F263A +:105EC0003740FFF7C3FF00013843694648708448F4 +:105ED0000078694608708348077801F06DFA002859 +:105EE00001D0102100E000216846C0783040014315 +:105EF000E80108432640694689780A0132437A4915 +:105F00000978F0230B43694649786C4624782402CB +:105F10000C437649098809042143FFB2C0B200024C +:105F20003843D2B214040443DBB21A062243704849 +:105F300001F05EFCF2BD0000FD120028FE120028F8 +:105F4000FC1200284C1B002810190028F1B594B051 +:105F5000684814A909780C2251434018019006A9F9 +:105F600014A80078FFF7E7FA002801D10020B3E079 +:105F700006A8FFF72BFF070006A8FFF73EFF040067 +:105F800006ADE878694608703220285C002802D007 +:105F900030202E5C00E0002607986946488055486E +:105FA00014A909780C2251434018807A00280DD09A +:105FB000012427000198807869460870019880883C +:105FC000694648800198FFF7C8FA06003220285C2D +:105FD000002808D1474814A909780C2251434018D9 +:105FE000807A002802D00420059001E0002005906E +:105FF0003420285C002802D00820049001E0002012 +:1060000004903420285C002805D00998002802D18B +:106010001020039001E0002003903420285C002829 +:1060200009D00A98002806D009980A99884202D314 +:106030002020029001E0002002906878042802D11C +:106040004020019001E0002001906878072803D0EB +:10605000FCF7F0F9002801D0802000E0002069461C +:1060600009788907890F059A0A4304991143039A0D +:106070000A4302991143019A0A4310433421695C8F +:10608000002907D00D997C4A914201D37B4A02E056 +:106090000D9A00E07A4A14A90978FFB23B071B0F5A +:1060A000E4B22401F02525401D432B020B43C0B26E +:1060B0000004184369464988090601436846408838 +:1060C00080B2000A80B292B213020343F6B23206E3 +:1060D0001A436C4801F08CFB15B0F0BD961B0028EC +:1060E000971B0028981B0028A51B00287C1B002854 +:1060F00001030000F019002878B585B004002000E5 +:10610000C0B2042809D22000C0B2FFF708FA6946DD +:10611000C0B2FCF72FFD002801D0002031E0684616 +:106120004178002901D0012100E000218278002A75 +:1061300001D0022200E00022C378002B01D004230A +:1061400000E000230579002D01D0082600E000269C +:106150004579002D01D0102500E000250A431343A6 +:106160001E433543E4B2EDB22A022243C18809043A +:1061700011430389808902041A43C120800001F081 +:1061800037FB06B070BDF1B590B001A910A800783A +:10619000FFF7D1F9002801D1002063E08020400200 +:1061A0000499814203D336496A46118002E004997A +:1061B0006A4611800599814201D3314F00E0059F65 +:1061C000079819303221FDF7DBF90400FF2C00D9C4 +:1061D000FF2401AD6878042801D1012600E00026E3 +:1061E0006878072803D0FCF725F9002801D00220A1 +:1061F00000E000206978082901D1042200E0002293 +:106200006978092901D1082100E0002130430243C7 +:1062100011430F20AA780240090111433122AA5CE0 +:106220001040974A10AB1B78D25C1201024310A8B1 +:106230000078C9B20B020343684600880104194381 +:10624000BFB2E4B220043843D2B212060243B148CE +:1062500001F0CEFA002801D1002003E010A8007858 +:10626000FFF74AFF11B0F0BD80B58649864AAA48BB +:1062700001F0BEFA02BD0000112700001027000047 +:10628000FFFF000002030000F8B5FCF762FC040009 +:106290007E4D29682000FFF70DF9002805D0012068 +:1062A0007B4908702000643028607A4D29682000FE +:1062B000FFF700F9002806D0012098490870FA205D +:1062C00040002018286096480078002814D195488E +:1062D00001682000FFF7EEF800280DD0924A93489D +:1062E00000781070012092490B78127805009540D3 +:1062F0001D430D708A4908708E480078002814D11B +:10630000A74801682000FFF7D5F800280DD0A54A5E +:10631000A54800781070A54901200B781278050077 +:1063200095401D430D7083490870594D2878002809 +:106330001ED0FFF7ABFD002815D0002028709C4927 +:106340000A78521C1207120F0A709A490A78002A1A +:1063500004D0994A1070994A1070087098480168E2 +:10636000491C016003E097480168491C016085E011 +:106370006A4D287800280FD0FFF776FF002806D056 +:10638000002028708E480168491C016003E08D4898 +:106390000168491C016071E0002500E06D1C2800C7 +:1063A000C0B204282CD20127AF40614E3078384269 +:1063B000F4D02800C0B2FFF7C9FD00281BD0307808 +:1063C000B84330705648017800290FD056490978F3 +:1063D000EDB28D420AD155490A78521C9207920FAC +:1063E0000A700021017019344E4804607448016835 +:1063F000491C016003E073480168491C01603DE0ED +:10640000002500E06D1C2800C0B2042836D2012708 +:10641000AF40664E30783842F4D02800C0B2FFF763 +:10642000B2FE002825D03078B843307014482900D7 +:10643000C9B2415C491C0907090F2A00D2B2815434 +:106440003C48017800290FD056490978EDB28D42B9 +:106450000AD155490A78521C9207920F0A700021FE +:10646000017019344E48046055480168491C0160A8 +:1064700003E054480168491C0160FFE7F1BD0000DA +:10648000501B0028505354310F110401581B002891 +:10649000FC120028641B002870B530210024220063 +:1064A000494D2800FEF788F8E0212200474D2800DA +:1064B000FEF782F8042529002200454E3000FEF741 +:1064C0007BF82200434C29002000FEF775F800F00D +:1064D00093FA01F005F9002804D1062000F03CFFF2 +:1064E000002016E0FCF735FB3B4908603B4908609B +:1064F0000C4908602A490860394908600120394977 +:1065000008700F210A4A1170284A11700349087057 +:10651000012070BD0303000007030000FF120028E4 +:10652000A31B00285C1B0028A11B00289F1B002820 +:10653000FD120028A41B00281FB52B480068002866 +:1065400002D0022000F008FF00F01EFF00F034FF30 +:1065500000280AD0254C2078002812D12448008831 +:10656000FFF7B7F9012020700BE000201F490870E9 +:1065700007E00098C0218900884202D16846FFF7F1 +:106580000BFA684601F0F4F80028F2D1FFF738FB67 +:1065900000F01EFBFFF7D0FBFFF776FE1FBD0000EB +:1065A000601B0028A21B0028A01B0028FE12002848 +:1065B000A51B00289C1B0028961B0028971B002861 +:1065C000441B0028481B0028F01900281019002837 +:1065D0004C1B0028501B0028541B0028581B002867 +:1065E000641B0028FC120028141B00289D1B002897 +:1065F0007C1B002800B5C0B2042801D2012000E0B5 +:106600000020C0B200BD00B50100C9B2002901D10F +:106610006F4813E00100C9B2012902D1AF20400147 +:106620000CE00100C9B2022901D16A4806E0C0B2FB +:10663000032802D1E120400100E0002000BD00B5A8 +:10664000401A002801D4012000E00020C0B200BDA3 +:1066500000B5884201D3401A00E0081A00BD10B509 +:1066600000280FD00C00002C0CD06178002909D034 +:106670002169002906D0A168002903D02169826818 +:10668000914201D2002019E080680021A268002315 +:10669000FDF758F902000B0020694008002180181E +:1066A000594122690023FCF766FE6168FFF7D0FFBD +:1066B000052801D2012000E00020C0B210BD00B5C5 +:1066C000C0B232382E2801D2012000E00020C0B232 +:1066D00000BD00B50178022905D00178012904D157 +:1066E0004078022801D1012000E00020C0B200BDA6 +:1066F00000B50178032905D00178012904D140783B +:10670000032801D1012000E00020C0B200BD38B54F +:106710000C00BD490200D2B23C235A438D18C0B2CE +:10672000FBF7C5FF0A202870AC70002038216854A0 +:1067300031BDB549C0B23C2250430818092101704F +:10674000022181700021382281547047AE49C0B2C5 +:106750003C22504308180021017003228270382225 +:106760008154704770B505000C002800C0B2FFF7D7 +:1067700041FF002807D0FBF75DFE002803D18020F1 +:106780004002844201D3002020E02800C0B2FBF781 +:106790008EFF002807D1210089B22800C0B2FBF784 +:1067A0004CFE002801D0002010E09748EDB23C21BB +:1067B0004D4345193C2100222E003000FDF7FCFE20 +:1067C0006C600120A87038216854012070BD000061 +:1067D000FC530000901A0000F2B59EB007001600AE +:1067E0001C00002001903800C0B2FFF703FF002812 +:1067F00019D029A80078022803D029A800780328F6 +:1068000011D13800C0B2FFF7FEFE1E9988420AD3AC +:1068100005A93800C0B2FCF735FA002803D105A855 +:106820004078002801D10020E4E0774D3800C0B264 +:106830003C2148432818049004983621405C69465E +:1068400048706846067027A80078002807D1684677 +:106850000078FFF734FF002801D10020CAE0089932 +:106860001E98FFF7F5FE02900394269E289C27A809 +:10687000007800281CD00398002802D00298002835 +:1068800016D10298002811D1E4B2002C08D13100B1 +:106890003800C0B2FFF766FF002801D10020A9E050 +:1068A0003800C0B2FFF745FF0120A3E00020A1E0BF +:1068B0000FA804993C22FDF757FC2000C0B2002825 +:1068C00008D131003800C0B2FFF74CFF002801D1D9 +:1068D00000208FE03800C0B23C2148432D18E4B2BC +:1068E000002C0CD028000FA93C22FDF73DFC012014 +:1068F0000100A97001003822A95469464870249CFF +:1069000027A8007800282FD02598002801D00190D2 +:1069100018E0002C01D0019414E002980021FA2222 +:1069200092000023FDF70EF802000B0003980021EF +:10693000801859410022401E9141039A0023FCF720 +:106940001AFD01900198002807D0029A0199380099 +:10695000C0B2FCF73BFA002815D008213800C0B2BD +:10696000FFF7D5FE002045E0684601783800C0B248 +:10697000FBF784FF002806D008213800C0B2FFF7DB +:10698000C6FE002036E029A800786870002C01D0EF +:10699000012001E029A8007828701E98A860EC600A +:1069A000019828610020A861039828626846007851 +:1069B0003521685427A80078372168546846407804 +:1069C000362168541E980899884201D3012000E0BE +:1069D0000220342168541E993800C0B2FCF7FAFA3C +:1069E000002806D008213800C0B2FFF790FE002032 +:1069F00000E001201FB0F0BD10B5F0210022724C64 +:106A00002000FDF7D9FD10BD20180028F8B50500BD +:106A10000C002800C0B2FFF7EDFD002813D02800BD +:106A2000C0B2FBF744FE6848EDB23C214D43451926 +:106A30003C21002632002F003800FDF7BDFD6C60C0 +:106A40002E700320A870F1BD38B50400002505E0C4 +:106A500021002800C0B2FFF7D9FF6D1C042DF7D329 +:106A600031BD78B585B0040057482300DBB23C2522 +:106A70006B43C5182878082835D1696889B2200089 +:106A8000C0B2FBF739FD002804D12000C0B2FFF7E7 +:106A90005DFE96E02000C0B2FBF795FF002800D015 +:106AA0008FE0286B002806D0296B2000C0B2FBF7CE +:106AB000F5FF002812D0696889B22000C0B2FBF748 +:106AC0001BFD002804D12000C0B2FFF73FFE04E008 +:106AD00009212000C0B2FFF71AFE72E02000C0B208 +:106AE000FFF727FE6DE0C87804280BD0C87802288D +:106AF00008D0C878032805D0C878052802D0C878FF +:106B0000012805D109212000C0B2FFF700FE58E09E +:106B10002878012855D01600287806281BD1E86A65 +:106B2000FA21490041183000FFF789FD002811D0F3 +:106B300069462000C0B2FBF779FF002805D0092183 +:106B40002000C0B2FFF7E3FD3BE00398A862EE62CD +:106B50000720287035E0E86AFA21890041183000E2 +:106B6000FFF76DFD00282CD069462000C0B2FBF76E +:106B70005DFF002805D009212000C0B2FFF7C7FD46 +:106B80001FE0E86A361A0398A96A401A00210F4AE2 +:106B90000023FCF7D7FE32000023FCF7ECFB0600D5 +:106BA000002E05D02000C0B2FBF781FD002805D0E3 +:106BB00009212000C0B2FFF7AAFD02E02E630820E1 +:106BC000287006B070BD000020180028A0860100C3 +:106BD000F8B592B0FBF7CAFBFBF7BBFF06900020AD +:106BE00007900CE006212800C0B2FFF790FD03E0FB +:106BF0002800C0B2FFF79DFD0798401C079007983A +:106C0000042800D358E1079DAC4807993C22514322 +:106C100044183820205C002806D008A92800C0B2FB +:106C2000FCF730F8002800D0E6E7FBF703FC00286B +:106C300003D108AEF078072805D107212800C0B29B +:106C4000FFF765FDD8E7616889B22800C0B2FBF79D +:106C500053FC002804D12800C0B2FFF777FDCBE732 +:106C6000F078062807D12078082804D02800C0B280 +:106C7000FFF76CFDC0E72078012816D1B078002816 +:106C800013D0607820702078062802D10698E06240 +:106C90000BE0E068002806D00698E16840186169BA +:106CA0004018A06101E00020A061207806280BD0E8 +:106CB0002078072808D02078082805D020780128D7 +:106CC00009D16078062806D1069A08A92800C0B222 +:106CD000FFF7C7FE90E7207804282FD1E1690698D6 +:106CE000FFF7ADFC002828D06078059001200490C3 +:106CF0003720205C03906068029020690190E06872 +:106D00000090236A3520225CA1682800C0B2FFF7FA +:106D100063FD002811D1616889B22800C0B2FBF779 +:106D2000EBFB002804D12800C0B2FFF70FFD04E000 +:106D300004212800C0B2FFF7EAFC5DE7F0780228E2 +:106D400002D0F078032801D1012700E00027F07875 +:106D5000042803D03800C0B2002852D02000FFF72A +:106D6000B8FC00280AD008A92000FFF778FC00280A +:106D700004D02800C0B2FFF7DCFC3DE72000FFF79D +:106D8000A8FC002823D03620205C00281FD1280032 +:106D9000C0B2FBF78CFC00280CD0FBF74BFB0028A3 +:106DA00001D0072100E00821C9B22800C0B2FFF7D6 +:106DB000AEFC21E7042020700020A0610698FA2193 +:106DC000C9004018E06101203621605418E0380005 +:106DD000C0B2002809D02000FFF78AFC002804D0A8 +:106DE0002800C0B2FFF7A5FC0AE0FFB2002F01D0D7 +:106DF000052100E00421C9B22800C0B2FFF787FCDA +:106E0000FAE6F078012804D12800C0B2FFF791FC1F +:106E1000F2E6F078052815D12000FFF75AFC00288B +:106E20000AD008A92000FFF71AFC002804D0280087 +:106E3000C0B2FFF77EFCDFE606212800C0B2FFF7F4 +:106E400066FCD9E6A069002800D1D5E6A1690698BC +:106E5000FFF7F5FB002800D1CEE62800C0B2FBF713 +:106E600026FC00280CD0FBF7E5FA002801D007210A +:106E700000E00821C9B22800C0B2FFF748FCBBE619 +:106E80002078032800D0ADE669462800C0B2FBF7A1 +:106E9000CDFD002805D008212800C0B2FFF737FC3F +:106EA000AAE60398616A884200D0A1E6042128007E +:106EB000C0B2FFF72CFC9FE613B0F0BD20180028ED +:106EC000F6B585B004000E000698002815D01F0006 +:106ED0003800C0B2FFF7F3FB00280ED03000C0B27C +:106EE000012803D03000C0B2022806D10C9920003E +:106EF000C0B2FFF737FC002801D1002040E0390084 +:106F0000C9B22000C0B2FBF7B9FC002806D00821A6 +:106F10002000C0B2FFF7FBFB002031E01948210040 +:106F2000C9B23C225143451869462000C0B2FBF764 +:106F30007DFD002806D008212000C0B2FFF7E7FB46 +:106F400000201DE0039868623100C9B22000C0B281 +:106F5000FBF728FD002806D008212000C0B2FFF76B +:106F6000D6FB00200CE0012028700320687034203C +:106F70002E540698E8600020A86135202F54012087 +:106F800007B0F0BD2018002870B504002000C0B282 +:106F9000FFF730FB002809D02000C0B2FBF713FD3B +:106FA000002803D1FBF746FA002801D0002013E0A7 +:106FB0000A48E4B23C214C4304193820205C0028E4 +:106FC00001D0002008E065683C2100222600300046 +:106FD000FDF7F2FA6560012070BD0000201800285E +:106FE00038B596B005000C00002C1AD02800C0B2AD +:106FF000FFF700FB002814D069462800C0B2FBF759 +:1070000041FE00280DD10FA92800C0B2FBF78CFF6C +:10701000002806D10AA92800C0B2FBF707FD002806 +:1070200001D000203CE01F48EDB23C214D43401907 +:1070300001782170817861706946CA78A2708A7877 +:10704000E27042686260039AA260019AE260029A6A +:1070500022610C9A6261149AA261099AE261059A0E +:107060002262069A6262079AA262089AE2620FAAF4 +:10707000527E3023E2543622825C3123E25438229D +:10708000825C3223E2543622805C002801D0012049 +:1070900000E000203322A0544878342160540120BD +:1070A00017B030BD20180028AA490A680860704748 +:1070B000B3490A6810239A43C0B200011023184054 +:1070C000104308607047AE490A68AE4B1340C0B227 +:1070D0000002802252001040184308607047A849FF +:1070E0000A68B44B1340C0B2000380225201104022 +:1070F000184308607047A2490A6852005208C0B29B +:10710000C007104308607047B2480068704700200D +:107110007047B1480068704710B50400AE4804607D +:10712000BFF34F8FFFF7F5FFA04201D1012000E030 +:107130000020C0B210BD38B5C824C0B2002801D0AC +:10714000012505E0002503E00120FDF7F7F9641EA5 +:10715000A24901200A680240AA4203D0002C01D0B3 +:10716000020000E00022D2B2002AEDD109680140FD +:10717000A94200D00020C0B232BD0020984908606A +:107180009849086098490860BFF34F8F7047000026 +:10719000FEB50400FF20E230019001252F0000F031 +:1071A0002AFD0020FFF7C7FF69464870FFF7AFFFD1 +:1071B00069460870FFF7ADFF0600894800688949F5 +:1071C0000968894A1268894B98420DD141400023D1 +:1071D000DB434B409A4207D101992140002901D15C +:1071E000E10601D5290000E000210022804B1A7041 +:1071F0000022804B1A7000227F4B1A70019A2240A5 +:10720000002A02D17D4A117002E02A007B4B1A70DD +:107210007B4A117061000CD50020FFF77DFF07004D +:10722000FFF777FF0600FFF7A8FF002074490870FA +:107230000BE073490978002902D0FFF79EFF04E0B4 +:107240006A49884201D1FFF798FFFFB2002F09D0A9 +:107250006C48864206D06C48864207D16946097858 +:10726000002903D105206249087016E063490978B6 +:10727000002907D062490978002903D104205C491C +:1072800008700AE069460978002906D0FFF744FF34 +:10729000002802D105205649087068464078002829 +:1072A00002D15348057048E000F05CFC00F084FC1B +:1072B000C82424012000FFF7F7FE0120FFF7F8FEA5 +:1072C0000020FFF700FF0020FFF709FF0120FFF774 +:1072D00012FF00F066FC1F480068A0420BD128484E +:1072E000016809092940002905D00068010B080040 +:1072F000C007C00F00E02800C0B2002802D03C4800 +:1073000005701AE000F06BFC0120FFF714FF002865 +:1073100002D13748057010E000F088FCFA208000A8 +:10732000FDF70CF9FFF7F0FE002802D13048057098 +:1073300003E03048057000F001F8F7BD80B52D4836 +:107340000078002805D02C480078002801D100F0F2 +:107350006DFC01BD08C0264080B50100C9B20029FE +:107360000CD023490A78002A08D108700020FBF7C6 +:1073700083F9FBF791F90020FFF766FB01BD0000E0 +:1073800010C02640FFFEFFFF80B5FFF7C0FEFFF7ED +:10739000C0FE1C49884202D10520FFF7DDFFFBF744 +:1073A00049F8002802D00120FFF7D6FFFFF7C6FFFB +:1073B00001BD0000FFEFFFFF00B50D480078002879 +:1073C00001D0012000E00020C0B200BD08480078D4 +:1073D0007047000014C026400C10274000C0264013 +:1073E000001027400410274008102740364C494819 +:1073F000911B0028931B0028941B0028921B002837 +:10740000951B002845564F4D41564F4D00B5010084 +:1074100009B2002905D40121C006C00E8140AE4842 +:10742000016000BD00B5010009B2002905D40121A9 +:10743000C006C00E8140CC48016000BDF0B502001E +:1074400012B2002A18D41822A44B040024B2A408B3 +:10745000A4001C59FF250600F6001640B540AC43B9 +:107460008901C9B20500ED002A409140214300B2D4 +:107470008008800019501CE00F22BC4C1825030026 +:107480001BB21340083B9B089B00060036B23240FB +:10749000083A92089200A258FF260700FF002F40EA +:1074A000BE40B2438901C9B2C0000540A9401143A2 +:1074B000E150F0BD00B5002A03D101228A404260AC +:1074C00002E001228A40826000BD0268CA401000CA +:1074D000C007C00F704700B5022801D301200FE09C +:1074E0000B00DBB2042B01DB012009E0BC4B800068 +:1074F0001818C9B2405C824201D3012000E000208C +:1075000000BDF8B504001F00022C01D3012023E0C8 +:1075100015000E002A003100C9B22000FFF7DBFF82 +:10752000012801D1012017E03000C0B2002816D197 +:10753000FF2F12D8AB4861034018A90040188021E2 +:10754000490140180168A84A0A403902FF231B027A +:107550000B40134303600020F2BD0120FCE7F6B2AC +:10756000012E16D180204002874210D29D4861032F +:107570004018A9004018A0214901401801689B4A01 +:107580000A403902C44B0B4013430360E3E7012078 +:10759000E2E70120E0E700B20012C0B27047F8B5A0 +:1075A00005000F001600280000B2FFF7F4FF0400EA +:1075B0002000C0B2022801D301202CE032003900A3 +:1075C000C9B22000C0B2FFF786FF012801D1012017 +:1075D00021E084482100C9B2490341182A00D2B2EF +:1075E00092008918C02212018A58AC491140FFB29A +:1075F0003B02C02292001A400A43FF218A43F1B2A3 +:107600001143E4B262038018EDB2AA008018C022D0 +:10761000120181500020F2BD70B50400022C01D38C +:10762000012028E015000E002A003100C9B2200018 +:10763000FFF751FF012801D101201CE069486103D7 +:107640004158802212060A43C02189041143FF22B7 +:1076500012040A43914B1340F6B23202C021890052 +:1076600011401943FF229143EAB20A436103425099 +:1076700061034058002070BD70B50400022C01D396 +:10768000012028E015000E002A003100C9B22000B8 +:10769000FFF721FF012801D101201CE051486103BF +:1076A00041588022D2050A43C02189041143FF2298 +:1076B00012040A43794B1340F6B23202C02189000A +:1076C00011401943FF229143EAB20A436103425039 +:1076D00061034058002070BD00E100E000E400E0DC +:1076E00038B500200100974A11700100964A1170C8 +:1076F0009649086000F0D4F8002803D000F02CF977 +:10770000002804D19248B849086000202BE0914C31 +:107710002000FCF7F7FC002804D08D48B24908602F +:10772000002020E0B1490020205EFCF70AFD002186 +:107730000220205EFFF782FE0220205EFFF772FE2D +:10774000AB4D280001F0ECF8AA49280000F05EFDDE +:10775000A5490860002801D0002004E00220205E36 +:10776000FFF754FE012032BD80E200E01CED00E096 +:1077700038B50400002C01D100202FE0FCF788FB75 +:1077800071490A7813006F4D2D78DBB2AB4203D1FB +:10779000FCF782FB002021E0C44B1500EDB22D0167 +:1077A0005D5925601500EDB22D015D196D686560AC +:1077B0001500EDB22D015D19AD68A5601500EDB2A3 +:1077C0002D015B191B7B2373521C1300DBB2102BA2 +:1077D00000D300220A70FCF75FFB012032BD0000DD +:1077E000B8A4001000000440FF00FFFFFF0000FFEE +:1077F000F1B594B00D0016005021002422006F4610 +:107800003800FCF7D9FE149880210901884203D280 +:107810004E480068002804D04D48A949086000205F +:1078200038E068462100017021000172149901912D +:1078300008214C2281540395049600E0641C20002A +:10784000C0B2082821D26A4D2100C9B2280001F037 +:10785000BFF90100C9B20129F0D0C0B20328EDD0B0 +:107860001498984908606A462100C9B2280001F0BE +:10787000DBF893490860002805D193480168491C4A +:107880000160012006E0002004E090480168491CE6 +:107890000160002015B0F0BD00FFFF00FFFCFFFFFE +:1078A000F8B5002500956846FDF734FD002801D0A5 +:1078B000002046E0864C0098A04205D300982100A5 +:1078C000FBF75EFE002901D000203AE0009821007D +:1078D000FBF756FE0400002C03D0FF20801C8442DE +:1078E00001D300202DE0FF2608363000FFF753FEBD +:1078F0000700002200213800FFF7BEFE002801D05B +:1079000000201EE0002200213000FFF748FE002882 +:1079100001D0002015E023005B1E0022002138006A +:10792000FFF7EFFD002801D000200AE0002200212F +:107930003800FFF771FE002801D1012000E0280087 +:10794000C0B2F2BD821B0028831B0028141B002834 +:10795000010062000008002818B5A7B01AA85D4908 +:107960003422FCF701FC0DA85B493422FCF7FCFB38 +:1079700068465A493422FCF7F7FB594C1AAA0721EA +:107980002000FBF7BEFD002801D0002024E00DAA56 +:1079900006212000FBF7B5FD002801D000201BE0E8 +:1079A0006A4601212000FBF7ACFD002801D0002031 +:1079B00012E0012201212000FFF77CFDFA20800067 +:1079C000FCF7BCFD01212000FFF77FFD012801D15C +:1079D000012000E00020C0B228B010BD80B50448EE +:1079E00000F0D4FA01BD0000F41A0028DD7900107F +:1079F000000454400808002870B51400002C05D07D +:107A0000207A002802D12078002800D04DE03548A7 +:107A10000168491C01606068334908606068C021E2 +:107A20008900884214D14C20205C082810D1E068DD +:107A3000C0B209280CD1E068000AC0B2102807D1F2 +:107A40002069002804D1E068000C80B2FAF7DCFD60 +:107A5000264801780A00521C1300DBB2102B00D319 +:107A600000221300224D2D78DBB2AB4204D1214815 +:107A70000168491C016018E00C4B65680E00F6B205 +:107A800036019D514C25655D0E00F6B236019E19FA +:107A90003573E5680E00F6B236019E1975602469EB +:107AA000C9B2090159188C60027070BD20170028F6 +:107AB00000B5C0B2002802D101200F49086000BD06 +:107AC000101B00280C1B0028001B0028041B00288A +:107AD000005A6202CCA1001000A2001034A20010D3 +:107AE00080013140F81A0028081B0028821B00285A +:107AF000831B0028FC1A0028141B002843490A682D +:107B00000860704742490A680860704741490A683E +:107B10000860704740490A6801239A43C0B20300D5 +:107B2000DB07DB0F13430B6070473B490A681023E8 +:107B30009A43C0B2000110231840104308607047F8 +:107B400035490A68354B1340C0B20002802252000A +:107B500010401843086070473148016801220A4309 +:107B60000260704710B5FCF793F9040000F024F8A8 +:107B70000020FFF7C3FFFA20C001FFF7C3FF00207A +:107B8000FFF7C4FF0020FFF7C5FF0120FFF7CDFF7F +:107B90000020FFF7D5FF00F004F82000FCF77CF987 +:107BA00010BD80B5FCF774F91E490A68032313431E +:107BB0000B60FCF771F901BD80B5FCF769F9194953 +:107BC0000A6803239A43012313430B600A680323C3 +:107BD0009A43022313430B60FCF75EF901BD80B5A5 +:107BE000FFF7EAFF10480168802212060A4302608C +:107BF000FFF7D7FF01BD80B5FFF7DEFF0A48016838 +:107C0000490049080160FFF7CCFF01BD04C02640D0 +:107C100008C026400CC0264010C02640FFFEFFFFD3 +:107C200044C0264040C0264000C0264080B5FFF733 +:107C3000C3FFFFF791FFFFF7B4FF01BD00B50028B8 +:107C400001D0002901D1A04808E0A04A904206D105 +:107C500000200880802080014860002000BD9C4AF0 +:107C6000904205D18020800102000A804860F4E73C +:107C7000BA4A904206D18020C0010880802080014D +:107C80004860EAE7B64A904206D1C020C0010880A9 +:107C9000802080014860E0E7B24A904206D180200F +:107CA00000020880802080014860D6E7AE4A9042FA +:107CB00005D100200880802080014860CDE7AB4AD4 +:107CC000904205D18020800102000A804860C4E70C +:107CD000A74A904206D18020C00108808020800100 +:107CE0004860BAE7A34A904206D1C020C00108808C +:107CF000802080014860B0E79F4A904206D18020F2 +:107D000000020880802080014860A6E76E48A5E751 +:107D100000B5002100E0491C0A290AD2974A18231D +:107D20004B43D3589842F6D1182041435018001DB8 +:107D300000E0002000BD10B50A00D2B2402A01DBED +:107D4000002017E0020C120480235B02D218AC233F +:107D5000C3589B089B049B0C9B00D218C9B2884B4C +:107D6000BC240059000A4007400F185C801C4143A6 +:107D70008800101810BD10B50A00D2B2202A01DB0D +:107D8000002016E0020C120480235B02D218C023EC +:107D9000C3589B089B049B0C9B00D218C9B2784B1C +:107DA000C82400594007400F185C801C41438800DC +:107DB000101810BD10B50B00DBB2022B01DB002048 +:107DC00028E0030C1B04802464021B190C00E4B29D +:107DD000002C05D1A0240459A408A404A40C04E098 +:107DE000B0240459A408A404A40CA4001B19C9B20B +:107DF000002904D1BC2140584007400F04E0BC21B9 +:107E0000405800094007400F5D49085C801C424310 +:107E10009000181810BD00B55A49884201D30521B9 +:107E200000E00021400A4006400E0818C0B200BD24 +:107E300038B504000020002C44D02000FFF7EBFFF1 +:107E40000121226D520F0A40002A05D00A004E4B34 +:107E50000500EDB26D005A53226D120F0A40002A40 +:107E600005D00222484B0500EDB26D005A53226D39 +:107E7000D20E0A40002A05D00322434B0500EDB282 +:107E80006D005A53226D920E0A40002A05D004223A +:107E90003D4B0500EDB26D005A53226D520E0A4063 +:107EA000002A05D00522384B0500EDB26D005A536B +:107EB000226D520D1140002904D00621324AC0B271 +:107EC0004000115231BD000001006200000052402C +:107ED0000002524070B500221300130000283CD06D +:107EE00003689B0F1C00E407E40F0C720B7A002B55 +:107EF00005D10368DB00DB089B144B6003E00368DB +:107F0000DB00DB084B6043685B0D1C00E407E40FFB +:107F10000C7043681B0C1B071B0F4C240B554C2388 +:107F2000CB5C082B01DA130002E04C23CB5C083B4E +:107F30000AE01400A4B2A4000419A4681500ADB2AC +:107F4000AD004D19EC60521C14000D4D1E00B6B270 +:107F5000AD5DA4B2ADB2AC42EBD370BD00045240F3 +:107F600000065240000852400000544000025440B5 +:107F700000045440000654400008544058080028AB +:107F8000B0A4001001085240741A0028F1B5A8B03E +:107F90000020009000202898FFF7BAFE0700002F6D +:107FA00029D0289E306D97490140002902D0289899 +:107FB000FFF73EFF0125306DC00C284000281CD182 +:107FC000306D2840002868D1306D00092840002815 +:107FD00000D0BAE0306D400A0540002D0BD03000D3 +:107FE00050300168802292000A43026038680028FD +:107FF00001D03868804729B0F0BD300050300168AA +:10800000802212030A43026098203058002816D0BC +:10801000002400E0641C2000C0B220282CDA982044 +:108020003058E04028400028F4D02100C9B22898F8 +:10803000FFF781FE0090A540982035501CE09C2061 +:108040003058002818D0002400E0641C2000C0B282 +:10805000202811DA9C203058E04028400028F4D035 +:1080600020342100C9B22898FFF765FE0090200057 +:10807000E03085409C20355000980028BBD013A9E3 +:108080000098FFF727FF78680028B4D013AA2100D2 +:10809000C9B200207B689847ADE7300050300168D6 +:1080A0002943016017E0289AD4235B00D45801AA21 +:1080B0000300DBB29B00D450401C02000B00D2B284 +:1080C000DBB29A42EFD3B868002804D001AAC9B243 +:1080D0000020BB689847A42030584006400E012875 +:1080E00089DB2898C021490040582840002822D127 +:1080F000A420305800903F240098020A224000211A +:108100002898FFF757FE0028E5D013A9FFF7E2FEF5 +:108110003000A83001683F229143009A120A1440AF +:108120000C43046078680028D5D013AA00210120F0 +:108130007B689847CFE734482899BC22895849077B +:10814000490F415C891C0020B7E7300050300168BE +:1081500010220A43026017E0289ADC235B00D458FF +:1081600001AA0300DBB29B00D450401C02000B00AC +:10817000D2B2DBB29A42EFD3B868002804D001AA89 +:10818000C9B20120BB689847B42030584006400E61 +:10819000012800DA2FE72898C021490040584008FC +:1081A0002840002822D1B420305800903F24009865 +:1081B000020A224001212898FFF7FCFD0028E3D0A5 +:1081C00013A9FFF787FE3000B83001683F229143C2 +:1081D000009A120A14400C43046078680028D3D037 +:1081E00013AA012101207B689847CDE7064828990A +:1081F000BC22895809094907490F415C891C0020A4 +:10820000B4E70000EEE0F73FB0A40010F1B594B081 +:10821000D34800681290D34800681190D24807688C +:10822000D2480668D24800681090D24800680F9083 +:10823000D14800680490D14800680E90D04800688A +:108240000190D04800680D90CF4800680C90CF484E +:1082500000680B90CE4800680A90CE4800680990EC +:10826000CD4800680890CD4800680390CC4800686D +:108270000290DC4800680790DB4800680090149882 +:10828000002810D00C00002C0DD02820205C0028E5 +:1082900002D0E06A002806D03020205C002804D0FC +:1082A000606B002801D1D14824E31498FFF730FD1A +:1082B000002801D1CD481DE321680160616841605B +:1082C000A1688160E168C16021690161149D01209C +:1082D000A861A869C007FCD50320A86105A9149866 +:1082E000FFF7ACFC002801D0C04803E32820215C44 +:1082F000129ABF4810400A04FF21090411400143AB +:10830000BC4808406946898A89B2890889B28900CF +:108310000143842029503020205C4006400EFE217D +:10832000C903119BE44A1A40000408401043842208 +:10833000AA5892082823E35CD2189204920CAD4B01 +:1083400003409200DD48104018438822A850A06BDB +:10835000C000C0087A0F520710439022A85007228D +:108360004020205C1040099FD54B3B400702E02095 +:10837000C000384018434123E35C13407027B843E2 +:108380001F0170233B4003434220205C104007271D +:10839000BB431843BC23E8504420235C1800C007AB +:1083A000C00F73005B08C6071E434520205C4006D3 +:1083B000400EC44B1E400706FE20C0053840304327 +:1083C0004626A65D7606760EBB4F07403004084071 +:1083D00038438826AE59B6083027E75D7F00F61986 +:1083E000B604B60C834F0740B600B448304038435B +:1083F000A026A8514820265C3000C007C00F109E60 +:1084000076007608C00730434926A65D7606760ECC +:1084100003403606FE20C005304018434A23E35C83 +:108420005B065B0EA44E0640180401403143A64F84 +:10843000A020285880084623E35C4226A65DBE5D46 +:10844000B61C7343C01883049B0C6A4808409B0009 +:108450009A4919400143B02029504720205C002848 +:1084600001D1002100E00121009B0120834308008D +:10847000C007C00F18434B21615C002901D10021C6 +:1084800000E00121022398434900022319400143DF +:108490001498C0235B00C150B020285880084A219E +:1084A000615C4123E35CFB5C9B1C594340188304E3 +:1084B0009B0C82484F490F9E0E409B000340334364 +:1084C000AC26AB514323E35C1A40089B0726B34319 +:1084D0001A43C823EA507D4A049E16407C4B1E4036 +:1084E0000496AC26AE59B60800964C26A65DB44656 +:1084F0004026A65DBE5DB61C67467743009EF61912 +:10850000B604B60C049F0F40B60006403E43F02769 +:10851000EE510E9F6F4E3E4032404D26A65DB60690 +:10852000B60E13403604FC22920332401A43F02365 +:10853000EB589B0814339B049B0C11409A0010408D +:108540000843C0216850802252021498000C000495 +:108550006946898A4018801806998B08002125E011 +:10856000F4A40010F8A40010FCA4001000A5001052 +:1085700004A5001008A500100CA5001010A50010FF +:1085800014A5001018A500101CA5001020A50010AF +:1085900024A5001028A500102CA5001030A500105F +:1085A00034A5001000260660001D491C9942F9D32D +:1085B00001990120084302210143CF480840217D51 +:1085C000012901D1012100E00021CC4B03404802E8 +:1085D0008021890008401843217D01290CD1012107 +:1085E0000BE000BF38A500103CA5001001006200A0 +:1085F000FFFF00FF0300FFFF0021C14B0340080203 +:108600008021490008401843802188434021884345 +:108610002021884310218843042188430190019838 +:10862000A861E08AC005C00D0D99B64B0B4001044E +:10863000B54808401843217EB44B03400902FF208F +:108640000002084018437F23617E19407F26B04313 +:108650000143A07E1840C901C90940060843E861EA +:10866000207D012853D11F20A18B01400C9FA84ED3 +:108670003E400F04F821490339403143A67F304082 +:10868000A44E0E400102F8204001084030430F2163 +:10869000E67F0E40F027B8433701F0263E40064300 +:1086A0002020205C01400F20864331432220205CA3 +:1086B000012811D1012610E0FFFF80FFFCFF000020 +:1086C000FFF8FFFFFFFFFF80B0A40010FFFFFFC017 +:1086D000FFFFC0FFFFFFFFBF00268F480840F105E6 +:1086E0008026360431400143E9602320215C194093 +:1086F0000B9E8A4830400E02FE21C90131400143E1 +:108700002420205C03407F2081430B43AB64032083 +:108710003C21635C03400A993026B1431E0130239B +:1087200033400B433D21615C08400C218B438100A9 +:108730000C20084018433E21615C012901D1012130 +:1087400000E000210223984349000223194001431D +:108750003F20205C012801D1012000E000200126FB +:108760000123994330400843802168501498000C3D +:1087700000048421695889088904890C89004018FB +:108780008018002105E0E36A8F00DB598F00C35198 +:10879000491C2823E35C9942F5D31498000C00048B +:1087A0008821695889088904890C89004018821831 +:1087B000002308E0606BD900401803C8DF00D71918 +:1087C00003C7083F5B1C3020205C8342F2D38448FF +:1087D00003990140834A0A4083491140834A0A4071 +:1087E00083491140834A0A404B491140824A0A405A +:1087F00082491140824A0A40802109031143814A7B +:108800000A4081491140814A0A40814911403A4A4F +:108810000A4080491140804A0A4080491140804AFC +:108820000A4036491140364B0B4080218B43402192 +:10883000C9430B402022D243134010271F43082373 +:108840009F430423DB431F400224E4432740374374 +:108850000397039F6F65029F384002900298614F13 +:10886000074061483840614F074061483840614FD8 +:10887000074029483840604F074060483840604F03 +:108880000740684838405F4F07405F4838405F4FB7 +:1088900007405F483840184F07405E4838405E4FF9 +:1088A00007405E4838405E4F074014483840144F38 +:1088B00007408020874339400A4010208243082027 +:1088C00082431340234001208343AB650798304324 +:1088D0000440EC651498FFF79EFA4000B04900226E +:1088E0000A52019801218843A861A86930400028F4 +:1088F000FBD1002015B0F0BDFFBFFFFFFFFDFFFF64 +:10890000FFFEFFFFFFFF00FE0000FF01FF00FFFF73 +:10891000FFFFE0FFFFE0FFFFFFFF7FFFFF80FFFFA4 +:10892000FEB50700002F01D19E4857E03800FFF741 +:10893000EFF9002801D19B4850E000240460446016 +:10894000C46004613D000120A861A96901400029BB +:10895000FBD00326AE6169463800FFF76FF90028A7 +:1089600001D090483AE084202C5088202C508E482A +:1089700090216850BC202C50A0202C50B0202C50AE +:10898000C02040003C50AC202C50C8202C50F0207F +:108990002C50C0202C50380C00046946098840181F +:1089A00080214902401801998A08210002E00460F0 +:1089B000001D491C9142FAD3AE617C48E8617C48B5 +:1089C000E860AC6480202C506C65AC65EC653800C8 +:1089D000FFF721FA400072490C520020FEBD000052 +:1089E000FFFFFFDFFFFFFFEFFFFFFFF7FFFFFFFBD3 +:1089F000FFFFFFFDFFFFFFFEFFFFBFFFFFFFDFFFEA +:108A0000FFFFEFFFFFFFFBFFFFFFFDFFFFFFFEFF8D +:108A1000FF7FFFFFFFDFFFFFFFEFFFFFFFF7FFFF1E +:108A2000FFFBFFFFFFFFF7FFF8B50600002E02D0A7 +:108A30001400002C01D15B48B0E068460170684624 +:108A40000078202801DB5748A8E03000FFF760F9E4 +:108A5000002801D15348A1E037000125B86928401A +:108A6000002808D1CC20395868460078C140080059 +:108A7000C007C00F00E02800C0B2002801D049485C +:108A80008CE0684601783000FFF775F9002801D1C5 +:108A9000444883E001000A68464B13400B60217A8A +:108AA000012901D12B0000E0002302001668424991 +:108AB00031409B078026F60533400B431360016865 +:108AC000890F2940002902D161688A0400E06268A8 +:108AD00001000B685B0F5B07D200D2081A430A60E3 +:108AE000011D0A68354B13400B60011D0A68120214 +:108AF000120A0A604C21615C0B071B0F011D0E68F6 +:108B00002F4A32401B04F02636031E4016430E60E7 +:108B10002178012901D12B0000E00023021D1668F5 +:108B2000284931405B058026B60333400B43136070 +:108B30002178012901D12B0000E00023021D1668D5 +:108B4000214931401B058026760333400B431360D7 +:108B50004C21615C082901DA002102E04C21615CB2 +:108B600008391A4A89B2515C00220AE013009BB20C +:108B70009B00E318DB681600B6B2B6008619B36036 +:108B8000521C13000E00F6B29BB2B6B2B342EDD344 +:108B9000684600788540D0203D500020F2BD00009E +:108BA000741A002801006200FFFFFF1F030A00067D +:108BB000330A0000FFFFFFDFFFFFFFBFFFFF7FFF64 +:108BC000FFFFF0FFFFFFDFFFFFFFEFFFB0A400108C +:108BD00010B50200002A03D00800C0B2202801DB33 +:108BE000002021E000200123CC241459CC401C405B +:108BF000002C09D0D4201058C8401840002801D1BA +:108C0000180010E003200EE0D8241459CC401C407A +:108C1000002C01D0022006E0DC241259CA40134087 +:108C2000002B00D00420C0B210BD0000F8B584B005 +:108C3000FEF7E1FFBA490127086803229043384351 +:108C40000860B8480A6802400A60B7490A68032306 +:108C50009A433A430A600A6802400A60B3490A68C4 +:108C600003239A433A430A600A6802400A60B04903 +:108C70000A6803239A433A430A600A68104008606E +:108C8000AC4801680F22914339430160AA4801684A +:108C9000072291430160A9480168072291430422F9 +:108CA0000A4302600168F0229143C0220A43026035 +:108CB0000168C02292000A4302600168C0221201CA +:108CC0000A43026001689E4A0A408021490111431B +:108CD0000160E1480168802212060A430260DF4811 +:108CE000016839400029FAD0016849083940002953 +:108CF000FAD0DB480168DB4A0A400260DA480168C2 +:108D0000D84A0A408021490011430160D7480168D0 +:108D1000D44A0A408021490011430160D4480168C7 +:108D2000D04A0A400260D3480168072291430222D8 +:108D30000A430260D0480168490049080160CF48F1 +:108D40000168890A890229220A4302600168CC4A23 +:108D50000A4002600168802252040A4302600168EE +:108D6000C84A0A4002600168802212060A43026073 +:108D7000C5480168C54A0A408021C9001143016005 +:108D80000168FF229143AF220A43026080218902D9 +:108D90000268BF4B13400B430360802292040368B8 +:108DA000BC4C1C4014430460BB4B04681C40046072 +:108DB000046880252D0625430560B848046807250A +:108DC000AC43022525430560B5480468240E2406FB +:108DD000B44D254305600468B34D254080246405E7 +:108DE0002C430460046880252D0625430560AF48A8 +:108DF0000468640064080460AD4C8025AD002668FA +:108E0000A2483040284320602068FF26B0436226F5 +:108E10000643266026689E4830408026F6020643B8 +:108E2000266026689B483040024322602068184034 +:108E30002060206880221206024322609D4802685A +:108E40000724A2430224144304609B4802687F2441 +:108E5000A24328241443046002688C4C14402C4321 +:108E6000046002688A4C1440214301600168894A09 +:108E70000A400260914902680A40026002681A4092 +:108E80000260026880242406144304608C4802684F +:108E90000724A243022414430460B04802687F24DC +:108EA000A2431E24144304600268784C14402543F6 +:108EB00005600268764C1440C02292022243026090 +:108EC0000268744C1440046002681140016001683B +:108ED0000B4003600168802212060A430260A0482A +:108EE000006838400028FAD09E48006838400028C2 +:108EF000FAD09D48006838400028FAD09B480068A6 +:108F000038400028FAD09A4801680722914301604E +:108F1000684698491022FBF727F9002635E000BF84 +:108F2000C4132040FFFCFFFF0013204080132040AB +:108F3000A013204000002440001526404415264080 +:108F4000FF8FFFFF32200021FBF7B8FA300040B25C +:108F500080002818016830229143220052B2120189 +:108F6000302313400B430360641E200040B2694667 +:108F7000320052B25200895C00B209B28842E1DA92 +:108F800032200021FBF79AFA761C300040B2082804 +:108F90003FD2300040B204280DD1EFF310840020FE +:108FA00080F31088FA239B0000220121102000F09A +:108FB0000BFA84F31088704D300040B280002818FE +:108FC00001680F2291436A4633005BB25B00D218FE +:108FD00052781207120F0A430260300040B280003C +:108FE0002818016830220A430260300040B2800035 +:108FF00028180168802252000A430260300040B203 +:10900000800028180168802212060A4302600224A8 +:10901000ABE75A48134A016811400160F821C9437F +:1090200003680B400360564803681A4002600268F8 +:1090300011400160FEF7C0FD52480168802212060F +:109040000A43026001680F430760FEF7AAFD00F0C3 +:1090500039F805B0F0BD00BF1C1526402415264088 +:1090600010102040FF00FFFF081020400C1020408F +:1090700020032040041226400419264008192640E7 +:10908000FFFFF8FFFFFFFFEF00192640FFE0FFFFA3 +:10909000FFFFE0FFFFFFFFF9FFFFFFCF08122640B1 +:1090A00014192640F1D24D00FFFFFF8F18192640FA +:1090B000101926400C12264000162640FFFFFFF72D +:1090C0001012264038B586B068462F491822FBF7A3 +:1090D0004BF86846FBF7D2FEC0B200280ED02B4CEE +:1090E00018222B492000FCF75FF90020E075FF20D3 +:1090F000A830284908600020FCF7B6F9264D280062 +:10910000FCF74EF9C0B200280ED0204C182220499E +:109110002000FCF749F90020E075FF20AA301D4926 +:1091200008600020FCF7A0F91C4C2868206020682B +:109130001B4940181B49FAF723FA1B4908601B4DCD +:1091400020681B494018FA218900FAF719FA2860AB +:109150002868C0031749086007B030BD04162640D0 +:109160000C1926401C19264040162640441626405D +:109170001412264084A4001040122640080020400B +:1091800008042040081526401CA400105C1A002882 +:10919000609F00101C1B0028681B00286C1B002807 +:1091A0003F420F0040420F00741B0028701B002834 +:1091B000E7030000781B0028F3B595B017000021E5 +:1091C0000D000800684601801C00A4B2A40820001D +:1091D00080B280218900884203D30125684604803B +:1091E0007E4C1C9E00F011F9002800D099E06846E2 +:1091F000877016A8077801A81021FBF7EDF90198F0 +:10920000022188433100C9B24900022211400143C2 +:109210000191019804218843FFB2B9000422114052 +:109220000143019101980821884369468978C90062 +:1092300008221140014301910198102188430190B7 +:109240000198202188430190019840218843019092 +:109250000198802101430191614F0198384015A97F +:1092600009780902F82252010A400243019201984A +:109270005C490140019101980002000AA8214905BA +:109280000143019111A81021FBF7A6F91198800A5A +:109290008002A4B2A105890D0143119152480068D2 +:1092A000002806D101980740D020400138430190A2 +:1092B00007E0002805D0019807408020400138438E +:1092C0000190002211A901A800F013F9EDB2002DC0 +:1092D00003D06846008800F08DF809A81021FBF73C +:1092E0007BF9099802218843F6B2710002221140ED +:1092F0000143099109983D490140099109983C4968 +:109300000140802040020843099009980002000AA9 +:109310008821490501430991002109A800F092F82C +:1093200050E000F07DF80128FBD000F073F8012830 +:10933000F7D10DA81021FBF74FF90DA80078FD21FA +:1093400001400DA801700DA800780C2101430DA863 +:1093500001700D980002000AB021490501430D91EA +:1093600000210DA800F06EF800F054F8002829D173 +:10937000EDB2002D03D06846008800F03BF805A848 +:109380001021FBF729F9059802218843F6B27100F4 +:1093900002221140014305910598144901400591AD +:1093A0000598134901408020400208430590059824 +:1093B0000002000A8821490501430591002105A802 +:1093C00000F040F817B0F0BD1CB5012400949BB22A +:1093D000D2B2C9B2C0B2FFF7EFFE13BDFF01000069 +:1093E000FFE0FFFFFF1FFFFF30070017FF00FFFF39 +:1093F000FFFF00FF0D490A680D4B134080B20005C6 +:109400000C4A02401A430A60704708480068C00FBF +:10941000C0B27047084801680800C007C00F704715 +:1094200005480068C00FC0B27047000028102640F1 +:10943000FFFF0FC00000F03F2C102640C069C00F96 +:10944000C0B27047F8B502000E00002A01D1052015 +:109450004EE00F2069490B681B0A0340002B01D125 +:10946000002007E00968090A08400E2801D1012000 +:1094700000E00220624940010F18624C624D280052 +:1094800011001022FAF78AFE28680121884328601B +:1094900010212800FCF70BF85C4B2A000121380052 +:1094A00000F0CFF8002804D0012021E0641E002C39 +:1094B00015D03800FFF7C2FF0028F7D1002E08D0E2 +:1094C00010212800FBF7F2FF300029001022FAF7E4 +:1094D00065FE00F079F8012803D1032008E002209E +:1094E00006E000F071F8002801D1002000E004201F +:1094F000F2BDFEB503001600002B03D001910198C8 +:10950000002801D105205DE00F203C490A68120ABD +:109510000240002A01D1002007E00968090A08403A +:109520000E2801D1012000E0022035494001081831 +:109530000090374C344D280019001022FAF72EFE07 +:10954000344F380001991022FAF728FE28680121CB +:10955000884328603868012188433860102128003A +:10956000FBF7A5FF10213800FBF7A1FF3B002A0005 +:109570000121009800F065F8002804D0012021E0C6 +:10958000641E002C15D00098FFF758FF0028F7D173 +:10959000002E08D010212800FBF788FF300029009A +:1095A0001022FAF7FBFD00F00FF8012803D1032089 +:1095B00008E0022006E000F007F8002801D10020B2 +:1095C00000E00420FEBD000010B50F4C102120006B +:1095D000FBF76CFF2068000F0007A02109068842F6 +:1095E00001D1002009E02068000F0007F0210906E2 +:1095F000884201D1012000E0022010BD000020407F +:1096000000002240FFFFFF0FA01A0028181B0028AF +:10961000FFFFFF00C01A0028174A1268120C12043C +:1096200089B2114381607047C16070470161704722 +:1096300000B50068C00F002801D1104800E00020EC +:1096400000BDF8B507000C0015001E003800FFF73C +:10965000EFFF00280DD129003800FFF7E5FF3100AA +:109660003800FFF7E3FF21003800FFF7D5FF0020A7 +:1096700000E00248F2BD000060A5001001008A0071 +:1096800000B5010009B2002905D40121C006C00EB1 +:1096900081408F48016000BDF0B5020012B2002A7F +:1096A00018D418228B4B040024B2A408A4001C591F +:1096B000FF250600F6001640B540AC438901C9B24B +:1096C0000500ED002A409140214300B2800880004F +:1096D00019501CE00F22804C182503001BB21340C8 +:1096E000083B9B089B00060036B23240083A9208BD +:1096F0009200A258FF260700FF002F40BE40B24351 +:109700008901C9B2C0000540A9401143E150F0BD34 +:1097100080B500F012F87148714902680A40026091 +:10972000704802680A4002606F4802681140016098 +:1097300000F092F800F0A9F801BDFEB568466B494B +:109740000CC90CC008390838002630000AE06A4607 +:109750000300DBB2DB00D2185268521C1140002912 +:109760000ED1401C0100C9B200290AD107216A4666 +:109770000300DBB2DB00D2580A40002AE7D0FEE744 +:10978000FEE75B4C072021680140002900D0FEE77E +:10979000584F3968491C0840002800D0FEE73500C2 +:1097A00024E068462900C9B2C900401841686846EB +:1097B0002A00D2B2D200805800F044F815E0300000 +:1097C0000028EED02168491E68462A00D2B2D20095 +:1097D000805800F037F868462900C9B2C90040181F +:1097E00041683868401C00F02DF86D1C2800C0B29C +:1097F000002826D168462900C9B2C900405800286F +:1098000014D0206869462A00D2B2D2008958884212 +:109810000AD368462900C9B2C900401840682168C7 +:10982000884201D30120CBE73000C9E76846290010 +:10983000C9B2C9004018406821688842BFD30120DE +:10984000BEE7F7BD80B50022002302E00CC0083857 +:1098500008308842FAD301BD30B52748800827492F +:10986000274A002308E01C00E4B2A40014591D009C +:10987000EDB2AD004C515B1C1C000500E4B2EDB232 +:10988000AC42F0D31F48016030BD10B51023112148 +:109890001A4800221C00E4B2A4001459DBB29B0059 +:1098A000C4500B00DBB29B00D258C9B289004250B1 +:1098B00001210020FFF7F0FE00210120FFF7ECFE60 +:1098C0000020FFF7DDFE0120FFF7DAFE10BD0000EB +:1098D00000E100E000E400E01CED00E000132040A7 +:1098E000FFFFF7FF80132040A0132040C8A4001002 +:1098F000589F00105C9F001080000000001C002892 +:109900000000001008ED00E000B5010009B20029D8 +:1099100005D40121C006C00E81404A48016000BD47 +:1099200000B5FEE780B54848006848480068C10FA8 +:10993000002905D046498005800D800008588047E1 +:109940000020FFF7E1FF01BD80B5424800684248B2 +:109950000068C10F002905D03D498005800D8000B9 +:10996000085880470120FFF7CFFF01BD80B53B4875 +:1099700000683B480068C10F002905D034498005C4 +:10998000800D8000085880470220FFF7BDFF01BD11 +:1099900080B53448006834480068C10F002905D0FC +:1099A0002B498005800D8000085880470320FFF771 +:1099B000ABFF01BD80B52D4800682D480068C10F80 +:1099C000002905D022498005800D80000858804775 +:1099D0000420FFF799FF01BD80B52648006826489E +:1099E0000068C10F002905D019498005800D80004D +:1099F000085880470520FFF787FF01BD80B51F4845 +:109A000000681F480068C10F002905D01049800573 +:109A1000800D8000085880470620FFF775FF01BDC4 +:109A200080B51848006818480068C10F002905D0A3 +:109A300007498005800D8000085880470720FFF700 +:109A400063FF01BD80E200E040A50010001120404E +:109A50004809002844A500100411204048A5001022 +:109A6000081120404CA500100C11204050A50010FA +:109A70001011204054A500101411204058A50010CA +:109A8000181120405CA500101C11204004A30010F8 +:109A900034A40010800231400400000008000000DF +:109AA000800658403A0100000009314002000000E1 +:109AB0000A0F0D07E0010000FC5300009821000090 +:109AC000F4010000E8030000F401000090A300107E +:109AD00044A400108002314005000000080000008E +:109AE000000758403B010000000531400100000024 +:109AF0000AF0D07076010000E0150000D4170000D5 +:109B00005E010000E8030000F4010000ACA30010B7 +:109B100054A40010000431400000000008000000C0 +:109B2000800958404001000000073140000000005B +:109B3000090F0D0795030000901A0000282300006C +:109B4000F4010000E8030000F4010000C8A30010C5 +:109B500064A40010800031400000000008000000F4 +:109B600000065840390100000006314005000000A1 +:109B700009F0D07087020000201C0000982100002E +:109B8000F4010000D0070000F401000080B5F7F7F1 +:109B90008BFB00F07DF800F0B2F8FDF7CFFBFA2068 +:109BA0008000FAF7CBFCF2E710B500F071F800F096 +:109BB000A6F8FFF73BF8F7F777FB00F069F8002805 +:109BC00003D000F09CF8002801D1FFF7DFFF1C4C08 +:109BD00000F0C6F8206000F0C6F82068FDF7D8FA5B +:109BE000FDF7EAFB002801D0FFF7D0FF62B6154C65 +:109BF000F9F72EFB20602068002804D00120FDF733 +:109C0000ABFBFFF7C3FF0120F9F735F8FCF744FC85 +:109C1000002801D1FFF7BAFFFCF78EFCFDF7CCFB63 +:109C2000002805D0F7F740FB00F032F800F067F8A5 +:109C3000FDF784FBFA208000FAF780FCECE70000D7 +:109C4000201B00282812002800B5104A8018C009DF +:109C50000001214A8018042905D20068C900C840C3 +:109C6000C006C00E05E0FC314068C900C840C0060F +:109C7000C00EC0B200BD00B5002A03D101228A4047 +:109C8000426002E001228A40826000BD0000CFBF36 +:109C900078B58DB0684611493422FAF765FA104E4E +:109CA0006A4607213000F9F72CFC04000022072146 +:109CB0003000FFF7E0FF00250A480560002C07D1BF +:109CC00007213000FFF7C0FF002801D1012000E08C +:109CD0002800C0B20EB070BD0000304064A100107A +:109CE00000083140F01A002800B5002A03D10122F3 +:109CF0008A40426002E001228A40826000BDF0B5E5 +:109D00008DB0684614493422FAF72EFA134F6A468A +:109D100001213800F9F7F5FB060000242000694610 +:109D200008726A4602213800F9F7EBFB05000022B1 +:109D300001213800FFF7D8FF002202213800FFF789 +:109D4000D3FF3543002D01D1012000E02000C0B237 +:109D50000DB0F0BD0000000098A10010800531405A +:109D60000648006870470020C04304490860044961 +:109D70000860002003490860704700000018264072 +:109D80000418264008102640F1B4016841184368C1 +:109D900058080A1800988068DB0701D54B46C018A0 +:109DA00091422DD00D78491C032403262E4002D168 +:109DB0000E78F61C491C2B090F2B07D10B780F339B +:109DC000491C03E00F78491C0770401C761EF9D12E +:109DD000002BE5D00E78491CAD082C40032C01D196 +:109DE0000C78491C24023419654244190025AE1E22 +:109DF0009E42D5D02678641C0670401C6D1CF6E788 +:109E000000980C30F2BC704700053140060000009D +:109E10000000000080189040020000000006314061 +:109E20000100000000000000401990400500000003 +:109E3000000531400700000000000000C0189040FD +:109E40000300000000053140050000000000000094 +:109E50004018904001000000000631400200000060 +:109E6000000000008019904006000000000631400C +:109E70000600000000000000801A90400A00000068 +:109E800004000000000000000000000000000000CE +:109E90000100030363000000000000000000000058 +:109EA0003200000000000000000000000000000080 +:109EB00000000000000000000000000000000000A2 +:109EC000020300000000000003000000000000008A +:109ED000030000000000000003000000000000007C +:109EE000030000000000000003000000010000006B +:109EF0000102000072B6104810490860BFF34F8F8E +:109F00000120C0040E490A6802430A600D490A682C +:109F100002430A600C490A6802430A6000200021DB +:109F20000D4A03C26A45FCD1084FB847084FB847ED +:109F3000084FB847FEE700000000001008ED00E001 +:109F40000013204080132040A013204011970010E0 +:109F50009DA2001001A4001000FF0128FFFF0128AE +:109F6000443A5C50726F6A6563745C3531315C4EA3 +:109F7000375765625C6669726D776172655C7432D1 +:109F8000675C747669696268386D5C7372635C7370 +:109F9000797374656D5C7265765F645C73797374F4 +:109FA000656D5F747669696268386D5F636D307086 +:109FB0006C75732E630000009F0F0000000000000E +:109FC000000000000000000000000000000003008E +:109FD000000000000000000000000000000300007E +:109FE000000000000300000000000000030000006B +:109FF000000000000300000000000000030000005B +:10A000000100000000000000443A5C50726F6A6575 +:10A0100063745C3531315C4E375765625C666972DA +:10A020006D776172655C7432675C747669696268C9 +:10A03000386D5C7372635C647269766572735C73AD +:10A040007973636C6B5C63795F737973636C6B2E8C +:10A0500068000000443A5C50726F6A6563745C3556 +:10A0600031315C4E375765625C6669726D7761723B +:10A07000655C7432675C747669696268386D5C73BC +:10A0800072635C647269766572735C737973636C16 +:10A090006B5C63795F737973636C6B2E6300000094 +:10A0A000443A5C50726F6A6563745C3531315C4E62 +:10A0B000375765625C6669726D776172655C743290 +:10A0C000675C636F6D6D6F6E5C7372635C64726905 +:10A0D000766572735C7379737469636B5C63795FC3 +:10A0E0007379737469636B2E6300000001000000D4 +:10A0F0000000000000000000100000001000000040 +:10A10000100000000100000100000000000000003D +:10A11000000000000000000000000000000000003F +:10A12000000000000000000070B40123002413E0D0 +:10A130000168001D194202D04D466918491E0C6085 +:10A14000091D121F042AFAD20D00960701D50C80B2 +:10A15000AD1C1A4000D02C700268001D002AE7D107 +:10A1600070BC704700000000060000000000000006 +:10A1700000000000000000000000000000000000DF +:10A1800000000000000000000000000000000000CF +:10A1900000000000000000000000000006000000B9 +:10A1A00000000000000000000000000000000000AF +:10A1B000000000000000000000000000000000009F +:10A1C000000000000000000000000000000000008F +:10A1D0000800000015000000000000000000000062 +:10A1E000000000000000000000000000000000006F +:10A1F000000000000000000000000000000000005F +:10A20000010000000E00000015000000000000002A +:10A21000000000000000000000000000000000003E +:10A22000000000000000000000000000000000002E +:10A230000000000001000000060000000000000017 +:10A24000000000000000000000000000000000000E +:10A2500000000000000000000000000000000000FE +:10A2600000000000000000000000000006000000E8 +:10A2700000000000000000000000000000000000DE +:10A2800000000000000000000000000000000000CE +:10A2900000000000000000000000000010B50749A9 +:10A2A00079441831064C7C44163404E0081D0A68D1 +:10A2B000891888470100A142F8D110BD08000000AC +:10A2C0002400000065FEFFFFA8080000001300281E +:10A2D00000000000B5FAFFFFFE0200002A010000A6 +:10A2E0000008002800000301000000000100000039 +:10A2F000000000000000000001000000FF0F01004E +:10A30000000000004D4F544F525F494E325F4842AB +:10A31000375F4842385F484F52495A4F4E54414C7C +:10A320000000000004207146084202D0EFF30980CB +:10A3300001E0EFF3088000B50149884700BD000047 +:10A340006F54001000F00EF8002801D0FFF7A6FFB0 +:10A3500000BF00BF002000BF00BFFFF725FC00F0DA +:10A3600003F800000020704780B500F001F801BD3F +:10A370000746384600F002F8FBE7000080B500BF52 +:10A3800000BF024A11001820ABBEFBE72600020006 +:10A390004D4F544F525F494E335F4842355F4842FC +:10A3A000365F534541545F50414E00004D4F544F6E +:10A3B000525F494E345F4842335F4842345F424106 +:10A3C000434B5245535400004D4F544F525F494E3A +:10A3D000315F4842315F4842325F4C4547524553F6 +:10A3E0005400000004207146084201D0EFF30980B8 +:10A3F000EFF3088000B50149884700BD95A400101F +:10A400000548014603B4684680F3098800BF00BFD1 +:10A4100000BF00BFFFF796FFA5EDF5FE00127A0022 +:10A42000000000000024F400008000000080000014 +:10A4300000800000484F52495A4F4E54414C5F48EB +:10A44000414C4C00534541545F50414E5F48414C94 +:10A450004C0000004241434B524553545F48414C2D +:10A460004C0000004C4547524553545F48414C4C0A +:10A470000000000030750000204E00003075000024 +:10A48000A8610000000300010004010302020002B1 +:10A49000000300058169891E0978C9B2016070470F +:10A4A00000000000000101010101010000010000A5 +:10A4B0000203040506080C10040300011314001520 +:10A4C000C70103000100000000080028FFFF012869 +:10A4D0000003000B0000000000000000000000006E +:10A4E000000000000000000000000000000000006C +:10A4F000000000000000000000000000000000005C +:10A50000000000000000000000000000000000004B +:10A51000000000000000000000000000000000003B +:10A52000000000000000000000000000000000002B +:10A53000000000000000000000000000000000001B +:10A54000000000000000000000000000000000000B +:10A5500000000000000000000000000000000000FB +:10A5600000000000000000000000000000000000EB +:10A5700000000000000000000000000000000000DB +:10A5800000000000000000000000000000000000CB +:10A5900000000000000000000000000000000000BB +:10A5A000000000000000000000010203FEE70000C0 +:10A5B000FEE70000FEE70000FEE70000FEE7000007 +:10A5C000FEE70000FEE70000FEE70000FEE70000F7 +:10A5D000FEE70000FEE740045500020001000150C4 +:10A5E00003F9790010000123B17A0CA004090004DA +:10A5F00001010001210E83D0A4286004FFFFFF1F8A +:10A60000020225920807F0010352400001F20602FF +:10A6100018F2060418F2060618F2060818F30600E7 +:10A620005478F10618F2060418F2060618F2050826 +:10A6300018F002FF2199001004F1FF04F1FF04F16A +:10A64000FF04F1FF04F1FF04F1FF04F1FF04F147FF +:10A65000046C0248090028060AF321060001F123D0 +:10A6600034F25208680002010F0F010000000000E0 +:10A6700000000000000000000000000000000000DA +:10A6800000000000000000000000000000000000CA +:10A6900000000000000000000000000000000000BA +:10A6A00000000000000000000000000000000000AA +:10A6B000000000000000000000000000000000009A +:10A6C000000000000000000000000000000000008A +:10A6D000000000000000000000000000000000007A +:10A6E000000000000000000000000000000000006A +:10A6F000000000000000000000000000000000005A +:10A700000000000000000000000000000000000049 +:10A710000000000000000000000000000000000039 +:10A720000000000000000000000000000000000029 +:10A730000000000000000000000000000000000019 +:10A740000000000000000000000000000000000009 +:10A7500000000000000000000000000000000000F9 +:10A7600000000000000000000000000000000000E9 +:10A7700000000000000000000000000000000000D9 +:10A7800000000000000000000000000000000000C9 +:10A7900000000000000000000000000000000000B9 +:10A7A00000000000000000000000000000000000A9 +:10A7B0000000000000000000000000000000000099 +:10A7C0000000000000000000000000000000000089 +:10A7D0000000000000000000000000000000000079 +:08A7E000000000000000000071 +:040000051000A40142 +:00000001FF diff --git a/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.out b/firmware/t2g/Passenger_Seat_Timed_Controller_demo/IAR/rev_d/Exe/Passenger_Seat_Timed_Controller_demo.out new file mode 100644 index 0000000000000000000000000000000000000000..6a381a77f59961c5a211d29bef438e2f345ae7a0 GIT binary patch literal 1741192 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 z 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 z z@dBfiHqm+6r9JCT)GIU@kuSA$C+ZbwWNw@|E6-6&3-Hy?ov7C>!j-63ipW)d(#(aK z!qjqAKUFR?Pt-f{5BZLAI>PAk8c$nmB+q4+N=nr0i=afkz6eUxYatL((2062gpsJ%f+PHaF~v;O zD|8>D`5I|l1!_0dd{o<)3{|3DK^4tbauCQM87fil#5A^<>K!jtpKr4=6ZI-aGK9r@ zLrC@pB#0M-h&v;r0@qUhO$7FMnzG^op&as&O?=j+2EsgM4-$mBCspa}vPv8EnX~N7 zxl$n{>Yez75w?Yh*X$D3x;?41uSy4*s8{HWM7HxClujUF` zs-!}jpUgYG-AU9dEOUCbk*HU(>NFGe3i{E?Q?5k40y|Dmsdl1Xfu-U8F&{7bcS}1_ zui$`GJ`;~9a@B+LI>c@np2U-aM?rxy&y}cGp!JyJPSmSP*@=2ZA!@IWk8YW)GIVHhH-DAUd2KrpJES`(CNH;Qt;#mzvqF$$zBiKyT z>xbvXdG3_qhWSytsF|o&0o|ke*+!~U4K@WLjPgbz_$BI<##w20b)sHBq)yZ;*pFB11B(ORyilTEL4riR6W=u)(T+~0(*M7_H9jiI>{X~-0uC+bx{c%okQ zLrg;mKq`RPZ6Gh1kWK6Q$zexjE?drBw%SILTEz?Y$wa*d#K=qN%nqP56ZHz&NYp#= z`T*JdHSs?~foXW7r0UBwo)l20k90l%V|;L(TLrlz{AZXyrNm{vl>JZh|4qXv@K5sp z!U--P=tRA$SyPA5$@ZMp5rJi*UW<}1j6@rE)+_`YK*Zx@{{i9ir1UkVE~Ry%UaNIF>6=Y(U^_O6 zjIrIfVVkskLO6+fP4b{Vf!V~+#ECcXu}dfFRh$Uwa2hEmKHA;C z;LV=8i@K7MP0hnl^*_OBBg;LlY*+Q>|6s4x#eBWyo#8SWQ2vAcR$k%q8}^j0b&-=P zQu)D1)GOxAEWKY>iFy^Okt9@s%tXBk<|OJ>5FRDwgQhcIbC{g4Ejqn+D3qhm$S|Au zv5#p!!_U8~dH)ml)|}r!@$YKi_a^z<=k3z}t`m!r!|Qg=rToRZ{}IKO2MZ%S}VwD@h(|ZM2~V{y7ZLj2@X`oxWQn0^kN4rgRcPZ<(9=0 z^+xX&wEC4YDCb3gWB?t;_0iuMaEJ4P=!jNsIcEa6*04Fcr-9Kg5Fw+z>>1l~o~Sp9 ztM7OgP3#?{=|@MGIxx+6S@dKF%3tV!=gR064p1lRjef@gQmQc|>MeU9-|{+7)Ej+9 z&?$S71~e!7YYo$}WrjSUIni94ghFcou@MOdYEw?xSvGT#s5iQYT>we8knl67>`t3l zBq8{!joz(E zWz?9|&Wk?d2CMu|l&H7tTH7d*sJCo;J{%_F!r-!@pzKMTP9*A$7UBaDl}VL{f{8d< zc8N_a6ZJ-?8q~CbkcoOdrprXV(K-)3{}u=`HkCzt{gFs+L5X_HKCxX?B@*>U&ooMj z7$V5GmU&eWiF%_qdgzr3+sdNb{E=LRr@bnOM7`198>K{|-e}Gj95?dMy`a>_@@Rzx zrdf?lFOMGNfeWk4JywfEz0sqL0wPgwG;Mk{9!o`{-spUzgiO>M?Xh6W)>!mp z8?KCvMX&ZEgta*QchWwLEnT0Y$!2Kjk`xX+rm z0XY(|bk(sEQXn7$IAc51vwF=cDpn+5gU)vp02T{i+5(O%dm$9+?eAH#s<&lmNn_vO zP#UBY9BAWUZ*Rxi{!R!4Vxog+>R+=KAEB&D_YMLPaS$ziLj%n{>E2GIO{s%ZCxSbB z*Ypndr27W?Q8r5Wp`rGHRXzAbX?-O?Wj2WBu5ueh6G+Sk(YRhgAYo5;&#}FYg9EEO zSM~O;0V=MXLSN2w4fd^A(L31OyRLT?a8pcNQ-8Wac%)~DjGnF>=TmSm6Xz~iDUhps zhTtTANZL)2bkxPk==y>FUQpnG_1ZO54RbAQ?b;!JFxsTpk4>Cf$$VN=%R4k7suNj**j1oeby z8Jz@Px};%UZ-1JkMTPBs{e9`fde;L`!OBmAs`ArHKHba4%x^AmGE_$oB39@fjVeQR z*~>H%>kQRpkI~PnISYDLEkAx>kghvmto#j!xttRN*e}kA{emh-cWcELAm#Xsq-^n# zGQ2fcWh7^}YHf{PcLo^pct!%!wt(Sn_*F(CUbIE1gtMnVpC zvX;UKa~m8W=Dm!>+~F02&2xYVelO5Y_li;YoK{x%4hE@t3o_|-gBJfCR>#p933a?FknuuBGM@F7F|6M{$VkxsNME2PM7k177_$SvO`@x!c6u{iNe(w>%LvjIiQF>S=Ew-b^<)t0;i$gM!a<@wgWvKS=7`++s zA75)*fi)dPa06tVo{@}`yfTKXj$1Mk@`k^V;J)!pMq+B~Y=2RPYXAE9YexKU^za|9 zKEm`ia;JO8NaPVPhjpxehpUhMG7>WAFC@4=zL<%a7y{@>N-?y4XwB->(wz= zHnkd2b7X5fH*5S`NJAR)WUT=1)$DPba_r3>Wq+PC z{zu4Ir;svsuhFmOj=MONJ%RJ$`LNI7`LJUu$iK3uf7zbP6yG@Is z9(igt+W+gMqp#&BkuO{0#M)kCKOB)nzHE)vU)ftMwiG6jFWXDx;&s8uP&2zckIWyCo@Kwx-eXFir9N*d*o4 zwkh1AZrwde`Lb;yx2y-oB`IIFhsb5xhLR-Z%eKjMJV@*HSV@xdWot4O&(Q=gPe@X} zY>U7p>haPf<;%86jIS5bV$Lp0Qod}9!uYfh6r0PFlrP(&&>sx~|6+NP@?~qh+jXbJ zlaw#p#On>Lw&mS;lJaGHh+Ou(HYrK@vOQ$#OEReQ?Bpcn%hn|BO8RtilJaGnc&|Ed zPDxU}Y!8u3o#*#RQod}H%=pX-$~-zXN%^u(0<~G>hrvK{?zAN3%l0ENKbHdK!_$(K zFI!W}{h;H+X-UeLt?|x&PLtd=JxTepZ4$YKQ3~C(XOi+|`_j7TBCn;ZcAfYLDR+92%+oVpu?3?yUQod|AS|3$| z<}XwxDPOjm#8T*t>LlgM_My8Z%Io(l?#s%W;De|4rXcv}i{qZ9(ORyS__Ug4Hy)it!fgeV!%Lc- z){{iSZ3VXH;xv1sCy9jH9;`0CZAlUdw-sK`zG=2)X_69dn;2c_f@MicxNYLpNS!rsgDdDz>6BA~deRyn=5^kF)F;ij* zxGG5rw@nmHk!kkG>LexHRtUrP{v;*bHW1D%lxCmwCn@2!8>_YatT zq}iP(Bq`x`5CukpG`nECcHyMZzkNAL3AcTaT;A(nNm9aX3*8BxPoA8lgxfB- zkaxp|P?9okyO2`grc**mO1bTWbWwKQx#75eO*nwnc!hfWhuUV_yv=Df6})E9KsJMkqr~Q>n{#(Ws<-0yEUwMc@|@PBLU!Jc%OGh3W>K1Z-ZiWBJno0 z<|dq`VWHU*riPBWKAXLTw*geFyq*=066u>~A9zUX(a6V*0Q)F;rYtnOXL$;+X%fay z28Cvy7CJLD0B{??qX&D_o#L2KXy51*;(Y>v)0jBx(u1p5Xl_Y)*X`NtYz4((C4tzl zB>o5xuPH>=2?D-I;dm{;eG@h(*NS$zqqdUg2NGYVq+(U*void$?K}<1wf3ts>e|-s;zH_ z^2UeWh3ZtQ->Ir^hxXcs>Z$+{YQ}E*Dp~b$IP(muIO%p2t#|M@llJ#@*iwm4_p-Cr z_7C-~=uzN^CPJkMZE9^t`p{f9 z@>8kW4^7oN8amtCT9Kwsrv%kJG>Rt_brcl2oyydPZg_;>6@K(lwe?xSSyP;WZb(Yut+tgdI-EQ`0a+>zA6KF-bA{iIN+2-QyYTHmqA z@u~?FwRp;gn{(JWN~6lcltFdt5+qa&u`p#&eNR49237u?#ln<9^<;u)voK{)<#0Sx z2Gtc`5^&0(dh3_PGi6Y{|77t@8B{ra4hvHTRsM`5u9QKQKj*P9Wl-hMMJ)Vt^*oA& z-%`(`S@=CXQ?D35hJ~|oppSeWjpq{50q_W(7n2Tno{Hz&Hi+kHJahh07Cu-#&t&04 z)$=|qyhuIo%fd_4^L{Mcub%g3;S<&K0WADg^?VQuU#OlBX5p*V^C2vJn|l5j&ibzU z@jH0p`|8K1WIlfEzY(f_lF!1g;YW}9@q7F@Oa1r&Ke!be3RpNVSN?c#A6C+bAGBku zYhT!j^kMZ#fZWuzSnMoW&IBqHT3bb@-_>&~Wrvx_5!lfQf@FIg%Td(HmQGfXBPj5> zTS;x6DWa}r-&Cb5gQa5K+1$|3-qcFRSS(OIz+RzM?O4$BPhxYVKDkPTs;;^g9Pfgt zsuZ*tq1kbG!{J?krjYllEmes`p-PsCq&%S(ykQg`xrq!^(380Z*UJNJ#z&Z}V7$EWK?VsjiyZ=7v-)WpS0V z1V@%HIabf6WEs`78S=f9wE8e=ZJ{sYbPHCB1gbiom0V}BSy*42qTcCcQcYl<*p|tb zmNi=OpF;*5)&PIhbTR4!Z}>8;Z)mPr?8CaMav{bkXmcCCyn{A46|t&C6n zWX#^RGM0?>@ztDNE8|H&8T;;98Q6yy`#0(zI~qAvudPn>(l_YpINWD2tGP{Z(O3oCz?vNYL~N0H6P2d zm(mO7JcZ%QG++wkQo2xKa0QBMzea$Xh1l@cwRLo0nQd&?2qkw|&UTG}=1xs)A;#g3 zn{{5T{im+(+LTC%#pKcz_pp>~_m<{6f||Mx=;oPbcWS$^NhUiL^$dSv1>4p9dH3g& zUafb+pV1Om8>-qBU2eOZYxTc_CyOVzd=WIi`nJsF-qO2ZkhsCkl~>Pa9wOeiiz6!U z(?@nA8EMmnf+LUZ*YL&2YGIB=ZN@dPep>utEz#Q7y zeJIAa)>e#f^vXi7%L!iJP`hwGMXEv;_|UGJ`8fBBltXfm$}VFiPg&w>+I^gkdzLD} zjY2JkAevhw&=9k@QvtP*QEJOTY!D0Me4OYS@ljAGvW7sAhK`l$?mh~!pi;Bl*Dh>q z^ix>m3MDKQ7F9t5@_MT<#hRMz_@$a`l3fk0h(qY+P%YN;oox#{>Kbr!nqV1GHCcrm z*WIjKI~(8xnqPgxRMYMT%@r4i5Fb~+o|_`)EXG6)y7Q?!lX1u^a z6Tx`^JJ#l;QZK2Dnl4jC>Y6)(iyUJYLA~K^iMKZO2hs!LgVDyx1 z(MqV3-D8zRB17B}<2$}3stL(m@*AHrHGX5FQ6^Sy`a{U6X{oOC+tnMz7Wo!S%-%t< z2drY$yN&Rzx3wgQ0;8G}{#71|>JdU>o!D;_Z;hRGBaIb1kdm|{$Z<8NG+4q{JQA=S zcH-1tJ9b*a0ec!Yu)lpHJ970&7?;-et5;BzVH0fGdc6 zWR`)Z02Y2 z&Z0#btTyJ9BC(YcCHGatF{kuyTMp%~dM+n&rjTO<(TR6nWP2Q=1D)&r`0i;tgM{cY)ea=ypA&h}v2h`HIQh*Y!ni*Hc!sjYXx%7AIU^l`>pk zRC?P8t3^<5wC9Q5Blt?0&zNd8y2GwetkN^Gi#%n&F$cm~ut6_FN! zvf^RDY_2GM!>$XSf9;}*$bcw7 zQsh$$ry@I~;-tuAyqM?SPVOtDL#c8$am3> zeVeA0x{?o8QI|evTBJ(Ti@hSC*G!AF8Bopr`e~5?1MYCY*~^{!|LxNvn>D??e*$*v zw8*^@E0zy{Juxk^UBKl22C!|@N?rL7t7wRLdRpXdLF(*c0NyaYl;^;5aywSh5V3K3 zWYnqLF?tgM=;rB>nF1>I3IJU+-Cfbul>lEhJ<=#B)iNEx4Kqr=YL7VqO_}%!Xr8Ol&Gk zuXYLLGfZXV4M~okC>F%TWuAL9#@l8vnHLG2riYOBI=u)6ZtJ|r9wtt&bb)(fUZlyy z>E$eN+vY`9n>f8@1@7s2r8l~4=a~-YMJ^CUob@V6sd0C!YHEGkY9d<%wYf$GVnc1@ zc@rTPqCjk{jl5$cMJey{kjicKluJ}nx!1BvUsL7Wi#{$7S7F~H7jJZ4th1|w zw*EDBUs%|L3)Jmp|KD+NXm_hn@rrfwMTQ@^Ya2A>DySW4n2^e~BuWyNnXinI0|qTR1U@y2|Ye zH_HmF=Uem@hIH;oS3JdWY|b zAI`1s9LK*H9EIChMdaI}&r2s``@teV79iz4+SdF}dC+f2lpv3SltnIae)F&5NxO#)7(Y`*3jVJPh`1Z= zw_M4N0Yg)`-x1F?OeuXUKP3GFiKXAQ2QiF$*iF5cA2KSLU==L-F4*Kn&RYV{;A?aw z=js5o-}0GRg-uApjQv^E&*9a<;2exJAsZjC*w`&O-QTGl*pJWgTT zumyc9Rzi*dw)FK640iOc>l;E!Rzyct1hl2+7z4hH=_sfaAif%?Bi*7fsAeB6y0dRp zAHG1aWow`%ynS#W-Mf^M!4kV(ExfsJd2ikNrK@@ccn7kdH)K=frm;K4ty+YR?%YRI*m2UPVo1|U!YHMWDL%@Q{Albsi@s5o$8lS zZKIyCKtuTp)&$n`aw;yWkLQKuwZJBb_7tGhmz^^8O$~^H<2TyyMQ$+CkOKTOfQutP zTVt9K`AGew4xbZ=9VfArkhdVh8!_2S$#{!cG#{K?O}w{p?ND#cvSov;pjfDHSUnx| z#gP@n)W3BfNeo4?j^3VSwd>Jfm^`RjFis#`t@6v9=Uv1zpeDXYOzn=ROO+tsyOnyV6!hKvxOdLAgJ*P6*Lp4=_?n!25YAu7=f1d3?WszboyZL zI+i0xj{#?{y_d_XNe4EYR~=d1J$>oAfwh?L`>T*|+c^0f{g|`4AehYpq&Sr-Llca; za>7}nnzWjqhK}u9Q@g6C|Jb^fy-SbPE!|N0YYwYrJ?S2vuUoMrK=Z&--D9{caI!JT$nJk01nQ_-GOJVj3A4wN`jeOcndcUt*^Cg8U^X zioH=>x}d3lS>IBT9G=Pd4nzFwM7_>vK5j{##MMl8o_7x$S3j_Hku&*2u#^$VQ!49KR3c*|#EdmU?x|gMI}-(pBl{g6Z2Zy0 z(w_AO#NgsyHXH6Zg|j__*!sKURvPG)ov#CfsJTROO42oTWe{EdCnY}-ZM!$5p z?Qj^y3J4QNv0TpVCL6v{PdNvX18PqUY+#ijkoNCT_YTf%6EO?$<{IKAhY7DE&v#@| zbLkqW?d5Z7?=s$U9&*rVIc>|kanHn%MdZZrq91Wxo-+-Lyd!^!HZ<;}VcJmr!G31T z#=pF$Z&mLy65oUoLkd;9JJ-;;9E^%1hm$OSpOpO&6v$~K4le0;+c{#}=1Qg>DMM4X zk_?ve>&x^#9HoBuaFkUZVu-L_l?RA9BqK3bnqoX}-UCGSW+duUQQ;38s(KOpo-<0 zwC+z#LG~%3069$=$ytdc3)&#};i3RZ$7LjGyN@J&R4G8xl^IDo5LZaJZPEvy0wjGu zBS|;(SEyX-M7vQ~; zm6^1?5B=rraE*6JM$(qxn{8v9p!2Hg3|fFyt22`GoWGnMT6J+o(vmnLudQ;95e8WF zct$d=@W>c`R{wQIQu15fme{8m156s#mr2t*)+J1yjSP^ne?~H%_sAIDZC}ht%G@^F zZ98n$8#5Afl}n5~?it{)+cJ`o)oz=zqgnjfjHL8=r0ifA_-jUDUT}$VonQ@cT=bYs zTJyeNFdZk)!v;uLkdcJTO$q9BZGePhGLrC#DZx0D8zAJIjD#%dFdXHa+PS$pa+qxhj)3{ghXdb2dFdQfEez_USfkGLEzd2>EhGLM}0dSSR5F z#9W(^n2)_;m%!Xd$fq(5aO>3Kg%>db$Dq{!+_8r;E)4Vx&W zOCgK3l2XaJo@V38&VK*w4b zE3Z8oX9xI)5;!wSBrg+_&OV$vpkMb;fsSPhaiE|7KATQDcPyi$-2C?xI@K$Fx8QtL zUq6Sg!CASGIIOGlm~+IVgs2^L&<6z#-t{ zNvT@OK@Po#=tv$uFjz6zv$_LcK@coXr_~w;asIOtpB)Sga^US6ShH#shwM%#y!e@r z#?_tTb_6PYD+hDc8&~5fuPA;59U0=pooiP&(Fj7pql;y9#%j@;A@tX{J= z-MawChB)vi1Qcqm9a_`dFC5)V=SVoTqjzZSYT@lUbi~6r2MQ^y{5W?FJ~E6WS@~@} zvcl=82v=YY)v>PeI#I*A#((0f@soUOyn-s$T?yaysf3l<-$o@ot%0f%j`pvFKl@g~ zLmo$;Bu4wA`LVt>Xr1YC(-+nM_#bqy+FU3_`be|@_K=Zr&0!_(*Zlg%`tm$)19y7D> zh(8@rb$j@s5MB6!Qv9mSv&2=I@&b#LxGHmyT^kCQ6^jeN>@!Q^D>x|k)xy|xdCQuh z5C?QbL{n4!wlH>xydg|bxlasf%EyXg?eY#flb_Bp0+HVs6&sXSmzgBaYk$q`rQ+DB zAs=p@w=ufJBfG^e2xZUYcbS>Y<@*#(cgEP*H6eLxr=U|OQA|yr85`RYk~hcMR66Rf zIbOGW40mttVMz9zH_^0j>>hj8rZvxtXtF!T#eN;~x*aiXJB2HJdfxch`(97+=(lF~ zyYaCrvOJDAb9QLb8zQk=vpkNk3d%+a1`0b*ZX?j3hkZ zbVW4wlDdM^p>Q?GPolBks@q2ek$ql3%X_vg_Cc1sKT#0c@B203rRA|Rvn@jFeZ8i8 ztvq&lw#NW8UhL3#N*hgiV=RWdK*bf7jv=5_@5?piSrxJSeJNF>TvNVX5&NMprFvhj zDYwUCFZoic_syE}-bu0F`ckU*#hUVp$*~W7Db@R4P5H^>*qQ43PRn-nzE)GdF(r1n zmom7AKe=+sAL27W-*V zwzzTF;i})vXs&Nfi@oXPD(JjiADtfitIbuv@6#Ml-7|K!x-V2n<}|Jr_uUz>D{?KX zIhFOkO|yJ&M(ozy?5Tz$K`h>vX`1abV_Q99JTvR&VtyyiE8~d3{AScrCYEAjp+}Qu-d&b!IIvsD;l;7Mh z_7^`&9WU0DFYXsRrND=$j`wQH^Y@RPZ&Nz)T21ui{;{joEv&-DX1rCCZ8#uyySjzd zBr_A@!GHH05PQI%%*ufW%HJFi+h!}LBBNH?J5YY(z}Qc1N^iVT>-p0IV{aB%!-iZj z`XrPC?*|Twy;qPu-56!$QpcbCs)J)+9U;k$2$z+Q1Y95Nm^D*&Y=cUM+qA0pbk5q} zOC_RZn&|z`Sxs`tG*}rKK*)%$S>3YzyJ%$2577L+YgVt9#t1cOiB~V2wO+2Rh?^&X z!xL11<5i1hofVQR5??}{Zv(`?UNr0SkgOJ8VkeshsPFBbb#q8gWP#KwR|e?6dibpS zLUPh2dYM23*Wn&M3)`!)yn5Y?((EsbXW>TN5`9nb`XTIBQhkHRf#v;2j(?P{;H51K z-7zfk9pJmJ6n$R?f_IM$zY@Y2=Sx7lzgvz9|H7YuHi3KtNPM0;DvXPFD}4B9vMP{$ z|G&cT?SQNrWRHF^d8c1tmMp`|e3SUoGA4`J4WvR9OeaEfsH7xr}Dtsqh zR3AV>TrM~|d`}PwNg~7UK05pmt>^vN5Di)N=F#Cthod2rK0Z49k;@4-}s{j4Yai{WU9&lyX?zYe5PhTXg*{6|{cJBAs;l%HQ&68>u-k;pZm6#IBd z`0Q--IA4AaDe3pUrQr*9M5@$$eQ6jwfjx$0tF-;vvhX(y+T#aP(j>&&Qph==RQ=Af z@LjaKkgEF9k)G%EhQBi`ol^3y-tfb;tqEkPH2h_6_;G`9h^GiZtCrU%Dg{qp9^Q~+ zw0|Em((mWXaW9@jChk&2sM5>u)8*ldY5gx144@>QcdrazIXq>x((=bEapj&<<33C| zDRI5!nDDm@Qg5(F4o6QN6Mlf!^ioe>I^uWnvEi)-U6ANXTv&&3_}DPEA5#_6AmSlT z{OYmc9~s1JL{v6KU&BfrKR!16X%3dCQb!jBjR)ISh0main*AwArLV0H^V_2RDH5Q# zb#?fHU>@XyM^}e051>%(azlUknp|fLG*wkC@{a!SjRr|CMVwPeJb;k1GWgm4@FT;J zkj0k|gdZP7nr3d2)%R38lW*rNbZ4 zRp7Kb(Kt5~()!f3;ZOaT5bnCQ;nVZoOq3~4tPP(-*M2Kgs5(hgWyYIp!xz%E-U=^X zcp$io52dA&o7RP|r(IqE33Y%6*M)BxhJ^b33+uvn4MRePyuU7dUl571=f2~^kK~(G z!(Y${eU(jb93RG2=eqi2KN9Z|lu;W`2tP9%4e4{!3E`gv(kO+toe+M7_L0&%wlJm9 zyC;Ny;UNMNFN>5ym#h!JZ5S{3I3%RcFV~0P4I)wMY&Y-mJ`F+d}{wJ zp=2eZ`6*?#pBO&7z!}0_6jbAXIx)OCn1U+&{FB0$1XGY651kaou2oMIrW9q)M<<1E zDsbAKn}oPL@ulz`M50f!t8b=(d-F@Neb6&B%6jpTWRWa9hobP%Z$b2_$A0n3AkBXA)llr4S#A$nFALJ_yJv)A-=gKbHd-j+=fdkY zg<@Ojoq~(japA>hhGNgs*2$m{uLiJ30q*sz>~S_uhCkEnwX;I8KV@O3sf)T^2cQDZ z4#hTPqeW{H*NcEOyW^ZtY_mmTzXE{g&ke<{$#$z~2LIFS6VPnQHXFVCAWz3l5t}&= z&hVqrq0ThhetszSoF9!2^`n<=hFkn-bdW#IZoB}#@uSh<{WRNrA)J%rqq7d|r`d;~ z+3ZK7L;7j5?>mM{SWO$3`xdELg4fvDE{E#cZJ+B^nmJC z3W7UI$h$(Y7Wrl<_F$gb(^Z%qYu0N+v8ODY5n#ts|GH4@)jV?)a6;?om%#oZ&#WIA zR7b^LABvrtpS`=Ij}E7&+2c2aVi(XFPAh8$($T+e48^X?H+^D+(9!&E3dO#iZz`q2 z;uOA1vp)m>s8w9yDQuo*Kf4*DqK$U~=4tluEuq-YZT7BEd752&Ybf@6TAXMLsIQqp za;SM*DE6TbjT0VEv-d!=$(qguA15%5CH(E77?u`>EF&b2VB8&{*bN1yH>_ZIn%#9L z+*M#UAQiRdxAR~Kz6<{HB~Sry%od<|)>1+-QK4@HOt)ZIuxQ8_`xq+R|NOVmY6{Hm zD8?ZV;Ujm4VjmYEKwvo8d$1K8@A!5ocJ2s4Xv9)gh#PU=dqT6Sg$E403T~&_Y2OLW zs`21uSQ~2VIWHb$v?L$kgp{O`ij%JDn*g=VetV9g*l2B`0bW^It`24dlf zU#HpW_lIWT7zUqfeMv;qe;Z^tg~5k9UosxEPP11Y2+g{SVzY2pN8-}u=*(4(%|o`rL3u@ zqoSs@v#FwPpSqbdE9h7pQXUOfEZT2YvT|0{ti+t;KHYPY70U+(D{4AgSkc!fhFE0` zw>M?4NG)5tdi8pCPe~3NSFl?N!^~02ria+IpC=v3k4RU_8V-P#*^_2K%WEQ}<#nG! zEvs1}shKlrCe+-@)qL4eGxuLo;RjxXOqWpNrU8m;*=1(N?R9&TClE@4$##h##XbYkA-GLXM`>rpTqWpNmT3|{2Q~T2OV?> z$i~BNgiVWq8$A|&2(=1d~QFSNqw-7$vx4O4& zEr8Xd$5D5B2tdZ>{;Qos7XAc^%-JKv?%Q8g{Q+L*q^eoy(NJ_R?w@C&Je7R%V#7a= zh8DDtgZ>DlbQ&+SYVck_OOWJCy6w@>S)p@7VBpVM+dtH|qQ7@p z1p>4zCqHM&z`!aN$_hD%r7L>|S*RfQiz9JU@$yvzJ)q0UeFML8XB6Ro=Yy9+J+yLQ z5C_Kd^BY-+6>K;7tQzQFQ9=J>1^M}JeS(s&!JP%?WaZP}BBIA3BtWjt%B`TkH)iG2 z-`slo@$IbK<@EQ#tbF=gw1~*5OxC)AKIF8@E!duwe;*j-ZXvQavhtt9-z;ubZkDv6 z@YiVW?`4HbUe61KM%68*MP56u8C=kSt1&woYU&p=518LdndK1IHZv;GD-8=+UsY=!{96>b*u2+rMmqh{;?}b?5p1DG& z+kJHEz-6BB{GwE{a=$s2x41?cU0s=+YdOe9S5+blylRtL8C`ld-QMOlMq{gI&!Lw1 zh*a~twwmyCst)a>qo#F!L#3sng{rdDvrzcdzz}YsaD!G5DoILxKTr7XoY7WGtLt2p zYHsW7OeIrwi|d*j@YTD)Mq}qHtXWSQi!=YSu&JI#<8Z%3n<{Gb94%UnN#u8puBz6; zbNy6<(-r$XKRl{T;qzJHq4~lMS9;yh(9wZD)HI*21@?GBARB8IHg{RoLuv{fdOxl! zb34E&hhds1(6^qEN^BWp)y0BFGQ72onlaunSUL!tK%{CH(@MuM){V8Bup5gTyjbB> zET%D^9QB}|4rCQBEN{4WYqxsA#%}HcX18+z zvm3a8p=Eo#Fq@gpM9|G)X44R`eObPzZ0o`nngZ915Wcx%cdLGAbeWr~#WZO;gP`aD z1U9Qgf@gDt*(wN8olFUY*&ztgwYa?@MOvW8-YKPz0Z~8cx#~b9Q67tnd^m{IOC? zcx?^Ms3{U)dQgIEn!E61iIx}$W?8K8b;N7oaCOt$cwSDj@cf~I=dx%X7R#I_k449-=X@3|SI;9@lor&S zrjSMF;FUk849-*E`v*>a>e}#0$^B|soFi$*x1<${d&u1z6F)Vrs zo`*u9!Sl6vK2tv5iRWwO^8EZ}I#d zo_~Y=CBd^sF}C1f@jM#OKatN7JijBKr{bC0zB`LntLG?-9;}|rab=f!#=Q}X)bmUh zU80`%X3>82ybp_>sGj#_(XXoK{aExu^}IieUag)Fz(pPE`5+d(S3MuhqK~QPLs;|~ zJTJgDt_;sFEBK)-`lfnrW6^iibBaYjQO_r{=*ZF1#_Q1#C#WC)iywR7#|emJm3@LA z)%Y=U8h(6=ABW(_q3TC7e*8-PSd1S9REEfw>HQ>c=PeagX}(5nAh`>c^{SuFv2{O%*AMAFtrYO7-J6_;G>y@mE!51Figtk0J{df-zHL8Amf>yGp`tfNQn!oz--c%N?Q$HR=rM9adpA50`OYnovHtE`ro^X>EYJTLcQ18J6elW^?JpA`^!Pr9uLl*-_f?PoqM$)SGuIwu!uXeOjjUwvYfVDLu%@} znigS~NY{y$x9x6tQoWpYb(*T~wvPH#O?`a_Vv!RE#Pgs=}?s>>rSXj6<52b@=8U8@aPPJ9f8Q4or* z4oGq2>IoJVC3qOe%3m@?pwb~_LqX(*D8K5L>WU<=^4xKTFPv6Iw0FB{-!W*}h7CE9 zcSQK_>Iyz@pC0LZv`xS@-;b;Q_C%;beHt?Iq{nWp{y;y zHq48hZ&T7e(zw$3tcfAmN>>qwB3IcI7_laA*c6IfGBG4P!Y?e2T+4sT{=`dWv+^tP zeoK$g?N~5UU!!HZPje-()#I!ATAn}!S)%b2=Bc*bUc=cCvRI7})d1=u6J(J{j%si9 zO`SEh%?-?H&oYWct@%%Wit2XcnhfTC7FEZy@&)4qtjB)bZ-&9tBJ9)yjsJ{wT@YUi zBYZZ-Rdf+D$oXU_hZX8m;}D(ptuWBe-Vt*({?2afsHvOHd1tGR8zk_{K?3;>ZwJ;4 zC$KsR3&Dh2IDwTPGQn#Z+b}QwnCKH!rD&AY`yyAAS)B*4oXGd6AL|A|U1vh%X@XHf zUY`W3h`gj=qAmzHJ@Tdjoma92+)wR^2Zs-^Vv~iX)9FBb{ zp!hPPs|{;2XGvos6UM5B!)q4Q5-W3I@PTER=a{MVp-_!wOYiW8Zntylv7*fxOU!SV zdcEdt+R66zT7(ko4#Nu~HE6-lsqPv?MzmX$?CPf0rmhssp?R`ERi1!$v~&}+P>z8` znq3p8R}-%iqM>rub*5sDp_e16?oLd`o&w_S2}V}7yGGUi55m{$~x zDAACnwz?G0G&Mnk>W`41i5k?_C_xboTBty!8q{>Sq>9SsR;D~y)l@H0G%rkudTWkq z*uTwJ8s~wU>JLW@LNu7du=1Qiz~77TrBsiP5btS8y9uhLX!UGbURBR#`4d_B%|49O z$y(Pa5U48Vt&c4><_Tt-Ni{#U*hYa?+0wE`D?{gy0f#l<``(%^M%%0d%S=xyrp~cv zn{`#?LX1<&ebDI)tGM?(wCx?WB=GHxE6Yty#K7WTpMUolraEgCZ_VP&7>%g1(fxzQ zvhQ04dJcWtu2L#~*0JnlygH^8f-?gc`DOIL_5a7RPWE{l%YNlkbGv*j+dJ-U9vO{g zX&*)zjAbvn*ce%cbYsO@1zV4^b8>bKF(4lcxc;ml5Mk{1IQHfS(ZfQNJ3{Z zbbZ8Nci&-0y8A6Yt}h*Sf)B$c*Xi^2=MX!=W|_r?4%(vm1vx8lf*O7<-R37lAB~sF zs!1wC8GB7J-68GJ=i_&cjLm*B^fw>7M#j5-GW0hiyGF+0d-(WDe{-^HWIW_2Lw~cf zYh+YR^|3>L^RjDXtnkR#(a5QKe|3_t0+YC-oR#11VUxkQnLW+6SAA3C-L~x1DzH9) z?Pp#GUg=@reAi;v!cOV+Y5?2Mtk;FpO@Hxkdf=)`SLCRgkLB1)=>@ZjXjSuN8Ze$% zSCtNws$q)&bfhU&*VfU2Wj1p*Y*y^lq&IhJVpB4%h?PI*)!Kh0++CY$XlX~_Rfniz ztbDIMJvQ6lG5sAC@`jtYnUhRUsh>B0R?KjDBxvUG_2)WoY4Yda+2!_{>C&m1IDXz+ z<}qHaccNu(^_JcRp8V9!)%8i6-P}D}*p9udijd#B*@bqdL1R~Zsl`&p_1$Am(s&Cq zL5>OLdz8GrO}&h7>1@@iFhsR9H7`yz)iYKk#tu-1V5W2-R5nwoI9*=PJnb~Usj4#8A&s1}j!PJTF< zdEcEN;d;06;)D+PHS*BalzmL^8lOD66z*(nmxrt!2NR5+-_apxY<;>dhUz0o`clm1 zn5d?2*%+%}JvIv zXXkvQCobAsjol-i;b%`t)faZ!nfYmk{}8S z*i%r2hkuoaqI!goSSR+o&LxA^*~3anS`y^Ano}Aq;YE)GEJ}RxE^2@8w1kTfH2lQ= z_KocLH8_8ScVp@m6o04vkbsFGsF=&?&073b0e8Q00j?mwN~v$cwyfzvoW^x+yRIQ&Gkf{08DSm~8GwW(n{1FSMB26f_X;Sh5DzXFI z=1K7x7EVQEfV*f?yw$>~ND6S5O^Od%I28c_?y5=gOB|eEyiLjm>CO;h4CoMJkd z0L3V=hUw_ z3u{vi?Qy1xy7W2I;&U~<*ee2h z&9wL;1FE@SKP|q_fXiJL3f%1FPW}J(Y4J-ny}f?|cI&kG!xAg+InAE@#I*QJ0w(u2 zpxZVra<9v4G(g-|w#t979A+RbMA~sHskK2bkMsGp@-8?;BEudnr0MJF# z-4%`H94dNxyhTu|WjcTxW<+kaJAXAlr8OgdjG#4E^qUKF_R{R!0ZLF7xd1d^EHk|IP1e?mpU!qn|z$aU1bCvPmN^-tFr3Eo@ndcsj z@wORE=EVyt_3+YOrx(G%ZJih2%f#tC+`v6CFWzqA^l}!sZS&%36Q|d#z&$-La--eb zs;RX;H!psfDB`SFNlJ~oTUAr*+g205Pf(j{R3J9g#$PlM@_s^?SsVYrMyMMF;jr3x z8O}VTn+k3L3Nr`GWN^jmKA8a`TGrpU?ieT0bKIK!!yZPni5b3~oR5H>LLOAy8K4qPJ z-+Fm33iE?BX6e@gN~`?eKIM5_M!25jFT>aFw8xc|Pos6)B7DAwU4Y9^b1huw;?{ax zvw$6?JTg@KvkIc(2Zj8vU=rpMXNdF*N zW+7mBjUP+z@p6oMiws_T#YP~L)tfde-hw@IVfBu}>C+IcHaap!piV5jMSt+VcS%%} z81k|nkB%FbfxK%%56Ane^76|FmM=Rb&I8^vET?MM=#r?`{nb%sUkuB^)+AgkVz3b%J$?r&dQNp4V_&gB&<)!m9X+(*(&fTTMeyJ-0!fel%LV+oB>h+rDR>< z>O4<%cgmK9AJ8ltt zX>HuyrhAwe+$}~<>l$82_X3v_crL(QEaY;RkdDReI2)k$q^gICQGu1~X<9d8R{o;R zp}xCvr;3*}Syt9}SM5~sZddV^n!24Tf2CcXj#yOEHvv22f!Dk|=xc+W;&J(5mK!ke z)9QiFXCUzSfY>MsAdiQ?;6R)`5|4<#uQ7Z8LLl57sG&G`d|Wl(d-6R**5r!#-p+5n zH^`biC4Q&@<4gXm$M$` zL$|ut$F~VOy>`x;yex9I9ehZDaAo{WLC8C_xsayKc|m+sg4-$v0f06ZxFaDvf>99P zQxNiQ>1Ik=>7m@n%eKZ;WNU7GxhUdHWfc5Eot)u@^FUWY{AM?t_-rb0N9;)EIR)__TGVnr zBEbdmKlq?X#uEkc-DYzerA~5I0cxA4t5Camx*$H=DWDtC>-ap=4k=NC_*FrCp(1wX z1R!1?;U=d5)UQUwk9Ww8xc%#e?r1kfpng>tzg&{r<1}y^M!E&?_Z}nTkBAcHxJ=|l zZgL*gEQ-Ib$enSR$Va)!`D=-dqvBa}xHId`ftL!5_7vbXJUYIIDBu}ssn8ftA*%k3 zW8%$DA!}%*LdB8C?O<6IwT_L&@%?s(YQ{*4VAtyiTHPf(EM?GH(8yCA(RAkBtyRrI zZFh9h$0X|GX|?XFqQdk^bDOo2qjW@KDffT=LYkXe@Zpsm%c`1#Ne6k>nEsx6&cb%Q zGU8vp%!Y7U2^q?^w6*#wOK+LluxMAh;=7qEjndpkD7fow{Z)XJoi=vz7aU`ix;tU* zpi#VexQd;t>s1AfO4Q1R{4A?*n?E~0tLDlYRP5Bz+PShKC7ez$<)Wfhg-Rv;O`NOh zQ!&Nq+=WJAq~#f=?S3{BZx7)2ciQ-t58KafAyHimDDPA& ziz*AMI6^kl9|X$sY_Kbx^nlLx&e^n5azVIzHyj*~uGHf&u*?;s*|b~b))xG!obzo79A@g%$^~WQ`kIlTJD(J1ZBj=xMdKbe-zeaU~D6erZpBq}XV`0g@5C*SO zjcMXD-~0n;;I$rQbXgb<10j3@J;~W+@Y4=#)e`P>KV*TY@qgwmDTbfJxG(`KRg%mL5&XGv^D;Z zmQNdW9gU!nk9I2GDlMNHXI zoDZ~W2p(ECa36#3^SZv?g95b+`Kz*v*NA{E!!;fpqh<0L4MdNZ<09NEPt>x}E@_TF z`GBRG8t^Z4@_Te)XPzz2JYK!hnJM{i$_TVzn91GIoY_iwHatKYHm1}kmc-C8K+DGn z)`oI3Ju^F(r1>;=fh+fVo*N@El~$H{&yjtRGJG_Q`oi0zGgLw~(-m{_#W!^wHS3~? zrosH$N5wEHDldju*ECIqm0=NNX`&1-Bi77PNWS(hi4c+xuWIl{UL=L&lWcw?8%`iy z9&{I#es5d*&Ff%&uJqn5_VdQAMiU4nOu@8{*w?<}h zZg7t=(k<9olZIfJkA+~^hCaY^S60A&M(-H>s9)Yrv8JTWeXMn;nNO|(v38-P5Py)# zz`K}e4bxu1X#MHHLS5m4(!1e-#ro9~OZDCZi&i&|8PWT$yP%w|-09xSwQlE2zsfbF3_thZ@huzY)|>a%0{5$6vpgPt1X^55(4}x@r)5r(6>gek|e#9 zPBB83`$D$@E>H#4y`LB{b`V5!7jzkkNluJ#05FCYGED-~Bq(A!Z=4-uvqcKr_E7#z zgCA2N%OS2ru9n+-0c4d?LD_nqGL)i%3{fU7Ld6*Z$CZI2ORIT$XPJNC5a1Wd?!7fW zR4@##n&`mfRnvH4wM7jR>x8nH(-G{ zeLQEPs>Vt29 zDEp;>SW<$HJJgAz4KI@X&@+GJ7_G!Ic&E%S$UMJnMm!%caV8fl`(**kS1e91IywZR ze+4a&Jhn0zv=VpbqH!hgx3kO&@IIvyMur})MnqvKNK`{2CL$Ch%JEPJI24)#F-25_ z)EW|78Hrp>YhGFv7Ih@ZhiZcpB05e(Ml}K=O%1z1l0#uT(xswaDT~WWcWW!+Yf3n# zDW~mCtfUG#p|YX`)8TPb7K4y2BlEF6CyUbeHHB0Ug*R_RG+DtT^0BfG8i7phoJ5w~ zUL+TAxfq3(cC0j6!<@n!v;MVg>%Y5nmOYwJ;Nl#gl^fy&GUZz+cLBGtXSuO+V_rwO zA=#(g1)@po<$m&PRc@FA!SC8#TltK@76rVS$fj7ph~>k};NZDpO!XMtC&&IL=t%AsOG0-g>yLG(6rEr4tfPjX(OtsP@_^xTYk_i4Z_P!i-uZ3$)NqHMyv@y zvY1}9`AOs8J+^EFh)@%in?XuZ15O_|7mcKt*;=%2#xM$=lc}smOF;M1<_|_?r+1_A zuo_qF%Nv{(=RKyd%xuhp`#fPiZX4{!(0gTV^5l|}M|lq|Oxox%bU&vC7nVGdCA+;$ z8JX4tFC<{fl~xDS3h1vXeQQ%DIkkkEk{yd@?C+K@167OrE_o-%c=<$J?S!pa=E?;o*0*T?MfYQgnl1}Sz zEX}*WQJT@yn8Y?>_|2EO(ccJ1Th*B;$*UVlf^7QfvXxPqch}KLGN;yQbUN=YthCDH z44EE=$$l}a(P2ODZb7rEUcn?=ZA4Sl!9Ck5W6+!GT~1)Hma5D3Z=<|$v<2<;5bN7Q zX-1E>Nz+xUj7?!S!cDd~&T!vQ6jBmBei5IK!@=}}THcD0@KO!T)9$=QltlB2wpBor z@SfCt<5OCO(Sztwk6Z|tE8#)+6bHM8X{MtuF5@&RJku0wG zMPA{8jy5>FN!b8j{_(lip(MP|MvoIwmR!-kDHU(gxuU91@dQNrhlvE=cN*u;d^D27 zBgh1IntjMzrOOVxq(sOHCdRRw zuHx0+7=x^2X-QrLyl%Wu6IKq@=P;_USszLp47>MJ z)J=bept6iGl7MY;Wd+bw`bt{0z7?j)+=#n1bo&0C(G-OE{zw{*Z?%yQ%y`l>J|9W2 zsKbX9vD?TUnealO3|bqio~Dea5S`13{6eJRK?w>asSGt$3=rU+0|x`6Mr!f?!7~TG znHWS9(JkjIPaLNQMG?Y)*G}0G_##U?rRK@yG+7>0=i_$(qhK#K1ZoKmcS#B_*dd}V zc{-GYAS%tdURujJgd4g)zGuiUsYEj@ly4jocygZZ#N_tySftS=k=BZlI*EZcA4za1 z!L5P^d}@3_npP#>Itu6Ap3&s6?p5vC?Y<$}3oSBzL{)B#Vb+>@p0WY<1vYv(YrYW9 zo9OqSV(Jjhxu}??%gQJiO#fEF&MWBO^4*uhA@py#BT0uR7|vHEz;iZp{NklQ#&kjw zAJB+m96)CzVJ>>)H<*3>CC5U~mLv+H&qWIzN(HVx)`D~z zz<4VpstGE%;GfLAFyz3!0j_Z!LopkR*bSIao~7X#2Y(Gx>c}YU)PT{{_lt}+3bwm= zoC>{CdrXPZDn|~+IQb?Fbxr7_J*dQZX>z{yrjnLipbk4=V}_R)WjH7LogXt)zqm$n_SJJ}jGZod* z5<7T;Vcj$&GSJPIaSV=#xXdLve1em$nHRsD8b^KO$l?*>Y<0kv4&t*aF+CSj;>gMphAT%)QQrkD^GH~=Q|07293zYv zSXRtG*q0YDeQ6e`36>+1A34eU5|*Iys1p>%ij4X%6 zlIFNQ`~pX1L0!>cEsik~+gW~f3+;?9@2S<~RXMb?RYE*8apnR~(xOwDk3Fgc`(XOb z%C#zqtuyd@l{GApJM;oyitE)GNQ3~fFB>QX!fCDRWI?Y&(WFcNe{&W2tbv5I=<5nm z6yhh9qzcjL82Z`4z6)`x2?G$H!&{W97>{an=8p|5F(zF%MU_fYrTF)sEya5V3Lu2x z!A(_&(q?4~+AFComMBPJizif)D#a&%wiM${7%0XtqZm&MIvz4G&uidG=}%3~RzFyG z(L6l`Kh;Wzo~$R~M_DP+Ni2yiFdzk5#JCwuPv-LnPGlq!y^`nTP3}(ir{>i~<-f#| zHK#3#@f}On9Ix<0sY8x6OPm%h;wk8|*Dcc-%L&rJQ{(oTTH&y@&djo~h^TQn&o5m= zA=MSy2GUBSjhvG^g5n1%R`hZ`k?xuB3l%H6LQjXX!KY4^t25zuGnZS@=NK<_jDlD& zR`es5AiSO+)R5&=48NY4Z$jL=deGWm3tdYc2@3FEZI@HA99h* zjPU$k^cSAOEB6}nQ$noVXd1jH3z2iE@u23SJ=ovEc2IFn)8Qk2L!-rvk6JF&tvq_F z`Wud=urZB_PSw(=-9p_?jb7zQ1ha*@Re62pcqZvG^Kxc1^pYXXGwhr{Tq=<0-AtnC z_ys}-L^pX+=ogeZZ3nd70D6(=B1Pg?xR7N@B>JE$ z9Wj1}W%FUt*Z7JB)@mrBXEg0ZS_LSbovCATuV|i1mdD*dncXWoNKs&YAr7E{Hm6s# z)}V=iBWB4ORH?iDTfqT%@PV6W(8 zFB&$1^}V8(n>1Pa4ZWhv6-gNc;hyT{8lDkpW3QY~vPIL8r%pgiF7**4WM_lpGX;oEpkck=tPkK z%?nai_IAc^&BxBVp?9=1gU0+OAE*$a4IeP^S z(s=o}=#>sE)>s+Vxad7TR8)2TxaejdGB$~u#(4&MTrw`Y%aIGzquWHtv}AnFa`U_B z0+h9Ee9moI7F~eTD1IU56TJ}55k8cj6N)~IRf_94__G=I)nl$;tCWHChDtw^U`K)S zWy}1r^uQR-*cd^b!SVr1-K2?~e1RAYDo9&?%ckO1p*Zf~C_O<6;FxD%F^x}8(uI`# zF}!TU2NmP1k_=w@eD??Mo06drPH<2)JT6F|fxgMqsRE7&E5wJ7Ers`z?oUmTf=)Y! z!iu}W1ZTb9r2;5MJv8KXmN>DYl?4}1`q6ubs|lkeL1zvuO0p!0cjRTkr+X*Y5ggLV@O^Rs!(@M^~I?j50@GYv?QvBOIel zK;c(-2&XRR2c+m<`AAn^fQSJ;m}zETXP8FpYJ_Q6N0G zLgrbi?oTL2@i2&IR|$PiUH;N^-V4{6#bUQ7+@QQn(hr0Z>9BIm^@cLT%IPv#&5t~% z7?lb*19(;rffv19pPDl=IA9=Ix*o|9g^`Q7+mQ5Fl!FSRdwGq>p+br%g$pXf7>vTL zk#&QIUSb_1s!EvM3G3xp!g#z~OBe-uh|9So?o|lyH2@O=mO-@)R})5YJDc2M3Ll8~ zO=kZoEWkuUAkyEB^L29&c$FY+Alqf|lU=stQBTvu*;PWcC*#5Swqh)#q(n=2F1Cn* zq_)v&mc%zUc;xpFl?|r>;L427S7~&<$8*02SQ<L&wVTlVJ^{%0!7HnlDuZ>XOU<#N~SSZC}H*Brn+;0 zs{@k-DMQa2O@T}6r($`5mPxYG7oeSJC#atc<>$EwOJcHlS_10YFo7ebc%Zi;S?7bi zG;YVby7A*`YR_gS;S#}?bxn0(4q;IW&2U&!iUHHs116PZbz3N5_E~HX2^3>OQ%&t4 zGHg#(4MEX}7@t4NYHo6|ok36MyQ{rcVpw#F#kyHUS3@PnM z)=yAW(Xs+s#6yF&qRg~>sp2oKeC>EGP`$AArU@lzmQ3-NmgNw)N*!G)Ws$7UZX%=) z6F;fu{J~SkgLGcMlj>q}FkJN_;)_NRsvb&4jdzF30X)Ic-W^)4BCi8=Fe7 zgHzql?BCC9qD5-Hb8} zYdo*6X;}TFdhF#%4&vx3fG&vetPz$-<}4N>Y4c^U!y2bf)zR8SyJ8+pmZfaVj)CMm2ThL@fAfUY-K>O@1p9X^Z`+tqBcQSpj$^v2ay+hNBy_DH<^P3h3W{D0%J1*P~?yKY86bLF| zxl5xKmWIH%xTgd{ zNW06>1R^xjM=SiMzH0)3OxHnZ=&gM=?6rY_KGK2co@k#y+X4Zdv_dnR`7W$a^|VR~ z($H4xI2Z&U`p~}WC_fNVm%BBMIFbx<@1xThfsp2SAjzk0eUL5;g!G*Ul6*MV2kG8G zNLBZ^ttX%1^+9?o5YjUqNb*r%A0#_DNZadkuUjYiM6eIiQGt*acp%9KhkcO72107R z(xKCzo+xGn!kgm6+s8CO%(mPWFPBo4TLlJKErwfXP;}ly@Al~aiXa=jeWE_ zDkVre58v<5is9^2tI>hbnsqdIvW(8@@QADTsm-iF7@xQ>TAtN!4}?;=O0yf)1fB5U zZIKH20NDQo^2I=4YaL+JbI#XnzXZa_U2Q6~uj#K#t02v7whIN#)`G!G1HpXifGI!- zUxS?;2xG(=(_s6W#jgs4vc`q74}+}<1QUJ0RL1dUxladuHxSk=1B<_a?t_rhI!G(q zp(E_$5cPVy55_rxFxo$;DZ<}^_W`&*5I~a-ARepp z8}T0q1o5U0p}#!uqsUuMAvy}E=y${IVKp;zX5b9P7&s?Ifh7U^jHbMGFt96seFufeITTP59>yw>g4YW z>9IgaE8IvBh_z*%J`04@alK2Y!hIoSv<=ea{;4CufH?|2GNOT=y_bF`1OoX;2caKC zz>DiGtuDp|f+>4Mvl@eer;l4$#9R^xW|bFAL7x`S!Bz%B%6-&Bp~Ai`BE205=~5jD z4_a`z9t6=T;98>v116*fX>)r_F#62lpMuK|1b5bBnics``JaM2GZ5S+21noSEUD&C zuKJ94R|P^S+CUZ35VR*;eUMfLLYn79qEEv5K)e+QVz&VS?ag<3_%)FHGalECh4NdP zw{zMBY0w+o7}RIe$51B(0_pLDOA!PCA5b5dnm{mD88F6kygoQ{0^xjT;E0!eeIQl_ zf*A9pZZY`?un)$ofiRvlFx>A4`+)5Z1a{a{x2n2DR0pWPZ+4rob zeOi#_MxNExabUqSINpoU;{#zew1idQhgBa4>&=$13jMHd2!wUwM%{+|P3o48)t(Fl zbDIy0Z!LWh2qyJ8Z*6=lC?h>c!#mFlh7G8`O*|F|=|g`cU(-zpgmm&I57RN7e64qN zAf)?TNG;Dr>jR;5dfwDWdk)=aVE8x?&I}jMzRuX&b_mkuzBF+h53u{F)He{+s26n8 z885f{;M4@dS?|Eno_zPgxik>YVJ{l`7*ECf0IdoHbd3RoULk#|hr{bgqai+E3;W>r z0)g#yftgR!`)Jk%U!~t~Z}|x?Q4_LImHNBiezVc(fnYX!!mvrab!*bm+gEY9U3Wq;aFQOs( zRM4ANPQp{%b)3}&jiAm?v2x;;l2rk^r0JR zAC}8GBuIlB`YN*=M$BS?eR#lazY(q^5X?$H7~e(K*@1AfU-MDNcmHr*Ae?`@aavx@ zJrW4!Lk1%QceXU0?g)f%^6S)K3PFz&=`-e}bPUqc);N*$z>_{mg@KT|yy4JEi)HBp z^tV7jvz$OYTB{GpoIoHuTp$o}(+A<6KnN#o)$OH%t@?nx90=rY14P7W^?}$O2qNQ6 zT@MPu!j<}!c5n8&Q zSRP3H9;f)0ZYQ1#1o79mH5<_jkd`hdz6yl#q$h^|-9(4%Ano;1Qm&=h%mIk5bKnR0B zFzf?fzb##lE)9gSoMGS%62?ewd8NED5Jc)Ws)h;SySex>5XKaSf#0@kF}!^y&h(rh zz2P+lp~nLE!RQ+ZqyLB0RHz2WpfSaLFisDIaihXOmpmAfe9!Iw9SGnT7l3bN-x3Jm z)Q_l@R8({y`#c#)`Z|a7mPU?`0wLsnY?hyPY`=LSv2&2dI@1fnfBBLZ2;_YRvX9&6 zk%45#w#z{S&Z&JHP(vW$H!I;PUcFBvx-<~N9|}PRxc33LI}pH`JEVOCfUl7@2SV7O z5JbRz9}T_>B){7yQUjFV^30PF4$=!|DG2cZfR75t1d_kqCEvFWP7MSwc&D_Hd|AM6 zp!i21gu9#wE!V@%fk4`Q>Q=+oQcnhgIL8B`$j?+e13|o^AmnS;KFz63Zjk0$_?a}5 z40GrMa8w|Gc@BV<>w07$j6DvFmPYS*AcQkMcbUnzrsoAhc#I+7GE9G~!ly3Q1;Xg| z1=RvE^j9x@Fg^%`F;ijiS229VCv*wYUbidp7<076@9Vk;LKym`G!lEKpv6POA%QSf z7#Q-k4tmKA2qr`B>4SzPq4m`YG}``_&^K|1X1S&;XAE11j2aE3&Z!q?&?4o zNA2=3mG6lDKp>2{CPvGx>YYFkKPU**0e!1uZy=1Z-%3-d_m}-TdG|<=hP%#$XxUOj z13~0`$F$HM+wtib4T0pJ&*ZBYb$p~>5lH%0hjia6UJ*$A3E#^qHs9y*QR0O_D7P{c z+`2m-^zp&@J`hfuA53lJ3qU?7;b@RH+vJ1dTQwztVBYe9@f{D(4g_=JkEYG!6GlEZ zyEYKYB8D)b7f5>FctEf0l% z351Zh+i4~mz2C=BX9mK!!i7O2_xoVX4utWYfuUX(@BvvK2xRQfy0IuoOPXvB1hU=< z!e2k|(d5TKAkjSzP55gHJ|LaD2Wh=C43L&?*op(m-{F$q(oy-iKo}?eq8nYj+fdJky0MwfrJ|N-4g0$R0zv-58 zJkjBUG%yg--5y9SkMolP;oxf^5J8?#hxD-!A3bgeBEMVh^y<3F)l;WWoieGqwx*#0 zAHS%^*GH=3QE_1x+PcwM0SJo+#K&>wA6b$vU#lSZ#=YHDn%uAxsDpoFJWtCqC0J9lShJ!=A3 zOV|p@D~`^8JL~$v+pCthmoS`ZeEqrge2RgcU~gK8Yj1OFpH9Mal6OD1f4r2CefCoH=iH!e`8)Ii18L-VDL5sUTL z`bDcAx@&R2s$Y}rFlU@pS2Go5A^oIy>v_F;_CK#`L#mxYAt63`oNTq)bn4ct8I<~8xAcR3{6*x(Vt)Y)Q5e&Wpi89h0Z7hWM-&e8X-;LHP#+=R#ya2nPYzc$kmp8giAP& z;VJn(>>pWT*-?#8L_gO{ddIPml@{+g3}0}`NRv|H@5e?Svv>_NURR8B$-Dlz$YzsQ zk5Mk!E{;WZT5hvzF~%k9r^iQrc3X-@T$DUdpAcCPav46KMzLY56v?`GK;+Jl%kcTt z{)XRP9C;|@GJJlu)9`l>jBE@UhNs_TYdz(MfswaDc4w_>Xv7^F<60K*&63DxA($Uj zBQj%DOUC7;kv$>a?^(5&F{UNsx22IwY=hB=5iR*18Wg$Fb}0ajSHyUhoXvwH%Wb=x zRz_3=IK>CFl5_ju$U~l-B08hw+&CoioF}JZC?TQV$iM}nQ_u&T3}?Hm?an_%=@ zHm-5+B8k3Yc;wjxM{T-d58(MjYM^mbd zF)MlA9T~YS(dfIB$I)%CIVG|n(a_o*<5h~>a!TaRMEh{fkig7hv`U^86_E`tSXcA? zs4}wI1?#rTl2MTl5{=;u09lMv3HZ~f$d4{SS1(vGCNew8sb>L={;3b&pO1-Lm*fOA zV}wfJ4PzrqlZ@e;2Vs*Od&fprCmG|Cb7Aw!sgWm54i#flikWv>uqtv>vSCRTBT_QG z`q#*cWTVI;`Xa=5lw8aH7FlPC5?m0YQF3klTV$hyOU77~OqW(iwmJYQlZ=rlIiISI z>_~QvGvy^R#-Zf=wL0>>7pII-C^_#xGcqH^L#B)|C^M{Bx+m+)Y>%7@`j6KQu#JI>tvv5KnkC7)i_l%3YVRF(L*N6fq znOD|EK1nf#4ZdRZX1{KHqZ-d3FoMSpBo|~Jkytgg0T3q3=q`VhrT6v#2 z1X8)ij%m>>EALXV#uKUzE3O>s8s}$TWaYuimTm3~PJILTI&i_FmaQ2%mvaPPa

    M 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­=7|Jb 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�F6`J>CE%{{nW#n4OA8k2f-8%U{7#ACDGq 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

    y^ZzNXyg1H>t}F9@oEVAd7kVq3agl=s`cC!C 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⪙CSx3@h{Nj6_-kW`~=H-Vt@^Dp$g4aWxB2sh+D?d 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

    @NRkXJbdtq^it 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�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

    W;>Pzj-C$H7!D#0=Ar(-5q`LMX$8gyfZDX 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

    1)1njq*0Nm-DXF)C;f6syla*ZXjpn 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 None: + tree = ET.parse(EWP) + project_dir = EWP.parent + missing: list[str] = [] + for element in tree.findall(".//file/name"): + value = element.text or "" + if not value.startswith("$PROJ_DIR$"): + continue + relative = value.removeprefix("$PROJ_DIR$\\").replace("\\", "/") + if not (project_dir / relative).resolve().is_file(): + missing.append(value) + self.assertEqual([], missing) + + def test_iar_target_declares_timed_only_and_excludes_other_apps(self) -> None: + text = EWP.read_text(encoding="utf-8") + self.assertIn("PASSENGER_SEAT_TIMED_ONLY=1", text) + self.assertIn("seat_timed_application.c", text) + self.assertIn("Passenger_Seat_Timed_Controller_demo.hex", text) + for forbidden in ( + "seat_move_application", + "seat_dynamic_mode", + "seat_move_store", + "seat_controller_thermal", + "..\\App\\seat_backrest_heater.c", + "bsp_seat_backrest_heater_adc", + ): + self.assertNotIn(forbidden, text) + + def test_can_hardware_filter_accepts_only_command_id(self) -> None: + text = CAN_BSP.read_text(encoding="utf-8") + block = re.search( + r"s_standardIdFilters\[\]\s*=\s*\{(?P.*?)\};", + text, + re.DOTALL, + ) + self.assertIsNotNone(block) + body = block.group("body") + self.assertEqual(2, body.count("SEAT_MOVE_CAN_COMMAND_ID")) + self.assertNotRegex(body, r"0x(?:29E|2AA|3CE|42A|2F0)u") + self.assertNotIn("HIL_SELF_HEAL", body) + + def test_application_exposes_only_timed_motion_dispatch(self) -> None: + text = APP.read_text(encoding="utf-8") + self.assertIn("SeatMotor_MoveTimedDuty", text) + for forbidden_call in ( + "SeatMotor_MoveAbsolute", + "SeatMotor_MoveRelative", + "SeatMotor_CalibrateRange", + "SeatMotor_HomeKnownRange", + "SeatDynamicMode_", + "SeatMoveStore_", + "SeatControllerThermal_", + ): + self.assertNotIn(forbidden_call, text) + + accepted = set( + re.findall( + r"case\s+(SEAT_TIMED_OPCODE_[A-Z_]+)\s*:", + text[text.index("static bool SeatTimed_ParseCommand") : + text.index("static bool SeatTimed_ParametersValid")], + ) + ) + self.assertEqual( + { + "SEAT_TIMED_OPCODE_MOVE_TIMED", + "SEAT_TIMED_OPCODE_STOP_MOTOR", + "SEAT_TIMED_OPCODE_STOP_ALL", + "SEAT_TIMED_OPCODE_QUERY_STATUS", + "SEAT_TIMED_OPCODE_CLEAR_FAULT", + }, + accepted, + ) + + def test_axis_specific_duration_limits_are_present(self) -> None: + text = CONFIG.read_text(encoding="utf-8") + expected = { + "SEAT_TIMED_MIN_DURATION_MS": "300", + "SEAT_TIMED_M0_MAX_DURATION_MS": "30000", + "SEAT_TIMED_M1_MAX_DURATION_MS": "20000", + "SEAT_TIMED_M2_MAX_DURATION_MS": "30000", + "SEAT_TIMED_M3_MAX_DURATION_MS": "25000", + } + for name, value in expected.items(): + self.assertRegex( + text, + rf"#define\s+{name}\s+\({value}u\)", + ) + self.assertNotIn("SEAT_MOVE_CAN_DYNAMIC_STATUS_ID", text) + self.assertNotIn("SEAT_MOVE_CAN_HIL_SELF_HEAL_REQUEST_ID", text) + + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/firmware/t2g/README.md b/firmware/t2g/README.md index 8b41c88..63a8505 100755 --- a/firmware/t2g/README.md +++ b/firmware/t2g/README.md @@ -2,7 +2,14 @@ `Seat_Controller_demo/` is the repository-owned IAR project used by the real seat-bench executor. It contains the 2026-07-30 heater, ventilation, four-axis -motion, SMV8 position memory, Hall feedback and ADC current-diagnostic code. +time/position motion, SMV8 position memory, Hall feedback and ADC +current-diagnostic code. + +`Passenger_Seat_Timed_Controller_demo/` is the separately buildable +passenger-seat variant. Its CAN application exposes four-axis timed movement +only; position, homing, calibration, dynamic-mode and thermal commands are not +linked into the application. See its `Docs/README_Passenger_Seat_Timed_Controller.md` +for the command contract and generated HEX identity (`PST1`). The matching Cypress 7.9.0 build dependencies are vendored beside it: @@ -10,7 +17,8 @@ The matching Cypress 7.9.0 build dependencies are vendored beside it: firmware/t2g/ ├── common/ ├── tviibh8m/ -└── Seat_Controller_demo/ +├── Seat_Controller_demo/ +└── Passenger_Seat_Timed_Controller_demo/ ``` This preserves the IAR project's `../../common` and `../../tviibh8m` paths and diff --git a/firmware/t2g/Seat_Controller_demo/App/main_cm0plus.c b/firmware/t2g/Seat_Controller_demo/App/main_cm0plus.c index fea17aa..eb0f81e 100755 --- a/firmware/t2g/Seat_Controller_demo/App/main_cm0plus.c +++ b/firmware/t2g/Seat_Controller_demo/App/main_cm0plus.c @@ -13,6 +13,7 @@ #include "bsp_seat_backrest_heater.h" #include "bsp_seat_fan.h" #include "seat_controller_thermal.h" +#include "seat_feature_profile.h" volatile uint32_t g_seatMoveResetReason = 0u; volatile uint32_t g_seatMoveInitResult = MOTOR_API_FAILURE; @@ -59,11 +60,13 @@ int main(void) } Motor_SetWatchdogServiceEnabled(true); +#if SEAT_FEATURE_THERMAL if(!SeatControllerThermal_Init()) { SafetyManager_LatchFault(SAFETY_FAULT_DRIVER); SeatMove_HoldSafeOff(); } +#endif if(!SeatMoveApplication_Init()) { SeatMove_HoldSafeOff(); @@ -72,7 +75,9 @@ int main(void) for(;;) { SeatMoveApplication_Service(); +#if SEAT_FEATURE_THERMAL SeatControllerThermal_Service1ms(); +#endif if(SafetyManager_IsInhibited()) { Motor_ForceSafeOff(); diff --git a/firmware/t2g/Seat_Controller_demo/App/seat_controller_thermal.c b/firmware/t2g/Seat_Controller_demo/App/seat_controller_thermal.c index 55f150f..57ee54b 100755 --- a/firmware/t2g/Seat_Controller_demo/App/seat_controller_thermal.c +++ b/firmware/t2g/Seat_Controller_demo/App/seat_controller_thermal.c @@ -7,6 +7,7 @@ #include "seat_backrest_heater.h" #include "seat_backrest_heater_config.h" #include "seat_fan_config.h" +#include "seat_feature_profile.h" #define SEAT_CONTROLLER_THERMAL_CONTROL_ID (0x29Eu) #define SEAT_CONTROLLER_THERMAL_CONFIG_ID (0x2AAu) @@ -247,6 +248,7 @@ static void SeatControllerThermal_HandleControl29e( fanGear = (uint8_t)((frame->data0 >> 16u) & 0x0Fu); heaterGear = (uint8_t)((frame->data0 >> 20u) & 0x0Fu); +#if SEAT_FEATURE_VENTILATION if(fanOn == 2u) { SeatControllerThermal_StopFan(1u); @@ -266,7 +268,14 @@ static void SeatControllerThermal_HandleControl29e( g_seatControllerThermalInvalidCount++; SeatControllerThermal_StopFan(0u); } +#else + (void)fanOn; + (void)fanMode; + (void)fanGear; + SeatControllerThermal_StopFan(1u); +#endif +#if SEAT_FEATURE_HEATING if(heaterOn == 2u) { SeatControllerThermal_StopHeater(1u); @@ -286,6 +295,11 @@ static void SeatControllerThermal_HandleControl29e( g_seatControllerThermalInvalidCount++; SeatControllerThermal_StopHeater(0u); } +#else + (void)heaterOn; + (void)heaterGear; + SeatControllerThermal_StopHeater(1u); +#endif } static void SeatControllerThermal_HandleConfig2aa( @@ -308,16 +322,23 @@ static void SeatControllerThermal_HandleConfig2aa( g_seatControllerThermalInvalidCount++; return; } +#if SEAT_FEATURE_VENTILATION s_fanConfiguredMaxGear = (fanConfig == 1u) ? 1u : ((fanConfig == 2u) ? 2u : 3u); +#endif +#if SEAT_FEATURE_HEATING s_heaterConfiguredMaxLevel = (heaterConfig == 1u) ? 1u : ((heaterConfig == 2u) ? 2u : 3u); +#endif +#if SEAT_FEATURE_VENTILATION if(s_fanRunning && !SeatControllerThermal_RequestFan(s_fanLastVehicleGear)) { g_seatControllerThermalOutputFaultStage = 4u; SeatControllerThermal_LatchOutputFault(); } +#endif +#if SEAT_FEATURE_HEATING if(g_seatBackrestHeaterAppliedLevel != SEAT_BACKREST_HEATER_LEVEL_OFF) { @@ -327,11 +348,13 @@ static void SeatControllerThermal_HandleConfig2aa( SeatControllerThermal_LatchOutputFault(); } } +#endif } static void SeatControllerThermal_HandleMode3ce( const bsp_seat_move_can_frame_t *frame) { +#if SEAT_FEATURE_HEATING uint8_t mode; if(frame->dlc != SEAT_FAN_CAN_DLC) { @@ -347,6 +370,10 @@ static void SeatControllerThermal_HandleMode3ce( g_seatControllerThermalInvalidCount++; SeatControllerThermal_StopHeater(0u); } +#else + (void)frame; + SeatControllerThermal_StopHeater(1u); +#endif } static void SeatControllerThermal_HandleSwitch42a( @@ -363,6 +390,7 @@ static void SeatControllerThermal_HandleSwitch42a( } fanSwitch = (uint8_t)(frame->data0 & 0x03u); heaterSwitch = (uint8_t)((frame->data0 >> 2u) & 0x03u); +#if SEAT_FEATURE_VENTILATION if(fanSwitch == 1u) { if(!SeatControllerThermal_RequestFan(s_fanLastVehicleGear)) @@ -375,6 +403,11 @@ static void SeatControllerThermal_HandleSwitch42a( { SeatControllerThermal_StopFan(1u); } +#else + (void)fanSwitch; + SeatControllerThermal_StopFan(1u); +#endif +#if SEAT_FEATURE_HEATING if(heaterSwitch == 1u) { if(!SeatControllerThermal_RequestHeater(s_heaterLastVehicleGear)) @@ -387,10 +420,15 @@ static void SeatControllerThermal_HandleSwitch42a( { SeatControllerThermal_StopHeater(1u); } +#else + (void)heaterSwitch; + SeatControllerThermal_StopHeater(1u); +#endif } static bool SeatControllerThermal_RequestFan(uint8_t vehicleGear) { +#if SEAT_FEATURE_VENTILATION uint8_t physicalGear = (vehicleGear >= 3u) ? 3u : vehicleGear; if((vehicleGear == 0u) || (vehicleGear > 5u)) { @@ -418,10 +456,15 @@ static bool SeatControllerThermal_RequestFan(uint8_t vehicleGear) return BspSeatFan_SetDutyPercent(s_fanTargetDutyPercent); } return true; +#else + (void)vehicleGear; + return false; +#endif } static bool SeatControllerThermal_RequestHeater(uint8_t vehicleGear) { +#if SEAT_FEATURE_HEATING uint8_t physicalLevel = (vehicleGear >= 3u) ? 3u : vehicleGear; if((vehicleGear == 0u) || (vehicleGear > 5u) || !s_heaterModeValid) { @@ -440,6 +483,10 @@ static bool SeatControllerThermal_RequestHeater(uint8_t vehicleGear) g_seatControllerHeaterFeedbackRaw = physicalLevel + 1u; s_feedbackPending = true; return true; +#else + (void)vehicleGear; + return false; +#endif } static void SeatControllerThermal_StopFan(uint8_t feedbackRaw) diff --git a/firmware/t2g/Seat_Controller_demo/App/seat_move_application.c b/firmware/t2g/Seat_Controller_demo/App/seat_move_application.c index 29a010d..628caff 100755 --- a/firmware/t2g/Seat_Controller_demo/App/seat_move_application.c +++ b/firmware/t2g/Seat_Controller_demo/App/seat_move_application.c @@ -8,6 +8,7 @@ #include "safety_manager.h" #include "seat_controller_thermal.h" #include "seat_dynamic_mode.h" +#include "seat_feature_profile.h" #include "seat_motor_manager.h" #include "seat_move_config.h" #include "seat_move_store.h" @@ -336,7 +337,9 @@ void SeatMoveApplication_Service(void) } else { +#if SEAT_FEATURE_THERMAL SeatControllerThermal_HandleFrame(&frame); +#endif } } SeatMove_ServiceDispatcher(); @@ -363,7 +366,9 @@ void Motor_CalibrationServiceHook(void) } else { +#if SEAT_FEATURE_THERMAL SeatControllerThermal_HandleFrame(&frame); +#endif } } if(g_bspSeatMoveCanBusOff != 0u) @@ -533,15 +538,28 @@ static bool SeatMove_ParseCommand(const bsp_seat_move_can_frame_t *frame, { case SEAT_MOVE_OPCODE_MOVE_ABSOLUTE: case SEAT_MOVE_OPCODE_MOVE_RELATIVE: +#if SEAT_FEATURE_POSITION_CONTROL + break; +#else + *reject = SEAT_MOVE_REJECT_BAD_OPCODE; + return false; +#endif case SEAT_MOVE_OPCODE_MOVE_TIMED: case SEAT_MOVE_OPCODE_STOP_MOTOR: case SEAT_MOVE_OPCODE_STOP_ALL: + break; case SEAT_MOVE_OPCODE_CALIBRATE_RANGE: case SEAT_MOVE_OPCODE_HOME_KNOWN_RANGE: - case SEAT_MOVE_OPCODE_QUERY_STATUS: - case SEAT_MOVE_OPCODE_CLEAR_FAULT: case SEAT_MOVE_OPCODE_START_DYNAMIC_MODE: case SEAT_MOVE_OPCODE_STOP_DYNAMIC_MODE: +#if SEAT_FEATURE_POSITION_CONTROL + break; +#else + *reject = SEAT_MOVE_REJECT_BAD_OPCODE; + return false; +#endif + case SEAT_MOVE_OPCODE_QUERY_STATUS: + case SEAT_MOVE_OPCODE_CLEAR_FAULT: break; default: *reject = SEAT_MOVE_REJECT_BAD_OPCODE; diff --git a/firmware/t2g/Seat_Controller_demo/Config/seat_feature_profile.h b/firmware/t2g/Seat_Controller_demo/Config/seat_feature_profile.h new file mode 100644 index 0000000..5cd0fa1 --- /dev/null +++ b/firmware/t2g/Seat_Controller_demo/Config/seat_feature_profile.h @@ -0,0 +1,27 @@ +#ifndef SEAT_FEATURE_PROFILE_H +#define SEAT_FEATURE_PROFILE_H + +/* + * Repository default is the complete controller. The workbench build script + * replaces this header only inside its isolated staging tree so every OTA + * task receives the exact capability profile selected by the user. + */ +#define SEAT_FEATURE_POSITION_CONTROL (1) +#define SEAT_FEATURE_VENTILATION (1) +#define SEAT_FEATURE_HEATING (1) + +#if ((SEAT_FEATURE_POSITION_CONTROL != 0) && \ + (SEAT_FEATURE_POSITION_CONTROL != 1)) +#error "SEAT_FEATURE_POSITION_CONTROL must be 0 or 1" +#endif +#if ((SEAT_FEATURE_VENTILATION != 0) && (SEAT_FEATURE_VENTILATION != 1)) +#error "SEAT_FEATURE_VENTILATION must be 0 or 1" +#endif +#if ((SEAT_FEATURE_HEATING != 0) && (SEAT_FEATURE_HEATING != 1)) +#error "SEAT_FEATURE_HEATING must be 0 or 1" +#endif + +#define SEAT_FEATURE_THERMAL \ + ((SEAT_FEATURE_VENTILATION != 0) || (SEAT_FEATURE_HEATING != 0)) + +#endif /* SEAT_FEATURE_PROFILE_H */ diff --git a/firmware/t2g/Seat_Controller_demo/IAR/Seat_Controller_demo.ewp b/firmware/t2g/Seat_Controller_demo/IAR/Seat_Controller_demo.ewp index d4ecfd8..dbb3ebb 100755 --- a/firmware/t2g/Seat_Controller_demo/IAR/Seat_Controller_demo.ewp +++ b/firmware/t2g/Seat_Controller_demo/IAR/Seat_Controller_demo.ewp @@ -2359,6 +2359,9 @@ $PROJ_DIR$\..\Config\seat_move_config.h + + $PROJ_DIR$\..\Config\seat_feature_profile.h + $PROJ_DIR$\..\Config\seat_backrest_heater_config.h diff --git a/firmware/t2g/Seat_Controller_demo/IAR/rev_d/Exe/Seat_Controller_demo.hex b/firmware/t2g/Seat_Controller_demo/IAR/rev_d/Exe/Seat_Controller_demo.hex index bdad282..215b93c 100755 --- a/firmware/t2g/Seat_Controller_demo/IAR/rev_d/Exe/Seat_Controller_demo.hex +++ b/firmware/t2g/Seat_Controller_demo/IAR/rev_d/Exe/Seat_Controller_demo.hex @@ -1,12 +1,12 @@ :020000041000EA -:100000000000022801EC00103DF4001055F1001032 +:1000000000000228F5EB0010E1F30010F9F00010F9 :1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000015F20010B9 -:10003000000000000000000041F4001045F4001032 +:10002000000000000000000000000000B9F1001016 +:100030000000000000000000E5F30010E9F30010EC :10004000CDE50010F1E5001015E6001039E60010CE :100050005DE6001081E60010A5E60010C9E600107C -:1000600049F400104DF4001051F4001055F4001044 -:1000700059F400105DF4001061F4001065F40010F4 +:10006000EDF30010F1F30010F5F30010F9F30010B8 +:10007000FDF3001001F4001005F4001009F4001065 :1000800000B5010009B2002905D40121C006C00E47 :100090008140C648016000BD00B5010009B20029D9 :1000A00005D40121C006C00E8140C148016000BDD9 @@ -78,7 +78,7 @@ :1004C000060091204000FFF779FFF106C90E009168 :1004D00071090B051B0D5B1E2200D2B20321C0B2B5 :1004E000FFF7F8FED3BD80B51300A74A13600023C1 -:1004F000137203F048FE01BD24F3001000B5C0B232 +:1004F000137203F048FE01BDC8F2001000B5C0B28F :10050000042801D2012000E00020C0B200BD00B5E7 :10051000401A00B2012801DB012000E00020C0B237 :1005200000BD00B5BE490978002901D000201FE0B8 @@ -313,8 +313,8 @@ :101370002000FFF723F801220321C0B2FFF762F833 :10138000884C200003F0A2FE00228749200003F0D1 :1013900063FD2000FEF720FF13BD0000FC1B0028AA -:1013A00034E700108CEB0010C21C00283CEE00104B -:1013B0002CF30010CD100010F2B5060000273C0001 +:1013A00034E7001080EB0010C21C0028B8EC0010DD +:1013B000D0F20010CD100010F2B5060000273C005E :1013C0000098002801D1002077E0380000990880BB :1013D00003F0AEFBCD490978002903D003F0ACFB44 :1013E00000206AE00121C94A117003F0A5FB6D4D90 @@ -343,9 +343,9 @@ :10155000FFF7D5FF002806D068460078E4B2A04225 :1015600001D1012000E00020C0B232BD80B5B44AF4 :1015700000211160017C1172C168806802F003FED5 -:1015800001BD00006012002808F00010000658405D +:1015800001BD000060120028ACEF001000065840BA :1015900080065840000758408009584000B4C404F1 -:1015A0000024F400000064408CEE0010F8B5012621 +:1015A0000024F4000000644030EE0010F8B501267D :1015B0003000002468460470564804700121A14898 :1015C000FEF7B8FDC24F01213800FEF7B3FD9E4D76 :1015D000280003F003FE01219C48FEF7ABFD280024 @@ -1109,12 +1109,12 @@ :104530009BB21B0A9BB2174C14401B02FF221202B3 :104540001A4022430B78052B05D10979C9B2FF2304 :104550009A43114304E04978FF239A43C9B21143B7 -:10456000016300221000F2BD0CF40010FFFFFBFFFE +:10456000016300221000F2BDB0F30010FFFFFBFF5B :10457000FFFFFCFFFFFFFFF8FFFFFFBFFFFBFFFF99 -:10458000FFFDFFFFFFFEFFFFFFCFFFFF10F4001056 -:10459000FFFF00FFFF00FFFF14F4001018F40010ED -:1045A000FFF3FFFFFFFCFFFF1CF4001020F40010DE -:1045B00024F400100168802212060A43026070474A +:10458000FFFDFFFFFFFEFFFFFFCFFFFFB4F30010B3 +:10459000FFFF00FFFF00FFFFB8F30010BCF30010A7 +:1045A000FFF3FFFFFFFCFFFFC0F30010C4F3001098 +:1045B000C8F300100168802212060A4302607047A7 :1045C000016849004908016070474068704701610F :1045D00070470069704781607047006A704700004B :1045E00030B4434351435D18010C0C00130C5C4381 @@ -1169,7 +1169,7 @@ :1048F000142060432818007C787103A914206043B9 :104900002818C06802F0EAFC0028E7D0300002F066 :10491000E1FC002003E0012071490870012019B07A -:10492000F0BD000024F3001000000440FF00FFFF72 +:10492000F0BD0000C8F2001000000440FF00FFFFCF :10493000FF0000FFF8B584B00E00C0B20290002561 :1049400028006946088004212A0003AC200002F0F8 :1049500033FC2C0062480078002806D0674F387876 @@ -1191,16 +1191,16 @@ :104A500001D0002018E0631E042201212800FFF786 :104A6000EFFD002801D000200EE0042201212800E3 :104A7000FFF771FE002801D0002005E0009821001A -:104A8000FFF7C0FB38600120F2BD0000FCF200100F +:104A8000FFF7C0FB38600120F2BD0000A0F200106B :104A90007CB505001D4C062100226E46300002F058 :104AA0008BFB6946280002F011FE6846007800285A :104AB00003D1641E002CF4D101E0012000E00020AD -:104AC00076BD000014F10010E0B511490CC9083999 +:104AC00076BD0000B8F00010E0B511490CC90839F6 :104AD00069460CC10839694602F0A2FD07BD000015 -:104AE000B71C0028901B0028A81B00282CEA0010E7 +:104AE000B71C0028901B0028A81B002820EA0010F3 :104AF000FFC99A3B00CA9A3B00109040B81C00289E :104B00005F8DCB00608DCB0001000100A08601000D -:104B100004F300100000000000000000000000008E +:104B1000A8F20010000000000000000000000000EB :104B2000801C800803D0401C801EFCD100BF704751 :104B3000EFF3108072B6704780F3108870474030F2 :104B4000016810220A430260704740300168082261 @@ -1234,10 +1234,10 @@ :104D0000A54394000C2222402A43C264174A146827 :104D10004C228A5C1A400725AC4322434D240C5D8B :104D200023407024A2431C01702323401343436596 -:104D3000497D816700221000F2BD0000F8F30010E9 +:104D3000497D816700221000F2BD00009CF3001045 :104D4000FFFFFBFFFFFFFCFFFFFFFFF8FFFFFFBFC1 -:104D5000FCF30010FFFF00FFFF00FFFF00F4001056 -:104D600004F40010FFF3FFFFFFFCFFFF08F4001046 +:104D5000A0F30010FFFF00FFFF00FFFFA4F300100F +:104D6000A8F30010FFF3FFFFFFFCFFFFACF3001000 :104D70000168802212060A43026070477830016899 :104D800001220A4302607047C16F0800C007C00FCC :104D90007047010070310A68012313430B60006FF4 @@ -1246,7 +1246,7 @@ :104DC0000B79002B01D00122FFE763005B08D207BB :104DD0001A430B4B0024095F89005A5000E0064833 :104DE00030BD00B5074A1368002B03D0126800B22B -:104DF0008000115000BD000001005600F4F30010C7 +:104DF0008000115000BD00000100560098F3001023 :104E0000008020402412002870B4103A03D378C9DF :104E1000103A78C0FBD2530701D318C918C001D586 :104E200008C908C0D20704D30B880380891C801CE2 @@ -1296,8 +1296,8 @@ :1050E0000021C1239B00C15080239B00C25081221C :1050F00092008150124A8150154A8150114A8150C4 :10510000114A8150134A8150134A81507047000060 -:105110000140AA00DCF30010E0F30010E4F30010FB -:10512000E8F30010FF3FFFFFFFFEFFFFFFFFFFFC64 +:105110000140AA0080F3001084F3001088F300100F +:105120008CF30010FF3FFFFFFFFEFFFFFFFFFFFCC0 :10513000FFFDFFFFFFFBFFFFFFF7FFFF0F00000377 :10514000C80E0000C80F0000880F0000EFCDAB00B4 :10515000880E0000080F0000480F0000F8B504009A @@ -1313,7 +1313,7 @@ :1051F00002F0DAFE0020E075E52040000A49086070 :10520000002002F031FF2C0030681049FEF7FAFF51 :10521000002122000023FFF7E3F9FFF79FFF70BD95 -:10522000181B00288CED0010F01B002810E000E097 +:10522000181B0028A0ED0010F01B002810E000E083 :10523000BE1C0028FFFFFF00010000FFFFFFFFFF73 :1052400014E000E0941C002818E000E040420F0049 :1052500043490A680860704742490A680860704715 @@ -1402,8 +1402,8 @@ :1057800000B5114B1870114B1970002A05D0117813 :105790000F4B197091880F4A1180C0B2002803D0B6 :1057A00001209949087002E0002097490870012003 -:1057B0009649087000BD0000AC1A002834F40010AF -:1057C000D0F2001038F40010D71C0028D81C002894 +:1057B0009649087000BD0000AC1A0028D8F300100C +:1057C00074F20010DCF30010D71C0028D81C00284D :1057D000D91C0028B01C0028F8B50500002D05D004 :1057E0000C00002C02D01600002E01D1002039E060 :1057F0000A2100222700380001F0DEFC68682070D2 @@ -1866,7 +1866,7 @@ :107480009205C02000041040084300998860E08AFB :10749000390C090480B20843218B82B208041043DE :1074A0000099C86021001A31009800F055F801E0F9 -:1074B00020480190019805B0F0BD00004CF3001089 +:1074B00020480190019805B0F0BD0000F0F20010E6 :1074C000FFFEFFFFFFFDFFFFFFFBFFFFFFFFFFDFF3 :1074D0003830016801220A43026070473830016881 :1074E00001229143016070473C30016801220A4348 @@ -1874,8 +1874,8 @@ :1075000014D05B6A1C000C80190F0C00E407E40F18 :107510001470990F0C00E407E40F9470590F0C00DD :10752000E407E40F5470D90FD17000E0014810BD9A -:10753000FFFFFFBF0100DA0050F3001054F300100A -:1075400058F300105CF3001060F30010FFFCFFFF25 +:10753000FFFFFFBF0100DA00F4F20010F8F20010C4 +:10754000FCF2001000F3001004F30010FFFCFFFF3A :10755000FFF7FFFFFFF8FFFFF0B50A000023190057 :107560006F4C2468002A49D05579002D01D001269E :1075700000E01E006B4D2540B4028026F60034402A @@ -1905,8 +1905,8 @@ :1076F000E407E40FCC7053081C00E407E40F4C705F :1077000013001C00E407E40F0C7092081300DB0761 :10771000DB0F8B7000E0014810BD00000100DA00B3 -:1077200064F30010FFFBFFFFFFFDFFFFFFFEFFFF05 -:1077300068F3001000B5012027490A68520802408A +:1077200008F30010FFFBFFFFFFFDFFFFFFFEFFFF61 +:107730000CF3001000B5012027490A6852080240E6 :10774000002A01D0022001E00968084000BD274856 :1077500001680800C007C00F704700B5C21E022AAA :1077600001D3012002E0C01E0860002000BD1CB54E @@ -1929,7 +1929,7 @@ :107870008007800F32BD0000401626400F48006888 :10788000000AC0B270470E480068000AC0B27047D4 :10789000000000000019264010002740181B002897 -:1078A000D4EC00105B080000F01B002840122640BA +:1078A00008ED00105B080000F01B00284012264085 :1078B00004480068000AC0B2704700001010204061 :1078C0000C1020400810204038B50400072C0ED3BF :1078D000124D18221249280000F066FB0020E875BE @@ -1937,7 +1937,7 @@ :1078F000A10040584007400F010009B2042907D1F8 :107900000448A1004058C106C90E80204000084329 :1079100000B232BD0001264000122640181B00288C -:1079200030ED0010F01B00281E4909688A03920BF5 +:1079200054ED0010F01B00281E4909688A03920BD1 :107930000260090E0A00D207D20FC2711749096806 :107940000A00D204D20C82800A00120CD2B2028148 :10795000090CC9B24181264909680F220B00134066 @@ -2030,7 +2030,7 @@ :107EC000002805D002280BD006D303280CD00FE0E1 :107ED00000982860002032BD009840082860F9E72B :107EE000009880082860F5E70098C0082860F1E74E -:107EF000002028600320EEE7181B002830ED00105A +:107EF000002028600320EEE7181B002854ED001036 :107F000063090000F01B0028001626407F090000CE :107F1000001926401CB5040069460020FFF7AFFF9A :107F20000100C9B2002903D000212160C0B209E0DC @@ -2352,7 +2352,7 @@ :1092E0000C482A00D2B2805CFFF724FE002808D088 :1092F00068463221405C002803D020000124AC40A5 :1093000004436D1C2800C0B20428E8D32000C0B27A -:109310000FB030BD28F40010C027090000B5017857 +:109310000FB030BDCCF30010C027090000B50178B4 :109320000A290ED0417804290BD04178062908D0AB :109330004178072905D04178082902D040780928CA :1093400001D1012000E00020C0B200BDF1B590B015 @@ -2378,7 +2378,7 @@ :10948000691848832B895A2270682100C9B24900A3 :10949000415A8B482700FFB2C05DFFF719FC002836 :1094A000E1D1002000E00120F2BD0000FFFF00003C -:1094B0009CF00010781A0028F8B590B00700002F33 +:1094B00040F00010781A0028F8B590B00700002F8F :1094C00004D008003B7BC0B2984201D30020BEE02C :1094D000B8680B00DBB218246343C0180190904EAB :1094E00002207070F17001980078B07032610198BC @@ -2411,13 +2411,13 @@ :10969000641C2000C0B2042810D22B89B27D2000A7 :1096A000C0B240002818418D1E482700FFB2C05D9F :1096B000FFF70EFB0028EBD1002000E00120F2BDF7 -:1096C00028F4001038B5164D2C89641C200080B297 +:1096C000CCF3001038B5164D2C89641C200080B2F4 :1096D000F8F7A0FFF8F750FE200080B2FEF756FF23 :1096E0002C8103206870F9F724FB286131BD38B55F :1096F0000A000B4BD978491C0C00057BE4B2AC4244 :1097000003D30021DC88641CDC80C9B2FFF7D4FEDF :10971000002801D1FFF7D6FF31BD000030750000F1 -:10972000781A002828F40010F8B5C0B0002001F025 +:10972000781A0028CCF30010F8B5C0B0002001F082 :1097300046FD20A9002000F098FA070069460120A4 :1097400000F093FA04003800C0B2022801D10125CC :1097500000E000252000C0B2022801D1012600E06F @@ -2591,7 +2591,7 @@ :10A1D0001500EDB22D015D196D6865601500EDB2D9 :10A1E0002D015D19AD68A5601500EDB22D015B195B :10A1F0001B7B2373521C1300DBB2102B00D30022F5 -:10A200000A70FAF799FC012032BD000024F3001017 +:10A200000A70FAF799FC012032BD0000C8F2001074 :10A2100000000440FF00FFFFFF0000FFF1B594B015 :10A220000D0016005021002422006F463800FCF774 :10A23000C3FF149880210901884203D24E48006868 @@ -2639,7 +2639,7 @@ :10A4D00059188C60027070BD2817002800B5C0B2F2 :10A4E000002802D101200F49086000BDE01B0028B0 :10A4F000DC1B0028D01B0028D41B0028005A620255 -:10A500006CEF0010A0EF0010D4EF0010800131407C +:10A5000010EF001044EF001078EF00108001314090 :10A51000C81B0028D81B0028B91C0028BA1C00281A :10A52000CC1B0028E41B002800B5BFF34F8F3D482B :10A53000AE490860BFF34F8F00BFFDE7AC490A6822 @@ -2875,9 +2875,9 @@ :10B39000D2B26946002002F027F900280CD0094DEE :10B3A000182209492800FCF7FFFDEC75F520074934 :10B3B00008600020FCF758FE05B0F0BD00E100E099 -:10B3C0001CED00E0181B0028E8ED0010F01B002821 +:10B3C0001CED00E0181B0028ECED0010F01B00281D :10B3D0008BB100100800244000F4244000F5244004 -:10B3E000BB1C0028BC1C002814F3001000B500286A +:10B3E000BB1C0028BC1C0028B8F2001000B50028C7 :10B3F00001D0002901D1A04808E0A04A904206D11E :10B4000000200880802080014860002000BD9C4A08 :10B41000904205D18020800102000A804860F4E754 @@ -2930,7 +2930,7 @@ :10B70000AD5DA4B2ADB2AC42EBD370BD000452400B :10B7100000065240000852400000544000025440CD :10B7200000045440000654400008544058080028C3 -:10B730000CF3001001085240301B0028F1B5A8B0EE +:10B73000B0F2001001085240301B0028F1B5A8B04B :10B740000020009000202898FFF7BAFE0700002F85 :10B7500029D0289E306D97490140002902D02898B1 :10B76000FFF73EFF0125306DC00C284000281CD19A @@ -2970,7 +2970,7 @@ :10B98000009A120A14400C43046078680028D3D04F :10B9900013AA012101207B689847CDE70648289922 :10B9A000BC22895809094907490F415C891C0020BC -:10B9B000B4E70000EEE0F73F0CF30010F1B594B0EF +:10B9B000B4E70000EEE0F73FB0F20010F1B594B04C :10B9C000D34800681290D34800681190D2480768A5 :10B9D000D2480668D24800681090D24800680F909C :10B9E000D14800680490D14800680E90D0480068A3 @@ -3024,15 +3024,15 @@ :10BCE000EB589B0814339B049B0C11409A001040A6 :10BCF0000843C0216850802252021498000C0004AE :10BD00006946898A4018801806998B08002125E029 -:10BD10006CF3001070F3001074F3001078F300104F -:10BD20007CF3001080F3001084F3001088F30010FF -:10BD30008CF3001090F3001094F3001098F30010AF -:10BD40009CF30010A0F30010A4F30010A8F300105F -:10BD5000ACF3001000260660001D491C9942F9D37F +:10BD100010F3001014F3001018F300101CF30010BF +:10BD200020F3001024F3001028F300102CF300106F +:10BD300030F3001034F3001038F300103CF300101F +:10BD400040F3001044F3001048F300104CF30010CF +:10BD500050F3001000260660001D491C9942F9D3DB :10BD600001990120084302210143CF480840217D69 :10BD7000012901D1012100E00021CC4B0340480200 :10BD80008021890008401843217D01290CD101211F -:10BD90000BE000BFB0F30010B4F30010010062002C +:10BD90000BE000BF54F3001058F3001001006200E4 :10BDA000FFFF00FF0300FFFF0021C14B034008021B :10BDB000802149000840184380218843402188435E :10BDC0002021884310218843042188430190019851 @@ -3046,7 +3046,7 @@ :10BE4000E67F0E40F027B8433701F0263E40064318 :10BE50002020205C01400F20864331432220205CBB :10BE6000012811D1012610E0FFFF80FFFCFF000038 -:10BE7000FFF8FFFFFFFFFF800CF30010FFFFFFC084 +:10BE7000FFF8FFFFFFFFFF80B0F20010FFFFFFC0E1 :10BE8000FFFFC0FFFFFFFFBF00268F480840F105FE :10BE90008026360431400143E9602320215C1940AB :10BEA0000B9E8A4830400E02FE21C90131400143F9 @@ -3126,7 +3126,7 @@ :10C34000684600788540D0203D500020F2BD0000B6 :10C35000301B002801006200FFFFFF1F030A0006D8 :10C36000330A0000FFFFFFDFFFFFFFBFFFFF7FFF7C -:10C37000FFFFF0FFFFFFDFFFFFFFEFFF0CF30010F9 +:10C37000FFFFF0FFFFFFDFFFFFFFEFFFB0F2001056 :10C3800010B50200002A03D00800C0B2202801DB4B :10C39000002021E000200123CC241459CC401C4073 :10C3A000002C09D0D4201058C8401840002801D1D2 @@ -3229,7 +3229,7 @@ :10C9B0002000F7F705FE4D492000F7F77BFC002823 :10C9C00001D000200FE02000F7F707FE4849884219 :10C9D00007D12000F7F7FDFD4649884201D101202B -:10C9E00000E00020C0B210BD24F3001070B5424C2E +:10C9E00000E00020C0B210BDC8F2001070B5424C8B :10C9F0000021216000F046F8002803D101202060CA :10CA000000203AE0374E002201213000FFF76FFE90 :10CA1000354D37492800F7F7DEFD2800F7F7CAFD46 @@ -3245,7 +3245,7 @@ :10CAB00032BD10B50C48F7F783FD0A4C0022012166 :10CAC000200000F07BF800220221200000F076F820 :10CAD00010BD0000FF0000FF00FFFF00FFFCFFFF94 -:10CAE00038EF001080053140001E584018EB001050 +:10CAE000DCEE001080053140001E58400CEB0010B9 :10CAF0001F4E0000204E0000C01B0028F8B5002586 :10CB000000956846FBF706FA002801D0002045E0B2 :10CB1000274C0098A04205D300982100F7F772FB3C @@ -3316,7 +3316,7 @@ :10CF20001AE0534C2000F7F74BFB52492000F7F76B :10CF3000C1F9002801D000200EE02000F7F74DFBDA :10CF40004D49884206D12000F7F743FB002801D164 -:10CF5000012000E00020C0B210BD000024F300104A +:10CF5000012000E00020C0B210BD0000C8F20010A7 :10CF600070B5464C0021216000F046F8002803D13E :10CF70000120206000203AE03B4E002207213000D3 :10CF8000FFF777FE3A4D3C492800F7F724FB2800CD @@ -3333,8 +3333,8 @@ :10D03000FF0000FF80B50E48F7F7C2FA00F07AF85B :10D0400000200A49086001BD80B50948F7F7BDFA1C :10D05000C10B0800C007C00F02BD000000FFFF00A9 -:10D06000FFFCFFFF04EF001000083140B81B002850 -:10D0700080205840A4EA00101F4E0000BC1B00286E +:10D06000FFFCFFFFA8EE001000083140B81B0028AD +:10D070008020584098EA00101F4E0000BC1B00287A :10D08000F8B5002500956846FAF744FF002801D05E :10D09000002045E0354C0098A04205D300982100BF :10D0A000F7F7B0F8002901D0002039E000982100FE @@ -3388,11 +3388,11 @@ :10D3A000300029001022F7F749FD00F017F8012896 :10D3B00003D1032008E0022006E000F00FF8002867 :10D3C00001D1002000E00420FEBD0000181B002851 -:10D3D00024E90010F01B00280010224010B5274C53 +:10D3D000A4E90010F01B00280010224010B5274CD3 :10D3E00010212000FAF762FE2068000F0007A0213C :10D3F0000906884201D1002009E02068000F0007DB :10D40000F0210906884201D1012000E0022010BD70 -:10D41000ECF30010F0F30010000020400000224068 +:10D4100090F3001094F30010000020400000224020 :10D42000FFFFFF0F38B50400FFF7D8FF0500280005 :10D43000C0B2022801D142480DE0002C04D02000E7 :10D4400027491022F7F7FAFCEDB2002D01D1002098 @@ -3411,7 +3411,7 @@ :10D5100001D1012600E002262800F040C00705D511 :10D5200009480168002901D0006880472A0CA9B287 :10D530002000FFF746FE70BDFFFFFF00801B0028A4 -:10D54000FFFFFF0F1CF30010E81B0028E5D40010BC +:10D54000FFFFFF0FC0F20010E81B0028E5D4001019 :10D550000000204050480068410B0800C007C00F81 :10D5600070474D480068010B0800C007C00F7047A6 :10D5700000B54A48012102680A43026002680A4075 @@ -3445,7 +3445,7 @@ :10D73000294820188021490288420FD201200EE09A :10D740008020000255496118814201D2012006E083 :10D7500053496118814201D2012000E0002010BD30 -:10D76000FFFF00FF7CF2001010B50400FFF7F9FE88 +:10D76000FFFF00FF20F2001010B50400FFF7F9FEE4 :10D77000002810D1F02000062018FE21C90388429D :10D7800001D2002026E0654820188021C902884285 :10D790001FD200201EE0FE208003F0210906611840 @@ -3504,7 +3504,7 @@ :10DAE00015001E003800FFF7EFFF00280DD12900B8 :10DAF0003800FFF7E5FF31003800FFF7E3FF2100B2 :10DB00003800FFF7D5FF002000E00248F2BD00001A -:10DB1000D8F3001001008A00F8B584B0F7F715FCBF +:10DB10007CF3001001008A00F8B584B0F7F715FC1B :10DB2000BA49012708680322904338430860B8487F :10DB30000A6802400A60B7490A6803239A433A43D5 :10DB40000A600A6802400A60B3490A6803239A43DC @@ -3589,8 +3589,8 @@ :10E030004018FA218900F6F7E5F828602868C0033F :10E040001749086007B030BD041626400C19264059 :10E050001C1926404016264044162640141226401D -:10E06000E0F2001040122640080020400804204042 -:10E070000815264064F20010181B00286CEC0010F4 +:10E0600084F200104012264008002040080420409E +:10E070000815264008F20010181B002860EC00105C :10E08000F01B0028941C0028981C00283F420F0019 :10E0900040420F00A01C00289C1C0028E703000041 :10E0A000A41C0028F3B595B0170000210D0008004E @@ -3672,7 +3672,7 @@ :10E5600000210120FFF7ECFE0020FFF7DDFE012077 :10E57000FFF7DAFE10BD000000E100E000E400E07B :10E580001CED00E000132040FFFFF7FF8013204048 -:10E59000A013204044F3001064EC001068EC00105D +:10E59000A0132040E8F2001058EC00105CEC0010D2 :10E5A00080000000001D00280000001008ED00E0C1 :10E5B00000B5010009B2002905D40121C006C00E32 :10E5C00081404A48016000BD00B5FEE780B548487B @@ -3694,23 +3694,23 @@ :10E6C0000620FFF775FF01BD80B51848006818489F :10E6D0000068C10F002905D007498005800D800022 :10E6E000085880470720FFF763FF01BD80E200E084 -:10E6F000B8F300100011204048090028BCF30010B6 -:10E7000004112040C0F3001008112040C4F3001091 -:10E710000C112040C8F3001010112040CCF3001061 -:10E7200014112040D0F3001018112040D4F3001031 -:10E730001C11204034F1001090F200108002314092 +:10E6F0005CF30010001120404809002860F300106E +:10E700000411204064F300100811204068F3001049 +:10E710000C1120406CF300101011204070F3001019 +:10E720001411204074F300101811204078F30010E9 +:10E730001C112040D8F0001034F20010800231404B :10E740000400000008000000800658403A01000064 :10E7500000093140020000000A0F0D07E00100002F :10E76000FC53000098210000F4010000E8030000C1 -:10E77000F4010000C0F10010A0F20010800231404E +:10E77000F401000064F1001044F200108002314006 :10E780000500000008000000000758403B010000A1 :10E7900000053140010000000AF0D0707601000051 :10E7A000E0150000D41700005E010000E80300003F -:10E7B000F4010000DCF10010B0F200100004314060 +:10E7B000F401000080F1001054F200100004314018 :10E7C00000000000080000008009584040010000DF :10E7D0000007314000000000090F0D0795030000FD :10E7E000901A000028230000F4010000E803000054 -:10E7F000F4010000F8F10010C0F200108000314078 +:10E7F000F40100009CF1001064F200108000314030 :10E800000000000008000000000658403901000028 :10E81000000631400500000009F0D07087020000BA :10E82000201C000098210000F4010000D007000027 @@ -3729,169 +3729,169 @@ :10E8F00075FCECE7F41B0028281200280648006885 :10E9000070470020C04304490860044908600020A3 :10E91000034908607047000000182640041826408C -:10E9200008102640443A5C6875616E672E787565FC -:10E930007765695C4769745C436F676E6974697673 -:10E94000655F4167656E745C2E636F6465785F74A4 -:10E950006D705C736561742D6669726D7761726547 -:10E960002D6275696C642D3031363932303434396A -:10E97000363564343762306139303435613463613F -:10E98000646131636231385C636F6D6D6F6E5C73AF -:10E9900072635C647269766572735C6970635C63F0 -:10E9A000795F6970635F6472762E6800F1B4016804 -:10E9B0004118436858080A1800988068DB0701D599 -:10E9C0004B46C01891422DD00D78491C03240326D4 -:10E9D0002E4002D10E78F61C491C2B090F2B07D1B3 -:10E9E0000B780F33491C03E00F78491C0770401C5B -:10E9F000761EF9D1002BE5D00E78491CAD082C40CD -:10EA0000032C01D10C78491C2402341965424419A5 -:10EA10000025AE1E9E42D5D02678641C0670401C90 -:10EA20006D1CF6E700980C30F2BC704700053140D1 -:10EA30000600000000000000801890400200000066 -:10EA40000006314001000000000000004019904025 -:10EA50000500000000053140070000000000000034 -:10EA6000C018904003000000000531400500000080 -:10EA700000000000401890400100000000063140F6 -:10EA80000200000000000000801990400600000015 -:10EA9000000631400600000000000000801A90408F -:10EAA0000A00000004000000000000000000000058 -:10EAB00000000000010003031F4E000000000000E2 +:10E9200008102640F1B401684118436858080A18D5 +:10E9300000988068DB0701D54B46C01891422DD066 +:10E940000D78491C032403262E4002D10E78F61CB4 +:10E95000491C2B090F2B07D10B780F33491C03E0FF +:10E960000F78491C0770401C761EF9D1002BE5D0AA +:10E970000E78491CAD082C40032C01D10C78491CA1 +:10E9800024023419654244190025AE1E9E42D5D09A +:10E990002678641C0670401C6D1CF6E700980C304D +:10E9A000F2BC7047443A5C50726F6A6563745C35C0 +:10E9B00031315C4E375765625C2E636F6465785FFA +:10E9C000746D705C736561742D6669726D776172C8 +:10E9D000652D6275696C642D326530363863373762 +:10E9E00063306635346431386233393863383339EB +:10E9F00063663830633463625C636F6D6D6F6E5C49 +:10EA00007372635C647269766572735C6970635C6F +:10EA100063795F6970635F6472762E68000000003E +:10EA20000005314006000000000000008018904002 +:10EA3000020000000006314001000000000000005C +:10EA4000401990400500000000053140070000001B +:10EA500000000000C0189040030000000005314095 +:10EA60000500000000000000401890400100000078 +:10EA700000063140020000000000000080199040B4 +:10EA80000600000000063140060000000000000003 +:10EA9000801A90400A0000000400000000000000FE +:10EAA0000000000000000000010003031F4E0000F2 +:10EAB0000000000000000000000000000000000056 :10EAC0000000000000000000000000000000000046 -:10EAD0000000000000000000000000000000000036 -:10EAE000000000000203000000000000030000001E -:10EAF0000000000003000000000000000300000010 -:10EB000000000000030000000000000003000000FF -:10EB100001000000010200000400000000000000ED -:10EB20000000000000000000010003031F4E000071 -:10EB30000000000000000000204E00000000000067 -:10EB400000000000000000000000000000000000C5 -:10EB500000000000000000000203000000000000B0 -:10EB6000030000000000000003000000000000009F -:10EB7000030000000000000003000000000000008F -:10EB8000030000000100000001020000040000007A -:10EB9000000000000000000000000000010003036E -:10EBA00063000000000000000000000032000000D0 +:10EAD0000000000000000000020300000000000031 +:10EAE0000300000000000000030000000000000020 +:10EAF0000300000000000000030000000000000010 +:10EB000003000000010000000102000004000000FA +:10EB100000000000000000000000000001000303EE +:10EB20001F4E00000000000000000000204E00000A +:10EB300000000000000000000000000000000000D5 +:10EB400000000000000000000000000002030000C0 +:10EB500000000000030000000000000003000000AF +:10EB6000000000000300000000000000030000009F +:10EB7000000000000300000001000000010200008E +:10EB80000400000000000000000000000000000081 +:10EB9000010003036300000000000000000000000B +:10EBA0003200000000000000000000000000000033 :10EBB0000000000000000000000000000000000055 -:10EBC0000000000000000000000000000203000040 -:10EBD000000000000300000000000000030000002F -:10EBE000000000000300000000000000030000001F -:10EBF000000000000300000001000000010200000E -:10EC000072B6104810490860BFF34F8F0120C0044E -:10EC10000E490A6802430A600D490A6802430A6005 -:10EC20000C490A6802430A60002000210D4A03C211 -:10EC30006A45FCD1084FB847084FB847084FB84756 -:10EC4000FEE700000000001008ED00E00013204087 -:10EC500080132040A0132040B9E30010CDF0001035 -:10EC600031F2001000FF0128FFFF0128443A5C68E0 -:10EC700075616E672E7875657765695C4769745C48 -:10EC8000436F676E69746976655F4167656E745C32 -:10EC90006669726D776172655C7432675C747669FF -:10ECA000696268386D5C7372635C73797374656DE7 -:10ECB0005C7265765F645C73797374656D5F74769E -:10ECC00069696268386D5F636D30706C75732E634F -:10ECD00000000000443A5C6875616E672E787565C7 -:10ECE0007765695C4769745C436F676E69746976C0 -:10ECF000655F4167656E745C6669726D77617265A8 -:10ED00005C7432675C747669696268386D5C7372D2 -:10ED1000635C647269766572735C737973636C6B40 -:10ED20005C63795F737973636C6B2E68000000001D -:10ED3000443A5C6875616E672E7875657765695CC5 -:10ED40004769745C436F676E69746976655F416794 -:10ED5000656E745C6669726D776172655C7432674A -:10ED60005C747669696268386D5C7372635C647246 -:10ED700069766572735C737973636C6B5C63795FDE -:10ED8000737973636C6B2E6300000000443A5C6817 -:10ED900075616E672E7875657765695C4769745C27 -:10EDA000436F676E69746976655F4167656E745C11 -:10EDB0006669726D776172655C7432675C636F6DF2 -:10EDC0006D6F6E5C7372635C647269766572735C9E -:10EDD0007379737469636B5C63795F737973746956 -:10EDE000636B2E6300000000443A5C6875616E67D7 -:10EDF0002E7875657765695C4769745C436F676EEB -:10EE000069746976655F4167656E745C6669726D89 -:10EE1000776172655C7432675C636F6D6D6F6E5C99 -:10EE20007372635C6D775C666C6173685C63795F59 -:10EE30006D775F666C6173682E6300009F0F000042 -:10EE400000000000000000000000000000000000C2 -:10EE500000000300000000000000000000000000AF -:10EE6000000300000000000003000000000000009C -:10EE7000030000000000000003000000000000008C -:10EE8000030000000100000000000000010000007D -:10EE90000000000000000000100000001000000052 -:10EEA0001000000001000001000000000000000050 +:10EBC000020300000000000003000000000000003D +:10EBD000030000000000000003000000000000002F +:10EBE000030000000000000003000000010000001E +:10EBF0000102000072B6104810490860BFF34F8F41 +:10EC00000120C0040E490A6802430A600D490A68DF +:10EC100002430A600C490A6802430A60002000218E +:10EC20000D4A03C26A45FCD1084FB847084FB847A0 +:10EC3000084FB847FEE700000000001008ED00E0B4 +:10EC40000013204080132040A0132040B9E300109F +:10EC500071F00010D5F1001000FF0128FFFF01281E +:10EC6000443A5C50726F6A6563745C3531315C4E56 +:10EC7000375765625C6669726D776172655C743284 +:10EC8000675C747669696268386D5C7372635C7323 +:10EC9000797374656D5C7265765F645C73797374A7 +:10ECA000656D5F747669696268386D5F636D307039 +:10ECB0006C75732E630000009F0F000000000000C1 +:10ECC0000000000000000000000000000000030041 +:10ECD0000000000000000000000000000003000031 +:10ECE000000000000300000000000000030000001E +:10ECF000000000000300000000000000030000000E +:10ED00000100000000000000443A5C50726F6A6528 +:10ED100063745C3531315C4E375765625C6669728D +:10ED20006D776172655C7432675C7476696962687C +:10ED3000386D5C7372635C647269766572735C7360 +:10ED40007973636C6B5C63795F737973636C6B2E3F +:10ED500068000000443A5C50726F6A6563745C3509 +:10ED600031315C4E375765625C6669726D776172EE +:10ED7000655C7432675C747669696268386D5C736F +:10ED800072635C647269766572735C737973636CC9 +:10ED90006B5C63795F737973636C6B2E6300000047 +:10EDA000443A5C50726F6A6563745C3531315C4E15 +:10EDB000375765625C6669726D776172655C743243 +:10EDC000675C636F6D6D6F6E5C7372635C647269B8 +:10EDD000766572735C7379737469636B5C63795F76 +:10EDE0007379737469636B2E63000000443A5C505E +:10EDF000726F6A6563745C3531315C4E375765629A +:10EE00005C6669726D776172655C7432675C636FB2 +:10EE10006D6D6F6E5C7372635C6D775C666C617355 +:10EE2000685C63795F6D775F666C6173682E630001 +:10EE300001000000000000000000000010000000C1 +:10EE400010000000100000000100000100000000A0 +:10EE500000000000000000000000000000000000B2 +:10EE600000000000000000000000000070B401235A +:10EE7000002413E00168001D194202D04D466918B4 +:10EE8000491E0C60091D121F042AFAD20D009607B4 +:10EE900001D50C80AD1C1A4000D02C700268001DFA +:10EEA000002AE7D170BC7047000000000600000097 :10EEB0000000000000000000000000000000000052 -:10EEC000000000000000000070B40123002413E0E3 -:10EED0000168001D194202D04D466918491E0C6098 -:10EEE000091D121F042AFAD20D00960701D50C80C5 -:10EEF000AD1C1A4000D02C700268001D002AE7D11A -:10EF000070BC704700000000060000000000000018 -:10EF100000000000000000000000000000000000F1 +:10EEC0000000000000000000000000000000000042 +:10EED0000000000000000000000000000000000032 +:10EEE000060000000000000000000000000000001C +:10EEF0000000000000000000000000000000000012 +:10EF00000000000000000000000000000000000001 +:10EF100000000000080000001500000000000000D4 :10EF200000000000000000000000000000000000E1 -:10EF300000000000000000000000000006000000CB -:10EF400000000000000000000000000000000000C1 +:10EF300000000000000000000000000000000000D1 +:10EF400000000000010000000E000000150000009D :10EF500000000000000000000000000000000000B1 :10EF600000000000000000000000000000000000A1 -:10EF70000800000015000000000000000000000074 +:10EF7000000000000000000001000000060000008A :10EF80000000000000000000000000000000000081 :10EF90000000000000000000000000000000000071 -:10EFA000010000000E00000015000000000000003D -:10EFB0000000000000000000000000000000000051 +:10EFA0000000000000000000000000000000000061 +:10EFB000060000000000000000000000000000004B :10EFC0000000000000000000000000000000000041 -:10EFD000000000000100000006000000000000002A -:10EFE0000000000000000000000000000000000021 -:10EFF0000000000000000000000000000000000011 -:10F0000000000000000000000000000006000000FA -:10F0100000000000000000000000000000000000F0 -:10F0200000000000000000000000000000000000E0 -:10F0300000000000000000000000000002000000CE -:10F0400000000000983A00000E01FA00CC01900187 -:10F05000020000000300000000000000983A0000D9 -:10F06000720182001C02CC010200000005000000B9 -:10F070000000000030750000F6001901BD02EE012D -:10F0800002000000060000000000000030750000D3 -:10F0900087018C009501940102000000010000002E -:10F0A00034F300103CF000100200000030F40010B7 -:10F0B00008003200020000003CF300106CF0001069 -:10F0C000020000002CF400100C00320010B50749BB -:10F0D00079441831064C7C44163404E0081D0A6853 -:10F0E000891888470100A142F8D110BD080000002E -:10F0F00024000000D5FDFFFFE409000008130028EC -:10F1000000000000A9F8FFFF5E0300003A010000C4 -:10F1100000080028000003010000000001000000BA -:10F12000000000000000000001000000FF0F0100CF -:10F13000000000004D4F544F525F494E325F48422D -:10F14000375F4842385F484F52495A4F4E54414CFE -:10F150000000000004207146084202D0EFF309804D -:10F1600001E0EFF3088000B50149884700BD0000C9 -:10F170006F80001000F00EF8002801D0FFF7A6FF06 -:10F1800000BF00BF002000BF00BFFFF75FFB00F023 -:10F1900003F800000020704780B500F001F801BDC1 -:10F1A0000746384600F002F8FBE7000080B500BFD4 -:10F1B00000BF024A11001820ABBEFBE72600020088 -:10F1C0004D4F544F525F494E335F4842355F48427E -:10F1D000365F534541545F50414E00004D4F544FF0 -:10F1E000525F494E345F4842335F4842345F424188 -:10F1F000434B5245535400004D4F544F525F494EBC -:10F20000315F4842315F4842325F4C454752455377 -:10F210005400000004207146084201D0EFF3098039 -:10F22000EFF3088000B50149884700BDF1F20010F6 -:10F230000548014603B4684680F3098800BF00BF53 -:10F2400000BF00BFFFF796FFA5EDF5FE9E029E0AE8 -:10F25000AA02AA0ACE03CE0B2A042A0C0003000B32 -:10F26000F002F00A00127A00000000000024F4000E -:10F27000008000000080000000800000010002000B -:10F28000040008001000200040008000000100027F -:10F29000484F52495A4F4E54414C5F48414C4C00E4 -:10F2A000534541545F50414E5F48414C4C00000073 -:10F2B0004241434B524553545F48414C4C0000007F -:10F2C0004C4547524553545F48414C4C00000000A8 -:10F2D000E02E0000401F0000E02E0000307500000E -:10F2E0000003000100040103020200020003000504 -:10F2F0008169891E0978C9B2016070470000000069 -:10F3000000010101010101000001000002030405E8 -:10F3100006080C10000000000000000002000000C1 -:10F32000010000000403000113140015C7010300CD -:10F33000010000004001BE00F401AE0187018C0015 -:10F340009501940100080028FFFF0128000000003B +:10EFD0000000000000000000000000000000000031 +:10EFE0000200000000000000983A00000E01FA0044 +:10EFF000CC019001020000000300000000000000AE +:10F00000983A0000720182001C02CC01020000004C +:10F01000050000000000000030750000F600190136 +:10F02000BD02EE010200000006000000000000002A +:10F030003075000087018C009501940102000000EA +:10F0400001000000D8F20010E0EF00100200000004 +:10F05000D4F300100800320002000000E0F20010BB +:10F0600010F0001002000000D0F300100C0032007D +:10F0700010B5074979441831064C7C44163404E035 +:10F08000081D0A68891888470100A142F8D110BDFF +:10F090000800000024000000D5FDFFFFE409000087 +:10F0A00008130028000000007DF8FFFF5E03000049 +:10F0B0003A010000000800280000030100000000E1 +:10F0C000010000000000000000000000010000003E +:10F0D000FF0F0100000000004D4F544F525F494E9A +:10F0E000325F4842375F4842385F484F52495A4F73 +:10F0F0004E54414C0000000004207146084202D0EA +:10F10000EFF3098001E0EFF3088000B5014988477B +:10F1100000BD00006F80001000F00EF8002801D044 +:10F12000FFF7A6FF00BF00BF002000BF00BFFFF732 +:10F130008DFB00F003F800000020704780B500F060 +:10F1400001F801BD0746384600F002F8FBE7000071 +:10F1500080B500BF00BF024A11001820ABBEFBE71C +:10F16000260002004D4F544F525F494E335F4842D4 +:10F17000355F4842365F534541545F50414E000071 +:10F180004D4F544F525F494E345F4842335F4842BF +:10F19000345F4241434B5245535400004D4F544F4E +:10F1A000525F494E315F4842315F4842325F4C45C1 +:10F1B000475245535400000004207146084201D0D4 +:10F1C000EFF30980EFF3088000B50149884700BDDF +:10F1D00095F200100548014603B4684680F309889B +:10F1E00000BF00BF00BF00BFFFF796FFA5EDF5FE13 +:10F1F0009E029E0AAA02AA0ACE03CE0B2A042A0C59 +:10F200000003000BF002F00A00127A000000000078 +:10F210000024F40000800000008000000080000056 +:10F2200001000200040008001000200040008000DF +:10F2300000010002484F52495A4F4E54414C5F481A +:10F24000414C4C00534541545F50414E5F48414C46 +:10F250004C0000004241434B524553545F48414CDF +:10F260004C0000004C4547524553545F48414C4CBC +:10F2700000000000E02E0000401F0000E02E000013 +:10F2800030750000000300010004010302020002C7 +:10F29000000300058169891E0978C9B201607047C1 +:10F2A0000000000000010101010101000001000057 +:10F2B0000203040506080C10000000000000000016 +:10F2C00002000000010000000403000113140015F7 +:10F2D000C7010300010000004001BE00F401AE01BF +:10F2E00087018C009501940100080028FFFF012888 +:10F2F000000000000000000000000000000000000E +:10F3000000000000000000000000000000000000FD +:10F3100000000000000000000000000000000000ED +:10F3200000000000000000000000000000000000DD +:10F3300000000000000000000000000000000000CD +:10F3400000000000000000000000000000000000BD :10F3500000000000000000000000000000000000AD :10F36000000000000000000000000000000000009D :10F37000000000000000000000000000000000008D @@ -3899,27 +3899,27 @@ :10F39000000000000000000000000000000000006D :10F3A000000000000000000000000000000000005D :10F3B000000000000000000000000000000000004D -:10F3C000000000000000000000000000000000003D -:10F3D000000000000000000000000000000000002D -:10F3E000000000000000000000000000000000001D -:10F3F000000000000000000000000000000000000D -:10F4000000000000000000000000000000000000FC -:10F4100000000000000000000000000000000000EC -:10F4200000000000000000000001020332325A32E6 -:10F430005A5A5A32000102035A5A5A32FEE7000061 -:10F44000FEE70000FEE70000FEE70000FEE7000028 -:10F45000FEE70000FEE70000FEE70000FEE7000018 -:10F46000FEE70000FEE740045500020001000150E5 -:10F470000325A40010000132DD0CA00409000401E2 -:10F4800001000112060E834CF2286004FFFFFF1FEB -:10F49000020225920807F0010352400001F2060221 -:10F4A00018F2060418F2060618F2060818F3060009 -:10F4B0005478F10618F2060418F2060618F2050848 -:10F4C00018F002FFC9E5001004F1FF04F1FF04F198 -:10F4D000FF04F1FF04F1FF04F1FF04F1FF04F14721 -:10F4E000046C0248090028060AF321060001F123F2 -:10F4F00034F2520868000A01010102030203010FFD -:10F500000F010100000000000000000000000000EA +:10F3C0000000000000000000000000000001020337 +:10F3D00032325A325A5A5A32000102035A5A5A32B7 +:10F3E000FEE70000FEE70000FEE70000FEE7000089 +:10F3F000FEE70000FEE70000FEE70000FEE7000079 +:10F40000FEE70000FEE70000FEE7400455000200B2 +:10F41000010001500325A40010000132DD0CA004FE +:10F420000900040101000112060E83F0F1286004B6 +:10F43000FFFFFF1F020225920807F0010352400060 +:10F4400001F2060218F2060418F2060618F206087F +:10F4500018F306005478F10618F2060418F20606AE +:10F4600018F2050818F002FFC9E5001004F1FF04C6 +:10F47000F1FF04F1FF04F1FF04F1FF04F1FF04F1D7 +:10F48000FF04F147046C0248090028060AF321062C +:10F490000001F12334F2520868000A01010102035D +:10F4A0000203010F0F010100000000000000000036 +:10F4B000000000000000000000000000000000004C +:10F4C000000000000000000000000000000000003C +:10F4D000000000000000000000000000000000002C +:10F4E000000000000000000000000000000000001C +:10F4F000000000000000000000000000000000000C +:10F5000000000000000000000000000000000000FB :10F5100000000000000000000000000000000000EB :10F5200000000000000000000000000000000000DB :10F5300000000000000000000000000000000000CB @@ -3937,11 +3937,6 @@ :10F5F000000000000000000000000000000000000B :10F6000000000000000000000000000000000000FA :10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000000000000000000000000000000000BA -:10F6500000000000000000000000000000000000AA -:10F66000000000000000000000000000000000009A -:0DF67000000000000000000000000000008D -:040000051000F231C4 +:01F6200000E9 +:040000051000F1D521 :00000001FF diff --git a/firmware/t2g/Seat_Controller_demo/IAR/rev_d/Exe/Seat_Controller_demo.out b/firmware/t2g/Seat_Controller_demo/IAR/rev_d/Exe/Seat_Controller_demo.out index aafc5427624d5f5e7d81fa346a4cf79884b7c1b1..72afc1c7d08209d735dc08533be66cd4c795bf83 100755 GIT binary patch literal 2305212 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
  3. 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'xjOUbbROv#q0sW=%j`M~TOR8jmc9 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%0D#-Ex(A(v+)arS=@s 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%0DH?Xi7j8I^y1p8hAc7qhhxF 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≪%c{zvjE8wG#bhD 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

    ~k)b_pzJB%$<_0i2BFR|EBfZ+&CT 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 >1FoakObJWCE}8~hN3k^Ek95;C-~yr9-b2%X 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

    QyniAX?>Nbi;lSqbE6rK;zh!3447J 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

    vZqtR>cMA?bHup{zRr(z zb5NI;cT9)R{W`0m{Aeh@2FeNf3jT>t9RC}65q$t>-^m}ri|dsazl9RF7hC2{f=@SZ zi53iT9tMN3Vr3^da1krrbvLy1P2~aNJP|D$h+Y}I2!xUUJ{hg=tb+e{)CZnVm?b~d z4NqY{@4WEW5pn<=`-?_hUv$=giw`pE0{JE9sGt;%fDZSx;|zSsahw=@s~K;^fQv!! z`j4J^{sZ^6_BJ@`9YBPyvp07WhZN2bf?hKOv0FlXrI-|0uYrJ~c_849+3;OUc>Xm! zZx+u>;Q8v~dHH#=JVJ^t$8zL}lA`P3`2pmC=es0NAt`!DJ{OUqC*^Y)DS8>6&qRKB zeg~e%oW!610ngpy`8#-KI+T;5;s_y6K}UcOs1*%{=c&-u@OdOW-}77kJPMwhe#f8p zhvymMc^o`5ISEqKDW5Az(c$uWZ&Gx$eEtb3I$l2SONvgG&p#zaXUpdUNYN$o`Ddi) z8u@$>DY{KQ_mH9u^7-omQnXe6v9yE~y(ItmerGUW{_)xFq~zeJ__4b8&M5Jjg8^s? zd?=a1x~j7qze5@?WkvBaNx}=Kc%#EtG0Z~vCJB5NqvU*l5Pp%88-`s{10YfkW%ttH zM^j6l@yd~xExDy&WYG@ugwz#kkIB=fns-yFd?m?KnBi^h3qbkN#%}Nt^dqb-%h%Q# zcVu~u9jk1O@pg^vB;A1RDw=SXzc@du#)=k{;$lMFSkaK896o+ia-~C-RZ}76a!w)lYLV@;}Der%2;}RdSKitTcLZK9VJYQZFCoVy8**LDbxv8O^ zeSdl~Oy0ujqroH1oy~3V{r#qv$t0G~+qg6;>EhxcB*q1CkQ@hD_H|4a){!9*UUR4% z;Ms;lJL=)X>iC7BVS=bfzxY%Tj{Z9XO%T@us&SXCQ(q7#DGryCy3`6%_XPN`40Ot2 z(t->lh;BMF7UV8*$DqQ>)O2+tc>pTp-+1%ZQ!$VV8K6(-QfDmf;m! zq$VkcGYnB0F$VS}=wX7kbHu7Fw7t(qTM@n5jhn%SVBdX`VkWh*wrOu{oCF`e!|$?k zB_hK~NnR0mg1)THJL)s?gRVqWbcRdOM$^G+h}2o3iLAZN+Y6kM`Rmjxr&0EC&&eooH3R<@NH|} zE=8(yuum0=tIpt?`hm?Y)%vZS!#M1*5vAgT}D;*sT8*~wthDO zvUtb=zB9)=GkgN8cj;V}QUF!Y-0H@5OJ-fBe&ne*$di@dPCFVQCit7Z1 zytC1z{SO)`uNyLqDcCjYYQ?0+Rx_+O4k_mzbl?4G>rg9ZJ6*5csHf*y51b}3w4cQ_ zn*TtyCtW$5)x2p>x`Ldq$UAz{m1Cf(qpP(;Otg9m#+&&1pL}PV_WDl>%rBQ2e10hF#gcB;~cUp4wAIZM@XVxc1YA z9*vZVlcvH&T->SoL!l8892aYvcY@kg>)19SykBb|0VVokoxF1qzGkAzCX7Qtj4_tS zQ3fcY6q13@kh+CrNK%z4AsLbqLWbp$l5Vf6Y){XnDl2oTD$6pUD%T3W#a(ifArRB> z@Mg@oCXQ?!BeYLy>u&DMz&AO0?UZ_d8)SY(62=%Gcm=y#(h>~sV<{NI(9R@p5`6)x zu#jWxmlN+wu-KNf11retH=kMqVxxejBwq}tf;1_4zyo89ryUEm*C4k=<}lo`SQq(X z>CwAm(VW40*m}d7YzJGpi(7a&vRb!i`0}``xvL94;|Y0P*@~?l6UFCP&E|SUd`(#F zS-SgErnRLFZfj-NJ?S1I3fm7hI*BL)l=h}(-B%Pmf5k{yd7f8WCw%TzQoZp++mzUOlg;#-1c+dA)j>3(!HnBnW|OTv~{YjZO0V*d;WU% zPc}4;3vz|3FUbNxbt6$vXq*)F)VR#@dP?KLE`jw@A(ghW7z~Yv3emU{_{!A){#h#N zWEkOkMwE_%LjB&vLWF`s6*a2-nzS52s41M(p`(4(hhJ(Amj zrl(zysiwj*QnGEB9!25`aMvQGPOK>*P1C{pn_NlN3PM+BBbMi>Sy+_A04kK)kG6&M zOz76>S;-?8uUyyWHe@Pu6M1pDEY3=-rt!^eV8#C*dv5|?S5@tgpL1`LrfGT;+NMpL zn>K9@scKKn~)|UxuKw_Mam2U1*AAITTws|nPd=zf+!$^ zfZ#(WzmdQBbGF-GiW}CQp zS@25_~d%(&o*NpAcIdY20y2kK3Yo636h1~^3Ta@hz?y;IY4U8%RzJ+)QF z5qwf0Y*wLI&XMe?^SYMhspYgzP*VnMpD$cgn_6C7cc_&iChU-U1d&1#yl*Oz!JF1SzOh4n^=TO_q(v|d%4 z!ezCK+k(3m&TZLpww}|S3kNrG@MsYtIjY%kG^+=pBxI_Y);PCHt@VfDDT3Bj%*rc# zR+?>vXi*~Cv_6;!<&}?p|2VDcpdK;$y z{)PZdHB$7-fMhSUuPB!Ywx6+ahE_>Mu6sEp{aViO%Q2-h8XSiOw>O4!wKQ(x7}@=n zsnYZs1kE0FV`3<3C*EeH5GwTb1dri@n~sT6C5=X7;ze`e+G>|`$!u3!wTr)c{TJLU zSW(?7IA?o|3`J9TV61WiGgKEM)rCIyq7i^AW()x`Qcb?$G0Lb!h<+!4ZD@qDf&sC~ z;5sUQCwS5#TkeVAZ3b^(G8Ef>k&|3(Ot;PCW>VRfrlvL;A^l}58H$yau~p7MbWZ9& z@u_Q|ho{(9kD3ThlyxB{aMbBNVh9hEThS=DbM(wyPG~Bdmn~^#1A4a9se*w>r(8AD zU?3qgPjqFJJh5_jZ8&=&U4Ip*c9_aIf=y}UKq)s~$~kV)g1P88aFQ&Jz0{HEJdS4v z$?}L_mKCRstV_Au&;!Tp_&71}ScjqLJex93q%OtMrwmJ{=)zFlrVMXS+(TQ80!XNL zN%D4&jATbVn@pZd=*_XE3mO*6$P+B5Ni_{+o-qpI3H#uJa&Ayoy^uXht&VFZD~>1% z7gOI&Zy{THZA?rFBV_tl$3!3+nDGX!o%QWtis)T_!~X`E-Bt_WGN^Qg2sw9l4P z#Im^r#}+dSm3(o!J|)W}5B5o*b@MvUd-czBGH zNd{$v!f4dIjQdHg$XoYm!K+A?njMJ1t-TGX(x8rv4C50T(z238x@Wfj=$Y{Ob?AsmIxUCeB_ zVg)jm0uxGN)|fr!1Zktj5MlMaT7-x=q>^@35Db&jh4ogp7y{Jta6aK!NaT;^icFRr zZ5g4kDIvUqre;iL31?KvnI7eWSV` zuXquZ|Dt3h=`ObAw}3ypuKL2jNRqxV$D;lB)@~(Ek!z0|O362Uk|lEIs10H)m7{~u z84EusOs7J!noz;N*_UgAE(hlZG{^PqZ}Gl}pMXi@IgIu=7F1IYV=jZ}Xo2qreaLF567zPZVRb8p9T0;=WsrCkgCh!xq=~^T5Gvn)mzFcD(8ip zFl%SVseL$(SX$Fi-O4fQ0LEcOsFGNT31Z7hotN;E4LDtG#&Au2{S?`Ub8VKl)ivOe zM21SntuYI6gc@k5xBllb$+Q^fh1GEgR|yN81vN`J%9ljS%MuAE$d~hf%q30>Q@}f& zD63)`)GuAw)QriJk+}Vemjyz`xOzp+JSfh}QX|A!8O8~JoHgMvn7N2WehQIp;qoP9ck5S&2T9j*$)?zsa?zlp%N^L8|K#ecD z)M%G@bP<>vRL-5d1T@ER_I&n3b(gr%gdi0FL2;W2ssJcE@dpm#6AVBQ5uXSFJm(Lo za8^m;6H!ux+>~RP(MDDm<9{#*o0+mCV+{uziC2)5IFUn@#`%dW1cXxdN+;yK5pz8k z2N*InYOA<+m~s@YAH-}@ku1JTlvk;tfF6=}H@$V^iu$_5bAnPNf?9Z4$WDA@0@?Bz z@XdB2`DJD-q#)H3y5U73+t--rg|sv5#C%T65+(7Bkez7Z0GaiKSE_8UVf2#JRy)zh zDJlO6fJ^Me$r^y!8p*xFPF!IC>2wy*EA7PH9w_GYc*D!iyVd>r7QI4s9R^*x7@2w& znzh037kOzJzJKRGy_GxhE6fev%B|#JPvsuQp+@EQ2#BcMn|!rWnApTgnDbC`i3|8| z>AP5Io!50`sNqG4pKvh7vbbLJTZ*DSBS&3qNj)m@7o>r-5bx7iXAPljt%X`*cOU$Ue)7V>k zXyZDI3$?c?mKf%YXmTUg=#)(b++DH6xjr1_I{~*nmiURru~a3bI012gEb*WZK@s_2 zEblS5UIcw4miRL#S2;<5Zpuh}>Vb-g-JFpq`YLmYqECsiJtZSCF9^kA_l%6Z>)p?Y zQS6?bkyyctkb@~+A-g28!385VH>w--wi34Ehx1PHg`l9I%1ADm=dQIe?D2!0a6i(FZf zNO>_z&ebJ}uX&LuMjWs6+fUEL-B6PFPCyBA%`N^C^rGACC3)YX5T%+>2Q3J~5^uYp z2i-PJPyAN1XS?RyjJu{M-tZul72BsLa`EM&kRc0^5%*8`RU&&=aC&04zW~|r$n?B# zyTgfI7JPhq-et0t8Qb-w@65a(ON_A@56oRN^R~G;u~$Pk?Vfm9%vflZ0uHkio4792 zQ2CxZf#)PH)L^yU4b0{_i5oQr1HasW2JVzOiQl?#a?2RFGv@d@MQYb)&q=&x6j3|E zKy96qNNi$$CDrt<4N%{mli16Rk~^?KUNR?fs2i!O>WVpubs8m>7qkJ5Vpq=bRTg_9 z^y)c@6LlHAorfaV%}HDqgrd5?VNT+%ARP4%x6DaA8-$|}xP4CIBR5WIf7hJEHax+zh@5&!-IO)35ZR5`>kc-_s;uovw#-9ciw&OezuGn#(LMj ziPO1gwI~O4)7-@69w_-|^W3~|c-jLs#Z%_y{RYbj?j1Ho1&8vyJ3XY-3jbP>xLtdn z7Km!S4(xeH*W`WEZ613g^pZ7+BRr+RlPwcb=#tL7r#*#;*A<<4 z7sYKp$Hl{unC3p{p{k^ZAy0`V9;GU!c^r|&t^5-Y;rHpPH6w)s8!9u5z|?O=CLUi0 z2AB*kkZ(oiZK3#5Z$;+4NYil7Tao#11d8FSoe)7EL=v>D+G~$oL4}B!u|A4DcW5zU znY$yuEs7*(R*f>plry5^`Xfm?%P(mMp4%Ep&U;#p`*Ut9q=N2>Bqmj>9A}6b(Qki_ zBtaMFPqU&BzwIAM&emW#BRVb>Ns@(+`#cuyz;mZY zlCw_8(PN7^^9gg@Pa=tVI801=n4G5~$=M%!+T=E$ITc}Ytez+VcadL?n1h7G+w4eU ztcA=RwRbeq(9;x2LXTI1xls{f%TbXeJ?@oc?tO$v`c5QCpIhYdnz5Y{BIw>of-dt4 z5<4^@Lf(iZB%{G&4egqRNEm-)lwj_5NznU!Awrx;LLPJpkz0i!BEAqwMERj^Pswk| z!@Tv?NK(%CO9`)#%Oi<+#}vUf@Iw4_UnKU+7aM+(`+*@6UWz2)MpFXYNep2>sy9l& z7B(6N5PP;i79wJgNFt8&iC`OTAu<{w$#^kP26pU1q-=;JWr2}V*Y|=zJso4FcSZRkyt9iXQYm3OC;tOyP1#F4P6^afQ?*6Lwmm4AJRQM z5=lZ=fQ0Za=x>o^+|Omu=92z^KdhIV*cT=K_ika1a*GIET+ELo<18+N78k}bQb=ta z9!bR8T7-EV6(VC(BpEAOnXAYQA%h)jg~+%fl8jrl40SvfBH;c=0wyDQ1Pz0X5CTFg z`;|xnHgW;#pe-z1bNZu%>(d_YBlR4!BS|=D8FP@*f5fii&`2UK4H6OFcWj6xZ>!>5CN}867Y4ufY4T! z7>Lpip3@TKnQw>%b0hJuS*ct^{72rSX^te~GA%-UMjX~v3`OD}U!_bC{6p*D+(-ht zv;ci39#RW8M3V4puY{57;mJrs_W6SHlQJXJQy)eWadvc)%q?C7guF*cwU3zA5FY2A!c2BI5Q)BF@nwj7*mh5zj>u@t#|R z%9sfe5*vyVv#X9!t|B`|?xJQz5^;wXVP^1zm~m(%871w?3?t(wL_}XC5u1ZVg!Z-P zM3V7xkc`j+yBj0PXj~KEs?Z+&=}0oJb;}qzsy>b+Vtj`(LpQ+C>L^J^X&gsu8AdWz zNL1BD67jTK#K@jn7fHnYPVOm@3P2ybhnR3$B>oq0{yM2Eg!_*oaevRlJ+zANkHmg; zmkJ|yidcvde~u(&JC{OBcW+Kvh@7#M_4%38r{=76TceWDLZmp6q?{8XCA4b37)i|E zL&Svkhu?@K=1a&Q6Z>Z}0(cf(h|hi)Mapjc#df@dlj`l?*fp3M9vHxX+dInVHOGkBWYAlukJ*r)NA#>V{-uPW{)-*mr*z3I+=vNzp-&fauqzuBAa-(zpO@8nao#XNJx}r1ExJ@y?m?_*5^E zyww`cxVymlF5c}lDO9$IV)OR`=Ncayq+%G2;f9IM9e6L(b_Od>(@v`i6PGs}5f66n(+*#cgj z<(!14FBo>AdEidQw2hWfNY2|2UMc?Az2hL? z^S-IA+-+6_H`h2@atw1Afk)T(>zpfcj0P#0XjT7O@7$1Mm@Fx@roUX^Y?l<&0*sH- zlrG;{==@g7AsS=1RMGryq4VD+4d3ll=*Jg1|Hu&?Be77sm5Sn#2ItH%LRF$Lb{iGV zQ-?YijS&V58o67jXzpI@{MbdKcKZ~`w;G*0#)t|eHhQx_kv!b!JnAKpyKRc-nI+C2 z$B0;wd^}b3H70!1R ziQcVHEN))uTs2m73u?DPVc%HkJUUkN&kCzm{LSIc3uDcoG(QMaOfLJ9^S7~L=0V+` zXSJ^Aj!!w?NEnl5PRC~K#_aA7Dd)n3;6^dyqSC6}*X~@EkV_LUnXb=Yu5oVlkwGL| ztt!n<>u?@WGU3EU_(}`^m$qK%aGp)X$FWYAAV8$8hdZ5@67hrr%GFrfdcD(mGZ7!} z!lbRoyPWqE@jL|;i=(vlPM33hp1~amyvDuOIVI2FE>|>Z>mO^KEqMla!lbR|*EtvF zN$zljT-l_pP3xV@CB0q=U|PD~xh^lh8`Fow)7B^5&b@i@u?$Aj8@z4b>-;`1K4v#s z=4+QQTTxqhNO_a(%tv7P@qC4rwoW|Wb{3(-a#P5a8QzHoeud^B-Ka%8@eSMQK^HF= zm;_SB9Vgh%v1lP45-sEhn{DS5TQf11urx(TTW6hUJKtv81l&-AKni&eBv;wm5<#Mc zJa>}q+-mTUb*4?Z?_}F~&``sqkYav(itYTt*2YL0EobYgw)2|gV$`)*ilNF+vz-%T z!lyoha+v#PP<$&U{Nbah0L8~I+)hnnt~b)wUqJJkkH%PUpjn+|J0H@T*dS%XTivFbk=L4YnRGu$?Pu(Wf}7 zB?~;Tb*t_CECbVCKNgefwDl42zoxY-@N5~!+RBR;+Rif>=$r)9U9Ug?w(a~y@T4;C z8olg0w)1xb>#EC>z6%p+?I*=aZ@vP=#hKhhrU!H5{ok{lYcfqeuu{aN@*)IgCi+6b zMZ56$i*4tDOmwvZBOLewz`r*N81DP|CARZQCVE@51Y4G*t&1;(DVe-NNGau5=DOoA zvz?Q(xNB)Rq=~p{J1+sbHH#bSMpEOv|8m>;fhbC2pRw{wTUTFUJ2#1L=nsH{n&PHHj2qr8a9)F zc`BR750x_3XKCxXYi;MR+3q^!s^5JbLSeKnrq*QWf_`E<-yN;>P-`UUal-XzoTIh+ zu60=2dI{)9Mr${zqGZFbe`-6=kJid4WF?T-+yG4tq*`^Qt+Q{molgvXGb|RNA`qHVg=3xH5#p@G7%4pw0=m+s^mLa5Dr} zt(-7w0(+y0)oZ4-^}rn%5yo(rQ&BzH2j3t69FgNes&!J@I_FOGnPYfe%Cf4ncn`=A zjI!q1C~ZA`m+hR9t2Ne39*Di;7q)XzuGUE-sa`I*+jg!EEJ_oA&G*>O-GNxDx0iu^ z(t}kRKe!#^n;}-ag2Y~XFGg&msIlTnTj$wDou3AA=_pRIanBlICUEQk}cBfa@_OI*fPIn*Om8xFX)t6qqwtH{` z4#~P!r_0x^?&#mJp}%kS&|t^v&Oy)&4y_(Kb_mC9t8wtg|Jt|1YN&20!IK>gCAIt2 z?zLA*ZU2UW?%uA!lI8RFt(?1W*}fH3mHVxzsw`RCKUhK!T;(>m;L>R5wa-a0s|lAc zop{7(E1vNeKx&U=bBWfjbR(VTHFj_4PFwc3ViWhYX5)a63a-Sz%nj}7j`f77oOkg3 zqpgF0vvx^SNn0}YEtvX)5L1`Yp`|eOax!%l%%Oru7^Yq>Ox?gt{co_`)oPWrB~x!a zIc9yTOnn6qU8^f_{3ct#(wV9n00N4 zu`Gh6vA-r`--JC>@;uYnUkhX7M}wdBGXCvqHB0IiLNEKYm^BI)a`B$&RY2S^EN%TA zHP=#@Lj|ukZT(%WcG0J(*!`KUkL-fBlDfIj>t5KJQnvoqWos+0p6%}Fvg|A4cm`ty zY@t%O;Gbo^vBpp~hTcSzj+Rb$Qk}`z4q`1_BFkT&K{UL17=WxL-EhD9^3`ZAaJAL{&6u@C+4H2fr?$7NeQ*WMOgsD6 zS@uPC)?|AP%%Xy4Gqdh5CbPac6aTgU6_fFF$H2x7G#6)oM45`m&Wc$tSKtka_;BA) z_qx8W&Jy&6R>mm(yJLO(pk-%kz|i{s!L$_{m2vSD+>-wrJLg6C;0aXq7~9Hu1Ao6n zf5)tx5AgSW^mp9K$+87J)5;wm=XdkA)i$qKl3Li(Ocym{FQ-La`9GFe*u!Pj%i8G0 zp2nu?x>RlLT)=`cWq7nA2-95O($Iu!f&-CwSb@K68CPh?z;~=|wTrMdNiX@}C0C(| z#?&>fpa-MqO>Tw5mGDNXtN@HGHA>;g_J$=(Qi~fJ8|f(v!HmGIZB5N7+y&22cu3Gh zty)^k;W>7K!SN(4$Cp!4@uCxd$|N_&NfI$h0<)MV>=ny=2`+0QPb_L`!z&oP#CXN@ zux0Rl{nFZ|I(l@6m75^gPL$;<7`QOb%NE6@!gVzZ>2Vyqc1#YNDtU^xQ`ifRxs@3~ z!65bvSPqDlq4>e|hygCfR$_2JOKo*?8y>&IllDpoLD>^Qx}pH$!GwoKBu~2B1@6Wh zBQ8jF3*HtoK|(?q-i?)nEP$|$inlslpjy1uz@B76i{QHAQ3p|nEz6cJg(LBzpn%N7 z_ArG%J*4CTEwb>8Qf^3)tBF5c*MX6d=;EB)zcn5Jo zSgEYcpc<^LEek7fP-uaX#H0gD@fPlrBpN<>;U^=N3lwM+9-kFto9sEfVi60p>4ff- zSG($1DpW`?JPt@$IEHSR*9yycUmJ7km*tYA)ir zN)}KS(kPibJSxa<)FhYGc|?|}wyRpUY#Vs9hPr;E|7J~9xwQ=41lp-?^Qw_%iiVdp z#mfC#m@W-VsW!Z=VV=~7SEaOc9&1?)rmV-4t88eZI@hh2_1*-c*4uer0Xwh*k6}n~m9x(jJXMbTY+O?j7L*R4Sz!B%%r_9TRE=JH7kYm~#5a zQe;BsKW)v{u>scLeT}@^FssEa_7sHlNJQT6`ENcW0VE^uLqS2ai+Xy@Bs-4>yzAYP z+`Qr<&IuFOSZRLVf$ArY8yDcUV!WD?k}!HkqA>4k>Zc@0=3T~Naw=O|lDFN2NWz(U zuX3;)oWO8)US5)^AYqbt@4R^&fvc!vrE~LNv|X>RkTR8d%Q*?}v;jFJ?-&IUT_>P* zc^7%0{6&oICRBDtpl{53Lt$iN2e>(}0E;8|9pdEphL=F{KX7YCPjIZvJCKu71H$it zyf5nC=sL-ybl%qu7=5Sm|-rZl59;aGK-pq*(-H7*(t9;m&)P)+gxK z7sz|K^WPvv)jiz#Pts4%J>0vkPXve&ffXXCXi^kGj|B;mQ^OERwUH#v%L_0G9hVg% zr8kn4%R{8_cn%SDP9#yIvBvj@LM=M<;7GVVl9Y6alo1VjF_Nf11c?&8Nr+8ju?_Xv zqkHjg0iNT6Ml`D`lC+zGq{)6Rtg<>IiP~dafMHV9h^CztN#5x}^61fk;0U}kl8|?T zgowUAM9`li32Gl7;5{_~4(%w$PL2|TzZp?jXd^x#lCaND2(?TNcpksd{j}2zB0B7pHK&xrAGxt{BEKO-%;-o%+d*MFJHS3hrdIDDeQHA0 z-(!J+sCpG8{f>gFQ{(a7!`O<1S{V4V5x)s+31oBgjDsA04yXrv-eV=hgYeGiyo>ll1BtSV9^l9tc zbE@9JrzU0_r0nX6<%@Wu5y5(kin=@=_Ze6{p$;yVtGj8bp>0PH^qnSySw9Y_u#Y zcqsmj8b}Xyussmq4ygI!o1?970c}~Yw6oUq_rn`8d(@ax0RC*p#TkF%bez&7ouCVs=dgI`?i(0Rr#AF= zb`4o?+V=9N?ZnKy+ErqstYK+04!l|#TIpn%+P`IakqfFD(WeQl?ZwtK;a*BA*lNYR zxW@YBI6{eAiTs#XCy}d_8tNY&>=2s0ZYSoLEZR~_aj5N9sEy9lvBU1tg8^~==~6&Y zrkZeIRZB|j5qB%m(R*ZSV6bbbqaB&f+&6gacb3*bX7IP*M1FbAs#KY&iWgaKs^mph znyPt`c)f81nN^tgtJ?AwtthuL!?9JBR#rH+tbCp|%1X?@d9fKTBCbQCVu^h;H#zdlqZ`vT5~q%DOxH*xcHNgWEUj)72mD6WNeX>*V)#cR#R-t<9*JZ_ zFeY=Rb0khASJaX1CxzHPh~Z2%n3eO*sFZB*C16{_(q&D{T7xV{*s@d%+e++}X<6$A z`-cZabCmwo{Ob~X`2EV{AcG}{JI7HDNRVS?NtPsnef)6Vi~>)JT8Z91reB?cm1Z>V@Zgeivqkw;rWuVpH?)A>b?}$k9#TrBP-x|9 zDVu5B2cZQ<5>p;{lrGkIY{6`(CK^6T>mR9Hpg^PWqk)BG&%syqTCCiFwc zGvaup8I7A4c&x4@1SuFr%nt&^$Xz03f-9Yf(u|Cdl;NJDG$R2o3r;f{SAjKve|wRd zq)s!EEL7W7En77wm1ZPqSyNSRRcS^Ntr}^jXn0678h2foF5;}*Q;Xg-Bf;C1W+Y** zG$RRQy|+j+8aFm5n*rYydee+_VM^Db(%SdZDhAHZ=COk`qjA3+fw@}tyPJkD%}5A# zrx{70JIzQ!nSpFsktIg}q#hY*Mv_n|&WLkjTyvxujXNCY;DPa>wjsP~d((`h3^`Yo zX+{#R=BXT!p)^&AIvkNDv_hKExEsT?a_u3i#v;>kbr9Bwmt z29PkJOwBor*^Sa3lNuqn*c$hhZ~Az9Hbc)%*E2%NHZ#E;=lQf#6p@;!GNI9X+{NnzUodhD%c|Ec$!hcb?PTS znns#Y!Q&Ff(u@k;RzD?4vS89orjMM;mX;LEHzAU6X2B60EQb!LI=f)A8zzbOF1Usx zc$(3~OUC%qj0zs$B)roGw?hhER}dr3s9^l=OhMhJfp$^Bd=n}=BVZZ}Iuu4Wc7U4; zPE%kxz9G$M;w^5?SejA6b)1wM5Q+{IJfeTgG^2ud3>XCt2#+b4jO`=Tt=e4_X-4Co z!}%?iN)!)#e?>0nI{N$8cCWLVc?IKh;O_oTaIy+kOa-S7`ogJM?lu6PQSbwTW2w0W zTQdM;7W{@0(!Nq%_h1+Q?le}KHSt;7?(AAKye>7+K0HLEqYB>Qq#FkCnRnA*ZTmoa zc#tsJTsl7bCJg1Q<+>rMHN$Jy0-R4=yV%D_^szS)w{C170A@nLe#BgVPA7I~VxWocpq|UAhiE(1B(CJd8V=fdlD2=qBt1xy3NR=S5n5Aanxu6?Wd#TAqJrbd zt+e5SecieBN8=m*+O_L|X>?)A49pU1(t@C4aGvkRg$z?4qx0Pg>S>{jxLqLg-6md5 zEk@ST^l4u^l%x$f{u(NXmZf`w^+MaA(GCGB2N z6yC9hh*Xvv z(2o_Z5}B11EITleLN-TOR>`shN1!4vUg@yxz%VM+0CACV70V6`q*N^r2A;9Oc?7$E_H8R|(JD+6-hS0Fqh3@D8mK`_(5xb!F;sbeh;N7-L zAp19D%>6S7WGj*P_9C=XAz@>nr|Gk5MA`NgCtHl904(E;5FMbfS zuHP(bG538ye6=WVjk?axO4?gs8I?WGQ;FBv2h~w6Zex~zw9DE}dXwENuf+XACrZ0N z4YC`Th_=D-brud3RrK# z{x#D6?08V?UFfpEtJAXY&m6s{y%25i9au@6w&34bqbc8?*>D(n!A9!X2fJ(xkk&Z8 zvrhP7%(_YXAot^-7+_a&i72q_PcpM+*x6sUEaGq({+Zp_Cz&;elI=<0Eo<7I6ai0D z8t}j2rmhrnv7;pa7X2t@HSQlV`S)?0RAoMtrJ-$XEltaz=z z{V(MJkB@nE@~p9$X8-0K;63ARCEN>mrosOQbAWfx@OUL)$AbChKQIUQ*RVZ2KNpQ< z#V(MaTbt>wAo>o3ClEuyRSOa`bY?D1zggBT{xEZ+6}+y#x{hwlHSzS|0 z_0qbgC03S|_*H=5Bk>)EAwA_vnTPbHO~^_zZ@)9XC?G*DoROZ)aL8F*v?*1)sCp?ro`AB`kg^=2Y$v}h({SDiwpUx4$Fllc)Ua^T7tHi;(nw)j z>f5RtT>0NFG%i!}YO9J8Vfl^V z&wNfyEADC|B8(i!I8klp&pq?Ze2dYUE-ooG%yKhmoa_@+)xU zW-}Mt0J{PkxxXgL%*AGKHZsuZtH89)N-1SA;mE^~-eB>%37h8a-bs4$X22|!^Ymm;x)-ZB6 zu6#7uK|IgJ)!?!5&d!%xK0*%6}1M_%g&%rlZwOHyISsHDehp6gU{JGf7C6tSO&&U#j6pSLK zJTPrnZrm#q{JGdVBxShsTx<>x%fvSIZSgJ71?otyHfmDK1#v9Tx_9`KNnjdR5r89#byY~#Xcl34;cOwEzaXh zm5a?7sHh|`%f)73YU7s%^3^9ms`-gDX|Aa|7hA#P=ZeV1=5mpXorU|a{0FS^Xy2oD zR3W|LLiDNAKW)n6BTJFzRsXb{7jQY0&t;U0J&xz=vVCXDx-H|s`HaM(eA^a5VdP@- z+VSLKrv;tJ#onTR^0X<+kiAL5crNx6>Zc@07W{+5x?z&*-UVlIgviCdDiM&2eGMn!oi?}~Qt+^Xh^`aRx`KB-P%>pvLD6ic zq`NZ$rm>)2VPsTQJqVnp8`BB(i%pq~c`(pl<(CLI$=(#**LCSg$*=D15E zNjWP-3LkPpTz6k2QSSzeqAc}5x4jif$`Mln-NrA83KKP{G)mC@DoB(V@I!2>i6m(M zpd4Cr9uXq#$Vk%YvT9$GRnwCYQ5QxMH7+QFR*D)i1h+?$w=qZ_%Tf=Fz;_}Ec|J&p zn2v>bZ!&!?_nAArB|+J`eCCFAY-mSO6G_;uBMJ*`#Ql+k?G=<8?3t5>xbnM^1YQ^- zP)&71q&*Z#S{A8R@UIbYg-g)t_*H>mih-fnWg^Coyk%^cjvRze;AOZ zu1+73c=zkks}>_U)O+AXvsZr11)6(uR&{!E;=@kxK>e#RtB#A$_Hh*FeXb)kP`{VE z>Qo!#GOhhuPg?t3Jgpte2$t3UM?1TC<{X{ne(_Faxj&rPxh(f*#_eR5`^OV@BFp{e zf}PEBf4N|1vfMA4xYJqg4^Q05EcX*9eU>cuJ0|UPmiq^jK3kUiGlf-jy=_1iwA?JG zK%BgjS?_okmCO8emhEWe|+vp zDegZn+hL0P73CwQxSv(A;}rLID|VFP{(R+5rMUmf*>Q^d%~d;@;(powBc-@+nYW`9 z_xI=ROp5#S^LHl2{h2*2?tuW^DAz z)b=TM3|&#n3>v6Y|aI2%J}zak@c zSE_D!nexHUzbR%VPZrgk`z9c+>Xte1_t;s5b`31L0p;%U)b>60yhEtEmotlB-zDuO zohko&_RTRXt?d1)*Iv2xYX6QNAs&K3RPfgxgMVkwuO@>}W(L2tOBzf%XF#*tVDN*| z;B5LZ!&SjZcE_dG>^qZJ?VM?>RbK(KsQ7R2&&+av)&BfKGMlp8vvr7vB=I zN=}hcjpvo!M&k{fhy! ztX;GHlO5y-`_`B>^He#W2ep5GKxx_MXNdN{9%fPTXYtRh{PQz(`~MKEGpuTy5%1i0 z9{YCS!mVRc=?w#`hq~I+`>gFA+^`WBVC}PJxVyJ=pSfjK^ULQ}R?e?-IxF{IGq-*I z+)AgtvZKATy{uzR*}T=QD3q%0$45#1y|_6%)!DV7e|7c1!0HX{-F>N!4RZ&2hlirf zd(MG>GUnsckeK%&_cvf-jDPEqO*?j<@4#v7@_aj@QyP zG~AoEKI+Y}#*G`lhn*RpJ=_pRIanBlICUEQk}cBfa@_OFBAx{vNkRj_srkx>Ao7WMabwzjYBYQnX3_Jpw|)^X?(s9YodA%R^7!T)VnkU3Yv zm|OoGv$9STt{C+RAk?i`_O#4w+uo34eHZ2v?K{l;)3;J2y!5}@_tgy|)CN~?=uh_# zQu+;bj8Xc(YhR98mmlQn|HKDv@rS>G4$#vpX38fpvOcnNF8(IgQ|>4ApTRM(|&{eJZl%cP_)fUvH#Vg@C? za;a`?sG}>*+vro4>_15{*Nk_G!E+d?d8wL)HkTlR;wl*eo00_BVF*(kA<8RL91%D4 zAVk}$=K9pqW%z{2$}WuyYi|>3fS>^{gQx0OHniduhJ{=W38n9k6vnnD-HhVq`Gj$> zLQbrv2T@2me>phdK@>02{UC}LYd(nL#mNUzCLM(NkXtA3$B?8MeGF-`kPo7`Vd6m) zACMkI@d5E6t$Yw=QcI>=3D3unqyc>lsd;#xA1ULG=Z^Ct@gPcg$x2f-Z%I6e5?-l0 z^_i3DA6Z=GN1N`ENcjzb=^TkO9z>aReTePqJ}PQ3HFyvuKsn<<6hBr!h%#x#sF6On zB>wo|($9gZ%N|4t!?7nHjF^)K%98Ryl(6#RBP)6kWztwS~F9d=Q1y#Dge) zR_+H;!tm-rlu7fm-Gb=YVgq}t2_kCoWv6CATYdV=&H%XnvNHhb`Lc7;odJUNsV&uW zExzn@GxC4g>Bh4!4CG@ZM&Co4w+4OLIjI-l6q%^Bz^E@r&}H+)#xufLvZ5D z&Je8pvNHs2e%U#x0K0Y}%DRrFne*t&PB&B9#x=j}48h7TJ44Xy%gzv-__8zmeJBct zjl+y_bWLkBGBB#!QnkxkTI!d!rK;;{p+;L%%UpC(;aF@{kAOu&_XyYubWnku7eSHw z7W7bo*ag)~(Ln{GS{oMXx1zGF>>+#|1`7-JgoVr)?%BC1>gn(yuVq5ZQusEvu^t8) zq~!t_Gl3PNJih#`u3Zc(i~_71q3OsILUy^5UDwc3U)$Dz$fp+2jI0nTUt`*uR#dmt zr54av#)7R6$yAS7+4o{QoUEI#B;X-6R2_c~O_b&!eDSytHz2jtSJy6rT*+F{!xgFe zrFG3s$c{mcacejZifEKHl%p{JYivX%ndEZ5nCXI6*EF@XL2Q-_TG!Hm&!u7Nvc@)R zlnYgh31&@8HS^Vi>IQn*C)>)VDK^==K-nwl>Qf6Eme!?Qb?U*H9`>DrUv3!ZPru zDK`>O3u*FBlkLg2RoEcm_XZK)`9uZ}oQEIG>Q6GQDHVB^bxBsyi!r;Q z6|Eg#;}pGBWVh7g$MX6*x|BYHA!~t*mu|96Y#AV%ZC zr*w0?==`LTR!I^vivA2;n(5ChYsxiHZ+6jJ7*Lv*HPkWnUIV(el~m0r!r#l$JL2zb z`n$TJrIvo=(vMd5XFmN|%l@2@B&(G)_Bl||J0M)tj50}9W)bH+(<)w`&p%$G)ZJ7w zE!Y;aw*}45E2lDs!}Dkn#NT!ikaD&pB2ad08Y9ZdlElr`^h6<}&(D_h0IDK|qR5mC zfh`l$K5MEiA^h`hdTFcpsvt#c8=GnuW58{cAErs^QnaN+E4fP5iB@r3d?MzveqI36 zviha)E4R}gB_*L7n@5)7RUwYT=aj`?3ge5#s9)Pa#${FD406UgpR+E^wu&Dffwi+E z<}snQvjBsM!+6ItrL#i>&J$0K_D?0<5Y(^=i+)QmD#+@SU?oM*OBk;U0?saa-2gH# z5_oRW&m>sdO5l0Cfw8v?hPnoi?&_o-;-k-7#YN*ijmg@yDZA*UB6}h0a;)N?34(>q z4Na+LeCA3MF!6n=tOkJQ!eHYk-AQ5mEXU(H#!qxG=FdtTIT%<6A21s~tE?>Z=lrk3hS{`Y)%aY29&F{9sgd{~c1An5Z%Rm=DS z(-VRXOU(#uSZW4f!%{Q;8kU;j*Ra%#zJ{e{@HH$oW3OQ;g`Nz|1&wX^&>W}cJQhb! zvWhRqM_L{&v9$8&NhvC(ru5s?m42Jr(r;5=`fX}VzfGO#x2ZM#_UcVAt+^Z)%HUM; zV!pDG0m|^os5F`Z%B^v3K!r8l4XCsxxB-q;;09D#6WxIQtw{>NT}$3A6yBXY$|_!i z6Ar(3&2O)zmSog$iXcWDD&2s9v|Bikk2|HPCa_t!31=xLwjOnW|M zloJ642v&5(-9*gLGuzd)ldbyEV&XCY(a!796R1JjAfvk-Tx4asQ#8oRt!y`0 zxiv;MaD%ME%5{@fSa|_tl~%r+tWtM51~AsHO}0Oq z)aMolcoh!w^z+NxS{i7}sBvz}?28n*3}8J)Qs8oc^;AiLD*#rtQKrC^0PCrf0y_Zf zDU>tqFc$g*DL+th5UKK*yTm2Ub~0KX89* zYRoDwDGBgsE2h)lm}#kBNDU7MLNXr98gRn}3nSCDs_sClqNRL!OT8qGOI0eCH{l{c z_y)HEsb~fv$tkbEBtW%gAqT+G3aI1&nj@h~4uE64asV6al~d`Ma|$5`Ks~QeasXA6 z3nd4@@m@KA6?o-T?T-nA*B$^TE1;4C=oAT6asVvy$^oo6ZWWK79#Dg5^wrDSni`jT zm-4!S&P|zhsl=B79N74c>eNgsKpoil(HBc2G_?cjz{Xz|-1w>g*6S(y$lh%HxDzJ% z)3e!P7F_@>WRnl6pD8S~XdRn;Rf8}g04O^-`W#sZ6S?I8Yp_Am;*GG%rsYUa$l&#sq1KS~wW(@;x@EL%0GpcG5O1{X z`Y&)uj;MPzIG52KW!PjCC2|FRtPHgBCG|^ED;nysC9EbTWz}_cEvafGO*FR|O}&OT zHqgqsmgD3$TRENHpj+i&)svQy@;vV%DT)-!)`;CE^?rTvi-v3X-4xz_6r5_7wXQ-n zavAnCtGITi;ZSK}fM@5|RJYcraKu11;Q)ej7%dk`9K8b85;|X?X?^m1kbpq_=F=I{ z2qGBTCqnIcsS4s|a#QvGqX)f;O4K?u=UJ0L(miV^) zSXPaFPP20mrsYe&?zo0|i78oD@oQej9=8de73|m_Xo>iEhnl2Folz#xj*)?xD zMtfdNYcY1M?O36P8oVlNaO%5Q3~BjdNS&aDRF35tXXbWPI>3v;&9b}(`4!@}JS&$w z0k=RF=kDdHhXq*RxS~#YVjh-~3m2k4;96LsMXCl{*3#CRQhxUJIc2pbTF;OPESutF z;T4M4;k~t94dt~#8dXw?L<*fhhDtsY5vo>_2^y|vCQImSy>3;iuDY!n!#qW#tY?1J zxq)U8J6dR@mK|lSsfG1R>szWDQ^;ayYN(Q%XPUeA7AJtGtc_jvhB1A20 z%Mc+1(6;c~?_mp9J+sIv&e_-F%pfINS?FmMP{YJnjf_*R;)?y;d}tZqUZ$6~)>UJz zfRqaCxuIz;LC!PRL+uWhnItsCD^2B^wHz}bHxqTntGaNLgqWzgxMl)PXlI60nag$2 zTOg!^M3!-+-U>01w`lYG57P^{Wb!T~2@ov~|l9L38T+pxpF9!G*M?35=~m9@5{SQ@zA&zy%vMKcz=Dz#u9=J*7l zsnt&c(bs5SkDhiU6_#3ksZk5L}NAfYTVx!ErGpWF(O% zROzu>$foM^TK{iR;OP+*@SpnqTU1!)czhsMg#Q!%e=%St7&B!+T z_Q1e4Y57t@pK>ry(H=A##f@_gLWotPKBgYAO}IxHz2Ct4O)(}JYf`i#-MYqz!G~7& zCm-l@*uSVLnU44mbJ`vFY}M6Uwz8w3|3B358W;s&aHzfexj?V|YdVzw;Anf~V2|Ih zru58<#Lk;BF4MKjJgQRz=lr|GP*=~W&rPxHZZi)3UKzNIN8XoB`B~ z>yqCw;F|NIms4d5y?sCG1CdA7p0N#4|FI&$|n(psyb9$|yS3t%(EZ_Kf7moLIUTs$?Z6;VVqU zA7Cz3vXWJ9gjOZXmjzZux@09+s1kfZ8ZSLNtLPVQwf6_dLS()+WDKAPYt+#>+oTLvx+szNe zka1kPIhp*6K}{i2UrXf0KGVzCH>btP>~HaCqK#%w&$@OLI;A+dS1=N@U-+%K=pl~^ z^quP2#mQ!)6kCUr3U>vlfb`0Q&3b6qfL>$K!jH(VM!ExEyu;MPvFrrh0#%g%Vj z;#!R5?espE#ea9wty|(TvW#T?CTOyLsJnjyD6%;PE()ygTu0B>W-SNo zEdc%N`R}>bl#gLzR`OYVZf_4AJJisZZXN6Zdn@@50>Orc&SUU9R`d~`DjVXr0CxhA zVHGcKvgkq%nve~3tVs1ZigYA7oYr6(pyYTv7d%7Ff1k(5B&|zq(xxcr4 zuseM$KFBC7c7teSpXvtD@H)*6qEWAeK-``c?MHSk80_EB+S}Dd(K4Mockq}6-D~^X z2D{g->l$qAI+{g^hyjj6W%BwGQ76J79aK<62FG~|&gBv}v=6~at-bAZF{GPyrB=6f zpu4WWk0`nZ2Zsl!8s@pMHN!*ogMLm8BOU9x`;+y`qSUHwtJl=Qm55x zi&irCctoi0LCK8dYJ%%`Av2RFFhaUW%6u0xi?r(OS~I*ZHPAjhMDaE%xs8*u>wTLB zYug9X!-Iqo(Wx%}RgGFgA)LZW^bZmu)iL5os3Tu^oaqwkde?Awmr(Vz;cQ;Qcym!ST@gG6 z0t(IL)I;jgML{h3Qw<00JW1O>V7{3syOFd2gYpoeHC3ibS|?OiaL_JFmQig6yqVbO z!kBL+F0qO?F0?d|6BdQGKe%E^y7?5D z++>1!=nl`brX1>h)|5ki&zedW?q^N8D^)`iqZ9uvhSkGYnnWetQYY~ zeWMt`Bt&wasX2&u4Wz#k}YdT`j4N(~@Sceq<$Qtl`jN zwWf77|06W5YWtm>RzF`V%v;ZCH5`0<$^E`(O_K*vxT58_o;7tf#JTlHA>JnS2YId&Vhc6I8c>&NFi|5KYMM~wxfvg{LUtd@Ipe(Qeo*);pQfvKi zTNsWjk}*JbE^&J*!q>JddZgAa+=SaHTqEkEy(2x`E(&@{CM4;`DGbgCp!VLn z;qv<`H2bq3dp zs8blw(me#5Xt6{=kW048wj*5yP4d5JS%(x|7PI@>H}EEpzsXfg`R|OP+hf$fG_y;F z<&2F0xWJj3YCTP|@OzP1r{x!IX9e15x(SL2$$T23@T0c3zk`+ug~XCX2%e%jG6-W@ z!b4-tU^kR+=~53V&otp;`n@}crTcN)edmJq!5UVGML9(6VPcn}CA!hGczf&YTHB7> z*gef{w(5nN*B?7X9SGwpqF)S>s3Kk&149BamlqqNDr!x44Kyo^IY%2FSUA|;!Q)|` z5kDek>$+5Q9b`>8wZpPbiE+NZiWRW}cw0XrP}a8y7FpwFbcqo0M3<|@o8+RM<0fnj z0_foe({0@yM^a3Q2v#kqzmHy)$C_Rehz@wDV|`cWa4-48D6Qt!7&Tl7(GjC#VQtlg zo5{T(aXiLrL=OO!M5ReQbBTc#wI54t3X`jaFpy8Al&HySKNEsB1twX1Ka ztC1{V>se{|Jg#PM|3>npi@%tD3lvqC!Tb;rJk*tlP;eElE4mSza>6l-x`&|rv9iV& zi2&)M4wkDeQ3E`}Or3fEl=dT}Hk{ySKY`BOU#y1QT(*%_k)TU45O@4-!)=Uiu9I)^nA3=?Mb1 z0TX=wFoUGtZ1WC;sQGR{y!1o?YadScZ@{?G(Zc5ie3}z4JxSnAZ?mPjBsiHZW2n2M zmmn}Oc7M666RMrU;IhT?K001{DueQYxSDFd3#6wpplWy+y5gm$GnlLk9sn&}?VZO0 zcZLgRhCP#fCTGXTOBT{n`Zs+T86T43EJh*189O)~N76`&okRv7G9uYPp2Lu8-X!No zD7M9oLG)ur6)!zkavMxH^9lvg%9V-!-s2Yz*Wj0?EdKIz1hWmtJ9FptoyM z7B9WhL^u1UX7SRiO#*I)9Ao08*O^F|PE#{60L4ph5J>N!6)(NTEGC|TF*=@j>Fp+g zx4**{v5A%uf*yo-KsW}li%u-EnJ+}IWgzeOA$d0%FMUQdC9@#!UE-yG4Zyj&n0V=1 zCW&Zk=0r1I`Ztq8bhvJcw*|%8?qj+--KckL-of=^J98*qy#_NRBLLnL*!GT&u7Pw{ zr$2uFE}YiUj(F+?7mTk9yZYqTCvF531d2r%;U+fcZ8tTL%@Y@kV&bPb@F14R6B&|u zS5!LR+N9p-Bs}r;H%vV6P_*yjMto6bi3tWfqf#?8E7?PnJ#1bt=h?&YD!cqvktlI* zWQeT)jwI`{a9R91$`EP0ZH`i3`D=qMQ@31(NIN)^w4=B*b>AS}eG($z$lU39;6@Ey0I@A^gXm7$v&a`1s?y zybuW$ktF;oKmtFN4iU2~l9=*tucL4bFAkeS1RWPi(AFS9bO;_I<@=GOd=eyul1xIR zJP=7rs>kiL5d^#yNx(gR0d(6?h!NvXiW0)JkMtQqpZ|slsfr}z%m5*DBT|SZUyLN= z9|1y)+mu3NZHgpoc`x&tyk;rPkmn*Xzfm(6NkbvJe;A2<(FU!%DV9K$v8^O(0Pj?65fg=;Yp8#9k^=zDN#cAzyakdX2uSDH7}Bo%ltw{ZXSn65;OWJ zw=Fu?Go)TNM-tPc#i$(75CK<367Y~)z{swm=YBu?(r&*&x9}6Ck;gsQk*u8U_wTYr>&91 zZ1Rgic5#R$cSaKNycV&8PU^)-{OgC6r(F5XAx6YbixRU}`-O~L9kU{d8GE#83s0~P zv14f@0Rt`pGA%nqM1Ld^zYh{2Q@leYZHXl5fQ`yqGBrGe|Lu|Ze^2u_63RnFJQGQT zeT*`Ji4a-nAu>LVB%>!##)u2_($k|fk|)9iAzeAdrp8F3<{#_!n@F7xk+Ct7jLQOL zjOe%TL=rUi%R$EMU~6N0BvHK{QFuLxPXw=MW|CZs;LM&f_0kN-&Z@v}%Wp7qNZsXm^KB!m*i%;te9@W@-@ z8Q+W$ztg+=QtZ>A6tV+TY3u6??w|8tA2i(9eAbM3{tW)&Ek4bm=fRPqkRBca&3o}} z_BHYNB!TWk`cWs|M@}C*&_(D!WNfp4I^KuwItF<-$aw(8pE9@EKOY~TA{g*5E{vzy zL2`Lk^>cQ-$V1_IC>?Y+kE(v#j!$>dx!*De(e2sQr^Vt^-9(gaOIqU_7J7DA*#B5g z^(C?R%s^805;j==Cb#BuUa^8BB?Xfot{+=-XuLR(lXyxRM88YaEQ?Qb5g`STKLZW) zU3s;ON|ILs!0DNLnL2W!w097hZe_x7HaPWU=>)y!)hsKjL zhLI{f4?mx@b0?JUIi1HIV5lSOjz1hbYv?OqSljgbjCf*tL(5@(sWyb0^}WNJH_d)O z=la%;_!tUhs`}2MG)nwq+(mVZPucdhrFYxVm3ZSgIcR}@VsjJy2da{el)I_o-kwG;ql#rnS#`Kt`dBoow2SzJ}a159!x9F50|dnWCu~F zty^ZUyTFc5V2oU+wd_g^2>Q+*slCz2$y66!y>tkgpUq0uAb5Q=>ShVh{MYQ%${-r` z+8<~>-ZRzbrNQxwRORBmQYYGING>^S)*&hG-8;37IvhU*^}34D<@=@Xu;V2mWbz^e zDD>jo)Z?}Y31vN>=itp|DfRO5)T=hyzh5dg&lJ@Q6{!g@@pu8l$s;bs@0|Lciugo@<6AWfd-cMens}kYs#hiGTt*SS zxUi>HIFqrLr%)bV_blpJiyoddBroVN>iXBL?J*bR-v$N;t8Szrp zB*gZf!f)&9c__oE2-ag7SN}rTAG&&8FoiJ^zP+Z{JiWH(?F^$;nKZ8c{E2lvCuWLn znuU(%1_+}^e{y}#1({+%R-}A;O3Ur;`C+D4uAp(t?diGAC)Xe}jp`93E`@&9-*Z-$S95vggR<|nfu8SY8J#ENByQD& zE|(7W+?nOog>6qL4v(dKp3d^>V&0etHYacFdE2Lp+#XPz?l`vR%u!xl(3s>{_U>1D zzCX$vO2C_*dE~1-cZ~8{4H}nguKjw?6QhiF&5RaAMm?Q%yxsHqD5E7YIwY6JpPqc=9&J(p&CRbq|On1;N0lHGF~9;;OCNXjC`4V~UP#qN0`+t4X(y?dJ7 z^P|!6F|-7rfoa`9cYkW28*^v&sXN^N+y(aTm`1?|#qsf6wRh1d~}aYt8!2nzm-mY?2{z(Y{4jnNke&Mu+&sfACS=);EQ?@@k^|jD zQp_*D&dBS-+E$hp5&w#K@>V17WCN=ZK}7_8FSfS0H^H~a0dRijUq;?pgrLmP)4iah zlL(*OVEBG8%v?#pjxva=Kp>oZv*CL*0fZ=V#K>~`!^Xlg%yOYQs`VZt$i70JsW6_< zJUVh0eBOA(SlApTkK9)T*&~k{3u#vwiILt>1lhL7jD^R-ydq`Odx;>s{BdL9X|!xc zKD`R0bte>m!e}kWrZJR4n}i_y64ZJ$awwI040ei78m+AnsI)N%vOAtKTKht%SfK{l z`lpT76^7|?apfH-$d)~0v|dZQ8mB}~<3j?P78$nFRw7~sbiE*Z^jV|zby|&uWf9fB z;W?xAD+9I}MyDl7kX`h=(F%Wsn=VMdfwULsJ~mq=vCvOdVpdf8}QNy`ezpjnVFt+CyH*;u?Ew)rwut})O=uNaH# zg<135YOyVg-Sn!l_(-9ti>%9E@|v-D2|AMED}$_1-IHE77N27XD5xw=p1Rn3AYM+R zl%pI*Y$^5O9me7tsRKKx7-1##>NkwV4>_pzYCFizdDB?@iZl-r>RM;RTtWWC5D06s z&H1IB#$q%qH)khVSNo2)jK!-HgmLK%_Np2k>1|{2wT=vWJ&obv9b@q$(ln^7V(KKQI=*L%Tysw835Wp|SWI zhgeXYV&4M!)I?jXB5Uj){K!~*5iLD!&SD)LWY>IbEZ&@Go0=+%6)-x)C&uDi5?wV4 zS^Ear7s&G?G6b+R!gYf&tSo~3vJw$NvV*QHw62xW6Hn@@~)qDC|WAQ(eL+Ym2tU-3;cgEst zXg%uE3^G@Lk1n1ZB2%nW;eP<}tx%bAg$ifX4?sOsre2$3EA*qW_=1!WnJ{6v9)Ch@ zQbL*<6fr5B^0TpcdrF8dph{Ig1bIh_ZN3}`N#^)I^$X0Omb*?}VW>fN)33(jvr|Ll zf+FNz_?xl#s?-p&0W-ocO%9x z?F$?i=$JdLBRIFZdm&xpJT}mZ3;tcfx#Q=zON;ZFuIQr@M3fd{$rOFRq%|Twh#0p?b`iV%#yaupa9vo;`VdMalTm@#U2j z6XsM_6ffxRDX#L*U>Vnckia(JU3W8)-xl-JZAL8d@YDpJQ2X_mbmn{C955PRr+&DQ zjWpQz@u|CbS)e-D(^=ZQs15hK*{-jl`c5;a7^>g%{}0v6oT|SiRKJ(2o?yhK#XB!# z^DC@@o?|=a2gGI5qrQOwd~D{9g#qAmMX>!i?f3kN#hyBP@B;7f(aQ{MP!Du}*UaAs zx<9~m|297Rz0e(R>B&psT=9RK`Fla}hq&Uq<63ck&`qX~*AzP)cK?x?I|>jm4uKh; zy_-<8-8>*G1?to_Tm0hZ?(x?0aqE*!`gR0iWSJp7A=p zITf$(Ifir}PP*TjIINr+{cF-aPM5V#-NooWl2m`g97y*5!=N}`(esUw+%$>TTlk3n zwwXB?s^7;)^snP{c;l)!2~T`4`y;jZ;|WF7;uY_cv40uQYU5Qo^zaT+`a5%E8I)e} zF)96394qY?hbyd$wBBJ3r7cUUH;%U~+`^m1Zq2!J-zByz561I)4JU_qX;H7&o)PP{ zNBG+1r}#8-s7yZgVhQsLU&4G6pJtEmI#4(7rBVHX#J$JRT*g=Gak>+QzRr>D zRxz?2#YeVZ;{4Pe8h-5VG#VzjE|D?N3c6_^@s{xgr8iBiKq0^ifp)OcYp*A z@dOWPN$|W3c-nClOu)034Nr9^9xj%zUUHBgOwJ#}egP6xbgK>0gUS2uM<5mA#uGlV z6Hg$KmP?`3`aF}}t3le=2B{g(l=pPt4fx>k%y>B&zU%{l0u_T}OIgv&$>o&<&|Hvm zEl2jL_2mEmE5~hYJmE&lX8^a(e3OmFbuDgOo(WK~`gjqsM7w2XtWO#^f)NI*fdLhQ z_2hWTdqlJ;)qc!MMw1uebTj*wP*P(HH-Q8Y71#)%Uh6rKqCLKoBc|)k*my z`BCZ3z=+D;fFIf4Rwva=BaB|+{VlErB+`-wq@{%>`$eG?HXy0ac3lz%q~Cx76??@7 z=(;2^AbFO76)TLVu0~qYfOPO+lO2Ap+QJO6yBZIgADF{+-&(f)V3n>4rBd$Q&d6d?R&)rZ`U=eMK zuR{`6vPK*&JP8a!^M0VYR--u)Dmq5{Iq*~ghO^TKj^aqt7f`97&qng>w1cP8`1LVJ zx$XE?Gi9H77@?Mm&+0L@Af8Yo#m7Ra6NbS{tWoQbs2$&1jTca=7X|deP_2A+hZ#G( zqo=W(zf5N%fC{mhLKrUW>F%?*vucOee*}S63v#Y})Q3N^f|5OdU4?@4928k(xpAIB zg-+y1|0SM~CU`CY(zAz~?3nXaZ~wasX?&-#!@~E>@kuTI2of`v`SzK@mIADGK!jMl z;6{0w?@&Jhc8>!~f$}on(S3ySFAfSv`2^p7)l_6OzIdV<2D`C7^otXGjYkq`AxMmE zh$r|7x0j$)&0Z$k8|@&RKvzbFzYZVN(oOJ*Z=V|81RH@0vDsp}4E+;d<7@(Ly8}otAk}vTWjlQ8JE(zJb~>n3Crv(lA(1zO%-HC7 zYNk7ZEsf$8BTV*%Zl-arX2O!4f7EgsjWx{pCU3w5ev{;Vz(M7=*rhf)z#O0tw z*tEv%jeP&%gxMf`=|dT=FzGk)kNFFkbiISZP5RCJ1MA2pj|0KSXMxtPZf3ldpXsAp zKIf8C5UP`@(QiFjdmVN0QA0Aa!oj1MXj(8$nJ()SJ1VT8m`en;SIO0 z;AG=0J{J8AB;Fcyy`MjJq}$@!f+1xevwrLfWMOPsJhcTOI2B55+Q(!k{8RR!oRgp; z9d7aoIUwf)dV+u%Zzg6AWj_K4D*121UwkIAt|xE|QO8cS&;sJWUn#5U0Qb+h35;^qfF^O5Zly5C1As=eNzmjacotRZXZF>(0jMc_d8xV>f zD0SROlclUuZ7>}wQZO2B5mRLi;z;dK?h>$ipuzZww*jyr2f&^Ld1mrIg$m&rhvlNgX+IP?3PcG7z?(2Jj1HLJ5 ze3^(aZHn;w6M&$SSxJ~U`A6tM8$00y7$#;-nvSdE2_#a}2c^_m6?*NKQ4Z`Sw9FMQ7GqA){d{G6C6jx#O=n#81s z(4^;JLHs3g#HfdWv;oeg@nm$QB&|QUj4|0c8m$VAmg6I*E!}kXgS+eSJS63g=8lTH zffcbhk+5p-3m%V|iM}{ZSt<^qDMa?vs(1p8v@HZ^$BZ@Ey9zW4WsoLTWm%oaJCI|> z`AM0>*qZ>0ie8GJTpq?QK3@y!xJnxNe?x{`7mDX6RUJww?u}22Fh)ikHz%@J0fo^} zYX5O2Yg?@**AfjPKB625Hq&!eGXibBeLaCCuq)MBS0`nTV=VxMxI9OA%8t4^seZ=-Ob~@4I^2pVZHYZJ(@+>lJ zLI$5D?m02z>ZHP9uOszAp4!*h8^AJ_KAqf+Y4Vz+tUF5$=uS?1rOl9{bGM-lx0JjrJO(dq58P_Le4JCD_yR*2z#cga&%G!%^1t^z8 zF=qTLDXTwGP9zF-{^nr70^b{wvhpc?9nu-2;KsP=`ecMfQ0g~W^0JH76ulo*Bw$Nh3=MrX2(yA5@v~VNzi+nZu79y10t5BmHLr zx<@9M?0p3t4@ne*03S8^wJ5~C>mFb0%uc{46PR49j1^81bk~vB%8MlBOL>W9C%Q zFdoN~r5yk@`$MVqB_{jhCCbtc(vwWpyk2~Jz9!H~=P4&7=MH7GEN%r5RI&v>-rhC} zcp>W8QhPB?5uTkLT|E838pm3ic877(Q3-%Dz_+l}WH)N~4%P6yiLMRh&h zOX_Ml=)wbAC}9{`j1oQfaUs%Lp}<-vS_Lk6FmzRyS=GMr5DPHu|L@r30H=uZbN zrDZ0|UZYHLw#E_x>q`O(&_EX+BVEXhmC2bSIEqgL5aLjricKQAbzmtoE=bPu5P+Y9 zmNyHGE=C3)GUT`5k4gCP^|T$wjJ3%gA6aMuVsh!fXF!P?6D@(hO;Bh^xyc?;u;x6E z6fq#m+clxU-jJNR4;u?WsQj`t8`NzQ)CSPJrdMb`O=pM1#7>#(`n4{2%u`c@7= zM`YQJ`?H6E02P>?X+wIQg!FxmjulVX91bJ z!D{OjHoXcPv6SEjsV(oPl+5AmCqO}EPs|GG**~R>-YcCH5i*tL8BEKPUy)gnrgtn{#Edu6JcUFVj95wWAKjRUn{k@3 zoesTv_A}Y#8&um+Y%m|E)stCxIcho%Rq&K5GcHL-+Z+fuc)R4CAw9OwmRJrj4 zlMiYp1Ex9qo2+xAgvsNBihTHx4=qv1x}4m%rRR>|#{(9?pwa{J!`S3_0%b3#^Z`IA zIskW&6)1H3(*=rnx};T1_qUPloD4{)Y=+0SojauMY$UjFwoV@!WX7H8Sw0$C@8=ek z98cikR6PgID>nE*ldZZ^b-XmFIJLX2ryXbNy%Mtz(=!LMoj`z!Y{3s>aWw>Og-VF- zU_StfGdC$DXb2Khb6q#i(`b%pT!7H&llmnW7`uT66|3{Yg6Qm01R^lwlzv6~(3^&n z5HO2TI-U%s3A!EvrCvM8WEWkfU`m0C&GY9~G+Q0gTsHN?ih2h0rvew_hp|)Q35Q#u z5;g4RgH5(*vl@z*Bc-P2*h%}APHF`fEj?{ry*TSHtz^cwelkX22|%IJclxk`3of10 z-2+d;wtm8=c@~HW&sT{DRlkWz{|+RoT^loQ?k7g0_b4^Y-*HR7tU?;AzUS1w`SSz4 zIKsHKUwRHL9}YrXF=Ky#bt7m&!Bik9SQfKSgDIfl^m z!2K!#J{rj&H?mP}&Tp1W)KxgNfwI=)aI<*qA4UD3LrFAvnQx?WD&L15NEsa>JR+fo%@bV(Ye=fxYooISWVD&8Nj+@n#qR$OHIk^G+2B>p4!vVzA!MgBZw9D zQ<-vkzZGCm>1XicI%R(P~nLmRJx#CkdGT!{D%qfS^Ao(dMDstwTOc6OV0`bS> zx|La<%@h;%97^sA94C{XlgZ~$vL2V8&lKbG!$^&@aFQ2*ZZVYFGTme!>GrY1Nt$ue zI~@)T`oa@4e#n$-(l>wv75yf(ael}gRYr~TD*-4c{-0D6Ah49NzIZZk(x3dT$JS$9 zzCoEc9kqyYxv3{W@x=;33%Fl&s7G>JJZt0@r#x0bc{ej)GFnhnQ^OjcO47n+Bd@ z;ydtUB8MN*jlzOC{wjLx;;hVa_CBB?UK>MO;Nq-!3Qa_=h-(akXoB1?u~NVrqlQCT~+V ztR3#HSoqH9J~n^=NPNsn0r*)Kf7Jjmx+6DLzVNCCN~ z>D|ltSrL=!W1-Xw0B^Mhk0N6oCP?tf+c65i@3L?yW?$ez4EhhW4e-0Hn(2h!9FA2( zJYhv@RsgF_Gq62XSa}*XR-qv>wM#8bIqeFvld=&fL(BOfpdnrj_)+(WPR>^Mh?Hkl z9+{n*oi%_4&TCFh^@BLT%z^?@DTZ23wofXtLK7TAsb2qUfnDJ-8r%bx|{YtgjDWD^s&I zGuCIzklXhF3-JjShAfoUXN!>ALd5ds;$Cnc43|$lwViENFFE)w%Py-SvAH6<^@#HO% z*=b0|F;F}i$;oKgWl-p(CX;=5i&{u8*G9rEL^lQkQv*F{9UzsHGlpNMSPM*uN#YQ0 zA??6^bIyJT($(4*L2@oBw&WZN*8S+Kf7XFol|xo0bjdTlPGXP2K!u-Q&~ep z+CPYjyE7g0D6){Eny<|%JAlgF$SL%oIemtZhjYSrms55y5qEMTt%@ixMk|90H#rA4 zQH6e`3>JdU@hzBuYfy&!bZbu8G~zM{fsV?Tb3=~s-yx&1mI={iH*w z>kq@a;x;w5PtbFvjK0=`6*o*A0OTV2`Wpfa<%@(3!s{)g!7k1%+n)@_htNqplNe7O zmvjvRo#Xu`W49~3@MxMG-6dY~eSg^_*5zUmTM96!^vdFpF@0UGh-~ga1~p<|mMcc= zm6Rq|x0mO73utwFy-ssj_l8_CT0cp|9+c?m4LHafbA|DL%w>cQ=9_ax&*`@wg^z3N zt#<#CaZCWLHMzG2wjNo}>P)4xYBaFav z8PdACkCQ9Si#=I+)VpdZnXWO(^h-SAzG0h6$H8?i9F6cYuJMS)>EDTjDmq&OWf`t%>bu$QphWm-Znqj*Vd`;ey;aq4Wx>FOEfXjXxe3x=Di#=x>G6_ zEX4D2Nh?*fu0T7!fVU7cL$A7|xxte)jCjwaJW_5*mW>{9kMn5C5;i+r;Sn~zoT!UB zdNEoZFNdouJ;ERT8p`dBvRkC(y!C|F>75ehg9hH|qJP>5ccjnR$fj zQ%KLd7ZR@n+bpony9a;Vto|Ul^&fZPkJ~{>rEGUP{>Z-re>{R8bewL>k5w@OmT6tN z+nYa(hOT!YMg5nLd~q{-Q$tW-=djr(GwzWs=otVNMGMyVIu6Oy_rZ;IzT_bW;gW!` zM`BTjA1o*12^mu9Rv_~skeQ{CIZY!|HUDUgsMviiR2~zY*!$9o4YJC7;6e<3!w=44 zXmP#KH=&Fc*OegU_L7P5cUU(14yvW_o!LlMtJEufqDP!eX<_5gCZFgLmvO3ioa8E> z80ddRTAZ~*;s}}K;;M^s5`5zG6wz3Af=weGnDM#KGl&S6fgt`n7;NLFL4AO( z6M9{Ggvq|UPcmt|$-{;xFD;)hG)@N!RP5xDdWyR|Z^THN;x>b% zK-(xmdz8|`=CUjD#ERl)q9WwOvF*PyuV5JYyapiR9*^zdgL)1>-KIQmG5HfF6ES3C ze^s8?*v|otvGe1pnU(|VA}BQCk0!f*yK1I?+RYRQ)^#imw7YhJU*x3?8@)nSzhp_E zy#u#9JMmKgH+ks;Xil2~GGp}KPTUMFTLI`WD3$XklimKHYL)}-W`RQ?2q$q@Lw7eG zXTBsqZ4hseqW}e!ea>!>OY+4kaRo?DNBAZAQxBoua1BSVJ)Y1b?f(SyUIuzYA5!Si z^?kJwgu{-z?lq?wRE8FG8R+|JAe z8dUsL8}Hktq5hQvMS=Tq)167n76A3PqfB=E!^$A%XrTC0u^83x++;7Dad-y=CkymY z=fnAFBY4N&0#Jy{Yc^gF=U41Y_W2k{>LmG*{Aq`N0Au?IY073FlQ!$YtrNz&;|W(n z<1r}J*k-b{M-;9-8dv^uWf-VC^3#TKP$vKpVzF_I?({qIODhP}MvxS!Z{*iZCs4bQ zra;{(L0v^@VH4L|av<0SDq~CH3G%Ce)dDD0HqT_=Xvi%MIj&8I0sdRQbR~TNJcvQo zSPl4Z`NEZyiklM(@ZI?bO!*jqk3^aR{DcBA@-|Ug7~m%sh>>>*sBspg+aFl9L#ed+ zCcE@eW#e{`ZhhCW^w2bo9^Jhi^wteCE-a9Mp8-6G!C!5_FDwv%-_L;*!_2CJqG7A> z@cb7XK6*(bZiZgc{AR$n3-DPOE5!TBf7kX(advG>JC^h<5$}vzy@!{Ul;GUHAZ;%` zNMv1$Ju#S+jng)JT|s#z4HDx)qDMyEC9f|K4~EVJRax)9r1hRiX<^oTgS6gtpfc7k zp5Q0cilEd3?Ix>zT*05E;peX`ED6xT*OLY5{rMLXo&^k4t_eSk{Ue^>Xn{%zQ0R;R z0t_@9CpzJfuHX8u1^BSXa|LOI+zP)0CRBL#cx{Ex6^t2AR+x)xQ+QlfWS@4(7Z^AX zMv^kU7o_Peq_i;8dr_L+$wX~is7_B`DiEitmmxXM9%?28lcCh21#nC}AuTeeL^lBj zggI@&`HR}S7s}IWamf)UXx|pV&viE-As%z7B?A1rpPV$NlverAall@TC!1}DqLomn zY@x|+Qh<40(SXs6FJ~TMv_BQ34dzDs6~Lg<7f;Ye`%{7V;(-VE*rd_^R8ZgWEufo% zBxSU}NTXduX^ZS2tX~Vnss1UH-is(K3K-NOTE9tSzMQD;$Del>h%^6tC5d185hMMw z{(|%-=NTFeazcOUPXZOj0zZ7*OpVu|St!)Ga*@eycv6kcc5Ehkf|%L(+uJYqPaDWv zbpWotQPCetbgRDHf7DnSiVg$G^|baY{YQ+aK!sz75Da}<`_=v<%87afsH){(?=RMQ zuTq-34R^?f`i@8uUgCbEe^wE(^WrK~XvD>v{Y5m!K12%}1$W9u-k+$B=d7`k70>^_ z)jzX{d{-w@hHy{R+x>+n>YpIT*)xl&rQ&Uyu^lGMe_9!d{mdeIKQ|K5_3s=YjpSw^ zK}9dek36otbAT|Cmq3zT|IPu`bqT%rsse6LDFe8BfG~iulor-f_Y4r-u^v>$&Woq+ zxD8M(f?%B`*a@ z#<@Diyq5M#;=hp6+W8GPuAReK|K@;#(d3@oL0LqIlY_c*K*0#2{v?<>uPMGYAU%&} z;{LenK*ys!_{<|+p(Bs++XI9nzY?^(^MUNfGB^;*5ka#Of4rssAhXhcoQpp`0A((+ zN!^>_((0^Qga;rH0yZ#^?Euy_ zQ0m}Llchf|n=I!m-DKitGe@y$0E9RcPvk?19maf8VFmvV#zJJs zMbxCfgWmM!4TVo{7FO_gGtZI4mTtr)NZKid6;r7F9w3@n1E@I0Qwt~ZZ)bdLlVmXF zX@wIHrY~psuy>~zO(Cte3q9`iLNOSXN)ngFDQ6Ul_c&(~CCpOJEEJY0BX(!pr}s2u~2mSJ17ld z(j5zqm$|Qy?U;a=HEMjPHC zAf?OLC&xsyrBH;5f6bZFY$Ai%5$;_mhLEASD1cblc(SK!U?8)%cO;JBS0Z8dr#H|b>`sx4u z%t9BD+tm4k#aQ#OBsnedg2BQPcR6Xi)P;k^I8=Klq=i}HKL?9(Xg*N`OD(KT0`2l{ z#HzvGA!Lm&5Y1tw7Y`Oz`W2;zTj?c(g_RZ}Zdt5(w3V(IEUdJSNFnp%+QDLe41&hk zh4C~Aj)mP>P^!1vWG}v~EchZl2|7kZe_Pi=e6F#nv#qaJ+}pdP2yaBw8geCoAx>+A z72A{HB}L+$=(~|2cS(SM(5qd|YHNxn@sDD@PLPYQFChr%(xNOMeS7IAO2rqM$mNXX zqfG68H>CA_@k(cYtIFgXFFTx<{cbhf3aV)6q>yp|H(Bgxf8!^Y7_@&S=>l>(RQaVe*0 z;(jT;_*g7LqJ8*|bz7%jQm!j19=$&fMAj2UE>f>A5@X1xlos0NTZ_aPl76p)CdVYqnev0-fD$?UHn3kr;TU=`vM8`h+uTy{$-G(D;Kab! zU+)apr_OFG5|=;zPFZ^CqjNQm@15OVBnF^On%WZTnYlwUcv@#c_vpe+6x#MFJHN9i zYdB&0gU;0A{`}cpMOi~AL&kknjZn|p-Le|RoJy6XchWj=?bi9>#e0e}htq^|=>5b4 zi}yY(H0~|R^ibkaJdui0^|YV%z9Qj{Io3tSewMz+dVi6)!LKxKGv zXgZH4PC#fMV^^-F5$c)I_}8e}Z|&dPHeB(cV0=`hL+ZujWcWU@mp6~jlX_&t)GSDtgf2bI(1fa zYhzsscC6#Xq?kJtEs8As=B4Vai&rvGSOe#T-(A7 zmbp|iddtCRPL+RVWG+rh{Y=halVtF32ZNgW=BlX;1f!H*JCpxyuxx6q>(CH6`28OI zPK`ppKaStmtq{MztkM%$_Pdl$dGL*^&++>$ln1~6tn#F=>=aC0oKG6d_Nw1ASoRS0 zdlt*a*J#-(R2IMELm@2dV(~j(jAUcv?|2|V@X2P`G#x&ACi38SoVu_H7mD9un~Yv3 zqx65^_dyql-_OMFljZNL@H?-Mmt}8IzZbLY>(%dLSoR(2_i-%yVfFh2mi@f?eSem{ zQ~iD*%l=sXelW}a9>1Tn7IN{snJ8r)!m_i~@2xDmQ2qXMGRq#N{@4MuD%Bs$`?2h5 z^~dhPEW1hl@!j4m_c8o2((}DxR5#74uVD$pndd9RsIPAJXy(7>(680}SD%;QFv#fqvukTgk+Hw$CuE%7gkKAJndyS_Ud%TEYm?sK{MPE` z*{##-`2YO1_g*@B8) zs$@4wHl$4NpUQlvgmaCo;w06cifMo5d(lz2zM*jsw)>x{I5yQ*(aG=sp^l3qu>H@K z9G505)o^HQQ$s^VNy&^>IpMkc=cKyY+M20V)rYp$)X&CYlmvYuEWFlVJF~i$r>7=~ zHqJB^y>V7c)2tRw%#p-A)#u9^8i`+RL)8&%K!PYaNOkbCsYf(bH8;05*EX<1Nwj;v zoP?D&bAj#!)q^r4gOR zKfAuVmSsqCX0}3KEJ|Da_0y(FLzh_w>$Y!hsI6_P!B1;b)vV@P$DAt)`)7%1cSpFk zGsEZGYAh}Fl#Xe#f2Iqgrdia(YpX*GmSL&F`@V(;mN(yBw#8o-v+1Q|xvIfgiG_Yh z*O1Mi?N}i>acX@_Gt*;Q%Kr-h?;D|xVF;I(0pT*nis1}#<>wvPtxTEdXhdO7Tpx55 zl*SV}MxdjYXv4Bc3M7~6Walt3EZd1Nb{PJM9BJzj!j11nv^hdR8TLvoEJ0eTIhgrQ z3TKW@(0@_Du5bY}s+te|FG{G-3B!jZ)YkkLWt=5th=Dq6&HWz@(hoX#IELVmT9(T} zjgOby8h>?^a}2s+Kl1b;J7SvJBmf>?~rA$2atb|*KRYOKSCD{Ez=ZQCQ`2qEp%F>Lg5`PwAgl8tZ9zFwPAJ* zTtJc5PSaNo&t5j^+&T}xVu4-t- z%vc)2t*n9*8fVRHsr8rQI)^CTU(eqTa%&Cw4{49_bU5SCmUJ;Lvl(L>TA45OZ1!V6 zt|E{dR zM3iOs-v6$&T~Zo#+i=HESreZ`_})t|pmd{%<#BUub2EIl@ZGCcY-pMRPf%6O5w7Oi zJis0xASu+IN*n5D`fIU+tZ#O#k7Q!wp$;RFX^=u&LcL1T;%oR6qj)8TO>KTGoD?;D zKQVJoZ9{{m>kWmT7~uez%`2Is1@a_RF;|N6XoQF|bygkE?{np+R20bzOO$HmOI`)e z4E3B*e|HkN3~;AN76Wx^Q=@-sV@<0}*DiMZzf!h1+LPseCZ zn}P-${D|&p4pKUCI`FV%*d?Uj!Wv|ws>FnL4=tx`PjXO?vexNyc$RR1Wy<^bWuYyw z8BWP?wMtAt7PWujb_@&(wNd_|B9b-#2; ztgfzs3j8>xpRAIeoJ$*LJ8GOG$+^0`BFpmHjAS`kW1lRi`(>FZr)!)a!mvtJNV~0E z85}hpBw5o+;LXAA28g`UQXr#;+jFJ@3W@f-Nr@y1iF!QL{xzjJh^eX}wAM&Wb0tbP z>9V%{Y&PHz=K$PHe4Iu>yC*k-W)Hg{>7g)-`JOAXm8E56xV2TtH6`3MP2AqpN~&BE zn*G(3o~TD*nT`&WqG~_U&7^gD3)Ajdl}9W;OJ!YaXHurDP@+iAR>@^bR?W0p-m!9Y z3rmW0nRp~*-c05@V@R0Jx<|_iT)UJxm$Fu={2uCEwx@bi=cckD^+s}(dY7qA=&X13 zP`lokBd1qKXsuE~5Q_q-vo^&tL2Q~)5682AcI#{mNld%?;65jwv#V+jVTp1PZ=0W^ zDEx5J&{(=^2q~AdCc2-v^i$MwM`=#UkVCNs#95wf5H*AS*hcJNKx8$&IOZou4%uVt zXM%-2QH5vFT)#hqgo>T12T?v-y6`9$X|dk(?$?BwcqKLFVl!D+!r; zrR8y>&|G^MMJgP@wOk&iC0a^%ELm_;IRBRV8MS1HOr3Y>GdYo0PQ)KZVqc-wH?rSq z$G$@h88ly;*^{n=%11_C|3Sm;R>D%FwWg}2O0k!Lh*~-EqGD8R|w8VKV^ze;Sp_BWN@15m=WO(7iOtWzR_(| zR*qZHKO(S=YN5Pf1l#24wpHFCdD13Zxii8~D9SmByI<5I7mn#kdkZzGte>KTFi(e< zt>7eHR@qh=Pol%s@Drb!dc+vDa959B2Ufk}|X9P)5NM2kc`jPE8kS`&=prd`Y7wO67Pd6SV1dB^Wqn zvs8KPrH@P}2|Ceo)DgcbTk62zN=H3#%w7`tIJ=aS=scSuPE=h6D@-|+PSGV}yH7bJ z{p6NZ8X`%KMtXPz&(hZ4<5@n^MzMYdf(~3~Qj+BmRZT}_?sXJIJX+*}YHd(jHLaRP zFMV7yKyySip*!PJH&4f5v1-^! zltUldr>Z4lX$hsnlg3RYN1m<^OlH2*LL^5X-KaE%EqfC|3Bp68A;EED5+X2pL=TMv zXuc3o6=o%zR)^jDVfIPCS5ZYlZ~!*8gP*7Jz`a)IR+uMC5RY?6uY>2oZ3>G0BqGf~ zup^#Y7v|wnK?bEn!Yr@iFZ7PgmBC>{J0nUA9i&Uki7z=ys4uciAyr3wAUp?-ftJPw zbW>SLMCM>(ujPppma}AxjjOF$Xaq$Ckq`@1KdlOG3)@RAlbd+5c2t*^!`az_z1TDW z1?MhHl@-fVwiGd-Bmt|;v5{({=MbesHB3YvZYjOWDGiI#X|*g>P62v*IGJeNBy!RO zLIc!5TS_E2B_t~3;IqdUqB)x6n2^dvwr7I;cfvQ6z3?h?U!>j`W7hiGA%^;bu(i;Z zFNeR$Uq8d1I@EYlQN`1BW0ckLzf<)}%+LSUE8g;H{BOM@$z{Gr#@Vevezu6#zOOq7 zDMbKl?|5O9|D|9g1s8Yu)nV9%XH}1d5iLn!;hc*Gjdv>*bL$C3Dfq^(Sjy-^%%!0V zX6l-u%aR*#&O<{Ph8&z5&>Ghr8Gwxq9TtcaFr~amBOeD3r*>_FD7Wx%2wH;HUzBRW zc9-0#$j5ANn4mQ`*0ng?<06rVCX~QK?v~DzOIdQHs_#qk;SlB8 z;F1>7tK{0&+UZrU-K=GlAI>PiZ-+hujo%C?__@(&>bdRvu#@?${Sfuv_&c?HrPpaEgt$$ zYw<^y6iC=-g|iad9c11sITr8RB2_KY&eQPNwHPN7e;$5Jks|y)Vj=(&WAre>$SN zIRCtrTybY$7Ri__k{y9pkmH>zQgw}Uynm4?6tXwm=eaS-Xmgt@A~p7zB(&$1BWt}U z$)GBd#;as`9U6+%DW3C_L)p}LZE4A-Nk3 z?_V5=bUKUFs|@ezkW{Sc&EeM=o-hog=bv@X&JJF7da*E@600D0Fm*Xu5Z~$j6aO z7~bSvXaCKCOBmkbz1@+as-d zOChP!Voy%=eicfQX1hGmoBdCYiDuPGByPJa5%2vUYcaa`I^J z3Y&uUg>pcHwtTdAi;JdQ#-Obj9X2RZzdm=g_Yp@C?GXm)qS4-6Hp%wdfV5_`H(|A| zHIbAD7R2?Vy+hqZ-BcS#dk?Zna(h9ypHb|p(P52MN|t!dXzyIRjP1??Y3pe3@sUVW zY};t>sz@}N+io50y(tonOyJJZ-sjykUHf}Sd%v(rHXtN!`{=OYnIt_j+HqZX%GU9oJ3>TLXT5j4cb*VU`#tXTLF%#+@1H|b37?Zo zJkN*lpsu*Q#Ip|D2+UDxi3$#7p3Na$hkD@`<=*q9rlI?FP%k*j^RSzL8TGe|j`H3p z3eor@cFKAePV(o4_KGsTLYwD(F+`RyRz8(nFwgsK6e_8D(L8VdCAxD6nS3A6(m*D$ zW}atfNKL8K`gz`cLrS3#-zE~Z-SdDOlQQD9vEB1-k|EZ(iNlv+nR|0ct_p_qPV0>xOt{l@n}D02awH{b(>LJ)eL8t5U*ptCn5T#dU}-~F+zvd9>K`% zUsx?xUb37YE<%53us57hRn9PsIS6R1wa=;G0A20o!q-6ITXiHOoM1L0q?vN3l!~NPippcd(Z#`&)Aha* z>XNI-feOthAxtX?t>#*YS6(93Vw^GqCnTwoqT6yJm6_f+3zyr~&0Ad&?6n$NOUtJF z;eHfQXg^~)6|2FO-2U=RV^9+FnYCfH9&(h*=YrF#jcrY*N8e~-j^sx z)K;OI(xG3F#(eL(1y(i8C~b{|3kYspw2G2K=WhChppp_@V7an`LfLgt$3)8RMo__C zsz_A8#*R{5*eNY}eo!boS<>I@T!5k+qVU3lhj|U$h`MUPi#Ro`pc=SvRxQA5Kz<9Z zp=k6Rb(@hBW!3&PEwpL~#*1K*B*|rxE-XPIN&go@|6>IG{x5;vkGtZI!N7S}MET2k zEO;qq3s*v!<8Y?Bc4o^gJV)akWv-9Fn2rS8{TEh%K=c1G^UV72TGJNrzr%e=6z=v7 z5El~vO)r|O7i zq}zwTJYDv}{oK_Orzf(xWSw*z2q*Gk#e=8@hXFM-@nx_*KgyD7R4S7h#36Qg;E^CB z0E3@#%bCKyYc9xDGHggkEb2i;&?7~SXzSH1@J_4;33J zutemE6j~xEk%CLUiByTmYXHFn$dFpDP!mB34>lQ!rHZ5FrqX$nyLXnCQ6i6m9Dslb zJ2P80%sWRePNip8JZ|GUBuMmji##;n`sXlm>7F4=(Oo%SGQ)eNNRk_ygyA{f`|M&g z4WOXUyVFkNvlAWx^8PB)_*5n{7J3WU@TIn%-%z^PyT48pGYb;;@*e3(lsrdzj~9v3 zCpgx7zWq1m9&#|3c>m={lRm);?=vBZ+$T6GbT>ghx&yplioB}lBdx}pjW?OFYZE;S z-bv4CZZ{#h{2IKYMJ~~%!W9BXY`rs887Z~{a6&I}lJw?rx#3yk-WbsCVTIxOI0bd! zt&V+HF)LVxcJJ$o@R|}!bnI6b(ns%lP(kK>>Tgg3mQu$bTSAKGW!iR5ntD8*?WR9B z(VwN2c!+Spaos)bl*S4^j3`DNf`nws8b$I&QCGPSsgA%&Mr~<>9A$7*!9msj6PD{ z(-2x8lZ3!54wx;$d43s1m!o5n^mM2s=aFa>Nf*W>Y0~TvogAmEQ3Tx+lc2Ssg5<$% z6d@nPBxHA(5S#@^k&t;pELPS&$BCC61`tKagqVap>=L3P2%?B+iAlt`!<~BAPfSHa z>$sStoEt7BdV{QuNyO()5&T>~3QqUN#Qv}&95|^kfhZDo#w1~@Qv%;iL}7277>mJr zk8~)&oi?;Li6WvnCK1PliQrqEC^D*JlJQ1F8Q3{Rk+Lu*DU<)e!NOt3o@S4;V&c8l z=KUYc8=GU2Va(O_{|{!2Cu5S)Zp--nx#G*1L_A=N*z+vmJ1LefG31XLC3*ociUpO& z#QU!{?>!AhjWIFbVKe`op{O$^{*(Wtf!WhQv?3P1o-A@C8U6; zjs0#+0(yi19b^}+`iZB+Vy-WQaNpC&F)Stt`_AV8>H71I9ZiXvm_)3JBw`QCmzae7 zAcRoI-h(@5MNGVBwd+9xyrUY>RWUKY#b$0tQby@y55^>+e?V7Xhh9bz@P14J{v0kK zDoClP#?lX7vn8ld&?p*=j*0()3p7N;f6qReLt+xK))t{cQ=_P`Bqsj9h4GKt24}@2 z;HZTfBRfw5K$3rOznSKEFIz#TZ9e| zj?xzU$0T4zhlWWXz(o--Hzoo93K6j9w*Fg8GQ5k!l!)5Ym&GKZFI+;@mVO{639kwX zJlIn{1dB&UqFK|fm}DGyG{=c#IODOSw0GL_SS)spEknj@M`1rMCicJC?CFqukE?)& zm?X^W)F9#TNXL&y(V{CR84tN+=s5H!GFHYUW7HB`4?A!@iin$I60yP-VaIz%Guc;T z67i*5gg(xXqQ@^W32EulP>~*c9-@Yx9!s~l)fV9l?2n>GO-wQdb!#;o7XhM(SQL|p ze?$@yb*w!zCK>NWk`eX5?)sQyOtT_D6?H^^J|-Dk+%ooTRo}-XBI_8fhTQ?9Hpjp- zVzJy~Y#EL_8d0q3pqNCw;1;oGq}pNXjPqR9_23EBVn5V-JuGu;)6BBbc- zSgiLFmykW3u+_xGe|H%FJ-NyQG0ABEvlA#DPq3$RwliW9@_1w+(cR@+V-hprFHT*4 z&%^UdOft@O$q*siQH<)>m;`+55@1JrM-ejQoLDTk^{-B(gpl9cZPvyl>EQ^H_B_s8 zG0CAXeIr_3PKP{};qTo>hHv;N{%2_={ysM$W5Dpy{O|HI{QZuRQG~zgq6Xdmj`aOw-%)8$-&JThK?g8o$aQ6)_ilQX6DT1mU>Bs)ng71 z%NQ#5y$tIF!@9NNl^p<*A&vTk(p3kkN?>YkEq zJ?N~SGoM@Vi`mvohC^YMGgR_5Io2-CF)UbF3;rm_`b}3bESr2J4UK!P$2uoL;TM)q zzGa4dtG(70k@AV|tHnO-vu;X|INPDL&X%||&w4n)9K>6~&fy4}(!4&%vtCM&h}bzD zp-(#Jb@|q=@SJu4lg{`}zV%IlY+akB2t(4DZY{9RGR>lp8sg+$=eTl!wZ?Sopo2wq zrX2&UYs1)-(b=uea?wERF4HV@OF|aM+slCd-GSC~ra2@mm!m?b6r&7X2On&6qet!2rw zq1=%~n$2nZSm!0n_I78n2bb;pSnCxVcd(FVbK*$rdd0>Oh+}^_5C(DQNNc;3jSL9l zpW;&%`u-^E1!o==Y@-F;I@)?KSpq|XRIrTBaNZc}Yn8zc7E%149%G%FVis^*ZK|^a z+&tD=og#6ybGV?tY@BsXip0#F#ew}<(i$%wP-IJ<;0gWa0X1724{HO6%EFX}!e3 z4mQw2zMO1*m>Oa^&QbBr{jFtb4i++)z^=n{2U-`VIclj7>$Qk84z_Mcb0{iugv?bB zOtl_Oa{#T`*pfEaSg)ozs;aZdSGu9_@>=UdXBKr>t?Tk(t@XXLwrVS)Gh9+-jyi1AdG4HPUD{77Ec2+t zLY?QzM(a9P9(~xSv;5R(-PKPvAhEH}3Urnmo2+L;v#9Nl&UEi#*1P?rttdVrO?128 z`r66IaoDBVoYrielHt(GKCIGNPHC}LWjJbVXR+J*`xfh}$ZYHd+s;|m9g*|c7V+t9 z>*>%uAzGbrxb>E^IyQiIb-p~@`o_t|J}l8%eSL(rBGaK2WeJh=$RDgVI*WZ+p;=rq z*Sb1W4h#CQK~tZbYdxDO$7fBot9V13^>(JyD8rw1MqfU4p7m9xTzSyo74j~W7Pf1i zbz+ud(d>H5N$0w6zO_0_awD5@<+7``C172hrM4!a+3fbbdVzI&ST^(={t}dy`Pl;N zaV^u{`UTmO3#~V^Ob?&GW2&T;YuhX3gVIYUb}+83vD-Hu%Ehg8b#Ow(Cc{u5BB z4XcY`h|#QCW%y4wzNCwUfO2)104C{DwkB}_3kjvK_)^fvU;_%PV z(lE%*xXiFFChL(b92u05FOlVH!`4J*v4y;LxnaTFH4il)*{a;P!LXiiRKuA=iP^l- zu--6iWmFzp&iPju)+dUKV<40J`XKum8BR%%6$#70J$P3d)<4PQNZqg;V9>uO!o95h1qmsz;MuO1O&g0xnW2?Renug_Z zY^H8lOvXL9(sL}@5)y~eOEFfnnv$=FN>+1hIjYlG>krR`>c7Zl`ep+$v*1yja# zhPB{d%yH~!PN}Oj*t`y;Ep>C>orFK2Yk2P zX;>d7VJYD(!RLw~yZA1sk|Y|0Dy4zt(ES4HX~_awTI<>Ou~5ag?l!E8l7*sfB6ZFO z?lG)QvM6;<`-N=~H{EMkH_M_#blhG7^^E(Vp`)nNm4PDyP+xaYwG$)Ap1a?$K28>j z5?k%Qz$)$m!}>{*Y_CF)U9jD-&Pu_-1hBEw$z>5_UxBthMPOsoBycZ0XjnIro559( zh#a|F9x|+l$QJ@Kfg^^LH4husD=DI}Wh!Cy1CoDD5sgjBwo@X=UVOx`E=(1bAeweZ z1lcW*8rGGmLR}|`SYGs)Vcp^=rd$v~_7f&8~-b0H7Yffp%M(U45660XFoMVLg*(!=#In4i7$USa0DyGliih zR)BcbGpMP9s9g#{cILB&^_!zUdNmVdpMbPF-L5Jp>Dl1P=P)^@+vctcQf2=2ykXsu zZY!c_RG0H#fWb-{pNQ-TZBV}j^)<WRP7eP+W!^9y2(kk9Rfl2(5sjc`U%LXsJ)Yg zBAZ`><%AHm6ClV|ypA!mpJ+=}Rzv$Gh(9^XIye47_QDRsT7ggKP)k!$dp{4cx4vOm zm*Nwb;Y4beOWriB>mwGW1;B1l?~h2Oc6)cHVZ9VW)ir+jEzEBYu{IPWcFWtCu^mMn z+xZ|n`yInNAK%$4eRtQdx7NIenY}N?_&te5*(;uTy(0!6(69^ zS@tT;m4RAd#fOGyCnda#QN}i!~dCEaL5)AV2MxoZ~?yg`@cV{P}8rlO(y609|;MTSv5InwhNn2Oj!a&dX`K-Rm zUyRSC*B4h$s2($>xVn3Z)qxVlvnP+QC>dWmzPz$x!ko&A;sxD3#d!0TWn}f5Y}6Ed z+tFOq(K)9rIDb)l_dT7OD_D*XO?c9!CcEkl#=gI!A2ZYX zLBZD6nX~aebMx_dEp>?i!gwoXSUDT^0Ap0_0Q@leyrmlB|F>g73Z(*zL)V!s@lA!r zP$*b^Ja=3)2ZFOGT&|&GNk@O_Ik(T{| z(euD)o5pCE3!^!RsZ=_IAdo*cvB5E6f9`2%zC0GL{xU0Fjo-P-(~plijHR>X%^y zG%XOU?(XZtKz)fha3rGvxf&o)xy$i`hrHtl3{of&V7vt|a^8|Xs^35;*vz*+GsMoP zm0Jw9KvltD8!cy<(LZxEU*OCEG{ogf4o!aiKtl?Voow8Qj-;U(5C)Au(ALi3nbFpB zG~S0dhUSjrMsqZfAtu*wWX8k~GNe!ukXdwv$!^uij1NO*PESWL;DTmvX*B-;G{ogG z{9y4TaNB$0e$?02fyUS$;|DHMvIZ)RztUtw-&TF>sBpO2I)ZiGJ<3VY9BjkK1dMT+ z<9R>33$PHUtSj{_hF&;s;{N19cmu?Yp1_i}j;@Zbh0K_cl}}LqO38txR$zXRx@<{S z9;N0yNC3ytlt+-zUc}gBvP%@eX*A`z2eInTKwHmr+YM6<4-DK#*rGDyz|0CZ9KaB- zVfX>Jgt%E+j)X$j0FK82(2p9RL@4M6h&JrZs7)>~_5~DF>V-|PwjSEeVwmgg#)_eK z*jO^6ImnQqHu^K#dXHwtG~bY{yZW(zI4RA+ZftyDdkyLR$xzo4v7MG5uE}IZ`T(Nd zK~yyy%*^tVpjRmkzOxx^3p?gBqfyxKcQUo5`{)2F)g)5A4~e|hivsgep~FOK38l96 z1s8SqkShWPAa|wy^g$$b2GNDoMwDt!&!yBQNX7T;ftvJ0{%_xX$rHfjNsY;fFiaX~e=b~j z##2V}VB=aKLWKujh5o^B$}teemw92aPjbsSIDSyt3rfNl&o16#vcq>N%b6O6lHPW` zW+V?ZJ_QU^awdKvbom{I=<}Hm>)ywVHw@9~hai#R>z8q3Xe|JNrl{ktHrb$mt2F?v zmP1D1-ukXZ9rLhm!kBqdLUNHoW6=SCgE%b0Ph5>jq);+oIp7+Tb!%9{$0TgYWba#^ zkTb%dUN#q)Q1LE~$+Y+}mE};$(P#4~p*%m39KkW8YT; z7p;8Vy$;8CaLk4yd1FHIDC0?>LX6TkQ|F5#ha)LOop0N9Cflvh=|{7>8=X0Ay)J0f z*`@KQGPF+t5pm1m5LKFFK$FMf-~W$KZ|PWfUfcYmv49P>F2Y~2o#7sTJv_42IKxfo z>+0=T*cE6m##MEem|~8Cs^+s;N86NMEHi^FA;la(v~NL6n%CWp9Y%tYFn>`S`~#`| zZU)Ay6AW*vVPrJdR<-bxavZ|9v`)ugc>J)Tc6Kd3k6c%WPP&H-2z_LG()CAyg3w zDG*J$CIM`_voRSU8j@^gg5vIP7ZDYES8S|(#g5o3xVq}vdjl&XHbk+n<^4XV+_`sV zg1hTa!{W<5U4)~P@Uutxv0e|OL8obW0G?1&TPOLfZ#X$mbj;xIH zcwMBOjAfywwxyxkFq?IB3bw{GOEiz3!Z%Bkc|Wx0fYI7g+1=gQEtZ}+8X1|BfJQDy zLoC4WIcRiswYP;@Yp9N~a#D@t(NzHBS<6299s@>2Ph`0f>TbbWm8d4EnZ>}u$FUf& zXH}ERaHI{p<)PN{p6+e{Qrj#b$;zAtND4S4-aQMFn$FHHORJHVIT1*taU{qd!| zgdIvl=#M=Z>e<>2-{^UO;~5TzXU~G8G1L(bH8dZ^4xt7#GjjrfxQ+wi+QWe0TPZ<8 zA!YP_K;b!#!XDPA(m<=TNA7L&0Y*9>Ze?*We!xu7p-n}YUqiMmgdMf+h#YSI&oNMj zob=(a%^SkYFKmt-Ii?5)`3f~(#KyW}E7gN+e?E%-JTJQD+}0qBX$KlX*mj3QEj={d z;DhWi#_cdoJt~FiN!)}ZZZaAao1Y`R1sYWl?J>qE`m~2> z)h`gOAAy^y4Gyb*`*&Tl_^OK4D5Qv3{^W_^A6#9QwDe_jZu%Vw0?Yvh=I9Z`AGCP&EPRM z&}ooSQBg-&*PA*U@UhY*vhPlyOO;DQ-8i$;vb=uLBBtG(Q{L9uxu2*CIyo_%9Lc6mT0nuxua-W6cX}g$ z3?-BN&nTYTB%T!)PsVEbCa zwu-|x-f6H=QHKDwR{>kQg3VXd3v3o6k>g#cyH^1eN}+}T<68ktJHa(<6oL6L2kcLL zt8C)<-^Ny1OY{U}WJ#!dX>)sD23^;^tFwx^iFV6sQQ8C>W&7I5a*s@(0IIojmh?Nk z`L1=T9W?(_5Wy{C2Q76s8)SS3ZFd3q4%+Sls2#N3g^@dG{_WU7qmRN4TH@eh!zyM6 zZFfQW4%+Sl@Ex?>1yDO^y9*Fm-%d+EJlw^1 zoq|ho+BVqI+!0*V-Mp0cuDg+i@lIYFz(7ZMto8MLeLLk68u z_wP~qA@-`{0LjXrt?C~+AQ^iUAWdRypb%*~T5LY?W+aDi!^d z+uD1&vGhns$v8NuM40>TVUX1KM7nx} zaVzFqi$g+F@_27Na}Vr$WHoBAHY$P4A}Gl?j)vH|bgGijPE7|!Y>V0!qv>d^Z9aM~ zjx4bo&qEJ9ENvuK>RBfBz)6m7S_KNiz9V+i;z@#{Fr98tso@Ht?_p3Zpca&^r7_tU zKW$&W%wb^8hoPo999a-r($>-*iq?uDX@tSgd>HmER%)C(;NZ0ahxYjiPcHvK{#=y( zg*~Mj@a_Aat_F3?6#;7(qH$2gGp>+gM5LoAKH( zGHncyaPh&C(}#=_2{B$WLd|^9<~|xHjpfE2H|-G}gg_zT7-2XLfq8U|D}&S91pz}X z?!&YU6bJKm;YF?oQ=SkN8O?UFyu=D9R10^L3gy;&m zoLov%pM7D?Le1tE*ovbRZov;{xz!>$Eq!YHrRGyj%J>&jmwV~FNp%c#ROlv@?dAb) zwrz)muD{w&kB4qvb4P1?sEYPcnD%?`C~Xv=p+wx*;g~nyUje3cw&o3bq-J@dK&6S`5aRxsjN6X%epe$ zY}n@tyAi!&hf9N6LUd-A+f+TGc}Ht+0USz(T~7)&&Ve9N$&vxmyi7N{S%K7#>=6@J zK^$SO?l=NBAwk6&LO40p4U?efH17o72mDORL@9E-#yAi!Dp@`XnVsckXPMQ< zD_#wuuI9FG;6=CiFzr>%yEg}GuP0y#gycqWutqr$EGijY*YQ5U3Y%b&TJ#E*go$5v z^rq%5{aI;4hQvK<&sa}xc;|DpeD4C8y#Cw{*garW< zB{k=U=qO^VHfk&lBmPS2wy3$I9v3}r)BNc)!MjA#XrRlq4>W%!QSXyfzC5UHm(end%g zGhI;ZFJ?1=52ciQV^mgGxrD3^11~w;b9gnbueru0WVM`VkRODObZ|?X%O4<|FC@C0 zyh_%!E`Khu?gopoY6ps71VB3kWm}))W}CiLBB=QV5s;csq6=-GbonQ;*MJVC^B0Q% zo{|FijzC??YsE7ze;R?A{S<+Dqyxb`6#%S4+0M#!v)Zo|m>s_WX5&$9xXr7y1p53o z>GKreLn)=*6xHW`4HI4Hu3~MKx_b_X`ydCxO#rO~+$ZO`+5Yfc zAg0-e_6oN=j*Fg=X{&YrIKD`^0q{^lXA|1XEZaEkEW!*OKMowwC60(KMe7 zm#4(q#j!oif!GopzX!G}^W7{5XAuRq!C%659@aPL&e^}~XcuTPBlBs-D6O4w@cvz& zUQQTJLI@LHdDLK??$0A$BX}^acObrB0*@k;ZOK44yH4TTe|oR@(vX)c?)^F}xx>JP zQW$YFH4zruIPHFY(!PY;IUG4k&uO#KaVT>kkegNDW`nTBD%Lt??iM+vmXA`c-vnqV zk)}BC9+frz9S+_s2ZGm%G8X{6>_KjJu>!AOS+C$xbEnR$Jg=usPLl6McH-&LG3%Gez1Y*WrD#^Ia{o%nD&;A2}V5tqNGm8 zkFl2>2o#lUJAis^npU_)?Pr}1AlWk;qO`QiseGvV#KbFiqYhC)o^#3(3eINS&CYPR0 z(Ux_>vWR&+_qtp>q9*(b@m**+-JdSTC)NBWiz6{W`e*8R6 z#ldxDwd4kfUm90kQBw&g5(zk!bxjQivxJcv=GWn_xw*`hC>}p!f@|x18*%7{a?Xj( z*_c<>SQ)IVuZzoBa1!P$So7)|5Vfkl0set2V)M5KnNwDN01u0SfYYSQ; zi7so%NisehLE@XSJ7!6xyncRN6KahQzMOd8C1&0g)eV*9P1W^v5M;e!(2ajGW|Y%Z zPY?vF@Nw!p;+Xu?UCej7TjVg^%mFtY!kw}dllUk>YAS1(3va#+m1X7gkgrNwh6fbE z%DM`p93vfN7P`)G^ z3oeVR=QNaYtg6bYYY^ARd{pxw&5X=g?SzZ)riS_&?i{uvSk{1q%W7h)hzc~XzJ>s> zRUgGOVXCXBJY+%r{6^+tIaHmgisL|k4%K_AzVu9u#(Dkltg{?yDX99>a~YngX~1*d z9eDQT6Gx+F3oAJ|rX}9R8AjJ|O}ut3X%2_Lb%|H<(6lVX?}B#?*Yhbotz|i^^{PAI zoe|;Og2tmoO?O5=cn+ej==A-9XsA(p(u?w>Rqbn>^$cm;A!^st#uFf!=;dOS%d)#ES0z0#I zsiY5)$-OW^5nCO{+iE5u&aOa z9CMsED_hUA1`UilZ8XYg? zul#uFr~G(nL9h|-BO+{-D}9$XXc%Yn)26FjDT9ZPEeL~)v|i6j%gD&F=S0%sU)&Q$ zh)v0vg}ABEQX(o0XWh|1Yi8_ca#_J8Er8`M2vYbsHDicAG(jG=P)`iV*c+Ey#g#d9 zG~v2EEn{CjSNfZE+<4g?4z_eR!&0T(tnuvbf5MQb4*t$?mgGzF?1ANXC(aejvRCp= z?q{jkE3_Q4lb^YZ%8iwBN0-|W{lNQF@KxG`eNgcBomB9hjxD%s)7ZPuqRcmHdy$eK zoli%F#K90JR&ZJ7noc+dYHn}pG~|{6`-lX;-@sB}P{=E~a}{1

    T*G%#t2OxzE?e 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%0AkKs{)z(9!Oj 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 TMn0Z2OK`YHUc7~QmAwA~-ovsv diff --git a/src/cognitive_agent/application/firmware_workbench.py b/src/cognitive_agent/application/firmware_workbench.py new file mode 100644 index 0000000..1cf61f5 --- /dev/null +++ b/src/cognitive_agent/application/firmware_workbench.py @@ -0,0 +1,1290 @@ +"""Seat firmware development pipeline and local OTA publication service.""" + +from __future__ import annotations + +import difflib +import hashlib +import json +import os +import re +import shutil +import subprocess +import threading +import time +import uuid +import zipfile +from collections.abc import Callable +from copy import deepcopy +from datetime import datetime +from pathlib import Path +from typing import Any + +PIPELINE_STAGES = ( + ("instruction", "指令输入"), + ("requirements", "需求解析"), + ("baseline", "基线检查"), + ("codegen", "代码生成"), + ("build", "编译构建"), + ("test", "测试验证"), + ("package", "固件打包"), + ("publish", "发布服务器"), +) +TERMINAL_TASK_STATES = frozenset({"success", "failed", "canceled", "blocked"}) +ACTIVE_TASK_STATES = frozenset({"waiting", "running", "pending_confirmation"}) +ALL_CAPABILITIES = ("时间控制", "位置控制", "座椅通风", "座椅加热") +BASELINE_CATALOG = { + "time_only": { + "name": "时间控制基线", + "capabilities": ("时间控制",), + }, +} +SOFTWARE_NAME = "副驾座椅控制器" +FIRMWARE_VERSION = "SMV8-r15-b16" +FINAL_RELEASE_MESSAGE = "已发布,待车机端下载升级" + +BuildRunner = Callable[[str, Callable[[str, str], None], threading.Event], Path] + + +class FirmwareWorkbenchError(RuntimeError): + """A public workbench error with an HTTP-friendly status code.""" + + def __init__(self, message: str, status: int = 400, code: str = "invalid_request"): + super().__init__(message) + self.status = status + self.code = code + + +def _now() -> str: + return datetime.now().astimezone().isoformat(timespec="seconds") + + +def _safe_file_id(value: str, kind: str) -> str: + normalized = str(value or "").strip() + if not re.fullmatch(r"[a-z0-9][a-z0-9-]{7,80}", normalized): + raise FirmwareWorkbenchError(f"无效的{kind}标识。", 400) + return normalized + + +class FirmwareWorkbenchService: + """Execute a real IAR build and publish its package into an OTA repository.""" + + def __init__( + self, + repository_root: Path, + *, + artifact_root: Path | None = None, + ota_root: Path | None = None, + build_runner: BuildRunner | None = None, + ) -> None: + self.repository_root = Path(repository_root).resolve() + self.artifact_root = ( + Path(artifact_root) + if artifact_root is not None + else self.repository_root / "artifacts" / "server" / "firmware-workbench" + ).resolve() + configured_ota = os.getenv("FIRMWARE_WORKBENCH_OTA_ROOT", "").strip() + self.ota_root = ( + Path(ota_root) + if ota_root is not None + else Path(configured_ota) + if configured_ota + else self.repository_root / "artifacts" / "server" / "firmware-ota" + ).resolve() + self.public_base_url = os.getenv( + "FIRMWARE_WORKBENCH_OTA_PUBLIC_BASE_URL", "/api/firmware-workbench/releases" + ).rstrip("/") + self._state_file = self.artifact_root / "state.json" + self._lock = threading.RLock() + self._cancel_events: dict[str, threading.Event] = {} + self._threads: dict[str, threading.Thread] = {} + self._build_runner = build_runner or self._run_iar_build + self._state: dict[str, Any] = {"tasks": [], "artifacts": [], "releases": []} + self.artifact_root.mkdir(parents=True, exist_ok=True) + self.ota_root.mkdir(parents=True, exist_ok=True) + self._load_state() + self._ensure_time_only_baseline() + self._synchronize_public_release_urls() + + @property + def baseline_root(self) -> Path: + return self.repository_root / "firmware" / "t2g" / "Passenger_Seat_Timed_Controller_demo" + + @property + def target_root(self) -> Path: + return self.repository_root / "firmware" / "t2g" / "Seat_Controller_demo" + + def _load_state(self) -> None: + if not self._state_file.is_file(): + return + try: + data = json.loads(self._state_file.read_text(encoding="utf-8")) + if isinstance(data, dict): + for key in ("tasks", "artifacts", "releases"): + if not isinstance(data.get(key), list): + data[key] = [] + self._state = data + recovered = False + for task in self._state["tasks"]: + if task.get("status") in ACTIVE_TASK_STATES: + task["status"] = "blocked" + task["finished_at"] = _now() + task["message"] = "服务重启中断了任务,请点击重试。" + self._finish_running_stage(task, "blocked", task["message"]) + self._append_log_locked( + task, + "error", + "任务恢复", + task["message"], + stage="pipeline", + ) + recovered = True + if recovered: + self._save_locked() + except (OSError, ValueError, TypeError): + self._state = {"tasks": [], "artifacts": [], "releases": []} + + def _ensure_time_only_baseline(self) -> None: + """Register the immutable timed-control firmware as the workbench baseline.""" + with self._lock: + if any(artifact.get("is_baseline") for artifact in self._state["artifacts"]): + return + image_path = ( + self.baseline_root + / "IAR" + / "rev_d" + / "Exe" + / "Passenger_Seat_Timed_Controller_demo.hex" + ) + if not image_path.is_file(): + return + baseline_root = self.artifact_root / "baselines" / "time-only" + baseline_root.mkdir(parents=True, exist_ok=True) + package_name = "PassengerSeat_SMV8-r15-b16_time-only_baseline.zip" + package_path = baseline_root / package_name + image_hash = hashlib.sha256(image_path.read_bytes()).hexdigest() + build_time = datetime.fromtimestamp(image_path.stat().st_mtime).astimezone().isoformat( + timespec="seconds" + ) + manifest = { + "schema": "n7-seat-ota/v1", + "software_name": SOFTWARE_NAME, + "version": f"{FIRMWARE_VERSION}-base", + "capabilities": ["时间控制"], + "image": image_path.name, + "image_size": image_path.stat().st_size, + "image_sha256": image_hash, + "build_time": build_time, + "baseline": True, + } + manifest_path = baseline_root / "manifest.json" + manifest_path.write_text( + json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8" + ) + with zipfile.ZipFile(package_path, "w", compression=zipfile.ZIP_DEFLATED) as archive: + archive.write(image_path, arcname=image_path.name) + archive.write(manifest_path, arcname="manifest.json") + artifact_id = "fw-art-time-only-baseline" + self._state["artifacts"].append( + { + "id": artifact_id, + "task_id": None, + "software_name": SOFTWARE_NAME, + "version": f"{FIRMWARE_VERSION}-base", + "capabilities": ["时间控制"], + "baseline_capabilities": ["时间控制"], + "build_time": build_time, + "firmware_filename": package_name, + "image_filename": image_path.name, + "size_bytes": package_path.stat().st_size, + "sha256": hashlib.sha256(package_path.read_bytes()).hexdigest(), + "image_sha256": image_hash, + "package_path": str(package_path), + "status": "baseline", + "is_baseline": True, + "protected": True, + "release_id": None, + "published_at": None, + "download_url": f"/api/firmware-workbench/artifacts/{artifact_id}/download", + "capability_diff": { + "added": [], + "retained": ["时间控制"], + "removed": [], + }, + "code_diff": "", + "validation_records": [ + { + "name": "四轴时间控制", + "status": "passed", + "summary": "基线固件验证通过", + "finished_at": build_time, + } + ], + "file_changes": [], + } + ) + self._save_locked() + + def _save_locked(self) -> None: + self.artifact_root.mkdir(parents=True, exist_ok=True) + temporary = self._state_file.with_suffix(".tmp") + temporary.write_text( + json.dumps(self._state, ensure_ascii=False, indent=2), encoding="utf-8" + ) + temporary.replace(self._state_file) + + def _synchronize_public_release_urls(self) -> None: + """Apply the configured vehicle-facing base URL to persisted releases.""" + with self._lock: + changed = False + releases_by_id: dict[str, str] = {} + for release in self._state["releases"]: + release_id = str(release.get("id") or release.get("release_id") or "") + if not release_id: + continue + download_url = f"{self.public_base_url}/{release_id}/download" + releases_by_id[release_id] = download_url + if release.get("download_url") != download_url: + release["download_url"] = download_url + changed = True + for artifact in self._state["artifacts"]: + release_id = str(artifact.get("release_id") or "") + download_url = releases_by_id.get(release_id) + if download_url and artifact.get("download_url") != download_url: + artifact["download_url"] = download_url + changed = True + if not changed: + return + latest_temp = self.ota_root / "latest.tmp" + if self._state["releases"]: + latest_temp.write_text( + json.dumps( + self._public_release_payload(self._state["releases"][0]), + ensure_ascii=False, + indent=2, + ), + encoding="utf-8", + ) + latest_temp.replace(self.ota_root / "latest.json") + self._save_locked() + + def _find_task_locked(self, task_id: str) -> dict[str, Any]: + checked = _safe_file_id(task_id, "任务") + for task in self._state["tasks"]: + if task.get("id") == checked: + return task + raise FirmwareWorkbenchError("任务不存在。", 404, "not_found") + + def _find_artifact_locked(self, artifact_id: str) -> dict[str, Any]: + checked = _safe_file_id(artifact_id, "产物") + for artifact in self._state["artifacts"]: + if artifact.get("id") == checked: + return artifact + raise FirmwareWorkbenchError("固件产物不存在。", 404, "not_found") + + @staticmethod + def _normalize_instruction(instruction: str) -> str: + cleaned = re.sub(r"\s+", " ", str(instruction or "").strip()) + if not cleaned: + raise FirmwareWorkbenchError("请输入开发指令。") + if len(cleaned) > 2000: + raise FirmwareWorkbenchError("开发指令不能超过 2000 个字符。") + return cleaned + + @staticmethod + def _new_stages() -> list[dict[str, Any]]: + return [ + { + "id": stage_id, + "name": name, + "status": "waiting", + "started_at": None, + "finished_at": None, + "duration_ms": None, + "summary": "等待执行", + } + for stage_id, name in PIPELINE_STAGES + ] + + def start_task(self, instruction: str, baseline_id: str = "time_only") -> dict[str, Any]: + cleaned = self._normalize_instruction(instruction) + baseline = BASELINE_CATALOG.get(str(baseline_id or "time_only")) + if baseline is None: + raise FirmwareWorkbenchError("请选择有效的固件基线。") + baseline_id = str(baseline_id or "time_only") + requested = self._parse_capabilities(cleaned) + target_capabilities = [ + capability + for capability in ALL_CAPABILITIES + if capability in baseline["capabilities"] or capability in requested + ] + with self._lock: + task_id = f"fw-task-{uuid.uuid4().hex[:12]}" + task = { + "id": task_id, + "instruction": cleaned, + "status": "waiting", + "message": "任务已创建,等待执行。", + "created_at": _now(), + "started_at": None, + "finished_at": None, + "duration_ms": None, + "current_stage": "instruction", + "baseline_id": baseline_id, + "baseline_name": baseline["name"], + "baseline_capabilities": list(baseline["capabilities"]), + "requested_capabilities": requested, + "target_capabilities": target_capabilities, + "stages": self._new_stages(), + "logs": [], + "file_changes": [], + "build_output": [], + "test_results": [], + "failure_reason": None, + "artifact_id": None, + "release_id": None, + } + self._state["tasks"].insert(0, task) + self._append_log_locked( + task, + "info", + "任务创建", + "开发指令已登记,正在进入固件流水线。", + stage="instruction", + ) + cancel_event = threading.Event() + self._cancel_events[task_id] = cancel_event + self._save_locked() + worker = threading.Thread( + target=self._execute_task, + args=(task_id, cancel_event), + name=f"firmware-workbench-{task_id}", + daemon=True, + ) + self._threads[task_id] = worker + worker.start() + return {"task": deepcopy(task)} + + def retry_task(self, task_id: str) -> dict[str, Any]: + with self._lock: + task = self._find_task_locked(task_id) + if task.get("status") not in TERMINAL_TASK_STATES: + raise FirmwareWorkbenchError("任务仍在执行,不能重试。", 409, "task_active") + task.update( + { + "status": "waiting", + "message": "任务已重置,等待重新执行。", + "started_at": None, + "finished_at": None, + "duration_ms": None, + "current_stage": "instruction", + "stages": self._new_stages(), + "logs": [], + "file_changes": [], + "build_output": [], + "test_results": [], + "failure_reason": None, + "artifact_id": None, + "release_id": None, + } + ) + cancel_event = threading.Event() + self._cancel_events[task_id] = cancel_event + self._append_log_locked( + task, "info", "任务重试", "使用同一任务标识重新执行。", stage="instruction" + ) + self._save_locked() + worker = threading.Thread( + target=self._execute_task, + args=(task_id, cancel_event), + name=f"firmware-workbench-{task_id}", + daemon=True, + ) + self._threads[task_id] = worker + worker.start() + return deepcopy(task) + + def cancel_task(self, task_id: str) -> dict[str, Any]: + with self._lock: + task = self._find_task_locked(task_id) + if task.get("status") in TERMINAL_TASK_STATES: + return deepcopy(task) + event = self._cancel_events.get(task_id) + if event: + event.set() + task["message"] = "正在取消任务…" + self._append_log_locked( + task, "warning", "取消请求", "已收到取消请求,正在安全停止当前阶段。" + ) + self._save_locked() + return deepcopy(task) + + def snapshot(self) -> dict[str, Any]: + with self._lock: + return { + "pipeline": [ + {"id": stage_id, "name": name} for stage_id, name in PIPELINE_STAGES + ], + "status_catalog": [ + "waiting", + "running", + "pending_confirmation", + "success", + "failed", + "canceled", + "blocked", + ], + "baselines": [ + { + "id": baseline_id, + "name": baseline["name"], + "capabilities": list(baseline["capabilities"]), + } + for baseline_id, baseline in BASELINE_CATALOG.items() + ], + "ota_server": { + "name": "车机升级服务器", + "repository": str(self.ota_root), + "endpoint": self.public_base_url, + }, + "tasks": deepcopy(self._state["tasks"][:30]), + "artifacts": deepcopy(self._state["artifacts"][:50]), + "releases": deepcopy(self._state["releases"][:50]), + } + + def task(self, task_id: str) -> dict[str, Any]: + with self._lock: + return deepcopy(self._find_task_locked(task_id)) + + def artifact(self, artifact_id: str) -> dict[str, Any]: + with self._lock: + return deepcopy(self._find_artifact_locked(artifact_id)) + + def publish_artifact(self, artifact_id: str) -> dict[str, Any]: + with self._lock: + artifact = self._find_artifact_locked(artifact_id) + if artifact.get("release_id"): + release = next( + ( + item + for item in self._state["releases"] + if item.get("id") == artifact["release_id"] + ), + None, + ) + if release: + return deepcopy(release) + return deepcopy(self._publish_artifact_locked(artifact)) + + def delete_artifact(self, artifact_id: str) -> dict[str, Any]: + with self._lock: + artifact = self._find_artifact_locked(artifact_id) + if artifact.get("is_baseline") or artifact.get("protected"): + raise FirmwareWorkbenchError( + "时间控制基线固件受保护,不能删除。", + 403, + "baseline_protected", + ) + package_path = Path(str(artifact.get("package_path", ""))).resolve() + self._assert_managed_path(package_path, self.artifact_root) + linked_releases = [ + release + for release in self._state["releases"] + if release.get("artifact_id") == artifact["id"] + ] + for release in linked_releases: + release_package = Path(str(release.get("package_path", ""))).resolve() + self._assert_managed_path(release_package, self.ota_root) + release_root = release_package.parent + if release_root.name != release.get("id") or release_root.parent.name != "releases": + raise FirmwareWorkbenchError( + "发布产物目录不符合托管规则,已停止删除。", + 500, + "artifact_path_invalid", + ) + + if package_path.is_file(): + package_path.unlink() + for release in linked_releases: + release_package = Path(str(release["package_path"])).resolve() + if release_package.parent.is_dir(): + shutil.rmtree(release_package.parent) + + release_ids = {str(release["id"]) for release in linked_releases} + self._state["releases"] = [ + release + for release in self._state["releases"] + if release.get("id") not in release_ids + ] + self._state["artifacts"] = [ + item for item in self._state["artifacts"] if item.get("id") != artifact["id"] + ] + for task in self._state["tasks"]: + if task.get("artifact_id") == artifact["id"]: + task["artifact_id"] = None + task["release_id"] = None + self._append_log_locked( + task, + "warning", + "产物删除", + "固件包和对应发布记录已删除,任务执行记录仍保留。", + stage="pipeline", + ) + + latest_path = self.ota_root / "latest.json" + if not self._state["releases"]: + latest_path.unlink(missing_ok=True) + else: + latest_manifest = self._public_release_payload(self._state["releases"][0]) + latest_temp = self.ota_root / "latest.tmp" + latest_temp.write_text( + json.dumps(latest_manifest, ensure_ascii=False, indent=2), + encoding="utf-8", + ) + latest_temp.replace(latest_path) + self._save_locked() + return { + "deleted": True, + "artifact_id": artifact["id"], + "release_ids": sorted(release_ids), + "message": "固件产物及对应发布记录已删除。", + } + + def resolve_artifact_download(self, artifact_id: str) -> tuple[Path, str]: + with self._lock: + artifact = self._find_artifact_locked(artifact_id) + path = Path(str(artifact.get("package_path", ""))).resolve() + self._assert_managed_path(path, self.artifact_root) + if not path.is_file(): + raise FirmwareWorkbenchError("固件包文件不存在。", 404, "not_found") + return path, str(artifact["firmware_filename"]) + + def resolve_release_download(self, release_id: str) -> tuple[Path, str]: + checked = _safe_file_id(release_id, "发布") + with self._lock: + release = next( + (item for item in self._state["releases"] if item.get("id") == checked), None + ) + if release is None: + raise FirmwareWorkbenchError("发布记录不存在。", 404, "not_found") + path = Path(str(release.get("package_path", ""))).resolve() + self._assert_managed_path(path, self.ota_root) + if not path.is_file(): + raise FirmwareWorkbenchError("OTA 固件包不存在。", 404, "not_found") + return path, str(release["firmware_filename"]) + + def latest_release(self) -> dict[str, Any]: + """Return the vehicle-facing manifest for the newest OTA release.""" + with self._lock: + if not self._state["releases"]: + raise FirmwareWorkbenchError("暂无可供车机升级的固件。", 404, "not_found") + return deepcopy(self._public_release_payload(self._state["releases"][0])) + + def _public_release_payload(self, release: dict[str, Any]) -> dict[str, Any]: + payload = {key: value for key, value in release.items() if key != "package_path"} + release_id = str(payload.get("release_id") or payload.get("id") or "") + payload.setdefault("schema", "n7-ota-release/v1") + payload.setdefault("release_id", release_id) + payload["download_url"] = f"{self.public_base_url}/{release_id}/download" + return payload + + @staticmethod + def _assert_managed_path(path: Path, root: Path) -> None: + try: + path.relative_to(root.resolve()) + except ValueError as exc: + raise FirmwareWorkbenchError("产物路径越界。", 500, "artifact_path_invalid") from exc + + def _stage_locked(self, task: dict[str, Any], stage_id: str) -> dict[str, Any]: + return next(stage for stage in task["stages"] if stage["id"] == stage_id) + + def _begin_stage(self, task_id: str, stage_id: str, summary: str) -> float: + with self._lock: + task = self._find_task_locked(task_id) + stage = self._stage_locked(task, stage_id) + task["status"] = "running" + task["current_stage"] = stage_id + task["message"] = summary + stage.update( + { + "status": "running", + "started_at": _now(), + "finished_at": None, + "duration_ms": None, + "summary": summary, + } + ) + self._append_log_locked(task, "info", stage["name"], summary, stage=stage_id) + self._save_locked() + return time.monotonic() + + def _finish_stage( + self, task_id: str, stage_id: str, started: float, summary: str + ) -> None: + with self._lock: + task = self._find_task_locked(task_id) + stage = self._stage_locked(task, stage_id) + stage.update( + { + "status": "success", + "finished_at": _now(), + "duration_ms": round((time.monotonic() - started) * 1000), + "summary": summary, + } + ) + task["message"] = summary + self._append_log_locked(task, "success", stage["name"], summary, stage=stage_id) + self._save_locked() + + def _execute_task(self, task_id: str, cancel_event: threading.Event) -> None: + started_monotonic = time.monotonic() + try: + with self._lock: + task = self._find_task_locked(task_id) + task["started_at"] = _now() + self._save_locked() + + started = self._begin_stage(task_id, "instruction", "校验并登记开发指令。") + self._check_cancel(cancel_event) + self._finish_stage(task_id, "instruction", started, "开发指令已登记。") + + started = self._begin_stage(task_id, "requirements", "解析座椅能力扩展需求。") + self._check_cancel(cancel_event) + with self._lock: + task = self._find_task_locked(task_id) + requested = self._parse_capabilities(str(task["instruction"])) + baseline_capabilities = task.get("baseline_capabilities", ["时间控制"]) + target_capabilities = [ + capability + for capability in ALL_CAPABILITIES + if capability in baseline_capabilities or capability in requested + ] + task["requested_capabilities"] = requested + task["target_capabilities"] = target_capabilities + self._append_log_locked( + task, + "info", + "需求解析结果", + "基线能力:" + + "、".join(baseline_capabilities) + + ";指令增量:" + + ("、".join(requested) or "无") + + ";目标能力:" + + "、".join(target_capabilities), + stage="requirements", + detail={ + "baseline": baseline_capabilities, + "requested": requested, + "target": target_capabilities, + }, + ) + self._save_locked() + self._finish_stage( + task_id, + "requirements", + started, + "已按所选基线与开发指令确定目标能力:" + + "+".join(target_capabilities) + + "。", + ) + + with self._lock: + task = self._find_task_locked(task_id) + baseline_name = str(task.get("baseline_name", "时间控制基线")) + started = self._begin_stage( + task_id, "baseline", f"检查{baseline_name}与目标 IAR 工程。" + ) + self._check_cancel(cancel_event) + baseline_file = self.baseline_root / "App" / "seat_timed_application.c" + target_file = self.target_root / "App" / "seat_move_application.c" + project_file = self.target_root / "IAR" / "Seat_Controller_demo.ewp" + missing = [ + path + for path in (baseline_file, target_file, project_file) + if not path.is_file() + ] + if missing: + raise FirmwareWorkbenchError( + "固件基线不完整:" + "、".join(str(path) for path in missing), + 409, + "baseline_incomplete", + ) + self._finish_stage( + task_id, + "baseline", + started, + f"{baseline_name}和 SMV8 目标 IAR 工程检查通过。", + ) + + started = self._begin_stage(task_id, "codegen", "生成能力变更清单并固化代码差异。") + self._check_cancel(cancel_event) + workspace = self.artifact_root / "tasks" / task_id + workspace.mkdir(parents=True, exist_ok=True) + baseline_text = baseline_file.read_text(encoding="utf-8", errors="replace").splitlines() + target_text = target_file.read_text(encoding="utf-8", errors="replace").splitlines() + diff_lines = list( + difflib.unified_diff( + baseline_text, + target_text, + fromfile="Passenger_Seat_Timed_Controller_demo/App/seat_timed_application.c", + tofile="Seat_Controller_demo/App/seat_move_application.c", + lineterm="", + n=2, + ) + ) + code_diff = "\n".join(diff_lines[:800]) + if len(diff_lines) > 800: + code_diff += f"\n... 差异过长,已截取前 800 行(共 {len(diff_lines)} 行)。" + with self._lock: + task = self._find_task_locked(task_id) + baseline_capabilities = list(task.get("baseline_capabilities", ["时间控制"])) + target_capabilities = list(task["target_capabilities"]) + baseline_name = str(task.get("baseline_name", "时间控制基线")) + feature_profile = { + "position_control": "位置控制" in target_capabilities, + "ventilation": "座椅通风" in target_capabilities, + "heating": "座椅加热" in target_capabilities, + } + requirements = { + "task_id": task_id, + "baseline": baseline_name, + "baseline_capabilities": baseline_capabilities, + "target": "Seat_Controller_demo", + "version": FIRMWARE_VERSION, + "capabilities": target_capabilities, + "feature_profile": feature_profile, + "generated_at": _now(), + } + (workspace / "requirements.json").write_text( + json.dumps(requirements, ensure_ascii=False, indent=2), encoding="utf-8" + ) + (workspace / "feature_profile.json").write_text( + json.dumps(feature_profile, ensure_ascii=False, indent=2), encoding="utf-8" + ) + with self._lock: + task = self._find_task_locked(task_id) + file_changes = [ + { + "path": "Config/seat_feature_profile.h", + "type": "modified", + "summary": "按目标能力生成编译期开关:" + + "+".join(target_capabilities), + }, + { + "path": "IAR/Seat_Controller_demo.ewp", + "type": "modified", + "summary": "使用 rev_d 配置编译能力裁剪后的固件", + }, + ] + if "位置控制" in target_capabilities: + file_changes.append( + { + "path": "App/seat_move_application.c", + "type": "modified", + "summary": "启用四轴绝对位置与相对位置参数控制", + } + ) + if "座椅通风" in target_capabilities: + file_changes.append( + { + "path": "App/seat_controller_thermal.c", + "type": "modified", + "summary": "启用座椅通风分级控制与 CAN 反馈", + } + ) + if "座椅加热" in target_capabilities: + file_changes.append( + { + "path": "App/seat_backrest_heater.c", + "type": "modified", + "summary": "启用靠背加热分级控制与超时保护", + } + ) + task["file_changes"] = file_changes + task["code_diff"] = code_diff + self._save_locked() + self._finish_stage( + task_id, + "codegen", + started, + "已生成并固化目标能力编译配置:" + + "+".join(target_capabilities) + + "。", + ) + + started = self._begin_stage( + task_id, "build", "调用 IAR Embedded Workbench 编译目标固件。" + ) + self._check_cancel(cancel_event) + image_path = self._build_runner( + task_id, self._build_log_callback(task_id), cancel_event + ) + self._check_cancel(cancel_event) + if not image_path.is_file(): + raise FirmwareWorkbenchError( + "IAR 构建未生成 HEX 文件。", 500, "build_output_missing" + ) + copied_hex = workspace / "Seat_Controller_demo.hex" + shutil.copy2(image_path, copied_hex) + self._finish_stage(task_id, "build", started, "IAR 编译成功,0 errors / 0 warnings。") + + started = self._begin_stage(task_id, "test", "执行固件能力与工程完整性验证。") + self._check_cancel(cancel_event) + validation = self._validate_target(copied_hex, target_capabilities, feature_profile) + with self._lock: + task = self._find_task_locked(task_id) + task["test_results"] = validation + self._save_locked() + (workspace / "validation.json").write_text( + json.dumps(validation, ensure_ascii=False, indent=2), encoding="utf-8" + ) + self._finish_stage( + task_id, + "test", + started, + f"{len(validation)} 项验证全部通过。", + ) + + started = self._begin_stage(task_id, "package", "生成 OTA 固件包、清单和 SHA-256。") + self._check_cancel(cancel_event) + artifact = self._package_artifact(task_id, workspace, copied_hex, validation, code_diff) + self._finish_stage( + task_id, + "package", + started, + f"固件包 {artifact['firmware_filename']} 已生成并完成哈希校验。", + ) + + started = self._begin_stage( + task_id, "publish", "将签名清单和固件包发布到车机升级服务器。" + ) + self._check_cancel(cancel_event) + with self._lock: + stored = self._find_artifact_locked(str(artifact["id"])) + release = self._publish_artifact_locked(stored) + task = self._find_task_locked(task_id) + task["artifact_id"] = artifact["id"] + task["release_id"] = release["id"] + self._save_locked() + self._finish_stage(task_id, "publish", started, FINAL_RELEASE_MESSAGE) + + with self._lock: + task = self._find_task_locked(task_id) + task.update( + { + "status": "success", + "message": FINAL_RELEASE_MESSAGE, + "finished_at": _now(), + "duration_ms": round((time.monotonic() - started_monotonic) * 1000), + } + ) + self._append_log_locked( + task, + "success", + "流水线完成", + FINAL_RELEASE_MESSAGE, + stage="pipeline", + detail={"release_id": release["id"], "download_url": release["download_url"]}, + ) + self._save_locked() + except InterruptedError: + with self._lock: + task = self._find_task_locked(task_id) + task.update( + { + "status": "canceled", + "message": "任务已取消。", + "finished_at": _now(), + "duration_ms": round((time.monotonic() - started_monotonic) * 1000), + } + ) + self._finish_running_stage(task, "canceled", "任务已由用户取消。") + self._append_log_locked( + task, "warning", "任务取消", "任务已安全停止。", stage="pipeline" + ) + self._save_locked() + except Exception as exc: # noqa: BLE001 - persist arbitrary build failures in task state + with self._lock: + task = self._find_task_locked(task_id) + message = str(exc) or exc.__class__.__name__ + task.update( + { + "status": "failed", + "message": "流水线执行失败,可查看原因并重试。", + "failure_reason": message, + "finished_at": _now(), + "duration_ms": round((time.monotonic() - started_monotonic) * 1000), + } + ) + self._finish_running_stage(task, "failed", message) + self._append_log_locked( + task, "error", "任务失败", message, stage=task.get("current_stage") + ) + self._save_locked() + finally: + with self._lock: + self._cancel_events.pop(task_id, None) + self._threads.pop(task_id, None) + + @staticmethod + def _check_cancel(cancel_event: threading.Event) -> None: + if cancel_event.is_set(): + raise InterruptedError + + def _finish_running_stage( + self, task: dict[str, Any], status: str, summary: str + ) -> None: + for stage in task.get("stages", []): + if stage.get("status") == "running": + stage["status"] = status + stage["finished_at"] = _now() + stage["summary"] = summary + + @staticmethod + def _parse_capabilities(instruction: str) -> list[str]: + requested: list[str] = [] + lowered = instruction.lower() + patterns = { + "时间控制": ("时间", "定时", "timed"), + "位置控制": ("位置", "position"), + "座椅通风": ("通风", "vent"), + "座椅加热": ("加热", "heater", "heat"), + } + for capability, aliases in patterns.items(): + if any(alias in lowered for alias in aliases): + requested.append(capability) + return requested + + def _build_log_callback(self, task_id: str) -> Callable[[str, str], None]: + def callback(level: str, line: str) -> None: + cleaned = str(line).rstrip() + if not cleaned: + return + with self._lock: + task = self._find_task_locked(task_id) + task["build_output"].append(cleaned) + task["build_output"] = task["build_output"][-500:] + self._append_log_locked( + task, level, "IAR Build", cleaned, stage="build" + ) + self._save_locked() + + return callback + + def _run_iar_build( + self, + task_id: str, + log: Callable[[str, str], None], + cancel_event: threading.Event, + ) -> Path: + script = self.repository_root / "tools" / "build_seat_firmware.ps1" + if not script.is_file(): + raise FirmwareWorkbenchError("IAR 构建脚本不存在。", 500, "build_script_missing") + shell = shutil.which("powershell.exe") or shutil.which("pwsh") + if not shell: + raise FirmwareWorkbenchError("未找到 PowerShell,无法执行 IAR 构建。", 500) + with self._lock: + task = self._find_task_locked(task_id) + capabilities = list(task.get("target_capabilities", ["时间控制"])) + output_directory = self.artifact_root / "tasks" / task_id / "build" + output_directory.mkdir(parents=True, exist_ok=True) + command = [ + shell, + "-NoProfile", + "-ExecutionPolicy", + "Bypass", + "-File", + str(script), + "-RepositoryRoot", + str(self.repository_root), + "-OutputDirectory", + str(output_directory), + "-PositionControl", + "1" if "位置控制" in capabilities else "0", + "-Ventilation", + "1" if "座椅通风" in capabilities else "0", + "-Heating", + "1" if "座椅加热" in capabilities else "0", + ] + process = subprocess.Popen( + command, + cwd=self.repository_root, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + encoding="utf-8", + errors="replace", + bufsize=1, + ) + assert process.stdout is not None + try: + while True: + line = process.stdout.readline() + if line: + log("info", line) + if cancel_event.is_set() and process.poll() is None: + process.terminate() + try: + process.wait(timeout=5) + except subprocess.TimeoutExpired: + process.kill() + raise InterruptedError + if process.poll() is not None and not line: + break + if not line: + time.sleep(0.05) + finally: + process.stdout.close() + if process.returncode != 0: + raise FirmwareWorkbenchError( + f"IAR 构建失败,退出码 {process.returncode}。", 500, "build_failed" + ) + return output_directory / "Seat_Controller_demo.hex" + + def _validate_target( + self, + image_path: Path, + target_capabilities: list[str], + feature_profile: dict[str, bool], + ) -> list[dict[str, Any]]: + application = (self.target_root / "App" / "seat_move_application.c").read_text( + encoding="utf-8", errors="replace" + ) + thermal = (self.target_root / "App" / "seat_controller_thermal.c").read_text( + encoding="utf-8", errors="replace" + ) + heater = (self.target_root / "App" / "seat_backrest_heater.c").read_text( + encoding="utf-8", errors="replace" + ) + project = (self.target_root / "IAR" / "Seat_Controller_demo.ewp").read_text( + encoding="utf-8", errors="replace" + ) + checks: list[tuple[str, bool]] = [ + ("四轴时间控制", "SEAT_MOVE_OPCODE_MOVE_TIMED" in application), + ("能力配置与目标一致", feature_profile == { + "position_control": "位置控制" in target_capabilities, + "ventilation": "座椅通风" in target_capabilities, + "heating": "座椅加热" in target_capabilities, + }), + ] + if "位置控制" in target_capabilities: + checks.append(( + "位置参数控制", + "SEAT_MOVE_OPCODE_MOVE_ABSOLUTE" in application + and "SEAT_MOVE_OPCODE_MOVE_RELATIVE" in application, + )) + if "座椅通风" in target_capabilities: + checks.append(( + "座椅通风控制", + "SeatControllerThermal_RequestFan" in thermal + and '"bsp_seat_fan.h"' in thermal, + )) + if "座椅加热" in target_capabilities: + checks.append(( + "座椅加热控制", + "SeatBackrestHeater_SetLevel" in thermal and "MAX_ACTIVE_TIME" in heater, + )) + checks.extend([ + ( + "IAR 工程模块完整性", + all( + name in project + for name in ( + "seat_move_application.c", + "seat_controller_thermal.c", + "seat_backrest_heater.c", + ) + ), + ), + ("HEX 镜像有效", image_path.is_file() and image_path.stat().st_size > 1024), + ]) + failed = [name for name, passed in checks if not passed] + results = [ + { + "name": name, + "status": "passed" if passed else "failed", + "summary": "验证通过" if passed else "验证失败", + "finished_at": _now(), + } + for name, passed in checks + ] + if failed: + raise FirmwareWorkbenchError( + "固件验证失败:" + "、".join(failed), 409, "validation_failed" + ) + return results + + def _package_artifact( + self, + task_id: str, + workspace: Path, + image_path: Path, + validation: list[dict[str, Any]], + code_diff: str, + ) -> dict[str, Any]: + with self._lock: + task = self._find_task_locked(task_id) + capabilities = list(task["target_capabilities"]) + baseline_capabilities = list(task.get("baseline_capabilities", ["时间控制"])) + artifact_id = f"fw-art-{uuid.uuid4().hex[:12]}" + build_time = _now() + image_hash = hashlib.sha256(image_path.read_bytes()).hexdigest() + capability_slug = "-".join( + { + "时间控制": "time", + "位置控制": "position", + "座椅通风": "vent", + "座椅加热": "heat", + }[capability] + for capability in capabilities + ) + package_name = ( + f"PassengerSeat_{FIRMWARE_VERSION}_{capability_slug}_{artifact_id[-6:]}.zip" + ) + package_path = workspace / package_name + manifest = { + "schema": "n7-seat-ota/v1", + "software_name": SOFTWARE_NAME, + "version": FIRMWARE_VERSION, + "capabilities": capabilities, + "image": image_path.name, + "image_size": image_path.stat().st_size, + "image_sha256": image_hash, + "build_time": build_time, + "task_id": task_id, + } + manifest_path = workspace / "manifest.json" + manifest_path.write_text( + json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8" + ) + with zipfile.ZipFile(package_path, "w", compression=zipfile.ZIP_DEFLATED) as archive: + archive.write(image_path, arcname=image_path.name) + archive.write(manifest_path, arcname="manifest.json") + archive.write(workspace / "requirements.json", arcname="requirements.json") + archive.write(workspace / "validation.json", arcname="validation.json") + archive.write(workspace / "feature_profile.json", arcname="feature_profile.json") + package_hash = hashlib.sha256(package_path.read_bytes()).hexdigest() + artifact = { + "id": artifact_id, + "task_id": task_id, + "software_name": SOFTWARE_NAME, + "version": FIRMWARE_VERSION, + "capabilities": capabilities, + "baseline_capabilities": baseline_capabilities, + "build_time": build_time, + "firmware_filename": package_name, + "image_filename": image_path.name, + "size_bytes": package_path.stat().st_size, + "sha256": package_hash, + "image_sha256": image_hash, + "package_path": str(package_path), + "status": "ready", + "release_id": None, + "published_at": None, + "download_url": f"/api/firmware-workbench/artifacts/{artifact_id}/download", + "capability_diff": { + "added": [item for item in capabilities if item not in baseline_capabilities], + "retained": [item for item in capabilities if item in baseline_capabilities], + "removed": [item for item in baseline_capabilities if item not in capabilities], + }, + "code_diff": code_diff, + "validation_records": deepcopy(validation), + "file_changes": [], + } + with self._lock: + task = self._find_task_locked(task_id) + artifact["file_changes"] = deepcopy(task["file_changes"]) + self._state["artifacts"].insert(0, artifact) + task["artifact_id"] = artifact_id + self._save_locked() + return deepcopy(artifact) + + def _publish_artifact_locked(self, artifact: dict[str, Any]) -> dict[str, Any]: + package_path = Path(str(artifact["package_path"])).resolve() + self._assert_managed_path(package_path, self.artifact_root) + if not package_path.is_file(): + raise FirmwareWorkbenchError("待发布固件包不存在。", 404, "not_found") + actual_hash = hashlib.sha256(package_path.read_bytes()).hexdigest() + if actual_hash != artifact.get("sha256"): + raise FirmwareWorkbenchError("固件包 SHA-256 校验失败,已阻止发布。", 409) + + release_id = f"fw-rel-{uuid.uuid4().hex[:12]}" + download_url = f"{self.public_base_url}/{release_id}/download" + release_root = self.ota_root / "releases" / release_id + staging_root = self.ota_root / ".staging" / release_id + staging_root.mkdir(parents=True, exist_ok=False) + published_package = staging_root / str(artifact["firmware_filename"]) + shutil.copy2(package_path, published_package) + release_manifest = { + "schema": "n7-ota-release/v1", + "release_id": release_id, + "artifact_id": artifact["id"], + "software_name": artifact["software_name"], + "version": artifact["version"], + "capabilities": artifact["capabilities"], + "firmware_filename": artifact["firmware_filename"], + "size_bytes": artifact["size_bytes"], + "sha256": artifact["sha256"], + "published_at": _now(), + "status": "published", + "message": FINAL_RELEASE_MESSAGE, + "download_url": download_url, + } + (staging_root / "release.json").write_text( + json.dumps(release_manifest, ensure_ascii=False, indent=2), encoding="utf-8" + ) + release_root.parent.mkdir(parents=True, exist_ok=True) + staging_root.replace(release_root) + latest_temp = self.ota_root / "latest.tmp" + latest_temp.write_text( + json.dumps(release_manifest, ensure_ascii=False, indent=2), encoding="utf-8" + ) + latest_temp.replace(self.ota_root / "latest.json") + final_package = release_root / str(artifact["firmware_filename"]) + release = { + **release_manifest, + "id": release_id, + "package_path": str(final_package), + } + artifact.update( + { + "status": "published", + "release_id": release_id, + "published_at": release["published_at"], + "download_url": release["download_url"], + } + ) + self._state["releases"].insert(0, release) + self._save_locked() + return release + + @staticmethod + def _append_log_locked( + task: dict[str, Any], + level: str, + title: str, + message: str, + *, + stage: str | None = None, + detail: dict[str, Any] | None = None, + ) -> None: + task.setdefault("logs", []).append( + { + "id": f"log-{uuid.uuid4().hex[:10]}", + "time": _now(), + "level": level, + "stage": stage, + "title": title, + "message": message, + "detail": detail, + } + ) + task["logs"] = task["logs"][-1000:] + + def close(self) -> None: + with self._lock: + events = list(self._cancel_events.values()) + threads = list(self._threads.values()) + for event in events: + event.set() + for worker in threads: + worker.join(timeout=3) diff --git a/src/cognitive_agent/application/mode_device_additions.py b/src/cognitive_agent/application/mode_device_additions.py new file mode 100644 index 0000000..ee35261 --- /dev/null +++ b/src/cognitive_agent/application/mode_device_additions.py @@ -0,0 +1,86 @@ +"""Conservative, local defaults for adding named devices to an existing mode. + +Only a complete *bare device list* uses these defaults. Explicit parameters and +actions stay in the normal parser; unrecognised list entries never disappear. +Defaults are proposals for a fully validated preview, not executable commands. +""" + +from __future__ import annotations + +import re +from copy import deepcopy +from typing import Any + +_ADD_PREFIX = re.compile( + r"^(?:(?:请|帮我|帮忙|再|还|也|同时|顺便|继续|并且|并)\s*)*" + r"(?:加入|添加|增加|补充|加上|追加|新增)\s*" +) +_DEVICE_GROUPS = { + "空调": "climate", "冷气": "climate", + "氛围灯": "ambient_light", "气氛灯": "ambient_light", + "阅读灯": "reading", "读书灯": "reading", + "车窗": "window", "窗户": "window", + "遮阳帘": "roof", "天幕遮阳帘": "roof", "天窗遮阳帘": "roof", + "室内灯": "indoor", "顶灯": "indoor", +} +_LIST_SEPARATOR = re.compile(r"[、,,;;\s]+|以及|还有|和|与|及") +_EXPLICIT_ACTION = re.compile( + r"\d|[零一二三四五六七八九十百]+(?:度|档|挡|秒|分钟|%)|" + r"打开|开启|关闭|关掉|开到|关到|调整|设置|调到|调成|变成|改成|" + r"升高|降低|调高|调低|调亮|调暗|全开|全关|半开|一半|" + r"红色|蓝色|绿色|白色|暖色|冷色|亮度|温度|风量|内循环|外循环" +) + + +def strip_mode_addition_prefix(change_text: str) -> str: + """Remove only the editing verb, not any device, value or negation.""" + return _ADD_PREFIX.sub("", change_text.strip(), count=1) + + +def mode_device_additions( + change_text: str, + base_operations: list[dict[str, Any]], + default_operations: list[dict[str, Any]], +) -> list[dict[str, Any]] | None: + """Return missing device defaults, None for non-list/explicit edits. + + Existing groups are already configured and are left completely untouched, + including their target zones, power state and custom parameter values. + Reading and indoor lights are separate groups within the same domain. + """ + if not _ADD_PREFIX.match(change_text.strip()): + return None + body = strip_mode_addition_prefix(change_text).strip("。.!!吧 ") + if _EXPLICIT_ACTION.search(body): + return None + body = re.sub(r"(?:等)?(?:相关)?(?:设备)?(?:的)?(?:控制)?(?:动作|能力|联动)?$", "", body) + body = re.sub(r"等$", "", body) + devices = [item for item in _LIST_SEPARATOR.split(body) if item] + groups: list[str] = [] + for device in devices: + device = re.sub(r"(?:设备)?(?:的)?(?:控制)?(?:动作|能力)$", "", device) + group = _DEVICE_GROUPS.get(device) + if group is None: + raise ValueError(f"未识别或暂不支持增补设备“{device}”;未修改任何模式动作。") + if group not in groups: + groups.append(group) + if not groups: + raise ValueError("请说明要加入哪些设备,或提供明确的设备动作。") + + def belongs(operation: dict[str, Any], group: str) -> bool: + capability = str(operation.get("capability") or "") + if group == "reading": + return capability == "interior_light.set_reading_power" + if group == "indoor": + return capability == "interior_light.set_indoor_power" + return operation.get("domain") == group + + additions: list[dict[str, Any]] = [] + for group in groups: + if any(belongs(operation, group) for operation in base_operations): + continue + candidates = [operation for operation in default_operations if belongs(operation, group)] + if not candidates: + raise ValueError(f"该设备尚无经过登记的默认编排,请补充明确目标:{group}。") + additions.extend(deepcopy(candidates)) + return additions diff --git a/src/cognitive_agent/application/mode_profile_intent.py b/src/cognitive_agent/application/mode_profile_intent.py index 7919332..5ad11ae 100644 --- a/src/cognitive_agent/application/mode_profile_intent.py +++ b/src/cognitive_agent/application/mode_profile_intent.py @@ -170,11 +170,12 @@ _MODE_PROFILE_DELETE_BA = re.compile( ) _MODE_PROFILE_UPDATE_NEGATION = re.compile( r"不要|别(?:再)?|不用|无需|不必|禁止|不许|不得|" - r"取消(?:修改|调整|更改|更新|变更|操作)|不执行|不下发|不保存" + r"取消(?:修改|调整|更改|更新|变更|加入|添加|增加|补充|加上|追加|新增|操作)|" + r"撤销|算了|不执行|不下发|不保存" ) _MODE_PROFILE_UPDATE_PREFIX_NEGATION = re.compile( r"^(?:请|麻烦)?(?:先|暂时)?(?:不要|别|不用|无需|不必|禁止|不许|不得)" - r"(?:把|将|修改|调整|更改|更新|变更)" + r"(?:把|将|在|给|为|往|向|修改|调整|更改|更新|变更)" ) _MODE_POSSESSIVE_BOUNDARY = r"(?:中的|里的|内的|之中的|的|中|里|内)" _MODE_MEMBER_BOUNDARY = rf"(?:{_MODE_POSSESSIVE_BOUNDARY}|[,,::])" @@ -197,7 +198,19 @@ _CONTEXTUAL_NAME_FIRST_UPDATE = re.compile( rf"^{_LEADING_POLITE}{_QUOTED_MODE_NAME}[,,::]" r"(?P.+?)[。.!!]?$" ) +_MODE_PROFILE_APPEND_VERB = r"(?:加入|添加|增加|补充|加上|追加|新增)" +_APPEND_MODE_UPDATE = re.compile( + rf"^{_LEADING_POLITE}(?:在|给|为|往|向)?{_QUOTED_MODE_NAME}" + rf"(?:{_MODE_POSSESSIVE_BOUNDARY})?[,,::]?" + rf"(?:再|还|也|同时|另外)?(?P{_MODE_PROFILE_APPEND_VERB}.+?)[。.!!]?$" +) +_APPEND_TO_MODE_UPDATE = re.compile( + rf"^{_LEADING_POLITE}(?:把|将)(?P.+?)" + rf"(?P{_MODE_PROFILE_APPEND_VERB})(?:到|进)?{_QUOTED_MODE_NAME}" + rf"(?:{_MODE_POSSESSIVE_BOUNDARY})?(?:吧|呀|啊|哦|谢谢(?:你)?)?[。.!!]?$" +) MODE_PROFILE_CHANGE_PREDICATE = re.compile( + rf"{_MODE_PROFILE_APPEND_VERB}|" r"修改|改成|改为|更改|更新|变更|变成|变为|换成|" r"调整|调节|调高|调低|调到|调成|调为|调至|" r"设置|设为|设成|设到|设至|" @@ -208,7 +221,7 @@ MODE_PROFILE_CHANGE_PREDICATE = re.compile( r"(?:重复|循环)(?:[0-9]+(?:\.[0-9]+)?|[零一二两三四五六七八九十]+)次" ) MODE_PROFILE_QUERY_CUE = re.compile( - r"什么|哪些|多少|几(?:度|档|级|个|项)?|是否|是不是|" + r"什么|哪些|多少|几(?:度|档|级|个|项)?|是否|是不是|能否|能不能|可不可以|会不会|" r"合适(?:吗)?|合理(?:吗)?|会(?:怎么样|怎样|如何)|" r"怎么|如何|列(?:出|一下)|介绍(?:一下)?|说明(?:一下)?|" r"告诉我|查询|查看|有什么作用|是何作用|还是|[??]|(?:吗|么|呢)$" @@ -610,6 +623,8 @@ def _candidate_matches( ) -> list[tuple[re.Match[str], bool]]: matches: list[tuple[re.Match[str], bool]] = [] for pattern, predicate_required in ( + (_APPEND_MODE_UPDATE, True), + (_APPEND_TO_MODE_UPDATE, False), (_PREFIX_UPDATE, False), (_BA_UPDATE, True), (_NAME_FIRST_UPDATE, True), @@ -629,6 +644,14 @@ def _candidate_matches( return matches +def _mode_profile_update_change(match: re.Match[str], name: str) -> str: + change = _strip_repeated_mode_update_subject(str(match.group("change") or ""), name) + append_verb = str(match.groupdict().get("append_verb") or "") + # Keep reverse-order additions on the same service contract as name-first + # additions. Device names, explicit targets and parameters remain unchanged. + return f"{append_verb}{change}" if append_verb else change + + def _strip_repeated_mode_update_subject(change: str, mode_name: str) -> str: """Remove a repeated ``把的`` wrapper from an update body.""" @@ -708,10 +731,7 @@ def is_mode_profile_update_shape( and _is_unquoted_device_property_mode(match, name) ): continue - change = _strip_repeated_mode_update_subject( - str(match.group("change") or ""), - name, - ) + change = _mode_profile_update_change(match, name) if change and ( not predicate_required or MODE_PROFILE_CHANGE_PREDICATE.search(change) ): @@ -746,10 +766,9 @@ def parse_mode_profile_update( and _is_unquoted_device_property_mode(match, name) ): continue - change = _strip_repeated_mode_update_subject( - str(match.group("change") or ""), - name, - ) + change = _mode_profile_update_change(match, name) + if re.fullmatch(rf"(?:再|还|也|同时|另外)?{_MODE_PROFILE_APPEND_VERB}(?:一下)?", change): + continue if ( (not predicate_required or MODE_PROFILE_CHANGE_PREDICATE.search(change)) and not _MODE_PROFILE_UPDATE_NEGATION.search(change) diff --git a/src/cognitive_agent/firmware_ota_server.py b/src/cognitive_agent/firmware_ota_server.py new file mode 100644 index 0000000..87fed21 --- /dev/null +++ b/src/cognitive_agent/firmware_ota_server.py @@ -0,0 +1,308 @@ +"""Read-only HTTP surface for vehicle firmware discovery and download.""" + +from __future__ import annotations + +import argparse +import json +import mimetypes +import os +import re +from http import HTTPStatus +from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer +from pathlib import Path +from urllib.parse import unquote, urlparse + +from cognitive_agent.config_loader import load_local_env + + +REPOSITORY_ROOT = Path(__file__).resolve().parents[2] +load_local_env(REPOSITORY_ROOT / ".env", override=True) + +RELEASE_ID_PATTERN = re.compile(r"[a-z0-9][a-z0-9-]{7,80}") +DOWNLOAD_PATH_PATTERN = re.compile( + r"/api/firmware-workbench/releases/(?P[a-z0-9-]+)/download" +) +LATEST_PATHS = frozenset( + { + "/latest", + "/api/firmware-workbench/releases/latest", + } +) +RELEASES_PATHS = frozenset( + { + "/releases", + "/api/firmware-workbench/releases", + } +) + + +class FirmwareOtaRepository: + """Resolve atomically published OTA manifests without loading workbench state.""" + + def __init__(self, root: Path, public_base_url: str) -> None: + self.root = Path(root).resolve() + self.public_base_url = str(public_base_url).rstrip("/") + + def latest(self) -> dict[str, object]: + manifest_path = self.root / "latest.json" + manifest = self._read_manifest(manifest_path) + return self._public_manifest(manifest) + + def releases(self) -> dict[str, object]: + releases_root = self.root / "releases" + manifests: list[dict[str, object]] = [] + if releases_root.is_dir(): + for release_root in releases_root.iterdir(): + if not release_root.is_dir(): + continue + try: + manifest = self._read_manifest(release_root / "release.json") + release_id = self._release_id(manifest) + if release_id != release_root.name: + continue + package, _, _ = self.release_package(release_id) + expected_size = manifest.get("size_bytes") + if ( + expected_size is not None + and int(expected_size) != package.stat().st_size + ): + continue + if str(manifest.get("status") or "published") != "published": + continue + manifests.append(self._public_manifest(manifest)) + except (FileNotFoundError, OSError, TypeError, ValueError): + continue + manifests.sort( + key=lambda item: str(item.get("published_at") or ""), reverse=True + ) + latest_release_id = ( + str(manifests[0]["release_id"]) if manifests else None + ) + return { + "schema": "n7-ota-release-list/v1", + "count": len(manifests), + "latest_release_id": latest_release_id, + "releases": manifests, + } + + def release_package(self, release_id: str) -> tuple[Path, str, str]: + checked = str(release_id).strip() + if not RELEASE_ID_PATTERN.fullmatch(checked): + raise FileNotFoundError("release not found") + release_root = (self.root / "releases" / checked).resolve() + try: + release_root.relative_to((self.root / "releases").resolve()) + except ValueError as exc: + raise FileNotFoundError("release not found") from exc + manifest = self._read_manifest(release_root / "release.json") + if self._release_id(manifest) != checked: + raise FileNotFoundError("release not found") + filename = str(manifest.get("firmware_filename") or "") + if not filename or Path(filename).name != filename: + raise FileNotFoundError("firmware package not found") + package = (release_root / filename).resolve() + try: + package.relative_to(release_root) + except ValueError as exc: + raise FileNotFoundError("firmware package not found") from exc + if not package.is_file(): + raise FileNotFoundError("firmware package not found") + expected_hash = str(manifest.get("sha256") or "").lower() + return package, filename, expected_hash + + def _public_manifest(self, manifest: dict[str, object]) -> dict[str, object]: + payload = dict(manifest) + release_id = self._release_id(payload) + payload["schema"] = "n7-ota-release/v1" + payload["release_id"] = release_id + payload["download_url"] = f"{self.public_base_url}/{release_id}/download" + payload.pop("package_path", None) + return payload + + @staticmethod + def _read_manifest(path: Path) -> dict[str, object]: + try: + document = json.loads(path.read_text(encoding="utf-8")) + except (OSError, ValueError, TypeError) as exc: + raise FileNotFoundError("manifest not found") from exc + if not isinstance(document, dict): + raise FileNotFoundError("manifest not found") + return document + + @staticmethod + def _release_id(manifest: dict[str, object]) -> str: + release_id = str(manifest.get("release_id") or manifest.get("id") or "") + if not RELEASE_ID_PATTERN.fullmatch(release_id): + raise FileNotFoundError("release not found") + return release_id + + +class FirmwareOtaHandler(BaseHTTPRequestHandler): + """Expose health, release manifests, and immutable firmware packages.""" + + repository: FirmwareOtaRepository + server_version = "N7FirmwareOta/1.0" + + def do_GET(self) -> None: # noqa: N802 - stdlib handler API + self._handle_request(send_body=True) + + def do_HEAD(self) -> None: # noqa: N802 - stdlib handler API + self._handle_request(send_body=False) + + def _handle_request(self, *, send_body: bool) -> None: + path = unquote(urlparse(self.path).path) + if path == "/healthz": + self._json({"status": "ok", "service": "n7-firmware-ota"}, send_body) + return + if path in LATEST_PATHS: + try: + self._json(self.repository.latest(), send_body) + except FileNotFoundError: + self._json( + {"error": "not_found", "message": "暂无可供车机升级的固件。"}, + send_body, + HTTPStatus.NOT_FOUND, + ) + return + if path in RELEASES_PATHS: + self._json(self.repository.releases(), send_body) + return + match = DOWNLOAD_PATH_PATTERN.fullmatch(path) + if match: + try: + package, filename, expected_hash = self.repository.release_package( + match.group("release_id") + ) + self._file(package, filename, expected_hash, send_body) + except FileNotFoundError: + self._json( + {"error": "not_found", "message": "OTA 固件包不存在。"}, + send_body, + HTTPStatus.NOT_FOUND, + ) + return + self._json( + {"error": "not_found", "message": "接口不存在。"}, + send_body, + HTTPStatus.NOT_FOUND, + ) + + def _file( + self, + path: Path, + filename: str, + expected_hash: str, + send_body: bool, + ) -> None: + size = path.stat().st_size + try: + start, end, partial = self._byte_range(size) + except ValueError: + self.send_response(HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE) + self.send_header("Content-Range", f"bytes */{size}") + self.send_header("Content-Length", "0") + self._security_headers() + self.end_headers() + return + content_length = end - start + 1 + self.send_response(HTTPStatus.PARTIAL_CONTENT if partial else HTTPStatus.OK) + self.send_header( + "Content-Type", mimetypes.guess_type(filename)[0] or "application/octet-stream" + ) + self.send_header("Content-Length", str(content_length)) + self.send_header("Content-Disposition", f'attachment; filename="{filename}"') + self.send_header("Accept-Ranges", "bytes") + self.send_header("Cache-Control", "public, max-age=31536000, immutable") + if expected_hash: + self.send_header("X-Firmware-SHA256", expected_hash) + if partial: + self.send_header("Content-Range", f"bytes {start}-{end}/{size}") + self._security_headers() + self.end_headers() + if not send_body: + return + with path.open("rb") as source: + source.seek(start) + remaining = content_length + while remaining: + chunk = source.read(min(64 * 1024, remaining)) + if not chunk: + break + self.wfile.write(chunk) + remaining -= len(chunk) + + def _byte_range(self, size: int) -> tuple[int, int, bool]: + value = str(self.headers.get("Range") or "").strip() + if not value: + return 0, size - 1, False + match = re.fullmatch(r"bytes=(\d*)-(\d*)", value) + if not match or not any(match.groups()): + raise ValueError("invalid byte range") + first, last = match.groups() + if first: + start = int(first) + end = int(last) if last else size - 1 + else: + suffix = int(last) + if suffix <= 0: + raise ValueError("invalid byte range") + start = max(0, size - suffix) + end = size - 1 + if start >= size or end < start: + raise ValueError("invalid byte range") + return start, min(end, size - 1), True + + def _json( + self, + payload: object, + send_body: bool, + status: HTTPStatus = HTTPStatus.OK, + ) -> None: + content = json.dumps(payload, ensure_ascii=False).encode("utf-8") + self.send_response(status) + self.send_header("Content-Type", "application/json; charset=utf-8") + self.send_header("Content-Length", str(len(content))) + self.send_header("Cache-Control", "no-store") + self._security_headers() + self.end_headers() + if send_body: + self.wfile.write(content) + + def _security_headers(self) -> None: + self.send_header("X-Content-Type-Options", "nosniff") + self.send_header("Referrer-Policy", "no-referrer") + self.send_header("Content-Security-Policy", "default-src 'none'; frame-ancestors 'none'") + + +def main() -> None: + parser = argparse.ArgumentParser(description="Run the read-only vehicle OTA service") + parser.add_argument( + "--host", default=os.getenv("FIRMWARE_OTA_BIND_HOST", "127.0.0.1") + ) + parser.add_argument( + "--port", type=int, default=int(os.getenv("FIRMWARE_OTA_PORT", "8012")) + ) + args = parser.parse_args() + configured_root = os.getenv("FIRMWARE_WORKBENCH_OTA_ROOT", "").strip() + ota_root = ( + Path(configured_root) + if configured_root + else REPOSITORY_ROOT / "artifacts" / "server" / "firmware-ota" + ) + public_base_url = os.getenv( + "FIRMWARE_WORKBENCH_OTA_PUBLIC_BASE_URL", + f"http://{args.host}:{args.port}/api/firmware-workbench/releases", + ) + FirmwareOtaHandler.repository = FirmwareOtaRepository(ota_root, public_base_url) + server = ThreadingHTTPServer((args.host, args.port), FirmwareOtaHandler) + print(f"N7 firmware OTA service: http://{args.host}:{args.port}", flush=True) + try: + server.serve_forever() + except KeyboardInterrupt: + pass + finally: + server.server_close() + + +if __name__ == "__main__": + main() diff --git a/src/cognitive_agent/server.py b/src/cognitive_agent/server.py index 84861d7..253b7d9 100755 --- a/src/cognitive_agent/server.py +++ b/src/cognitive_agent/server.py @@ -43,6 +43,10 @@ from cognitive_agent.application.codex_assistant import ( # noqa: E402 CodexAssistantService, CodexVehicleToolError, ) +from cognitive_agent.application.firmware_workbench import ( # noqa: E402 + FirmwareWorkbenchError, + FirmwareWorkbenchService, +) from cognitive_agent.application.gesture_bridge import GestureCapabilityBridge # noqa: E402 from cognitive_agent.application.mode_profile_intent import ( # noqa: E402 normalize_mode_profile_name, @@ -103,7 +107,11 @@ PUBLIC_AUTH_PATHS = { "/network.js", "/api/auth/status", "/api/auth/login", + "/api/firmware-workbench/releases/latest", } +PUBLIC_OTA_DOWNLOAD_PATH = re.compile( + r"/api/firmware-workbench/releases/[a-z0-9-]+/download" +) NON_DISPATCH_DISPLAY_SOURCES = frozenset({"mode_editor_compile"}) @@ -207,6 +215,7 @@ def _lan_ipv4_address() -> str | None: class SeatDemoHandler(BaseHTTPRequestHandler): service = SeatDemoService() + firmware_workbench = FirmwareWorkbenchService(REPOSITORY_ROOT) # Codex defaults to its own empty temporary workspace. A deployment may # opt into another isolated directory through CODEX_ASSISTANT_WORKSPACE, # but it must never inherit access to this application's source tree. @@ -317,6 +326,63 @@ class SeatDemoHandler(BaseHTTPRequestHandler): if path == "/api/assistant/capabilities": self._json(self._assistant_capability_catalog().snapshot()) return + if path == "/api/firmware-workbench/state": + self._json(self.firmware_workbench.snapshot()) + return + if path == "/api/firmware-workbench/releases/latest": + try: + self._json(self.firmware_workbench.latest_release()) + except FirmwareWorkbenchError as exc: + self._json( + {"error": exc.code, "message": str(exc)}, HTTPStatus(exc.status) + ) + return + firmware_task_match = re.fullmatch( + r"/api/firmware-workbench/tasks/(?P[a-z0-9-]+)", path + ) + if firmware_task_match: + try: + self._json( + self.firmware_workbench.task(firmware_task_match.group("task_id")) + ) + except FirmwareWorkbenchError as exc: + self._json( + {"error": exc.code, "message": str(exc)}, HTTPStatus(exc.status) + ) + return + firmware_artifact_download_match = re.fullmatch( + r"/api/firmware-workbench/artifacts/(?P[a-z0-9-]+)/download", + path, + ) + if firmware_artifact_download_match: + self._serve_firmware_download( + "artifact", firmware_artifact_download_match.group("artifact_id") + ) + return + firmware_release_download_match = re.fullmatch( + r"/api/firmware-workbench/releases/(?P[a-z0-9-]+)/download", + path, + ) + if firmware_release_download_match: + self._serve_firmware_download( + "release", firmware_release_download_match.group("release_id") + ) + return + firmware_artifact_match = re.fullmatch( + r"/api/firmware-workbench/artifacts/(?P[a-z0-9-]+)", path + ) + if firmware_artifact_match: + try: + self._json( + self.firmware_workbench.artifact( + firmware_artifact_match.group("artifact_id") + ) + ) + except FirmwareWorkbenchError as exc: + self._json( + {"error": exc.code, "message": str(exc)}, HTTPStatus(exc.status) + ) + return if path == "/api/runtime": self._json(self.service.runtime_info()) return @@ -510,6 +576,11 @@ class SeatDemoHandler(BaseHTTPRequestHandler): return if not self._require_json_content_type(): return + if path == "/api/firmware-workbench/tasks" or path.startswith( + "/api/firmware-workbench/" + ): + self._handle_firmware_workbench_post(path) + return if path in { "/api/hardware/access/request", "/api/hardware/access/release", @@ -2529,6 +2600,24 @@ class SeatDemoHandler(BaseHTTPRequestHandler): HTTPStatus.BAD_REQUEST, ) return + firmware_artifact_match = re.fullmatch( + r"/api/firmware-workbench/artifacts/(?P[a-z0-9-]+)", + path, + ) + if firmware_artifact_match is not None: + try: + self._json( + self.firmware_workbench.delete_artifact( + firmware_artifact_match.group("artifact_id") + ), + HTTPStatus.OK, + ) + except FirmwareWorkbenchError as exc: + self._json( + {"error": exc.code, "message": str(exc)}, + HTTPStatus(exc.status), + ) + return prefix = "/api/mode-profiles/" if not path.startswith(prefix): self._json({"error": "not_found"}, HTTPStatus.NOT_FOUND) @@ -3259,6 +3348,70 @@ class SeatDemoHandler(BaseHTTPRequestHandler): raise ValueError("request body must be a JSON object") return payload + def _handle_firmware_workbench_post(self, path: str) -> None: + try: + payload = self._read_json_body(max_bytes=16 * 1024) + if path == "/api/firmware-workbench/tasks": + result = self.firmware_workbench.start_task( + str(payload.get("instruction", "")), + str(payload.get("baseline_id", "time_only")), + ) + self._json(result, HTTPStatus.ACCEPTED) + return + task_action_match = re.fullmatch( + r"/api/firmware-workbench/tasks/(?P[a-z0-9-]+)/(?Pcancel|retry)", + path, + ) + if task_action_match: + task_id = task_action_match.group("task_id") + if task_action_match.group("action") == "cancel": + self._json(self.firmware_workbench.cancel_task(task_id)) + else: + self._json( + self.firmware_workbench.retry_task(task_id), HTTPStatus.ACCEPTED + ) + return + artifact_publish_match = re.fullmatch( + r"/api/firmware-workbench/artifacts/(?P[a-z0-9-]+)/publish", + path, + ) + if artifact_publish_match: + self._json( + self.firmware_workbench.publish_artifact( + artifact_publish_match.group("artifact_id") + ) + ) + return + self._json({"error": "not_found"}, HTTPStatus.NOT_FOUND) + except (ValueError, json.JSONDecodeError) as exc: + self._json( + {"error": "invalid_request", "message": str(exc)}, + HTTPStatus.BAD_REQUEST, + ) + except FirmwareWorkbenchError as exc: + self._json({"error": exc.code, "message": str(exc)}, HTTPStatus(exc.status)) + + def _serve_firmware_download(self, kind: str, item_id: str) -> None: + try: + if kind == "release": + path, filename = self.firmware_workbench.resolve_release_download(item_id) + else: + path, filename = self.firmware_workbench.resolve_artifact_download(item_id) + content = path.read_bytes() + self.send_response(HTTPStatus.OK) + self.send_header("Content-Type", "application/zip") + self.send_header("Content-Length", str(len(content))) + self.send_header("Cache-Control", "private, no-store") + self.send_header( + "Content-Disposition", + f"attachment; filename*=UTF-8''{quote(filename, safe='.-_')}", + ) + self._send_security_headers() + self.end_headers() + self.wfile.write(content) + except FirmwareWorkbenchError as exc: + self._json({"error": exc.code, "message": str(exc)}, HTTPStatus(exc.status)) + def _require_json_content_type(self) -> bool: if is_json_content_type(self.headers.get("Content-Type", "")): return True @@ -3505,7 +3658,11 @@ class SeatDemoHandler(BaseHTTPRequestHandler): pass def _authorize(self, path: str) -> bool: - if not self.auth.config.enabled or path in PUBLIC_AUTH_PATHS: + if ( + not self.auth.config.enabled + or path in PUBLIC_AUTH_PATHS + or PUBLIC_OTA_DOWNLOAD_PATH.fullmatch(path) + ): return True if self._session_username() is not None: return True @@ -3780,8 +3937,13 @@ class SeatDemoHandler(BaseHTTPRequestHandler): self.end_headers() def _send_security_headers(self) -> None: + allow_same_origin_frame = ( + unquote(urlparse(self.path).path) == "/firmware-workbench.html" + ) self.send_header("X-Content-Type-Options", "nosniff") - self.send_header("X-Frame-Options", "DENY") + self.send_header( + "X-Frame-Options", "SAMEORIGIN" if allow_same_origin_frame else "DENY" + ) self.send_header("Referrer-Policy", "no-referrer") self.send_header( "Permissions-Policy", @@ -3796,7 +3958,8 @@ class SeatDemoHandler(BaseHTTPRequestHandler): "media-src 'self' blob:; " "frame-src 'self' http://*:3001; " "connect-src 'self' blob: http://172.20.10.6:8889; " - "object-src 'none'; base-uri 'none'; frame-ancestors 'none'", + "object-src 'none'; base-uri 'none'; frame-ancestors " + + ("'self'" if allow_same_origin_frame else "'none'"), ) if self._is_https(): self.send_header( @@ -3893,6 +4056,7 @@ def main() -> None: SeatDemoHandler.nfc.close() SeatDemoHandler.calibration.close() SeatDemoHandler.repair.close() + SeatDemoHandler.firmware_workbench.close() if __name__ == "__main__": diff --git a/tests/e2e/mode_schedule_browser.cjs b/tests/e2e/mode_schedule_browser.cjs index 927f729..a5495f5 100644 --- a/tests/e2e/mode_schedule_browser.cjs +++ b/tests/e2e/mode_schedule_browser.cjs @@ -75,6 +75,65 @@ async function main() { await page.locator('[data-execution-mode="dry_run"]').click(); assert.equal(await page.evaluate(() => window.CognitiveAgentConsole.getExecutionMode()), "dry_run"); + async function submitDraft(text) { + const responsePromise = responseFor("/api/assistant/stream"); + await page.locator("#utterance").fill(text); + await page.locator("#utterance").press("Enter"); + const response = await responsePromise; + const body = responses.filter((item) => item.pathname === "/api/assistant/stream").at(-1).text; + assert.equal(response.status(), 200, `${text}: ${body}`); + const events = body.trim().split("\n").map((line) => JSON.parse(line)); + await waitIdle(); + const payload = events.find((event) => event.payload?.mode_profile_draft)?.payload; + assert.ok(payload, `Missing draft for ${text}: ${body}`); + assert.equal(payload.status, "succeeded"); + assert.equal(payload.execution_mode, "dry_run"); + const draft = payload.mode_profile_draft; + const card = page.locator(`[data-assistant-mode-draft="${draft.source_request_id}"]`); + await card.waitFor({ state: "visible" }); + assert.equal(await card.locator(".assistant-mode-draft-row").count(), draft.operation_count); + return { payload, draft, card, request: posted.filter((item) => item.pathname === "/api/assistant/stream").at(-1).payload }; + } + + // The original failing two-turn request must revise the server-owned + // draft, not attempt immediate hardware execution or replace its seats. + const recline = await submitDraft("构建一个躺平模式"); + const originalActions = recline.payload.actions; + await recline.card.scrollIntoViewIfNeeded(); + await page.screenshot({ path: path.join(evidenceDir, "mode-device-addition-before.png") }); + const expanded = await submitDraft("在躺平模式中加入空调、氛围灯、阅读灯、车窗等设备动作"); + assert.deepEqual(expanded.request.mode_profile_draft_context, { + name: recline.draft.name, + source_request_id: recline.draft.source_request_id, + vehicle_id: recline.draft.vehicle_id, + }); + assert.notEqual(expanded.draft.source_request_id, recline.draft.source_request_id); + assert.equal(expanded.draft.draft_revision, 2); + const actionKey = (action) => `${action.capability}:${action.target?.instance || action.target?.zone || ""}`; + const expandedActions = new Map(expanded.payload.actions.map((action) => [actionKey(action), action])); + for (const original of originalActions) { + assert.deepEqual(expandedActions.get(actionKey(original))?.parameters, original.parameters, + "adding devices must preserve all existing action values"); + } + for (const capability of ["climate.set_temperature", "interior_light.set_reading_power", "window.set_position"]) { + assert.ok(expanded.payload.actions.some((action) => action.capability === capability), capability); + } + assert.ok(expanded.payload.actions.some((action) => action.domain === "ambient_light")); + assert.ok(expanded.payload.actions.every((action) => action.domain !== "seat" + || (action.target?.instance || action.target?.zone) === "passenger")); + assert.ok(expanded.draft.operation_count > recline.draft.operation_count); + assert.equal(await recline.card.getAttribute("data-superseded"), "true"); + assert.equal(await recline.card.locator(".assistant-mode-draft-save").isDisabled(), true); + assert.equal(posted.filter((item) => item.pathname === "/api/mode-profiles").length, 0); + await expanded.card.scrollIntoViewIfNeeded(); + await page.screenshot({ path: path.join(evidenceDir, "mode-device-addition-after.png") }); + const temperatureEdit = await submitDraft("把躺平模式的空调温度调整到26度"); + assert.equal(temperatureEdit.request.mode_profile_draft_context.source_request_id, expanded.draft.source_request_id); + assert.equal(temperatureEdit.draft.draft_revision, 3); + assert.equal(temperatureEdit.draft.operation_count, expanded.draft.operation_count); + assert.ok(temperatureEdit.payload.actions.some((action) => action.capability === "climate.set_temperature" + && action.parameters.temperature_c === 26)); + // Exercise the same real assistant endpoint and rendered cards for both // implicit passenger selection and an explicit driver request. These // previews stay unsaved, so the timeline save/trial tests remain isolated. diff --git a/tests/e2e/test_firmware_ota_server.py b/tests/e2e/test_firmware_ota_server.py new file mode 100644 index 0000000..e6e821d --- /dev/null +++ b/tests/e2e/test_firmware_ota_server.py @@ -0,0 +1,112 @@ +from __future__ import annotations + +import hashlib +import json +import threading +import urllib.request +from http.server import ThreadingHTTPServer +from pathlib import Path + +from cognitive_agent.firmware_ota_server import FirmwareOtaHandler, FirmwareOtaRepository + + +class TestFirmwareOtaServer: + def test_latest_download_head_and_resume_are_read_only(self, tmp_path: Path) -> None: + release_id = "fw-rel-123456789abc" + filename = "PassengerSeat_test.zip" + package = (b"vehicle-firmware-package" * 128) + b"end" + release_root = tmp_path / "releases" / release_id + release_root.mkdir(parents=True) + package_path = release_root / filename + package_path.write_bytes(package) + manifest = { + "schema": "n7-ota-release/v1", + "release_id": release_id, + "firmware_filename": filename, + "size_bytes": len(package), + "sha256": hashlib.sha256(package).hexdigest(), + "capabilities": ["时间控制", "座椅加热"], + "published_at": "2026-09-16T13:17:17+08:00", + "status": "published", + "download_url": "http://stale-address.invalid/download", + } + (release_root / "release.json").write_text( + json.dumps(manifest, ensure_ascii=False), encoding="utf-8" + ) + (tmp_path / "latest.json").write_text( + json.dumps(manifest, ensure_ascii=False), encoding="utf-8" + ) + older_release_id = "fw-rel-000000000001" + older_root = tmp_path / "releases" / older_release_id + older_root.mkdir(parents=True) + older_filename = "PassengerSeat_older.zip" + older_package = b"older-firmware-package" + (older_root / older_filename).write_bytes(older_package) + older_manifest = { + **manifest, + "release_id": older_release_id, + "firmware_filename": older_filename, + "size_bytes": len(older_package), + "sha256": hashlib.sha256(older_package).hexdigest(), + "published_at": "2026-09-15T13:17:17+08:00", + } + (older_root / "release.json").write_text( + json.dumps(older_manifest, ensure_ascii=False), encoding="utf-8" + ) + + class Handler(FirmwareOtaHandler): + repository = FirmwareOtaRepository( + tmp_path, "https://n7-ota.example.ts.net/api/firmware-workbench/releases" + ) + + server = ThreadingHTTPServer(("127.0.0.1", 0), Handler) + thread = threading.Thread(target=server.serve_forever, daemon=True) + thread.start() + base_url = f"http://127.0.0.1:{server.server_port}" + try: + with urllib.request.urlopen( + f"{base_url}/api/firmware-workbench/releases/latest", timeout=3 + ) as response: + latest = json.loads(response.read().decode("utf-8")) + assert latest["download_url"] == ( + f"https://n7-ota.example.ts.net/api/firmware-workbench/releases/" + f"{release_id}/download" + ) + + with urllib.request.urlopen( + f"{base_url}/api/firmware-workbench/releases", timeout=3 + ) as response: + releases = json.loads(response.read().decode("utf-8")) + assert releases["schema"] == "n7-ota-release-list/v1" + assert releases["count"] == 2 + assert releases["latest_release_id"] == release_id + assert [item["release_id"] for item in releases["releases"]] == [ + release_id, + older_release_id, + ] + assert releases["releases"][1]["download_url"].endswith( + f"/{older_release_id}/download" + ) + + request = urllib.request.Request( + f"{base_url}/api/firmware-workbench/releases/{release_id}/download", + headers={"Range": "bytes=8-31"}, + ) + with urllib.request.urlopen(request, timeout=3) as response: + assert response.status == 206 + assert response.headers["Content-Range"] == f"bytes 8-31/{len(package)}" + assert response.headers["X-Firmware-SHA256"] == manifest["sha256"] + assert response.read() == package[8:32] + + head = urllib.request.Request( + f"{base_url}/api/firmware-workbench/releases/{release_id}/download", + method="HEAD", + ) + with urllib.request.urlopen(head, timeout=3) as response: + assert response.status == 200 + assert int(response.headers["Content-Length"]) == len(package) + assert response.read() == b"" + finally: + server.shutdown() + server.server_close() + thread.join(timeout=3) diff --git a/tests/e2e/test_firmware_workbench_api.py b/tests/e2e/test_firmware_workbench_api.py new file mode 100644 index 0000000..fa83669 --- /dev/null +++ b/tests/e2e/test_firmware_workbench_api.py @@ -0,0 +1,167 @@ +from __future__ import annotations + +import json +import tempfile +import threading +import time +import urllib.request +from http.server import ThreadingHTTPServer +from pathlib import Path + +from cognitive_agent.application.firmware_workbench import FirmwareWorkbenchService +from cognitive_agent.auth import AuthConfig, AuthRuntime +from cognitive_agent.server import SeatDemoHandler + +ROOT = Path(__file__).resolve().parents[2] + + +class TestFirmwareWorkbenchApi: + @classmethod + def setup_class(cls) -> None: + cls.temporary_directory = tempfile.TemporaryDirectory() + root = Path(cls.temporary_directory.name) + image = root / "Seat_Controller_demo.hex" + image.write_bytes(b":020000040000FA\n" + b":100000000102030405060708090A0B0C0D0E0F1068\n" * 80) + + def build_runner(task_id: str, log: object, cancel: threading.Event) -> Path: + log("info", f"IAR task {task_id}: 0 errors, 0 warnings") + return image + + cls.workbench = FirmwareWorkbenchService( + ROOT, + artifact_root=root / "workbench", + ota_root=root / "ota", + build_runner=build_runner, + ) + cls.original_workbench = SeatDemoHandler.firmware_workbench + cls.original_auth = SeatDemoHandler.auth + SeatDemoHandler.firmware_workbench = cls.workbench + SeatDemoHandler.auth = AuthRuntime( + AuthConfig( + enabled=False, + username="", + password_hash="", + session_secret=b"t" * 64, + session_ttl_seconds=3600, + login_attempts=5, + login_window_seconds=300, + requests_per_minute=120, + trust_proxy_headers=False, + ) + ) + cls.server = ThreadingHTTPServer(("127.0.0.1", 0), SeatDemoHandler) + cls.thread = threading.Thread(target=cls.server.serve_forever, daemon=True) + cls.thread.start() + cls.base_url = f"http://127.0.0.1:{cls.server.server_port}" + + @classmethod + def teardown_class(cls) -> None: + cls.server.shutdown() + cls.server.server_close() + cls.thread.join(timeout=2) + cls.workbench.close() + SeatDemoHandler.firmware_workbench = cls.original_workbench + SeatDemoHandler.auth = cls.original_auth + cls.temporary_directory.cleanup() + + @classmethod + def post(cls, path: str, payload: dict[str, object]) -> tuple[int, dict[str, object]]: + request = urllib.request.Request( + f"{cls.base_url}{path}", + method="POST", + headers={"Content-Type": "application/json"}, + data=json.dumps(payload, ensure_ascii=False).encode(), + ) + with urllib.request.urlopen(request, timeout=5) as response: + return response.status, json.loads(response.read().decode()) + + def test_real_http_task_publish_detail_and_download_flow(self) -> None: + instruction = "增加位置控制、座椅通风和座椅加热功能" + status, created = self.post( + "/api/firmware-workbench/tasks", {"instruction": instruction} + ) + assert status == 202 + task_id = str(created["task"]["id"]) + + deadline = time.monotonic() + 5 + while time.monotonic() < deadline: + with urllib.request.urlopen( + f"{self.base_url}/api/firmware-workbench/tasks/{task_id}", timeout=5 + ) as response: + task = json.loads(response.read().decode()) + if task["status"] not in {"waiting", "running", "pending_confirmation"}: + break + time.sleep(0.03) + assert task["status"] == "success" + assert task["message"] == "已发布,待车机端下载升级" + with urllib.request.urlopen( + f"{self.base_url}/api/firmware-workbench/releases/latest", timeout=5 + ) as response: + latest = json.loads(response.read().decode()) + assert latest["release_id"] == task["release_id"] + assert latest["download_url"].endswith(f"/{task['release_id']}/download") + + repeated_status, repeated = self.post( + "/api/firmware-workbench/tasks", {"instruction": instruction} + ) + assert repeated_status == 202 + assert repeated["task"]["id"] != task_id + repeated_task_id = str(repeated["task"]["id"]) + deadline = time.monotonic() + 5 + while time.monotonic() < deadline: + with urllib.request.urlopen( + f"{self.base_url}/api/firmware-workbench/tasks/{repeated_task_id}", timeout=5 + ) as response: + repeated_task = json.loads(response.read().decode()) + if repeated_task["status"] not in {"waiting", "running", "pending_confirmation"}: + break + time.sleep(0.03) + assert repeated_task["status"] == "success" + + artifact_id = task["artifact_id"] + with urllib.request.urlopen( + f"{self.base_url}/api/firmware-workbench/artifacts/{artifact_id}", timeout=5 + ) as response: + artifact = json.loads(response.read().decode()) + assert artifact["status"] == "published" + assert artifact["sha256"] + + release_id = task["release_id"] + with urllib.request.urlopen( + f"{self.base_url}/api/firmware-workbench/releases/{release_id}/download", + timeout=5, + ) as response: + package = response.read() + assert response.headers["Content-Type"] == "application/zip" + assert "attachment" in response.headers["Content-Disposition"] + assert len(package) == artifact["size_bytes"] + + delete_request = urllib.request.Request( + f"{self.base_url}/api/firmware-workbench/artifacts/{artifact_id}", + method="DELETE", + ) + with urllib.request.urlopen(delete_request, timeout=5) as response: + deleted = json.loads(response.read().decode()) + assert deleted["deleted"] is True + repeated_artifact_id = str(repeated_task["artifact_id"]) + repeated_delete_request = urllib.request.Request( + f"{self.base_url}/api/firmware-workbench/artifacts/{repeated_artifact_id}", + method="DELETE", + ) + with urllib.request.urlopen(repeated_delete_request, timeout=5) as response: + assert json.loads(response.read().decode())["deleted"] is True + with urllib.request.urlopen( + f"{self.base_url}/api/firmware-workbench/state", timeout=5 + ) as response: + state = json.loads(response.read().decode()) + assert [item["id"] for item in state["artifacts"]] == [ + "fw-art-time-only-baseline" + ] + + with urllib.request.urlopen( + f"{self.base_url}/firmware-workbench.html", timeout=5 + ) as response: + page = response.read().decode() + assert response.headers["X-Frame-Options"] == "SAMEORIGIN" + assert "frame-ancestors 'self'" in response.headers["Content-Security-Policy"] + assert "座椅固件开发工作台" in page diff --git a/tests/e2e/test_http_request_security.py b/tests/e2e/test_http_request_security.py index 1bb92b2..9e3d2f5 100644 --- a/tests/e2e/test_http_request_security.py +++ b/tests/e2e/test_http_request_security.py @@ -89,6 +89,13 @@ class TestMutationRequestSecurity: except urllib.error.HTTPError as exc: return exc.code, json.loads(exc.read().decode("utf-8")) + def get(self, path: str) -> tuple[int, dict[str, object]]: + try: + with urllib.request.urlopen(f"{self.base_url}{path}", timeout=3) as response: + return response.status, json.loads(response.read().decode("utf-8")) + except urllib.error.HTTPError as exc: + return exc.code, json.loads(exc.read().decode("utf-8")) + def test_same_origin_json_assistant_request_is_accepted(self) -> None: status, body = self.post( "/api/assistant/stream", @@ -147,6 +154,29 @@ class TestMutationRequestSecurity: assert status == 200 assert MutationSecurityHandler.last_hardware_bypass is False + def test_vehicle_ota_download_is_public_but_workbench_state_remains_private(self) -> None: + MutationSecurityHandler.auth = _auth(enabled=True) + try: + download_status, download_body = self.get( + "/api/firmware-workbench/releases/fw-rel-missing1234/download" + ) + latest_status, latest_body = self.get( + "/api/firmware-workbench/releases/latest" + ) + state_status, state_body = self.get("/api/firmware-workbench/state") + finally: + MutationSecurityHandler.auth = _auth(enabled=False) + + assert download_status == 404 + assert download_body["error"] == "not_found" + assert latest_status in {200, 404} + if latest_status == 404: + assert latest_body["error"] == "not_found" + else: + assert latest_body["download_url"] + assert state_status == 401 + assert state_body["error"] == "authentication_required" + def test_hardware_bypass_requires_auth_enabled_and_direct_loopback(self) -> None: handler = object.__new__(SeatDemoHandler) handler.client_address = ("127.0.0.1", 12345) diff --git a/tests/e2e/test_seat_web_api.py b/tests/e2e/test_seat_web_api.py index 575fdbe..5b0d41f 100755 --- a/tests/e2e/test_seat_web_api.py +++ b/tests/e2e/test_seat_web_api.py @@ -734,7 +734,7 @@ operations: ) as response: extension_styles = response.read().decode("utf-8").replace("\r\n", "\n") with self.opener.open( - f"{self.base_url}/assistant-chat.js?v=codex-assistant-29", timeout=3 + f"{self.base_url}/assistant-chat.js?v=codex-assistant-30", timeout=3 ) as response: assistant_script = response.read().decode("utf-8") with self.opener.open( @@ -796,8 +796,8 @@ operations: self.assertNotIn("滚动查看更多", html) self.assertIn('aria-label="发送消息"', html) self.assertIn('id="assistantTranscript"', html) - self.assertIn('href="/assistant-chat.css?v=codex-assistant-29"', html) - self.assertIn('src="/assistant-chat.js?v=codex-assistant-29"', html) + self.assertIn('href="/assistant-chat.css?v=codex-assistant-30"', html) + self.assertIn('src="/assistant-chat.js?v=codex-assistant-30"', html) self.assertIn('href="/energy-monitor.css?v=energy-monitor-4"', html) self.assertIn('src="/energy-monitor.js?v=energy-monitor-4"', html) self.assertNotIn('"admin"', console_script) @@ -1075,11 +1075,11 @@ operations: self.assertIn("CAN 指令已提交,等待车辆状态确认", console_script) self.assertIn('canvas.addEventListener("webglcontextlost"', app_script) self.assertIn('"cognitive-agent:module-change"', app_script) - self.assertIn('const CACHE_VERSION = "cognitive-agent-pad-v283"', service_worker) + self.assertIn('const CACHE_VERSION = "cognitive-agent-pad-v284"', service_worker) self.assertIn('/console-v2.css?v=delivery-state-68', service_worker) self.assertIn('/console-v2.js?v=local-first-66', service_worker) - self.assertIn('/assistant-chat.css?v=codex-assistant-29', service_worker) - self.assertIn('/assistant-chat.js?v=codex-assistant-29', service_worker) + self.assertIn('/assistant-chat.css?v=codex-assistant-30', service_worker) + self.assertIn('/assistant-chat.js?v=codex-assistant-30', service_worker) self.assertIn('/energy-monitor.css?v=energy-monitor-4', service_worker) self.assertIn('/energy-monitor.js?v=energy-monitor-4', service_worker) self.assertIn('"/app.js?v=dual-seat-133"', service_worker) diff --git a/tests/integration/test_mode_device_additions.py b/tests/integration/test_mode_device_additions.py new file mode 100644 index 0000000..efc8bd3 --- /dev/null +++ b/tests/integration/test_mode_device_additions.py @@ -0,0 +1,321 @@ +"""A mode device list is an additive configuration edit, never live vehicle control.""" + +from __future__ import annotations + +import hashlib +import json +from copy import deepcopy +from unittest.mock import MagicMock, patch + +import pytest + +from cognitive_agent.application.assistant_capabilities import AssistantCapabilityCatalog +from cognitive_agent.application.assistant_plan_guard import MAX_PLAN_REQUESTS +from cognitive_agent.application.codex_assistant import ( + CodexAssistantService, + _authorize_vehicle_request, +) +from cognitive_agent.application.mode_profile import ModeProfileRegistry +from cognitive_agent.application.seat_service import REPOSITORY_ROOT, SeatDemoService + + +@pytest.fixture +def addition_service(tmp_path, monkeypatch): + for variable in ( + "COGNITIVE_AGENT_HARDWARE_EXECUTION_ENABLED", "COGNITIVE_AGENT_VEHICLE_CAN_ENABLED", + "COGNITIVE_AGENT_WIRED_PASSENGER_CAN_ENABLED", "COGNITIVE_AGENT_VEHICLE_MQTT_ENABLED", + ): + monkeypatch.setenv(variable, "false") + service = SeatDemoService(REPOSITORY_ROOT) + service.artifact_root = tmp_path / "runs" + user_root = tmp_path / "user-modes" + service.mode_profiles = ModeProfileRegistry(REPOSITORY_ROOT / "config" / "modes", user_root=user_root) + try: + with ( + patch.object(service.hardware_execution, "reserve", side_effect=AssertionError("mode edit reached real CAN")) as reserve, + patch.object(service._vehicle_mqtt_transport, "bus", side_effect=AssertionError("mode edit reached MQTT")) as mqtt, + patch.object(service.openai, "interpret", side_effect=AssertionError("deterministic mode edit contacted a model")), + ): + yield service, AssistantCapabilityCatalog(service), user_root + reserve.assert_not_called() + mqtt.assert_not_called() + finally: + service.close() + + +def _preview(service, text, *, draft=None, plan=None, conversation="conv-device-additions"): + return service.preview_native_can( + text, provider="local", conversation_id=conversation, vehicle_id="denza_n7", + execution_mode="hardware", mode_profile_draft_context=deepcopy(draft), assistant_plan=plan, + ) + + +def _actions(result): + return (result.get("intent_ir") or {}).get("spec", {}).get("actions", []) + + +def _action_map(result): + return { + (action["capability"], action["target"].get("instance") or action["target"].get("zone")): + action["parameters"] for action in _actions(result) + } + + +def _profile_map(profile): + return {(op.capability, op.target_scope): op.parameters for op in profile.operations} + + +def _seat_actions(mapping): + return {key: value for key, value in mapping.items() if key[0].startswith("seat.")} + + +def _reference(result): + return {key: result["mode_profile_draft"][key] for key in ("name", "source_request_id", "vehicle_id")} + + +def _hashes(root): + return {str(path): hashlib.sha256(path.read_bytes()).hexdigest() for path in root.rglob("*.yaml")} + + +def _seed_old_seat_only_draft(service, *, scope="passenger", name="躺平模式", extra=""): + # A deliberately explicit, seat-only request represents an older legitimate + # preview without relying on ignored developer artifacts or a model stub. + settings = ( + "副驾座椅水平向前调整到20%,副驾靠背调整到45%,副驾座椅坐盆调整到30%,副驾腿托调整到70%" + if scope == "passenger" else "主驾座椅通风调整到低档,主驾座椅加热调整到低档" + ) + result = _preview(service, f"构建一个{name},{settings}{extra}") + _assert_draft(result) + assert {target for _, target in _seat_actions(_action_map(result))} == {scope} + return result + + +def _assert_draft(result): + assert result["status"] == "succeeded", (result.get("mode_creation_failure"), result.get("validation")) + assert result["orchestration_route"] == "mode_profile_create_preview" + assert result["execution_mode"] == "dry_run" + assert result["hardware_execution_allowed"] is False + assert result.get("mode_profile_draft") + assert len(_actions(result)) == result["mode_profile_draft"]["operation_count"] + assert len(_actions(result)) <= MAX_PLAN_REQUESTS + assert len(_action_map(result)) == len(_actions(result)), "append duplicated an existing action key" + + +def _assistant(service, catalog, message, *, draft=None): + client = MagicMock() + client.available = False + assistant = CodexAssistantService(client) + snapshot = catalog.snapshot(vehicle_id="denza_n7") + fast = catalog.fast_answer(message, snapshot) + raw = [] + + def execute(instruction, progress, assistant_plan=None): + result = _preview(service, instruction, draft=draft, plan=assistant_plan) + raw.append(result) + return result + + answer = assistant.stream( + message, conversation_id="conv-device-additions", principal="device-additions-test", history=[], + emit=lambda _event: True, execute_control=execute, + authoritative_answer=fast.answer if fast else None, + capability_snapshot=snapshot, capability_context=catalog.compact_context(snapshot), + scene_capability_context=catalog.scene_composition_context(snapshot), + control_terms=catalog.control_terms(snapshot), mode_profile_draft_context=draft, + ) + assert len(raw) == 1, answer + client.start_structured_turn.assert_not_called() + client.start_turn.assert_not_called() + return answer, raw[0] + + +@pytest.mark.parametrize("message", ["构建一个躺平模式", "帮我构建一个躺平模式吧", "构建一个主驾躺平模式"]) +def test_flat_mode_fast_template_includes_requested_cabin_domains(addition_service, message): + service, catalog, user_root = addition_service + answer, result = _assistant(service, catalog, message) + assert answer["success"] is True, answer + assert answer["route"] == "scene_template" + _assert_draft(result) + assert {"seat", "climate", "ambient_light", "interior_light", "window"} <= { + action["domain"] for action in _actions(result) + } + assert {target for _, target in _seat_actions(_action_map(result))} == ( + {"driver"} if "主驾" in message else {"passenger"} + ) + assert not _hashes(user_root) + + +@pytest.mark.parametrize("message", [ + "在躺平模式中加入空调、氛围灯、阅读灯、车窗等设备动作", + "帮我给躺平模式加上空调、氛围灯、阅读灯和车窗", + "给躺平模式增加空调、氛围灯、阅读灯、车窗的联动", + "躺平模式中补充空调、氛围灯、阅读灯和车窗动作", + "调整躺平模式,加入空调、氛围灯、阅读灯、车窗", +]) +@pytest.mark.parametrize("scope", ["passenger", "driver"]) +def test_device_list_addition_revises_old_draft_without_execution_or_losing_seat_parameters(addition_service, message, scope): + service, catalog, user_root = addition_service + original = _seed_old_seat_only_draft(service, scope=scope) + before = deepcopy(_action_map(original)) + reference = _reference(original) + authorization = _authorize_vehicle_request(message, mode_profile_draft_context=reference) + assert authorization.reason == "explicit_mode_profile_draft_update" + answer, revised = _assistant(service, catalog, message, draft=reference) + assert answer["success"] is True, answer + _assert_draft(revised) + assert _seat_actions(_action_map(revised)) == _seat_actions(before) + assert {"climate", "ambient_light", "interior_light", "window"} <= { + action["domain"] for action in _actions(revised) + } + assert revised["mode_profile_draft"]["revises_source_request_id"] == original["request_id"] + assert revised["mode_profile_draft"]["draft_revision"] == 2 + assert _action_map(original) == before + assert not _hashes(user_root) + + +def test_repeated_device_list_is_idempotent_and_keeps_existing_custom_values(addition_service): + service, _, user_root = addition_service + original = _seed_old_seat_only_draft(service, extra=",空调调整到26度,关闭氛围灯") + message = "在躺平模式中加入空调、氛围灯、阅读灯、车窗等设备动作" + first = _preview(service, message, draft=_reference(original)) + _assert_draft(first) + for key, params in _action_map(original).items(): + assert _action_map(first)[key] == params + second = _preview(service, message, draft=_reference(first)) + _assert_draft(second) + assert _action_map(second) == _action_map(first) + assert second["mode_profile_draft"]["draft_revision"] == 3 + assert not _hashes(user_root) + + +@pytest.mark.parametrize("scope", ["passenger", "driver"]) +def test_saved_mode_addition_changes_only_selected_profile_and_can_be_replayed(addition_service, scope): + service, _, user_root = addition_service + original = _seed_old_seat_only_draft(service, scope=scope) + draft = original["mode_profile_draft"] + saved = service.create_mode_profile_card(draft["name"], draft["instruction"], draft["source_request_id"], draft["vehicle_id"]) + mode_id = saved["mode_profile"]["id"] + unrelated = service.mode_profiles.save_mode("不会改变的模式", [{ + "domain": "climate", "capability": "climate.set_temperature", "target_scope": "vehicle", + "parameters": {"temperature_c": 23}, + }], vehicle_id="denza_n7") + unrelated_revision = service.mode_profiles.profile_revision(unrelated) + before = _profile_map(service.mode_profiles.get_profile(mode_id, "denza_n7")) + updated = _preview(service, "在躺平模式中加入空调、氛围灯、阅读灯、车窗等设备动作") + assert updated["status"] == "succeeded", updated.get("validation") + assert updated["orchestration_route"] == "mode_profile_update" + assert updated["execution_mode"] == "dry_run" + assert updated["hardware_execution_allowed"] is False + after = service.mode_profiles.get_profile(mode_id, "denza_n7") + assert _seat_actions(_profile_map(after)) == _seat_actions(before) + assert {"climate", "ambient_light", "interior_light", "window"} <= {op.domain for op in after.operations} + assert service.mode_profiles.profile_revision(service.mode_profiles.get_profile(unrelated.id, "denza_n7")) == unrelated_revision + assert len(_hashes(user_root)) == 2 + replayed = service.execute_mode_profile_card(mode_id, execution_mode="dry_run", vehicle_id="denza_n7") + assert replayed["status"] == "succeeded" + assert _seat_actions(_action_map(replayed)) == _seat_actions(before) + + +@pytest.mark.parametrize("mutation", ["request_id", "vehicle", "name", "conversation"]) +def test_invalid_or_stale_context_never_becomes_live_control_or_changes_saved_mode(addition_service, mutation): + service, _, user_root = addition_service + original = _seed_old_seat_only_draft(service) + reference = _reference(original) + conversation = "conv-device-additions" + if mutation == "request_id": + reference["source_request_id"] = "req-missing-old-source" + elif mutation == "vehicle": + reference["vehicle_id"] = "other_vehicle" + elif mutation == "name": + reference["name"] = "其他模式" + else: + conversation = "conv-another-conversation" + try: + result = _preview(service, "在躺平模式中加入空调和车窗", draft=reference, conversation=conversation) + except ValueError: + pass + else: + assert result["status"] != "succeeded" + assert not result.get("mode_profile_draft") + assert result["execution_mode"] == "dry_run" + assert result["hardware_execution_allowed"] is False + assert not _actions(result) + assert not result.get("command_plans") + assert not _hashes(user_root) + + +@pytest.mark.parametrize("message", [ + "在躺平模式中加入空调和后备箱动作", + "在躺平模式中加入阅读灯和天窗动作", + "在躺平模式中加入空调并把温度调整到99度", +]) +def test_unsupported_or_out_of_range_addition_rejects_all_changes_atomically(addition_service, message): + service, _, user_root = addition_service + original = _seed_old_seat_only_draft(service) + try: + result = _preview(service, message, draft=_reference(original)) + except ValueError: + pass + else: + assert result["status"] != "succeeded" + assert not result.get("mode_profile_draft") + assert not _actions(result) + assert not result.get("command_plans") + assert result["hardware_execution_allowed"] is False + assert not _hashes(user_root) + + +def test_adding_devices_to_full_twelve_action_draft_never_truncates_original_actions(addition_service): + service, _, user_root = addition_service + operations = [ + ("climate.set_power", "vehicle", {"state": "on"}), + ("climate.set_temperature", "vehicle", {"temperature_c": 24}), + ("climate.set_fan_level", "vehicle", {"level": 2}), + ("climate.set_cycle_mode", "vehicle", {"mode": "internal"}), + ("climate.set_control_mode", "vehicle", {"mode": "auto"}), + ("climate.set_front_defrost", "vehicle", {"state": "off"}), + ("roof.set_shade_position", "vehicle", {"position_pct": 0}), + ("window.set_position", "front_left", {"position_pct": 0}), + ("window.set_position", "front_right", {"position_pct": 0}), + ("ambient_light.set_power", "vehicle", {"state": "off"}), + ("interior_light.set_indoor_power", "vehicle", {"state": "off"}), + ("interior_light.set_reading_power", "all", {"state": "off"}), + ] + plan = { + "detected_domains": sorted({cap.split(".", 1)[0] for cap, _, _ in operations}), + "requests": [{ + "domain": cap.split(".", 1)[0], "capability": cap, "target_scope": target, + "operation": "set", "parameters": [{"name": name, "value": value} for name, value in params.items()], + "duration_ms": None, "reason": "固定目标边界回归。", + } for cap, target, params in operations], + "ambiguities": [], "confidence": 0.95, "decision_summary": ["验证12项原动作保留。"], + } + original = _preview(service, "构建一个满载参数模式", plan=plan) + _assert_draft(original) + assert len(_actions(original)) == 12 + source_path = service.artifact_root / original["request_id"] / "result.json" + source_hash = hashlib.sha256(source_path.read_bytes()).hexdigest() + try: + result = _preview(service, "在满载参数模式中加入副驾座椅通风动作", draft=_reference(original)) + except ValueError: + pass + else: + assert result["status"] != "succeeded" + assert not result.get("mode_profile_draft") + assert not _actions(result) + assert hashlib.sha256(source_path.read_bytes()).hexdigest() == source_hash + assert not _hashes(user_root) + + +def test_previous_artifact_without_new_metadata_remains_an_editable_server_owned_draft(addition_service): + service, _, user_root = addition_service + original = _seed_old_seat_only_draft(service) + legacy = deepcopy(original) + legacy["mode_profile_draft"].pop("draft_revision", None) + legacy["mode_profile_draft"].pop("generation_source", None) + service._persist(legacy) + result = _preview(service, "在躺平模式中加入空调、氛围灯、阅读灯、车窗", draft=_reference(legacy)) + _assert_draft(result) + assert result["mode_profile_draft"]["draft_revision"] == 2 + assert _seat_actions(_action_map(result)) == _seat_actions(_action_map(original)) + assert not _hashes(user_root) + assert json.loads((service.artifact_root / original["request_id"] / "result.json").read_text(encoding="utf-8"))["request_id"] == original["request_id"] diff --git a/tests/unit/assistant_stream_runtime.test.cjs b/tests/unit/assistant_stream_runtime.test.cjs index 7d7daa6..c57a225 100644 --- a/tests/unit/assistant_stream_runtime.test.cjs +++ b/tests/unit/assistant_stream_runtime.test.cjs @@ -552,6 +552,58 @@ test("the change-into predicate carries only a same-name opaque draft reference" assert.equal(Object.hasOwn(anotherMode, "mode_profile_draft_context"), false); }); +for (const phrase of [ + "在午休模式中加入空调、氛围灯、阅读灯、车窗等设备动作", + "请帮我在午休模式里添加空调和车窗动作", + "给午休模式增加氛围灯", + "为午休模式补充阅读灯", + "往午休模式内加入空调,温度26度", + "向午休模式中加上关闭车窗", + "午休模式中再加入空调温度26度", + "午休模式再补充车窗和阅读灯", + "把关闭车窗加入到午休模式中", + "请将空调26度和柔和氛围灯添加到午休模式", +]) { + test(`device additions carry only the same-name opaque draft: ${phrase}`, async () => { + const events = modeDraftEvents("req-draft-add-devices", 24); + const harness = createHarness(events); + harness.input.value = "构建一个午休模式"; + await harness.sandbox.CognitiveAgentAssistant.submit(); + events.splice(0, events.length, { type: "answer.completed", answer: "已收到草稿补充请求" }); + harness.input.value = phrase; + await harness.sandbox.CognitiveAgentAssistant.submit(); + const request = JSON.parse(harness.requestCalls.at(-1).options.body); + assert.equal(request.message, phrase); + assert.deepEqual(request.mode_profile_draft_context, { + name: "午休模式", source_request_id: "req-draft-add-devices", vehicle_id: "demo-vehicle", + }); + assert.equal(harness.requestCalls.every((call) => call.url === "/api/assistant/stream"), true); + }); +} + +for (const phrase of [ + "在露营模式中加入空调和车窗", + "把空调添加到露营模式中", + "在午休模式中加入空调可以吗?", + "午休模式中加入哪些设备合适?", + "在午休模式中不要加入空调", + "在午休模式中先别添加车窗", + "打开空调", + "设置空调出风模式为吹脚", +]) { + test(`non-update or other-mode additions do not borrow a draft: ${phrase}`, async () => { + const events = modeDraftEvents("req-draft-add-isolation", 24); + const harness = createHarness(events); + harness.input.value = "构建一个午休模式"; + await harness.sandbox.CognitiveAgentAssistant.submit(); + events.splice(0, events.length, { type: "answer.completed", answer: "已收到" }); + harness.input.value = phrase; + await harness.sandbox.CognitiveAgentAssistant.submit(); + const request = JSON.parse(harness.requestCalls.at(-1).options.body); + assert.equal(Object.hasOwn(request, "mode_profile_draft_context"), false); + }); +} + test("shade position rows explain the target opening at semantic boundaries", async () => { const positions = [0, 30, 50, 100]; const events = [ diff --git a/tests/unit/test_assistant_frontend_contract.py b/tests/unit/test_assistant_frontend_contract.py index 52df94c..f5f8489 100644 --- a/tests/unit/test_assistant_frontend_contract.py +++ b/tests/unit/test_assistant_frontend_contract.py @@ -13,15 +13,15 @@ def test_console_contains_ai_assistant_surface(): assert 'aria-label="AI助手对话"' in html assert 'placeholder="向 AI助手提问或交代工作"' in html assert 'aria-label="发送消息"' in html - assert 'href="/assistant-chat.css?v=codex-assistant-29"' in html - assert 'src="/assistant-chat.js?v=codex-assistant-29"' in html + assert 'href="/assistant-chat.css?v=codex-assistant-30"' in html + assert 'src="/assistant-chat.js?v=codex-assistant-30"' in html def test_codex_assistant_assets_are_versioned_together_in_the_service_worker(): service_worker = (ROOT / "apps/web-console/service-worker.js").read_text(encoding="utf-8") - assert 'const CACHE_VERSION = "cognitive-agent-pad-v283"' in service_worker - assert '"/assistant-chat.css?v=codex-assistant-29"' in service_worker - assert '"/assistant-chat.js?v=codex-assistant-29"' in service_worker + assert 'const CACHE_VERSION = "cognitive-agent-pad-v284"' in service_worker + assert '"/assistant-chat.css?v=codex-assistant-30"' in service_worker + assert '"/assistant-chat.js?v=codex-assistant-30"' in service_worker def test_codex_frontend_uses_one_streaming_endpoint_and_agent_work_events(): @@ -214,7 +214,7 @@ def test_assistant_carries_only_the_active_mode_draft_reference_to_follow_up_tur assert "rememberModeDraftContext(draft)" in assistant assert "activeModeDraftContext = loadActiveModeDraftContext()" in assistant assert "function isModeDraftUpdateRequest(message, context)" in assistant - assert "normalizeModeName(matched[1]) === normalizeModeName(context.name)" in assistant + assert "normalizeModeName(matched[nameIndex]) === normalizeModeName(context.name)" in assistant def test_latest_same_name_mode_draft_retires_stale_card_and_lifecycle_clears_context(): diff --git a/tests/unit/test_energy_monitor_frontend_contract.py b/tests/unit/test_energy_monitor_frontend_contract.py index d24cc61..40c7f8b 100644 --- a/tests/unit/test_energy_monitor_frontend_contract.py +++ b/tests/unit/test_energy_monitor_frontend_contract.py @@ -35,10 +35,10 @@ def test_energy_monitor_assets_are_versioned_and_cached() -> None: ): assert asset in html assert f'"{asset}"' in service_worker - assert html.index("/assistant-chat.js?v=codex-assistant-29") < html.index( + assert html.index("/assistant-chat.js?v=codex-assistant-30") < html.index( "/energy-monitor.js?v=energy-monitor-4" ) - assert 'const CACHE_VERSION = "cognitive-agent-pad-v283"' in service_worker + assert 'const CACHE_VERSION = "cognitive-agent-pad-v288"' in service_worker def test_energy_monitor_uses_the_fifth_shared_dock_icon_and_starts_closed() -> None: diff --git a/tests/unit/test_firmware_workbench.py b/tests/unit/test_firmware_workbench.py new file mode 100644 index 0000000..e902c9a --- /dev/null +++ b/tests/unit/test_firmware_workbench.py @@ -0,0 +1,253 @@ +from __future__ import annotations + +import hashlib +import json +import threading +import time +import zipfile +from pathlib import Path + +from cognitive_agent.application.firmware_workbench import ( + FINAL_RELEASE_MESSAGE, + FirmwareWorkbenchService, +) + +ROOT = Path(__file__).resolve().parents[2] + + +def wait_for_terminal(service: FirmwareWorkbenchService, task_id: str) -> dict[str, object]: + deadline = time.monotonic() + 5 + while time.monotonic() < deadline: + task = service.task(task_id) + if task["status"] not in {"waiting", "running", "pending_confirmation"}: + return task + time.sleep(0.02) + raise AssertionError("firmware pipeline did not reach a terminal state") + + +def make_image(tmp_path: Path) -> Path: + image = tmp_path / "Seat_Controller_demo.hex" + image.write_bytes(b":020000040000FA\n" + b":100000000102030405060708090A0B0C0D0E0F1068\n" * 80) + return image + + +def test_pipeline_publishes_a_downloadable_ota_package( + tmp_path: Path, monkeypatch +) -> None: + monkeypatch.setenv( + "FIRMWARE_WORKBENCH_OTA_PUBLIC_BASE_URL", + "http://192.168.43.130:8000/api/firmware-workbench/releases", + ) + image = make_image(tmp_path) + + def build_runner( + _task_id: str, log: object, _cancel: threading.Event + ) -> Path: + log("info", "IAR build: 0 errors, 0 warnings") + return image + + service = FirmwareWorkbenchService( + ROOT, + artifact_root=tmp_path / "workbench", + ota_root=tmp_path / "ota", + build_runner=build_runner, + ) + instruction = "增加支持座椅位置参数控制的能力,增加座椅通风功能,增加座椅加热功能" + + first = service.start_task(instruction) + task = wait_for_terminal(service, str(first["task"]["id"])) + assert task["status"] == "success" + assert task["message"] == FINAL_RELEASE_MESSAGE + assert [stage["status"] for stage in task["stages"]] == ["success"] * 8 + assert len(task["test_results"]) == 7 + + snapshot = service.snapshot() + assert snapshot["baselines"] == [ + { + "id": "time_only", + "name": "时间控制基线", + "capabilities": ["时间控制"], + } + ] + assert len(snapshot["artifacts"]) == 2 + assert len(snapshot["releases"]) == 1 + artifact = next(item for item in snapshot["artifacts"] if item["task_id"] == task["id"]) + baseline = next(item for item in snapshot["artifacts"] if item.get("is_baseline")) + release = snapshot["releases"][0] + assert baseline["capabilities"] == ["时间控制"] + assert baseline["protected"] is True + assert artifact["capabilities"] == ["时间控制", "位置控制", "座椅通风", "座椅加热"] + assert artifact["status"] == "published" + assert release["download_url"] == ( + f"http://192.168.43.130:8000/api/firmware-workbench/releases/" + f"{release['id']}/download" + ) + assert service.latest_release()["download_url"] == release["download_url"] + latest_manifest = json.loads((tmp_path / "ota" / "latest.json").read_text("utf-8")) + assert latest_manifest["download_url"] == release["download_url"] + package, filename = service.resolve_release_download(str(release["id"])) + assert filename == artifact["firmware_filename"] + assert hashlib.sha256(package.read_bytes()).hexdigest() == artifact["sha256"] + with zipfile.ZipFile(package) as archive: + assert { + "Seat_Controller_demo.hex", + "manifest.json", + "requirements.json", + "validation.json", + "feature_profile.json", + } <= set(archive.namelist()) + assert (tmp_path / "ota" / "latest.json").is_file() + assert service.publish_artifact(str(artifact["id"]))["id"] == release["id"] + service.close() + + monkeypatch.setenv( + "FIRMWARE_WORKBENCH_OTA_PUBLIC_BASE_URL", + "http://192.168.43.131:8000/api/firmware-workbench/releases", + ) + migrated = FirmwareWorkbenchService( + ROOT, + artifact_root=tmp_path / "workbench", + ota_root=tmp_path / "ota", + build_runner=build_runner, + ) + migrated_release = migrated.latest_release() + assert migrated_release["download_url"].startswith("http://192.168.43.131:8000/") + migrated_latest = json.loads((tmp_path / "ota" / "latest.json").read_text("utf-8")) + assert migrated_latest["download_url"] == migrated_release["download_url"] + migrated.close() + + +def test_repeated_instruction_always_creates_and_executes_a_new_task(tmp_path: Path) -> None: + image = make_image(tmp_path) + + def build_runner( + _task_id: str, log: object, _cancel: threading.Event + ) -> Path: + log("info", "IAR build: 0 errors, 0 warnings") + return image + + service = FirmwareWorkbenchService( + ROOT, + artifact_root=tmp_path / "workbench", + ota_root=tmp_path / "ota", + build_runner=build_runner, + ) + first = service.start_task("增加座椅加热功能。") + first_task = wait_for_terminal(service, str(first["task"]["id"])) + second = service.start_task("增加座椅加热功能。") + + assert first["task"]["id"] != second["task"]["id"] + assert "duplicate" not in first + assert "duplicate" not in second + second_task = wait_for_terminal(service, str(second["task"]["id"])) + assert first_task["status"] == "success" + assert second_task["status"] == "success" + assert first_task["target_capabilities"] == ["时间控制", "座椅加热"] + assert second_task["target_capabilities"] == ["时间控制", "座椅加热"] + service.close() + + +def test_non_baseline_artifact_can_be_deleted_but_baseline_is_protected(tmp_path: Path) -> None: + image = make_image(tmp_path) + + def build_runner( + _task_id: str, log: object, _cancel: threading.Event + ) -> Path: + log("info", "IAR build: 0 errors, 0 warnings") + return image + + service = FirmwareWorkbenchService( + ROOT, + artifact_root=tmp_path / "workbench", + ota_root=tmp_path / "ota", + build_runner=build_runner, + ) + started = service.start_task("增加座椅通风功能") + task = wait_for_terminal(service, str(started["task"]["id"])) + package_path, _ = service.resolve_artifact_download(str(task["artifact_id"])) + release_path, _ = service.resolve_release_download(str(task["release_id"])) + + result = service.delete_artifact(str(task["artifact_id"])) + assert result["deleted"] is True + assert not package_path.exists() + assert not release_path.exists() + snapshot = service.snapshot() + assert [artifact["id"] for artifact in snapshot["artifacts"]] == [ + "fw-art-time-only-baseline" + ] + assert snapshot["releases"] == [] + + try: + service.delete_artifact("fw-art-time-only-baseline") + except Exception as exc: # noqa: BLE001 - public error type is asserted below + assert getattr(exc, "code", None) == "baseline_protected" + else: + raise AssertionError("time-only baseline must not be deletable") + service.close() + + +def test_position_instruction_merges_with_time_only_baseline(tmp_path: Path) -> None: + image = make_image(tmp_path) + + def build_runner( + _task_id: str, log: object, _cancel: threading.Event + ) -> Path: + log("info", "IAR build: profile position=1 ventilation=0 heating=0") + return image + + service = FirmwareWorkbenchService( + ROOT, + artifact_root=tmp_path / "workbench", + ota_root=tmp_path / "ota", + build_runner=build_runner, + ) + started = service.start_task("增加支持座椅位置参数控制的能力。", "time_only") + task = wait_for_terminal(service, str(started["task"]["id"])) + + assert task["status"] == "success" + assert task["baseline_capabilities"] == ["时间控制"] + assert task["requested_capabilities"] == ["位置控制"] + assert task["target_capabilities"] == ["时间控制", "位置控制"] + artifact = service.snapshot()["artifacts"][0] + assert artifact["capabilities"] == ["时间控制", "位置控制"] + assert artifact["capability_diff"]["added"] == ["位置控制"] + assert "vent" not in artifact["firmware_filename"] + assert "heat" not in artifact["firmware_filename"] + service.close() + + +def test_running_pipeline_can_be_canceled_and_retried(tmp_path: Path) -> None: + image = make_image(tmp_path) + allow_build = threading.Event() + + def build_runner( + _task_id: str, log: object, cancel: threading.Event + ) -> Path: + log("info", "IAR build started") + while not allow_build.is_set(): + if cancel.wait(0.01): + raise InterruptedError + return image + + service = FirmwareWorkbenchService( + ROOT, + artifact_root=tmp_path / "workbench", + ota_root=tmp_path / "ota", + build_runner=build_runner, + ) + started = service.start_task("增加座椅通风功能") + task_id = str(started["task"]["id"]) + deadline = time.monotonic() + 3 + while service.task(task_id)["current_stage"] != "build" and time.monotonic() < deadline: + time.sleep(0.01) + service.cancel_task(task_id) + canceled = wait_for_terminal(service, task_id) + assert canceled["status"] == "canceled" + assert any(stage["status"] == "canceled" for stage in canceled["stages"]) + + allow_build.set() + retried = service.retry_task(task_id) + assert retried["id"] == task_id + completed = wait_for_terminal(service, task_id) + assert completed["status"] == "success" + service.close() diff --git a/tests/unit/test_firmware_workbench_frontend_contract.py b/tests/unit/test_firmware_workbench_frontend_contract.py new file mode 100644 index 0000000..4ab4783 --- /dev/null +++ b/tests/unit/test_firmware_workbench_frontend_contract.py @@ -0,0 +1,62 @@ +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +WEB = ROOT / "apps" / "web-console" + + +def source(name: str) -> str: + return (WEB / name).read_text(encoding="utf-8") + + +def test_workbench_is_a_standalone_development_surface() -> None: + html = source("firmware-workbench.html") + script = source("firmware-workbench.js") + + assert "座椅固件开发工作台" in html + assert '

    Y~$JUVjItncgLgUXXDv_#P+qv~NL&T?7I(pe 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 literal 2373512 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℞JDA&H?uFs6BL;+D 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