<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openhome.org/mediawiki/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openhome.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Av%3ADeveloper%3AEriskay%3ARadioService</id>
		<title>Av:Developer:Eriskay:RadioService - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openhome.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Av%3ADeveloper%3AEriskay%3ARadioService"/>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/mediawiki/index.php?title=Av:Developer:Eriskay:RadioService&amp;action=history"/>
		<updated>2026-05-12T22:57:25Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.openhome.org/mediawiki/index.php?title=Av:Developer:Eriskay:RadioService&amp;diff=1314&amp;oldid=prev</id>
		<title>Simonc: Created page with &quot;= Radio Service = == Overview == The Radio service offers a means for controlling radio presets.  If a device's  Product service reports ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/mediawiki/index.php?title=Av:Developer:Eriskay:RadioService&amp;diff=1314&amp;oldid=prev"/>
				<updated>2015-12-15T13:25:01Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Radio Service = == Overview == The Radio service offers a means for controlling radio presets.  If a device&amp;#39;s &lt;a href=&quot;/wiki/Av:Developer:Eriskay:ProductService&quot; title=&quot;Av:Developer:Eriskay:ProductService&quot;&gt; Product&lt;/a&gt; service reports ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Radio Service =&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Radio service offers a means for controlling radio presets.&lt;br /&gt;
&lt;br /&gt;
If a device's [[Av:Developer:Eriskay:ProductService | Product]] service reports a source of type &amp;lt;tt&amp;gt;&amp;quot;Radio&amp;quot;&amp;lt;/tt&amp;gt;, then that device is guaranteed to also bear the Radio service.  If the Radio service is available, all its properties and actions must be fully implemented.&lt;br /&gt;
&lt;br /&gt;
== Evented Properties ==&lt;br /&gt;
=== ChannelsMax ===&lt;br /&gt;
The maximum number of presets (and so the number of elements in &amp;lt;tt&amp;gt;IdArray&amp;lt;/tt&amp;gt;).  Does not vary at run-time.&lt;br /&gt;
&lt;br /&gt;
=== Id ===&lt;br /&gt;
The id of the currently selected preset.  Or &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; if no preset has ever been selected.&lt;br /&gt;
&lt;br /&gt;
=== IdArray ===&lt;br /&gt;
A JSON integer array containing preset ids.  Will always have &amp;lt;tt&amp;gt;ChannelsMax&amp;lt;/tt&amp;gt; elements.  A value of &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; implies that no preset is set for that slot.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
Metadata for the last preset to be selected.&lt;br /&gt;
&lt;br /&gt;
=== Uri ===&lt;br /&gt;
Uri for the last preset to be selected.&lt;br /&gt;
&lt;br /&gt;
== Actions ==&lt;br /&gt;
=== Channel ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (out string uri, out string metadata)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return the values of the &amp;lt;tt&amp;gt;Uri&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Metadata&amp;lt;/tt&amp;gt; properties.&lt;br /&gt;
&lt;br /&gt;
=== ChannelsMax ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (out uint max)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return  the value of the &amp;lt;tt&amp;gt;ChannelsMax&amp;lt;/tt&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
=== Id ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (out uint id)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return the value of the &amp;lt;tt&amp;gt;Id&amp;lt;/tt&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
=== IdArray ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (out uint token, out string idArray)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return the value of the &amp;lt;tt&amp;gt;IdArray&amp;lt;/tt&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
=== IdArrayChanged ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (in uint token, out bool changed)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Check to see if the &amp;lt;tt&amp;gt;IdArray&amp;lt;/tt&amp;gt; state variable has changed since gathering the specified &amp;lt;tt&amp;gt;IdArrayToken&amp;lt;/tt&amp;gt;. This Token must have been previously collected from the &amp;lt;tt&amp;gt;IdArray&amp;lt;/tt&amp;gt; action.  This action is provided specifically for clients which cannot consume standard evented updates of properties.&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (in uint id, out string metadata)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a channel preset id, return its associated metadata.  The metadata will be of the form&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;Title&amp;quot;: &amp;quot;[title]&amp;quot;&lt;br /&gt;
        &amp;quot;Origin&amp;quot;: &amp;quot;[id of origin of metadata]&amp;quot;&lt;br /&gt;
        &amp;quot;Uri&amp;quot;: &amp;quot;[preset uri]&amp;quot;&lt;br /&gt;
        &amp;quot;Artwork&amp;quot;: &amp;quot;[image url]&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
The elements listed above are guaranteed to be present; additional elements may also be included.&lt;br /&gt;
&lt;br /&gt;
=== ReadList ===&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Arguments: (in string ids, out string json)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a space separated list of channel preset ids, return their associated metadata.  The metadata will be of the form&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;channels&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: [preset_id_1],&lt;br /&gt;
                &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
                    &amp;quot;Title&amp;quot;: &amp;quot;[title]&amp;quot;&lt;br /&gt;
                    &amp;quot;Origin&amp;quot;: &amp;quot;[id of origin of metadata]&amp;quot;&lt;br /&gt;
                    &amp;quot;Uri&amp;quot;: &amp;quot;[preset uri]&amp;quot;&lt;br /&gt;
                    &amp;quot;Artwork&amp;quot;: &amp;quot;[image url]&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: [preset_id_1],&lt;br /&gt;
                &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
                    &amp;quot;Title&amp;quot;: &amp;quot;[title]&amp;quot;&lt;br /&gt;
                    &amp;quot;Origin&amp;quot;: &amp;quot;[id of origin of metadata]&amp;quot;&lt;br /&gt;
                    &amp;quot;Uri&amp;quot;: &amp;quot;[preset uri]&amp;quot;&lt;br /&gt;
                    &amp;quot;Artwork&amp;quot;: &amp;quot;[image url]&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            },&lt;br /&gt;
            ........    &lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Service Description ==&lt;br /&gt;
For devices supporting the UPnP protocol, the service description is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;name: &amp;quot;Radio&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;domain: &amp;quot;openhome.org.eriskay&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;version: &amp;quot;1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
    &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
  &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
  &amp;lt;actionList&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Channel&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Id&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;Id&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Read&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Id&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;Id&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;ReadList&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;IdList&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;IdList&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;ChannelList&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;ChannelList&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;IdArray&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Token&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;IdArrayToken&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Array&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;IdArray&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;IdArrayChanged&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Token&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;IdArrayToken&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;IdArrayChanged&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;ChannelsMax&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;argument&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
          &amp;lt;relatedStateVariable&amp;gt;ChannelsMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;/argument&amp;gt;&lt;br /&gt;
      &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
  &amp;lt;/actionList&amp;gt;&lt;br /&gt;
  &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Id&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;IdArray&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;ChannelsMax&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;no&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;IdArrayToken&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;no&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;IdArrayChanged&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;no&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;IdList&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;stateVariable sendEvents=&amp;quot;no&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;ChannelList&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
    &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
  &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simonc</name></author>	</entry>

	</feed>