Skip to main content
The UI API provides functions for managing different user interface modes in BlueBus.

UI modes

BlueBus supports multiple UI modes for different BMW radio/display systems:
  • CD53 - Business CD radio with single-line display
  • BMBT - BoardMonitor (navigation screen) interface
  • MID - Multi-Info Display (center console display)
  • MID_BMBT - Combined MID and BMBT
  • MIR - Multi-Information Radio
  • IRIS - Integrated Radio Information System

BMBT (BoardMonitor) API

Data structures

BMBTContext_t

Context structure for BMBT UI mode.
bt
BT_t *
Pointer to Bluetooth context
ibus
IBus_t *
Pointer to I-Bus context
menu
uint8_t
Current menu state: BMBT_MENU_NONE, BMBT_MENU_MAIN, BMBT_MENU_DASHBOARD, BMBT_MENU_DEVICE_SELECTION, BMBT_MENU_SETTINGS, etc.
status
BMBTStatus_t
UI status flags
tel
BMBTTELStatus_t
Telephone UI state
mainDisplay
UtilsAbstractDisplayValue_t
Main display text buffer

Functions

BMBTInit

void BMBTInit(BT_t *bt, IBus_t *ibus);
Initializes BMBT UI mode.
bt
BT_t *
required
Pointer to Bluetooth context
ibus
IBus_t *
required
Pointer to I-Bus context

BMBTDestroy

void BMBTDestroy();
Cleans up BMBT UI resources.

Event handlers

BMBTIBusBMBTButtonPress

void BMBTIBusBMBTButtonPress(void *context, uint8_t *packet);
Handles button press events from the BoardMonitor.
context
void *
required
BMBT context pointer
packet
uint8_t *
required
I-Bus packet containing button data

BMBTIBusMenuSelect

void BMBTIBusMenuSelect(void *context, uint8_t *packet);
Handles menu selection events.
context
void *
required
BMBT context pointer
packet
uint8_t *
required
I-Bus packet with menu selection

BMBTBTMetadata

void BMBTBTMetadata(void *context, uint8_t *event);
Handles Bluetooth metadata updates.
context
void *
required
BMBT context pointer
event
uint8_t *
required
Bluetooth event data

BMBTBTPlaybackStatus

void BMBTBTPlaybackStatus(void *context, uint8_t *event);
Handles playback status changes.
context
void *
required
BMBT context pointer
event
uint8_t *
required
Bluetooth event data

CD53 API

Data structures

CD53Context_t

Context structure for CD53 UI mode.
bt
BT_t *
Pointer to Bluetooth context
ibus
IBus_t *
Pointer to I-Bus context
mode
uint8_t
Current mode: CD53_MODE_OFF, CD53_MODE_ACTIVE, CD53_MODE_CALL, CD53_MODE_DEVICE_SEL, CD53_MODE_SETTINGS
displayMetadata
uint8_t
Metadata display mode: CD53_DISPLAY_METADATA_ON, CD53_DISPLAY_METADATA_OFF, CD53_DISPLAY_OBC
mainDisplay
UtilsAbstractDisplayValue_t
Main display text buffer (11 characters max)
tempDisplay
UtilsAbstractDisplayValue_t
Temporary display text buffer

Functions

CD53Init

void CD53Init(BT_t *bt, IBus_t *ibus);
Initializes CD53 UI mode.
bt
BT_t *
required
Pointer to Bluetooth context
ibus
IBus_t *
required
Pointer to I-Bus context

CD53Destroy

void CD53Destroy();
Cleans up CD53 UI resources.

Event handlers

CD53IBusCDChangerStatus

void CD53IBusCDChangerStatus(void *context, uint8_t *packet);
Handles CD changer status requests from the radio.
context
void *
required
CD53 context pointer
packet
uint8_t *
required
I-Bus packet

CD53IBusMFLButton

void CD53IBusMFLButton(void *context, uint8_t *packet);
Handles multi-function steering wheel button presses.
context
void *
required
CD53 context pointer
packet
uint8_t *
required
I-Bus packet with button data

CD53BTMetadata

void CD53BTMetadata(CD53Context_t *context, uint8_t *event);
Handles Bluetooth metadata updates.
context
CD53Context_t *
required
CD53 context pointer
event
uint8_t *
required
Bluetooth event data

CD53BTPlaybackStatus

void CD53BTPlaybackStatus(void *context, uint8_t *event);
Handles playback status changes.
context
void *
required
CD53 context pointer
event
uint8_t *
required
Bluetooth event data

MID API

Data structures

MIDContext_t

Context structure for MID UI mode.
bt
BT_t *
Pointer to Bluetooth context
ibus
IBus_t *
Pointer to I-Bus context
mode
uint8_t
Current mode: MID_MODE_OFF, MID_MODE_ACTIVE, MID_MODE_SETTINGS, MID_MODE_DEVICES, MID_MODE_OBC
mainDisplay
UtilsAbstractDisplayValue_t
Main display text buffer (24 characters max)
tempDisplay
UtilsAbstractDisplayValue_t
Temporary display text buffer

Functions

MIDInit

void MIDInit(BT_t *bt, IBus_t *ibus);
Initializes MID UI mode.
bt
BT_t *
required
Pointer to Bluetooth context
ibus
IBus_t *
required
Pointer to I-Bus context

MIDDestroy

void MIDDestroy();
Cleans up MID UI resources.

Event handlers

MIDIBusMIDButtonPress

void MIDIBusMIDButtonPress(void *context, uint8_t *packet);
Handles MID button press events.
context
void *
required
MID context pointer
packet
uint8_t *
required
I-Bus packet with button data

MIDIBusMIDModeChange

void MIDIBusMIDModeChange(void *context, uint8_t *packet);
Handles MID mode change events.
context
void *
required
MID context pointer
packet
uint8_t *
required
I-Bus packet with mode data

MIDBTMetadataUpdate

void MIDBTMetadataUpdate(void *context, uint8_t *event);
Handles Bluetooth metadata updates.
context
void *
required
MID context pointer
event
uint8_t *
required
Bluetooth event data

MIDBTPlaybackStatus

void MIDBTPlaybackStatus(void *context, uint8_t *event);
Handles playback status changes.
context
void *
required
MID context pointer
event
uint8_t *
required
Bluetooth event data

Common display functions

These functions are available across UI modes:

CD53DisplayUpdateText

void CD53DisplayUpdateText(void *context, char *text, int8_t timeout, uint8_t autoScroll);
Updates the CD53 display text.
context
void *
required
CD53 context pointer
text
char *
required
Text to display (max 11 characters)
timeout
int8_t
required
Display timeout in iterations, -1 to scroll indefinitely
autoScroll
uint8_t
required
1 to enable auto-scroll for long text, 0 to disable

MIDDisplayUpdateText

void MIDDisplayUpdateText(void *context, char *text, int8_t timeout, uint8_t autoScroll);
Updates the MID display text.
context
void *
required
MID context pointer
text
char *
required
Text to display (max 24 characters)
timeout
int8_t
required
Display timeout in iterations
autoScroll
uint8_t
required
1 to enable auto-scroll for long text, 0 to disable

Button constants

BMBT buttons

  • IBUS_DEVICE_BMBT_BUTTON_NEXT - Next/Skip button
  • IBUS_DEVICE_BMBT_BUTTON_PREV - Previous button
  • IBUS_DEVICE_BMBT_BUTTON_MODE - Mode button
  • IBUS_DEVICE_BMBT_BUTTON_PLAY_PAUSE - Play/Pause toggle
  • IBUS_DEVICE_BMBT_BUTTON_KNOB - Rotary knob
  • IBUS_DEVICE_BMBT_BUTTON_TEL_PRESS - Telephone button press
  • IBUS_DEVICE_BMBT_BUTTON_NUM1 through IBUS_DEVICE_BMBT_BUTTON_NUM6 - Number buttons

MID buttons

  • MID_BUTTON_PLAYBACK - Playback control
  • MID_BUTTON_BACK - Back button
  • MID_BUTTON_META - Metadata toggle
  • MID_BUTTON_PREV_VAL - Previous value
  • MID_BUTTON_NEXT_VAL - Next value
  • MID_BUTTON_PAIR - Pairing mode
  • MID_BUTTON_BT - Bluetooth menu
  • MID_BUTTON_MODE - Mode button

Build docs developers (and LLMs) love