| .. | ||
| CMakeLists.txt | ||
| main.c | ||
| README.md | ||
test_hil_button
Модуль под тестом
bsp/button — HIL-прошивка test_hil_button (main.c), поднимающая CLI
(READ, STATE, POLL, EVENT_P, EVENT_R) поверх двух физических
кнопок на плате таргета (TactBut1, TactBut2). Фоновый debounce-poll
крутится в главном цикле каждые 5 мс. Прошивка не содержит проверок — она
исполняет команды; assert'ы находятся в pytest на хосте.
Категория
HIL, интерактивный — стенд M5StampPLC для стимула не используется, кнопки
нажимает оператор вручную по подсказкам в консоли (@pytest.mark.interactive,
запуск с -s). M5StampPLC по-прежнему нужен для управления питанием
таргета (RLY1).
Моки
Программных моков и стенда-стимулятора нет — тестируется физическое
нажатие реальных кнопок человеком-оператором. Роль «стимула» играет
оператор: хелпер _operator_prompt() печатает инструкцию и блокируется на
input() до нажатия Enter, после чего выдерживается пауза
DEBOUNCE_SETTLE_S (100 мс) на срабатывание дебаунса. Все проверки — в
tools/hil/04_test_button.py.
Что проверяется
- Канал host↔target работает (
PING). - Сырое чтение (
READ) в состоянии покоя и при нажатии/отпускании для обеих кнопок. - Debounce-события нажатия (
EVENT_P) и отпускания (EVENT_R) и их одноразовое потребление (повторный запрос без нового действия даёт0). - Стабильное состояние (
STATE) во время удержания кнопки и после отпускания. - Независимость кнопок — нажата только одна, вторая остаётся отпущенной.
Гарантии
- Физическое нажатие/отпускание кнопки надёжно регистрируется как в
сыром чтении (
READ), так и в дебаунсированном состоянии (STATE) и в одноразовых событиях (EVENT_P/EVENT_R). - Кнопки физически независимы — нажатие одной не влияет на показания другой.
- Задержки в тесте (100 мс после действия оператора, фоновый poll каждые 5 мс) достаточны для гарантированного срабатывания дебаунса (порог 4 стабильных сэмпла).
Запуск
just build::build-hil # в devcontainer: собрать HIL-прошивки
just host::hil-button # на хосте: прошить и прогнать тест (интерактивно)
# или все интерактивные тесты сразу:
just host::hil-run-interactive
Тест интерактивный — требует присутствия оператора у стенда для нажатия кнопок по подсказкам в терминале.