volume_interface node is responsible for coordinating volume across the system. It reads the hardware volume buttons directly. It listens to ROS topics for volume changes requested through Bluetooth, the app, or voice commands. It also saves and restores the volume across restarts. It also manages “ducking”, lowering the volume of playback audio when listening for a command. It maintains a system volume for sound effects and a Bluetooth volume for music playback, since Bluetooth volume is often much higher.
Takes a Bool for whether playback volume should be ducked
Volume.msg message from the app or from a voice command request to change the volume
Volume.msg message indicating a Bluetooth source is requesting a volume change.
Triggers the current volume to be saved to disk.
Listens to this topic to decide whether to use the current Bluetooth volume or the normal system volume.
Volume.msg message representing the change due to hardware volume buttons being pushed.
Publishes a Byte representing the current volume level from 0-255
VolumeButton.msg message representing the physical state of the hardware buttons, used for reset conditions.
There are parameters to control respawn, and also parameters to define what GPIO pins the buttons are hooked to and whether they are active low or active high.