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:

CDS Browse Action

The Browse action is particularly important in this context because, for the running application, the first thing to do after the selection of the NAS is, of course, retrieve all its content, in terms of mp3 tag infos. It's also the unique action, in the required subset, that presents some input argument and more than one output ones:

Input ArgumentState Variable
ObjectIDunique identificator for a CDS object
BrowseFlag2-values parameter used to request only the properties of the specified ObjectID or of the first level under it (the 'first childhood')
Filtercomma-separated string list of filtering criteria
StartingIndexunsigned offset value (first element is '0')
RequestedCountunsigned number of objects requested ('0' means all elelments)
SortCriteriacomma-separated string in ascending sort priority; each criterion is prefixed by a '+' (ascending order) or a '-' (descending order)
Output ArgumentState Variable
Resultxml string with Digital Item Declaration (DIDL-Lite) schema; contains the data sent back by the server, under a 'container' or 'item' subtag (DIDL-Lite is the root tag); these data have to be parsed by the control point
NumberReturnedunsigned number of objects obtained back in the response
TotalMatchesunsigned number of objects inside the specified element; it's always '1' if the BrowseFlag is set to browse only the metadata (and not the first child level)