commit a68900a8bb341244e680e2a0764f699f4b158184
parent 3bc003d1c2e96b4ef3c292fbec94ce3bce339b6b
Author: Brian Swetland <swetland@frotz.net>
Date: Sun, 7 Aug 2011 09:56:06 -0700
Sonos: add item flags and wire up getVolume
Diffstat:
3 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/net/frotz/sonos/Sonos.java b/net/frotz/sonos/Sonos.java
@@ -74,11 +74,23 @@ public class Sonos {
}
/* volume controls */
- public void volume() {
+ public int volume() {
+ int n;
rpc.prepare(render,"GetVolume");
rpc.simpleTag("InstanceID",0);
rpc.simpleTag("Channel", "Master"); // Master | LF | RF
- rpc.invoke();
+ XML xml = rpc.invoke();
+ try {
+ xml.open("u:GetVolumeResponse");
+ n = Integer.parseInt(xml.read("CurrentVolume").toString());
+ if (n < 0)
+ n = 0;
+ if (n > 100)
+ n = 100;
+ return n;
+ } catch (XML.Oops x) {
+ return -1;
+ }
}
public void volume(int vol) { // 0-100
if ((vol < 0) || (vol > 100))
@@ -273,6 +285,11 @@ public class Sonos {
item.playURI.init(value.unescape());
continue;
}
+ if (name.eq("upnp:class")) {
+ /* object.item.... vs object.container... */
+ if (value.charAt(7) == 'i')
+ item.flags |= item.SONG;
+ }
}
cb.updateItem(_id, n, item);
result.close(thing);
diff --git a/net/frotz/sonos/SonosItem.java b/net/frotz/sonos/SonosItem.java
@@ -7,6 +7,7 @@ public class SonosItem {
public XMLSequence artist;
public XMLSequence playURI; /* to enqueue */
public XMLSequence idURI; /* for browse/list */
+ public int flags;
public void reset() {
title.adjust(0,0);
@@ -14,5 +15,8 @@ public class SonosItem {
artist.adjust(0,0);
playURI.adjust(0,0);
idURI.adjust(0,0);
+ flags = 0;
}
+ public static final int SONG = 1;
+ public static final int PLAYLIST = 2;
}
diff --git a/net/frotz/sonos/app.java b/net/frotz/sonos/app.java
@@ -22,8 +22,8 @@ public class app implements SonosListener {
Sonos sonos = new Sonos("10.0.0.199");
//sonos.trace_io(true);
- //sonos.trace_reply(true);
- //sonos.trace_browse(true);
+ sonos.trace_reply(true);
+ sonos.trace_browse(true);
if (args.length == 0) {
sonos.getPosition();
@@ -72,10 +72,12 @@ public class app implements SonosListener {
} else if (cmd.equals("track")) {
sonos.seekTrack(Integer.parseInt(args[1]));
} else if (cmd.equals("volume")) {
- if (args.length == 1)
- sonos.volume();
- else
+ if (args.length == 1) {
+ int n = sonos.volume();
+ System.out.println(n);
+ } else {
sonos.volume(Integer.parseInt(args[1]));
+ }
} else {
System.err.println("Unknown command '"+cmd+"'");
System.exit(-1);