feat(i18n): tools + landing page + doorstop generator in English
Validate / build-test (macos-latest) (push) Failing after 2s
Validate / build-test (windows-latest) (push) Failing after 16s
Validate / build-test (ubuntu-latest) (push) Successful in 18s
Validate / reports (push) Successful in 52s

Phase 1 of full English translation:
- generate_doorstop_items.py: all 55 items (SG/SYS/SWE/SA/SWA) rewritten in English
- generate_landing_page.py: full UI labels, KPI cards, section headings in English
- traceability.py: docstring, error messages, HTML headers in English
- generate_test_report.py: report content + table headers in English
- All 55 markdown items in safety/sg/, reqs/, arch/ regenerated in English

Still to come:
- demo-epb filled Word docs (PID, plans, safety, manuals, audit artefacts)
- Code comments + test names + CI workflow step names
- README + dev-process repo templates
This commit is contained in:
Stefan Lohmaier
2026-05-12 03:28:54 -07:00
parent 542a358abc
commit a47e0aed3e
61 changed files with 805 additions and 803 deletions
+15 -15
View File
@@ -17,12 +17,12 @@ asil: D
# SWA-001: Safety Manager
## Verantwortung
## Responsibility
Hoechste Sicherheitsschicht. Erkennt Motor-Aus, aktiviert Hill-Hold,
triggert Auto-Apply. Lebenswichtige Logik mit redundanter Pruefung.
Highest safety layer. Detects engine-off, activates hill-hold,
triggers auto-apply. Life-critical logic with redundant checks.
## Statische Sicht
## Static view
```plantuml
@startuml
@@ -31,20 +31,20 @@ package "Safety Manager" {
[Hill-Hold Logic]
[Auto-Apply Logic]
}
[Safety Manager] ..> [Apply Controller] : Apply-Anforderung
[Safety Manager] ..> [Apply Controller] : apply request
[Wheel Speed Plausi] --> [Safety Manager] : v_vehicle
[Inclinometer Filter] --> [Safety Manager] : grade
@enduml
```
## Schnittstellen (Provided)
## Provided interfaces
```c
Status safety_mgr_init(void);
void safety_mgr_step_50ms(const SafetyInputs* in);
```
## Dynamisches Verhalten
## Dynamic behaviour
```plantuml
@startuml
@@ -58,16 +58,16 @@ AutoApplyTriggered --> Idle : applied
@enduml
```
## Ressourcen
## Resources
- Stack: <= 256 B
- Worst-Case Timing: 200 us / Aufruf
- Worst-case timing: 200 us per call
## Mapping auf Anforderungen
## Mapping to requirements
| Anforderung | Wie abgedeckt |
|-------------|---------------|
| Requirement | How covered |
|-------------|-------------|
| SWE-007 | engine_off + v<0.5 in step_50ms |
| SWE-008 | 2s-Filter und Trigger |
| SWE-009 | Hill-Hold-Aktivierung |
| SWE-010 | Brake-Released-Detektion |
| SWE-008 | 2 s filter and trigger |
| SWE-009 | hill-hold activation |
| SWE-010 | brake-released detection |
+22 -21
View File
@@ -16,12 +16,13 @@ asil: D
# SWA-002: Apply Controller
## Verantwortung
## Responsibility
Zentraler Controller fuer Apply, Hold und Release der Parkbremse.
ASIL-D-Kern der EPB-Software. Implementiert in `src/apply_controller.c`.
Central controller for apply, hold and release of the parking brake.
ASIL-D core of the EPB software. Implemented in
`src/apply_controller.c`.
## Statische Sicht
## Static view
```plantuml
@startuml
@@ -34,7 +35,7 @@ ASIL-D-Kern der EPB-Software. Implementiert in `src/apply_controller.c`.
@enduml
```
## Schnittstellen (Provided)
## Provided interfaces
```c
Status apply_ctrl_init(void);
@@ -42,7 +43,7 @@ void apply_ctrl_step_50ms(const ApplyInputs* in);
EpbStatus apply_ctrl_get_status(void);
```
## Dynamisches Verhalten
## Dynamic behaviour
```plantuml
@startuml
@@ -58,24 +59,24 @@ Error --> Released : reset & no fault
@enduml
```
## Ressourcen
## Resources
- Stack: <= 384 B
- Worst-Case Timing: 350 us / Aufruf
- Worst-case timing: 350 us per call
## Designentscheidungen
## Design decisions
| Entscheidung | Begruendung |
|--------------|-------------|
| Statische Allokation, kein Heap | Determinismus, MISRA C 21.3 |
| State Machine | Einfacher zu verifizieren, deterministisch |
| 50ms Step-Funktion | Synchron zur Inclinometer-Abtastung |
| Decision | Rationale |
|----------|-----------|
| Static allocation, no heap | Determinism, MISRA C 21.3 |
| State machine | Easier to verify, deterministic |
| 50 ms step function | Synchronous with inclinometer sample rate |
## Mapping auf Anforderungen
## Mapping to requirements
| Anforderung | Wie abgedeckt |
|-------------|---------------|
| SWE-001 | Hold-Zustand mit periodischer Klemmkraft-Pruefung |
| SWE-002 | Watchdog-Pet im step_50ms |
| SWE-003 | sw_apply Input wird sofort ausgewertet |
| SWE-004 | Current-Target-Detektion via Actuator-Driver-Feedback |
| Requirement | How covered |
|-------------|-------------|
| SWE-001 | Hold state with periodic clamping-force check |
| SWE-002 | Watchdog pet in step_50ms |
| SWE-003 | sw_apply input is evaluated immediately |
| SWE-004 | current-target detection via actuator-driver feedback |
+16 -16
View File
@@ -15,13 +15,13 @@ asil: B
# SWA-003: Actuator Driver
## Verantwortung
## Responsibility
Low-Level-Ansteuerung der beiden Aktor-Motoren. PWM-Generierung,
Strom-Messung, Overcurrent-Cutoff, Klemmkraft-Schaetzung.
Implementiert in `src/actuator_driver.c`.
Low-level control of the two actuator motors. PWM generation,
current measurement, overcurrent cutoff, clamping-force estimation.
Implemented in `src/actuator_driver.c`.
## Statische Sicht
## Static view
```plantuml
@startuml
@@ -32,7 +32,7 @@ Implementiert in `src/actuator_driver.c`.
@enduml
```
## Schnittstellen (Provided)
## Provided interfaces
```c
Status actuator_init(void);
@@ -40,20 +40,20 @@ void actuator_apply(ActuatorId id, uint8_t pwm_percent);
void actuator_release(ActuatorId id, uint8_t pwm_percent);
void actuator_stop(ActuatorId id);
ActuatorStatus actuator_get_status(ActuatorId id);
void actuator_isr_1khz(void); // Strom-Sampling
void actuator_isr_1khz(void); // Current sampling
```
## Ressourcen
## Resources
- Stack: <= 256 B
- Worst-Case Timing: 50 us / ISR
- Static RAM: 64 B pro Aktor
- Worst-case timing: 50 us per ISR
- Static RAM: 64 B per actuator
## Mapping auf Anforderungen
## Mapping to requirements
| Anforderung | Wie abgedeckt |
|-------------|---------------|
| SWE-006 | actuator_release fuer beide Aktoren parallel |
| Requirement | How covered |
|-------------|-------------|
| SWE-006 | actuator_release for both actuators in parallel |
| SWE-013 | actuator_isr_1khz |
| SWE-014 | Overcurrent-Detektor in ISR |
| SWE-015 | Peak-Current-Tracking + lineare Klemmkraft-Schaetzung |
| SWE-014 | overcurrent detector in ISR |
| SWE-015 | peak-current tracking + linear clamping-force estimate |
+6 -6
View File
@@ -1,7 +1,7 @@
---
active: true
derived: false
header: 'Wheel Speed Plausibilisierung'
header: 'Wheel Speed Plausibilisation'
level: 1.4
normative: true
reviewed: null
@@ -11,14 +11,14 @@ links:
asil: B
---
# SWA-004: Wheel Speed Plausibilisierung
# SWA-004: Wheel Speed Plausibilisation
## Verantwortung
## Responsibility
Aufbereitung und Plausibilisierung der 4 Wheel-Speed-Signale. Erkennt
Stillstand und plausibilisiert untereinander.
Conditioning and plausibilisation of the four wheel-speed signals.
Detects standstill and cross-checks the wheels.
## Schnittstellen (Provided)
## Provided interfaces
```c
Status wheel_speed_init(void);
+4 -3
View File
@@ -12,11 +12,12 @@ asil: B
# SWA-005: Inclinometer Filter
## Verantwortung
## Responsibility
Tiefpass-Filterung des Inclinometer-Roh-Signals fuer die Hill-Hold-Bewertung.
Low-pass filtering of the raw inclinometer signal for hill-hold
evaluation.
## Schnittstellen (Provided)
## Provided interfaces
```c
Status inclino_init(void);
+9 -8
View File
@@ -12,12 +12,13 @@ asil: QM
# SWA-006: Switch Debouncer
## Verantwortung
## Responsibility
Software-Entprellung des EPB-Schalters. Liefert stabiles Apply / Release
Signal an den Apply-Controller. Implementiert in `src/switch_debouncer.c`.
Software debouncing of the EPB switch. Provides a stable apply /
release signal to the apply controller. Implemented in
`src/switch_debouncer.c`.
## Schnittstellen (Provided)
## Provided interfaces
```c
Status switch_init(void);
@@ -25,8 +26,8 @@ void switch_step_10ms(SwitchRaw raw);
SwitchState switch_get_state(void);
```
## Mapping auf Anforderungen
## Mapping to requirements
| Anforderung | Wie abgedeckt |
|-------------|---------------|
| SWE-025 | 50ms Debounce-Logik |
| Requirement | How covered |
|-------------|-------------|
| SWE-025 | 50 ms debounce logic |
+5 -5
View File
@@ -13,15 +13,15 @@ asil: QM
# SWA-007: Display Manager
## Verantwortung
## Responsibility
Steuert LED am EPB-Schalter und CAN-Status-Frame an das Kombi-Display.
Empfaengt Status vom Apply-Controller.
Drives the LED on the EPB switch and the CAN status frame to the
instrument cluster. Receives status from the apply controller.
## Schnittstellen (Provided)
## Provided interfaces
```c
Status display_init(void);
void display_set_status(EpbStatus s);
void display_step_20ms(void); // 50 Hz CAN-Frame
void display_step_20ms(void); // 50 Hz CAN frame
```
+4 -3
View File
@@ -13,11 +13,12 @@ asil: QM
# SWA-008: Diagnostic Manager
## Verantwortung
## Responsibility
UDS-Diagnose nach ISO 14229: ReadDTC, ReadDataByIdentifier, RoutineControl.
UDS diagnostics per ISO 14229: ReadDTC, ReadDataByIdentifier,
RoutineControl.
## Schnittstellen (Provided)
## Provided interfaces
```c
Status diag_init(void);
+4 -3
View File
@@ -13,7 +13,8 @@ asil: QM
# SWA-009: Service Mode
## Verantwortung
## Responsibility
Service-Modus fuer Werkstatt. Wird ueber UDS RoutineControl 0x31, Routine-ID
0x0301 aktiviert. Steuert Aktoren in Wartungsposition.
Service mode for the workshop. Activated via UDS RoutineControl
0x31, routine ID 0x0301. Drives the actuators into maintenance
position.
+4 -4
View File
@@ -13,12 +13,12 @@ asil: QM
# SWA-010: Logger
## Verantwortung
## Responsibility
Logging fuer Entwicklung und Service. Ringpuffer im RAM (1 KB) sowie
Persistenz im EEPROM bei kritischen Ereignissen.
Logging for development and service. Ring buffer in RAM (1 KB)
plus persistence in EEPROM on critical events.
## Schnittstellen (Provided)
## Provided interfaces
```c
Status log_init(void);