From f4c85a08cdebeb97408c84159eba5388c3a624b1 Mon Sep 17 00:00:00 2001 From: lolodomo Date: Wed, 14 Aug 2024 20:13:46 +0200 Subject: [PATCH] [freeboxos] Get server AirPlay capabilities (#17257) This will set the related thing properties. No audio sink will be created for the revolution server as it only supports audio and pushing audio media is not yet supported by the API. Signed-off-by: Laurent Garnier --- .../freeboxos/internal/handler/ServerHandler.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ServerHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ServerHandler.java index 7259d3408e..f9de5055f2 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ServerHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ServerHandler.java @@ -68,6 +68,8 @@ public class ServerHandler extends ApiConsumerHandler implements FreeDeviceIntf private long uptime = -1; + private boolean tryConfigureMediaSink = true; + public ServerHandler(Thing thing) { super(thing); eventChannelUID = new ChannelUID(getThing().getUID(), GROUP_SYS_INFO, BOX_EVENT); @@ -147,6 +149,17 @@ public class ServerHandler extends ApiConsumerHandler implements FreeDeviceIntf if (anyChannelLinked(GROUP_FILE_SHARING, Set.of(AFP_FILE_STATUS))) { updateChannelOnOff(GROUP_FILE_SHARING, AFP_FILE_STATUS, getManager(AfpManager.class).getStatus()); } + + if (tryConfigureMediaSink) { + configureMediaSink(); + tryConfigureMediaSink = false; + } + } + + @Override + protected void internalForcePoll() throws FreeboxException { + tryConfigureMediaSink = true; + internalPoll(); } private void fetchSystemConfig() throws FreeboxException { @@ -235,6 +248,7 @@ public class ServerHandler extends ApiConsumerHandler implements FreeDeviceIntf case AIRMEDIA_STATUS: updateChannelOnOff(GROUP_ACTIONS, AIRMEDIA_STATUS, getManager(AirMediaManager.class).setStatus(enable)); + tryConfigureMediaSink = true; return true; default: break; -- 2.47.3