demo-epb  v1.0
Elektrische Parkbremse - slohmaier Dev Process Demo
safety_manager.h
gehe zur Dokumentation dieser Datei
1 /**
2  * @file safety_manager.h
3  * @brief Safety Manager — Hill-Hold, Auto-Apply, Drive-Away-Assist.
4  *
5  * @arch SWA-001
6  * @reqs SWE-007 SWE-008 SWE-009 SWE-010 SWE-011 SWE-012
7  *
8  * ASIL: D.
9  *
10  * State Machine:
11  * IDLE --(engine_off & v<0.5 & !APPLIED)--> AUTO_APPLY_ARMED
12  * AUTO_APPLY_ARMED --(40 * 50ms = 2s)--> AUTO_APPLY_TRIGGERED
13  * AUTO_APPLY_TRIGGERED --(state==APPLIED)--> IDLE
14  *
15  * IDLE --(grade>5% & v<0.5 & brake)--> HILL_HOLD_ARMED
16  * HILL_HOLD_ARMED --(!brake)--> HILL_HOLD_ACTIVE
17  * HILL_HOLD_ACTIVE --(v>2 km/h | state==APPLIED)--> IDLE
18  *
19  * IDLE --(APPLIED & gas>10% & gear_drive & engine & door & belt)--> DRIVE_AWAY
20  * DRIVE_AWAY --(state==RELEASED|RELEASING)--> IDLE
21  */
22 #ifndef SAFETY_MANAGER_H
23 #define SAFETY_MANAGER_H
24 
25 #include "epb_types.h"
26 
27 typedef enum {
35 
36 typedef struct {
41  EpbState current_state; /* aus Apply Controller */
42  /* Drive-Away-Assist Inputs (SWE-011, SWE-012) */
43  float gas_pedal_percent; /* 0..100 */
44  bool gear_in_drive; /* Vorwaerts oder Rueckwaerts */
45  bool door_closed; /* Fahrertuer */
46  bool seatbelt_fastened; /* Fahrer-Gurt */
47 } SafetyInputs;
48 
49 /* Schwellwerte als Konstanten, damit Tests darauf zugreifen koennen. */
50 #define SAFETY_AUTO_APPLY_DELAY_50MS 40U /* 40 * 50ms = 2.0 s */
51 #define SAFETY_STANDSTILL_KMH 0.5f
52 #define SAFETY_RELEASE_KMH 2.0f
53 #define SAFETY_HILLHOLD_GRADE_PCT 5.0f
54 #define SAFETY_DRIVE_INTENT_GAS_PCT 10.0f /* Gaspedal > 10% = Anfahrabsicht */
55 
57 void safety_mgr_step_50ms(const SafetyInputs* in);
59 bool safety_mgr_release_requested(void); /* Drive-Away-Assist */
61 
62 #endif /* SAFETY_MANAGER_H */
Gemeinsame Typen fuer die EPB-Software.
EpbState
Definition: epb_types.h:22
EpbStatus
Definition: epb_types.h:13
SafetyState
@ SAFETY_HILL_HOLD_ARMED
@ SAFETY_AUTO_APPLY_TRIGGERED
@ SAFETY_IDLE
@ SAFETY_HILL_HOLD_ACTIVE
@ SAFETY_AUTO_APPLY_ARMED
@ SAFETY_DRIVE_AWAY
void safety_mgr_step_50ms(const SafetyInputs *in)
bool safety_mgr_apply_requested(void)
EpbStatus safety_mgr_init(void)
bool safety_mgr_release_requested(void)
SafetyState safety_mgr_get_state(void)
bool seatbelt_fastened
float grade_percent
float vehicle_speed_kmh
EpbState current_state
float gas_pedal_percent
bool brake_pedal_pressed