1/**
2 * Adaptive Cruise Control - pseudo-code implementation
3 *
4 * Covers SWREQ_004, SWREQ_005, SWREQ_006, SWREQ_007
5 */
6
7#include "acc.h"
8
[docs] 9// @ AdaptiveCruiseModule struct, IMPL_ACC_MODULE, impl, [SWREQ_004, SWREQ_005, SWREQ_006, SWREQ_007]
10typedef struct {
11 float distance_m; /* measured distance to vehicle ahead (m) */
12 float target_speed_mps; /* current speed setpoint (m/s) */
13 float collision_risk; /* normalised risk score 0.0 – 1.0 */
14 int emergency_active; /* 1 when emergency brake has been commanded */
15} AdaptiveCruiseModule;
16
[docs]17// @ measure_radar_distance, IMPL_ACC_DISTANCE, impl, [SWREQ_004]
18/**
19 * Read radar return and compute distance to the nearest object ahead.
20 * Updates acc->distance_m with high-precision measurement (±0.1 m).
21 */
22void measure_radar_distance(AdaptiveCruiseModule *acc, const RadarFrame *frame)
23{
24 /* stub: parse frame, calculate distance, write acc->distance_m */
25 (void)acc; (void)frame;
26}
27
[docs]28// @ adjust_speed, IMPL_ACC_SPEED, impl, [SWREQ_005, SWREQ_013]
29/**
30 * Dynamically update the speed setpoint based on the measured following
31 * distance, desired headway and detected speed-limit signs.
32 */
33void adjust_speed(AdaptiveCruiseModule *acc, float speed_limit_mps)
34{
35 /* stub: headway control law → write acc->target_speed_mps */
36 (void)acc; (void)speed_limit_mps;
37}
38
[docs]39// @ evaluate_collision_risk, IMPL_ACC_RISK, impl, [SWREQ_006, SWREQ_007]
40/**
41 * Compute a collision-risk score from sensor fusion data.
42 * Triggers emergency brake autonomously when risk exceeds critical threshold.
43 */
44void evaluate_collision_risk(AdaptiveCruiseModule *acc, const SensorFusion *sf)
45{
46 /* stub: predictive analytics → set acc->collision_risk;
47 if risk > 0.9 set acc->emergency_active and command brakes */
48 (void)acc; (void)sf;
49}