Skip to content
This repository has been archived by the owner on May 7, 2020. It is now read-only.

Commit

Permalink
Sonos binding: fix bug with notification timeout handling (#3883)
Browse files Browse the repository at this point in the history
Fix bug introduced by PR #3808

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
  • Loading branch information
lolodomo authored and maggu2810 committed Jul 25, 2017
1 parent bea7bd7 commit 1f70312
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 20 deletions.
Expand Up @@ -9,11 +9,11 @@
<description>The UDN identifies the Zone Player.</description>
<required>true</required>
</parameter>
<parameter name="notificationTimeout" type="integer">
<parameter name="notificationTimeout" type="integer" unit="s">
<label>Notification Timeout</label>
<description>Specifies the amount of time for which the notification sound will be played</description>
<default>40</default>
<required>true</required>
<description>Specifies the amount of time in seconds for which the notification sound will be played</description>
<unitLabel>second</unitLabel>
<default>20</default>
</parameter>
<parameter name="refresh" type="integer">
<label>Refresh interval</label>
Expand Down
Expand Up @@ -37,7 +37,6 @@
import org.eclipse.smarthome.binding.sonos.internal.SonosXMLParser;
import org.eclipse.smarthome.binding.sonos.internal.SonosZoneGroup;
import org.eclipse.smarthome.binding.sonos.internal.SonosZonePlayerState;
import org.eclipse.smarthome.config.core.Configuration;
import org.eclipse.smarthome.config.discovery.DiscoveryServiceRegistry;
import org.eclipse.smarthome.core.library.types.DecimalType;
import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType;
Expand Down Expand Up @@ -101,12 +100,12 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
private static final int SOCKET_TIMEOUT = 5000;

/**
* Default notification timeout
* Default notification timeout (in seconds)
*/
private static final Integer DEFAULT_NOTIFICATION_TIMEOUT = 40000;
private static final Integer DEFAULT_NOTIFICATION_TIMEOUT = 20;

/**
* configurable notification timeout
* configurable notification timeout (in seconds)
*/
private Integer notificationTimeout = null;

Expand Down Expand Up @@ -212,15 +211,12 @@ public void initialize() {

if (getUDN() != null) {
onUpdate();

if (getConfigAs(ZonePlayerConfiguration.class).notificationTimeout == null) {
Configuration c = editConfiguration();
c.put(ZonePlayerConfiguration.NOTIFICATION_TIMEOUT, DEFAULT_NOTIFICATION_TIMEOUT);
updateConfiguration(c);
}


this.notificationTimeout = getConfigAs(ZonePlayerConfiguration.class).notificationTimeout;

if (this.notificationTimeout == null) {
this.notificationTimeout = DEFAULT_NOTIFICATION_TIMEOUT;
}

super.initialize();
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR);
Expand Down Expand Up @@ -2388,7 +2384,7 @@ private void waitForFinishedNotification() {
// check Sonos state events to determine the end of the notification sound
String notificationTitle = stateMap.get("CurrentTitle");
long playstart = System.currentTimeMillis();
while (System.currentTimeMillis() - playstart < this.notificationTimeout.longValue()) {
while (System.currentTimeMillis() - playstart < this.notificationTimeout.longValue() * 1000) {
try {
Thread.sleep(50);
if (!notificationTitle.equals(stateMap.get("CurrentTitle"))
Expand All @@ -2407,7 +2403,7 @@ private void waitForTransportState(String state) {
while (!stateMap.get("TransportState").equals(state)) {
try {
Thread.sleep(50);
if (System.currentTimeMillis() - start > this.notificationTimeout.longValue()) {
if (System.currentTimeMillis() - start > this.notificationTimeout.longValue() * 1000) {
break;
}
} catch (InterruptedException e) {
Expand All @@ -2423,7 +2419,7 @@ private void waitForNotTransportState(String state) {
while (stateMap.get("TransportState").equals(state)) {
try {
Thread.sleep(50);
if (System.currentTimeMillis() - start > this.notificationTimeout.longValue()) {
if (System.currentTimeMillis() - start > this.notificationTimeout.longValue() * 1000) {
break;
}
} catch (InterruptedException e) {
Expand Down

0 comments on commit 1f70312

Please sign in to comment.