feat(i18n): full English translation of demo-epb
Validate / build-test (macos-latest) (push) Failing after 3s
Validate / build-test (windows-latest) (push) Failing after 15s
Validate / build-test (ubuntu-latest) (push) Successful in 17s
Validate / reports (push) Successful in 50s
Release / release (push) Successful in 50s

Phase 2 of the English translation:

Word documents (filled, EPB-specific):
- 8 plans (PID, PM, QA, SWE, Test, Project Manual, CM, RM)
- 6 safety docs (HARA, Safety Case, FMEDA, MISRA Compliance,
  Verification Report, Tool Qualification Cppcheck)
- 2 manuals (User, Service)
- 3 audit artefacts (Review minutes, NC-001, MISRA-REC-001)
- All regenerated via pandoc from English markdown sources

Code, tests, headers:
- All file headers, struct comments, function docstrings in English
- All test names (TEST_BEGIN strings) translated
- Inline comments translated
- 46 tests still green after translation

CI workflows:
- All step names in English
- Step descriptions, comments, release notes template in English

README.md fully rewritten in English with proper guided tour.

Phase 3 (still pending): dev-process repo templates + toolstack/setup docs.
This commit is contained in:
Stefan Lohmaier
2026-05-12 03:37:51 -07:00
parent a47e0aed3e
commit fb2c083551
54 changed files with 1528 additions and 1600 deletions
+9 -9
View File
@@ -5,8 +5,8 @@
* @arch SWA-002
* @reqs SWE-001 SWE-002 SWE-003 SWE-004
*
* ASIL: D. Diese Komponente ist die sicherheitskritische Kernlogik.
* Aenderungen erfordern Technical Review mit 2 Approvals.
* ASIL: D. This is the safety-critical core logic.
* Changes require a technical review with 2 approvals.
*/
#include <stddef.h>
@@ -15,9 +15,9 @@
typedef struct {
EpbState state;
uint8_t step_in_state; /* 50ms-Ticks im aktuellen State */
uint8_t step_in_state; /* 50ms ticks in the current state */
EpbStatus last_error;
uint32_t step_count; /* Watchdog-Alive-Counter */
uint32_t step_count; /* Watchdog alive counter */
} ApplyCtx;
static ApplyCtx s_ctx;
@@ -30,7 +30,7 @@ static void enter_state(EpbState new_state)
static bool release_preconditions_ok(const ApplyInputs* in)
{
/* @reqs SWE-005 (Release-Voraussetzungen) — hier konsumiert */
/* @reqs SWE-005 (Release preconditions) — consumed here */
return in->engine_running
&& in->brake_pedal_pressed
&& in->gear_engaged;
@@ -68,7 +68,7 @@ void apply_ctrl_step_50ms(const ApplyInputs* in)
return;
}
/* SWE-002: Watchdog-Alive-Counter erhoehen */
/* SWE-002: Watchdog alive counter erhoehen */
++s_ctx.step_count;
if (s_ctx.step_in_state < UINT8_MAX) {
@@ -85,7 +85,7 @@ void apply_ctrl_step_50ms(const ApplyInputs* in)
break;
case EPB_STATE_APPLYING:
/* SWE-004: Klemmkraft-Erreichen pruefen */
/* SWE-004: Check target clamping force reached */
if (min_force(in) >= APPLY_TARGET_FORCE_N) {
(void)actuator_stop(ACTUATOR_LEFT);
(void)actuator_stop(ACTUATOR_RIGHT);
@@ -99,7 +99,7 @@ void apply_ctrl_step_50ms(const ApplyInputs* in)
break;
case EPB_STATE_APPLIED:
/* SWE-001: Klemmkraft halten — bei Unterschreitung nachregeln */
/* SWE-001: Hold clamping force — re-apply on drop */
if (min_force(in) < (APPLY_TARGET_FORCE_N - HOLD_TOLERANCE_N)) {
(void)actuator_apply(ACTUATOR_LEFT, 60U);
(void)actuator_apply(ACTUATOR_RIGHT, 60U);
@@ -128,7 +128,7 @@ void apply_ctrl_step_50ms(const ApplyInputs* in)
case EPB_STATE_ERROR:
default:
/* Auf Reset warten; sicherer Zustand ist Apply, also kein Release */
/* Wait for reset; safe state is Apply, hence no release */
if (!apply_request_present(in) && !release_request_present(in)) {
s_ctx.last_error = EPB_OK;
enter_state(EPB_STATE_RELEASED);