Skip to content

Commit

Permalink
[PJLinkDevice] audio/video mute (openhab#16504)
Browse files Browse the repository at this point in the history
* audio/video mute

Signed-off-by: Nils Schnabel <[email protected]>
Co-authored-by: Leo Siepel <[email protected]>
  • Loading branch information
nils and lsiepel authored May 21, 2024
1 parent 330c776 commit 367f8c4
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public class PJLinkDeviceBindingConstants {
public static final String CHANNEL_TYPE_INPUT = "input";
public static final String CHANNEL_TYPE_AUDIO_MUTE = "audioMute";
public static final String CHANNEL_TYPE_VIDEO_MUTE = "videoMute";
public static final String CHANNEL_TYPE_AUDIO_AND_VIDEO_MUTE = "audioAndVideoMute";
public static final String CHANNEL_TYPE_LAMP_HOURS = "lampHours";
public static final String CHANNEL_TYPE_LAMP_ACTIVE = "lampActive";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,16 +181,21 @@ public void handleCommand(ChannelUID channelUID, Command command) {
break;
case CHANNEL_TYPE_AUDIO_MUTE:
case CHANNEL_TYPE_VIDEO_MUTE:
case CHANNEL_TYPE_AUDIO_AND_VIDEO_MUTE:
boolean isAudioMute = channelTypeId.equals(PJLinkDeviceBindingConstants.CHANNEL_TYPE_AUDIO_MUTE);
boolean isVideoMute = channelTypeId.equals(PJLinkDeviceBindingConstants.CHANNEL_TYPE_VIDEO_MUTE);
if (isVideoMute || isAudioMute) {
boolean isAudioAndVideoMute = channelTypeId
.equals(PJLinkDeviceBindingConstants.CHANNEL_TYPE_AUDIO_AND_VIDEO_MUTE);
if (isVideoMute || isAudioMute || isAudioAndVideoMute) {
if (command == RefreshType.REFRESH) {
// refresh both video and audio mute, as it's one request
MuteQueryResponseValue muteStatus = device.getMuteStatus();
updateState(PJLinkDeviceBindingConstants.CHANNEL_AUDIO_MUTE,
OnOffType.from(muteStatus.isAudioMuted()));
updateState(PJLinkDeviceBindingConstants.CHANNEL_VIDEO_MUTE,
OnOffType.from(muteStatus.isVideoMuted()));
updateState(PJLinkDeviceBindingConstants.CHANNEL_TYPE_AUDIO_AND_VIDEO_MUTE,
OnOffType.from(muteStatus.isAudioAndVideoMuted()));
} else {
if (isAudioMute) {
logger.trace("Received audio mute command {}", command);
Expand All @@ -202,6 +207,11 @@ public void handleCommand(ChannelUID channelUID, Command command) {
boolean muteOn = command == OnOffType.ON;
device.setMute(MuteInstructionChannel.VIDEO, muteOn);
}
if (isAudioAndVideoMute) {
logger.trace("Received video mute command {}", command);
boolean muteOn = command == OnOffType.ON;
device.setMute(MuteInstructionChannel.AUDIO_AND_VIDEO, muteOn);
}
}
} else {
logger.debug("Received unknown audio/video mute command {}", command);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,24 @@
public class MuteQueryResponse extends PrefixedResponse<MuteQueryResponse.MuteQueryResponseValue> {

public enum MuteQueryResponseValue {
OFF("Mute off", "30", false, false),
VIDEO_MUTE_ON("Video muted", "11", false, true),
AUDIO_MUTE_ON("Audio muted", "21", true, false),
AUDIO_AND_VIDEO_MUTE_ON("Audio and video muted", "31", true, true);
OFF("Mute off", "30", false, false, false),
VIDEO_MUTE_ON("Video muted", "11", false, true, false),
AUDIO_MUTE_ON("Audio muted", "21", true, false, false),
AUDIO_AND_VIDEO_MUTE_ON("Audio and video muted", "31", true, true, true);

private String text;
private String code;
private boolean audioMuted;
private boolean videoMuted;
private boolean audioAndVideoMuted;

private MuteQueryResponseValue(String text, String code, boolean audioMuted, boolean videoMuted) {
private MuteQueryResponseValue(String text, String code, boolean audioMuted, boolean videoMuted,
boolean audioAndVideoMuted) {
this.text = text;
this.code = code;
this.audioMuted = audioMuted;
this.videoMuted = videoMuted;
this.audioAndVideoMuted = audioAndVideoMuted;
}

public String getText() {
Expand All @@ -67,6 +70,10 @@ public boolean isAudioMuted() {
public boolean isVideoMuted() {
return this.videoMuted;
}

public boolean isAudioAndVideoMuted() {
return this.audioAndVideoMuted;
}
}

private static final HashSet<ErrorCode> SPECIFIED_ERRORCODES = new HashSet<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ thing-type.config.pjLinkDevice.pjLinkDevice.tcpPort.description = The TCP port o

# channel types

channel-type.pjLinkDevice.audioAndVideoMute.label = Audio and Video Mute
channel-type.pjLinkDevice.audioAndVideoMute.description = Select the audio and video mute status
channel-type.pjLinkDevice.audioMute.label = Audio Mute
channel-type.pjLinkDevice.audioMute.description = Select the audio mute status
channel-type.pjLinkDevice.input.label = Input
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,15 @@
<channel id="input" typeId="input"/>
<channel id="audioMute" typeId="audioMute"/>
<channel id="videoMute" typeId="videoMute"/>
<channel id="audioAndVideoMute" typeId="audioAndVideoMute"/>
<channel id="lamp1Hours" typeId="lampHours"/>
<channel id="lamp1Active" typeId="lampActive"/>
</channels>

<properties>
<property name="thingTypeVersion">1</property>
</properties>

<config-description>
<parameter-group name="basic">
<context>basic</context>
Expand Down Expand Up @@ -103,6 +108,12 @@
<description>Select the video mute status</description>
</channel-type>

<channel-type id="audioAndVideoMute">
<item-type>Switch</item-type>
<label>Audio and Video Mute</label>
<description>Select the audio and video mute status</description>
</channel-type>

<channel-type id="lampHours">
<item-type>Number</item-type>
<label>Lamp Hours</label>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<update:update-descriptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:update="https://openhab.org/schemas/update-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/update-description/v1.0.0 https://openhab.org/schemas/update-description-1.0.0.xsd">
<thing-type uid="pjLinkDevice:pjLinkDevice">
<instruction-set targetVersion="1">
<add-channel id="audioAndVideoMute">
<type>pjLinkDevice:audioAndVideoMute</type>
</add-channel>
</instruction-set>
</thing-type>

</update:update-descriptions>

0 comments on commit 367f8c4

Please sign in to comment.