use of org.teleal.cling.model.meta.Service in project openhab1-addons by openhab.
the class SonosZonePlayer method setLed.
public boolean setLed(String string) {
if (string != null && isConfigured()) {
Service service = device.findService(new UDAServiceId("DeviceProperties"));
Action action = service.getAction("SetLEDState");
ActionInvocation invocation = new ActionInvocation(action);
try {
if (string.equals("ON") || string.equals("OPEN") || string.equals("UP")) {
invocation.setInput("DesiredLEDState", "On");
} else if (string.equals("OFF") || string.equals("CLOSED") || string.equals("DOWN")) {
invocation.setInput("DesiredLEDState", "Off");
} else {
return false;
}
} catch (InvalidValueException ex) {
logger.error("Action Invalid Value Exception {}", ex.getMessage());
} catch (NumberFormatException ex) {
logger.error("Action Invalid Value Format Exception {}", ex.getMessage());
}
executeActionInvocation(invocation);
return true;
} else {
return false;
}
}
use of org.teleal.cling.model.meta.Service in project openhab1-addons by openhab.
the class SonosZonePlayer method updatePosition.
public boolean updatePosition() {
if (isConfigured()) {
Service service = device.findService(new UDAServiceId("AVTransport"));
Action action = service.getAction("GetPositionInfo");
ActionInvocation invocation = new ActionInvocation(action);
executeActionInvocation(invocation);
return true;
} else {
return false;
}
}
use of org.teleal.cling.model.meta.Service in project openhab1-addons by openhab.
the class SonosZonePlayer method pause.
public boolean pause() {
if (isConfigured()) {
Service service = device.findService(new UDAServiceId("AVTransport"));
Action action = service.getAction("Pause");
ActionInvocation invocation = new ActionInvocation(action);
executeActionInvocation(invocation);
return true;
} else {
return false;
}
}
use of org.teleal.cling.model.meta.Service in project openhab1-addons by openhab.
the class SonosZonePlayer method enableGENASubscriptions.
private void enableGENASubscriptions() {
if (device != null && isConfigured()) {
// Create a GENA subscription of each service for this device, if supported by the device
List<SonosCommandType> subscriptionCommands = SonosCommandType.getSubscriptions();
List<String> addedSubscriptions = new ArrayList<String>();
for (SonosCommandType c : subscriptionCommands) {
Service service = device.findService(new UDAServiceId(c.getService()));
if (service != null && !addedSubscriptions.contains(c.getService())) {
SonosPlayerSubscriptionCallback callback = new SonosPlayerSubscriptionCallback(service, interval);
addedSubscriptions.add(c.getService());
upnpService.getControlPoint().execute(callback);
}
}
}
}
use of org.teleal.cling.model.meta.Service in project openhab1-addons by openhab.
the class SonosZonePlayer method getEntries.
protected List<SonosEntry> getEntries(String type, String filter) {
List<SonosEntry> resultList = null;
if (isConfigured()) {
long startAt = 0;
Service service = device.findService(new UDAServiceId("ContentDirectory"));
Action action = service.getAction("Browse");
ActionInvocation invocation = new ActionInvocation(action);
try {
invocation.setInput("ObjectID", type);
invocation.setInput("BrowseFlag", "BrowseDirectChildren");
invocation.setInput("Filter", filter);
invocation.setInput("StartingIndex", new UnsignedIntegerFourBytes(startAt));
invocation.setInput("RequestedCount", new UnsignedIntegerFourBytes(200));
invocation.setInput("SortCriteria", "");
} catch (InvalidValueException ex) {
logger.error("Action Invalid Value Exception {}", ex.getMessage());
} catch (NumberFormatException ex) {
logger.error("Action Invalid Value Format Exception {}", ex.getMessage());
}
// Execute this action synchronously
new ActionCallback.Default(invocation, upnpService.getControlPoint()).run();
Long totalMatches = ((UnsignedIntegerFourBytes) invocation.getOutput("TotalMatches").getValue()).getValue();
Long initialNumberReturned = ((UnsignedIntegerFourBytes) invocation.getOutput("NumberReturned").getValue()).getValue();
String initialResult = (String) invocation.getOutput("Result").getValue();
try {
resultList = SonosXMLParser.getEntriesFromString(initialResult);
} catch (SAXException e) {
logger.error("Could not parse Entries from String {}", initialResult);
}
startAt = startAt + initialNumberReturned;
while (startAt < totalMatches) {
invocation = new ActionInvocation(action);
try {
invocation.setInput("ObjectID", type);
invocation.setInput("BrowseFlag", "BrowseDirectChildren");
invocation.setInput("Filter", filter);
invocation.setInput("StartingIndex", new UnsignedIntegerFourBytes(startAt));
invocation.setInput("RequestedCount", new UnsignedIntegerFourBytes(200));
invocation.setInput("SortCriteria", "");
} catch (InvalidValueException ex) {
logger.error("Action Invalid Value Exception {}", ex.getMessage());
} catch (NumberFormatException ex) {
logger.error("Action Invalid Value Format Exception {}", ex.getMessage());
}
// Execute this action synchronously
new ActionCallback.Default(invocation, upnpService.getControlPoint()).run();
String result = (String) invocation.getOutput("Result").getValue();
int numberReturned = (Integer) invocation.getOutput("NumberReturned").getValue();
try {
resultList.addAll(SonosXMLParser.getEntriesFromString(result));
} catch (SAXException e) {
logger.error("Could not parse Entries from String {}", result);
}
startAt = startAt + numberReturned;
}
}
return resultList;
}
Aggregations