| Phase | Trigger | Action | Key Timers |
|---|---|---|---|
| INITIAL_WAIT | OfferService() called | Wait random delay before first Offer | InitialDelayMin / InitialDelayMax |
| REPETITION | Initial delay elapsed | Send Offer at doubling intervals (exponential backoff) | RepetitionBaseDelay, RepetitionMax |
| MAIN | RepetitionMax reached | Send periodic steady-state Offer | CyclicOfferDelay (typically 1000 ms) |
💡 Startup Latency
The INITIAL_WAIT randomisation prevents SD broadcast storms at vehicle startup when many ECUs come online simultaneously. A typical InitialDelayMax of 100 ms means all offers are sent within the first 100 ms of startup. Reduce CyclicOfferDelay to speed up late-joining consumer discovery.