1. Introduction
  2. HW requirements
  3. SW requirements
  4. UPnP services used
  5. The UPnP control point
  6. The UPnP media renderer (smart speaker)
  7. The user interface

UPnP Services Used:

Rendering Control Service (RCS)

Dynamic configurations of renderer attributes are done, in an UPnP architecture, by using some rendering control actions. In particular, for audio-only streams, the number of actions interested in an application is restricted to a few elements (all optionals). For every 'getter', there is also the related 'setter'. In an audio device, like a wireless speaker, the only parameter that a user may want to control is essentially the volume level, or the total presence/absence of sound. Note that, with respect than AVTS, now all actions refer to a given object using two variables: one is again the InstanceID number, the other (and new) is the channel type. A channel is, in RCS world, a string that identifies the speaker spatial position (front-rear, left-right, top-bottom, ecc.); by default, if there's no other channels, the value is 'Master' (no spatial information)*.

Action NameParameters / Return Type
GetMuteretrieve current channel and current stream speaker mute status in a boolean value ('true' means 'audio off')
SetMuteupdate current channel and current stream speaker mute status (the Mute state variable)
GetVolumeretrieve current channel and current stream volume level in an unsigned (integer) value
SetVolumeupdate current channel and current stream speaker volume level; allowed range is '0' to the maximum value supported by renderer device (minimum step size is '1')

[*] For example, on a Raspberry Pi system like the one hosting the media renderer for this project, the channel used is 'PCM' (stereo left and right speaker channels)