Committed by
Gerrit Code Review
Fixed device subsystem behaviour where auxiliary provider prevented emitting dev…
…ice availability change events. Change-Id: Iaed6359598ff87d5706e10eb9d905ed0883617d9
Showing
2 changed files
with
13 additions
and
8 deletions
| ... | @@ -383,7 +383,8 @@ public class GossipDeviceStore | ... | @@ -383,7 +383,8 @@ public class GossipDeviceStore |
| 383 | // We allow only certain attributes to trigger update | 383 | // We allow only certain attributes to trigger update |
| 384 | boolean propertiesChanged = | 384 | boolean propertiesChanged = |
| 385 | !Objects.equals(oldDevice.hwVersion(), newDevice.hwVersion()) || | 385 | !Objects.equals(oldDevice.hwVersion(), newDevice.hwVersion()) || |
| 386 | - !Objects.equals(oldDevice.swVersion(), newDevice.swVersion()); | 386 | + !Objects.equals(oldDevice.swVersion(), newDevice.swVersion()) || |
| 387 | + !Objects.equals(oldDevice.providerId(), newDevice.providerId()); | ||
| 387 | boolean annotationsChanged = | 388 | boolean annotationsChanged = |
| 388 | !AnnotationsUtil.isEqual(oldDevice.annotations(), newDevice.annotations()); | 389 | !AnnotationsUtil.isEqual(oldDevice.annotations(), newDevice.annotations()); |
| 389 | 390 | ||
| ... | @@ -399,16 +400,14 @@ public class GossipDeviceStore | ... | @@ -399,16 +400,14 @@ public class GossipDeviceStore |
| 399 | , newDevice); | 400 | , newDevice); |
| 400 | } | 401 | } |
| 401 | if (!providerId.isAncillary()) { | 402 | if (!providerId.isAncillary()) { |
| 403 | + boolean wasOnline = availableDevices.contains(newDevice.id()); | ||
| 402 | markOnline(newDevice.id(), newTimestamp); | 404 | markOnline(newDevice.id(), newTimestamp); |
| 405 | + if (!wasOnline) { | ||
| 406 | + notifyDelegateIfNotNull(new DeviceEvent(DEVICE_AVAILABILITY_CHANGED, newDevice, null)); | ||
| 407 | + } | ||
| 403 | } | 408 | } |
| 404 | - return new DeviceEvent(DeviceEvent.Type.DEVICE_UPDATED, newDevice, null); | ||
| 405 | - } | ||
| 406 | 409 | ||
| 407 | - // Otherwise merely attempt to change availability if primary provider | 410 | + return new DeviceEvent(DeviceEvent.Type.DEVICE_UPDATED, newDevice, null); |
| 408 | - if (!providerId.isAncillary()) { | ||
| 409 | - boolean added = markOnline(newDevice.id(), newTimestamp); | ||
| 410 | - return !added ? null : | ||
| 411 | - new DeviceEvent(DEVICE_AVAILABILITY_CHANGED, newDevice, null); | ||
| 412 | } | 411 | } |
| 413 | return null; | 412 | return null; |
| 414 | } | 413 | } | ... | ... |
-
Please register or login to post a comment