Skip to main content

Event Bus Reference

The complete safi_event_type_t catalog (components/event_bus/include/event_bus.h). Concepts and delivery semantics: the event bus chapter. Payloads are byte buffers; the listed type is the convention both sides use.

Audio

EventPayloadPublished byNotable subscribers
EVENT_AUDIO_PLAY_STARTnoneaudio_playerdisplay, websocket
EVENT_AUDIO_PLAY_STOPnoneaudio_playerdisplay, websocket
EVENT_AUDIO_PAUSEnoneaudio_playerdisplay, websocket
EVENT_AUDIO_RESUMEnoneaudio_playerdisplay, websocket
EVENT_AUDIO_TRACK_CHANGEtrack infoaudio_playerdisplay, websocket
EVENT_AUDIO_VOLUME_CHANGEuint8_t volumeaudio_playerdisplay (overlay), websocket, settings persistence
EVENT_AUDIO_SEEKuint32_t msaudio_playerwebsocket
EVENT_AUDIO_UNDERRUNuint32_t countaudio_playerwebsocket

Streaming

EventPayloadPublished byNotable subscribers
EVENT_STREAM_RECONNECTINGnonestream_clientwebsocket, display
EVENT_STREAM_METADATAUTF-8 title stringstream_client (ICY demux)display (now playing), websocket

Network and time

EventPayloadPublished byNotable subscribers
EVENT_WIFI_CONNECTINGnonewifi_managerdisplay
EVENT_WIFI_CONNECTEDIP stringwifi_managertime_sync (starts SNTP), display, websocket, stream auto-resume
EVENT_WIFI_DISCONNECTEDnonewifi_managerdisplay, websocket
EVENT_TIME_SYNCEDnonetime_syncscheduler gate, display clock

NFC

EventPayloadPublished byNotable subscribers
EVENT_NFC_CARD_DETECTEDUID bytesrfid_managerevent_handlers (dispatch), display (toast), websocket
EVENT_NFC_CARD_REMOVEDnonerfid_managerevent_handlers (removal policy)
EVENT_NFC_CARD_REGISTEREDUID bytescard_databasewebsocket

Storage

EventPayloadPublished byNotable subscribers
EVENT_SD_MOUNTEDnonesd_managerdisplay, library rescan, websocket
EVENT_SD_UNMOUNTEDnonesd_managerdisplay, audio (stop file playback)
EVENT_SD_ERROResp_errsd_managerdisplay, boot report

Power

EventPayloadPublished byNotable subscribers
EVENT_BATTERY_LOWstate structpower_managerdisplay, websocket
EVENT_BATTERY_CRITICALstate structpower_managershutdown initiation
EVENT_BATTERY_CHARGINGnonepower_managerdisplay, websocket
EVENT_BATTERY_FULLnonepower_managerdisplay, websocket

Input

EventPayloadPublished byNotable subscribers
EVENT_UI_BUTTON_PRESSpress kindinput_handlerevent_handlers, display (browse)
EVENT_UI_ENCODER_TURNsigned stepsinput_handlerevent_handlers (volume), display (browse)
EVENT_UI_TOUCHnoneinput_handlerevent_handlers (play/pause)

System

EventPayloadPublished byNotable subscribers
EVENT_SYSTEM_STARTUPnonemainany late initializers
EVENT_SYSTEM_SHUTDOWNnonepower_manager (battery path)synchronous: audio (save resume), display (farewell screen)
EVENT_SYSTEM_ERRORmessage stringanyonedisplay, websocket
EVENT_OTA_PROGRESSuint8_t percentota taskdisplay, websocket

EVENT_TYPE_MAX is the sentinel; a static assert keeps the name table in event_bus.c exactly this long, so adding an event without naming it breaks the build, on purpose.