feat: Safety Manager + Traceability + PlantUML in CI
Validate / build-and-test (push) Successful in 30s
Validate / build-and-test (push) Successful in 30s
- Implement Safety Manager (SWA-001, ASIL-D): Hill-Hold + Auto-Apply state machine, 13 unit tests - Update SWA-002 + SWA-001 link coverage so all SWE reqs are covered - New tool: tools/traceability.py — Markdown-frontmatter-basierter Traceability-Checker + HTML/JSON-Matrix-Generator (Doorstop-Format ohne Doorstop-Dependency) - New tool: tools/render_plantuml.py — extrahiert PlantUML-Bloecke aus arch/**.md und rendert via plantuml.com zu SVG - validate.yml: neue Steps Traceability-Check, Matrix-Publish, PlantUML- Render; uploaded als Gitea-Artefakte
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* @file safety_manager.h
|
||||
* @brief Safety Manager — Hill-Hold + Auto-Apply Logik.
|
||||
*
|
||||
* @arch SWA-001
|
||||
* @reqs SWE-007 SWE-008 SWE-009 SWE-010
|
||||
*
|
||||
* ASIL: D.
|
||||
*
|
||||
* State Machine:
|
||||
* IDLE --(engine_off & v<0.5)--> AUTO_APPLY_ARMED
|
||||
* AUTO_APPLY_ARMED --(40 * 50ms = 2s)--> AUTO_APPLY_TRIGGERED
|
||||
* AUTO_APPLY_TRIGGERED --(state==APPLIED)--> IDLE
|
||||
*
|
||||
* IDLE --(grade>5% & v<0.5 & brake)--> HILL_HOLD_ARMED
|
||||
* HILL_HOLD_ARMED --(!brake)--> HILL_HOLD_ACTIVE
|
||||
* HILL_HOLD_ACTIVE --(v>2 km/h | state==APPLIED)--> IDLE
|
||||
*/
|
||||
#ifndef SAFETY_MANAGER_H
|
||||
#define SAFETY_MANAGER_H
|
||||
|
||||
#include "epb_types.h"
|
||||
|
||||
typedef enum {
|
||||
SAFETY_IDLE = 0,
|
||||
SAFETY_HILL_HOLD_ARMED = 1,
|
||||
SAFETY_HILL_HOLD_ACTIVE = 2,
|
||||
SAFETY_AUTO_APPLY_ARMED = 3,
|
||||
SAFETY_AUTO_APPLY_TRIGGERED = 4
|
||||
} SafetyState;
|
||||
|
||||
typedef struct {
|
||||
bool engine_running;
|
||||
bool brake_pedal_pressed;
|
||||
float vehicle_speed_kmh;
|
||||
float grade_percent;
|
||||
EpbState current_state; /* aus Apply Controller */
|
||||
} SafetyInputs;
|
||||
|
||||
/* Schwellwerte als Konstanten, damit Tests darauf zugreifen koennen. */
|
||||
#define SAFETY_AUTO_APPLY_DELAY_50MS 40U /* 40 * 50ms = 2.0 s */
|
||||
#define SAFETY_STANDSTILL_KMH 0.5f
|
||||
#define SAFETY_RELEASE_KMH 2.0f
|
||||
#define SAFETY_HILLHOLD_GRADE_PCT 5.0f
|
||||
|
||||
EpbStatus safety_mgr_init(void);
|
||||
void safety_mgr_step_50ms(const SafetyInputs* in);
|
||||
bool safety_mgr_apply_requested(void);
|
||||
SafetyState safety_mgr_get_state(void);
|
||||
|
||||
#endif /* SAFETY_MANAGER_H */
|
||||
Reference in New Issue
Block a user