Skip to content

Commit

Permalink
Merge 13894a0 into df09d21
Browse files Browse the repository at this point in the history
  • Loading branch information
kylergib authored Sep 16, 2023
2 parents df09d21 + 13894a0 commit a97c3b6
Show file tree
Hide file tree
Showing 5 changed files with 369 additions and 53 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def mainClassSimpleName = 'WaveLinkPlugin'
def mainClassPackage = 'com.kylergib.wavelinktp'
group mainClassPackage
def versionMajor = 1
def versionMinor = 2
def versionMinor = 3
def versionPatch = 0
version versionMajor + '.' + versionMinor + '.' + versionPatch
def versionCode = versionMajor * 1000 + versionMinor * 100 + versionPatch
Expand Down
148 changes: 105 additions & 43 deletions src/main/java/com/kylergib/wavelinktp/WaveLinkPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
Expand Down Expand Up @@ -307,7 +308,7 @@ private void actionSetInputFilter(@Data(stateId = "inputList") String[] choices,
}
WaveLinkActions.setFilterByPass(input.getIdentifier(), setFilter, Status.localPackageName);
input.setPluginBypassLocal(setFilter);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ", "") + "LocalFilterBypass", input.getPluginBypassLocal());
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkFilterStates.state." + input.getLocalFilterBypassStateId().replace(" ", ""), input.getPluginBypassLocal());

}
if (isStreamMixer(mixerId[0])) {
Expand All @@ -318,7 +319,7 @@ private void actionSetInputFilter(@Data(stateId = "inputList") String[] choices,
}
WaveLinkActions.setFilterByPass(input.getIdentifier(), setFilter, Status.streamPackageName);
input.setPluginBypassStream(setFilter);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ", "") + "StreamFilterBypass", input.getPluginBypassStream());
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkFilterStates.state." + input.getStreamFilterBypassStateId().replace(" ", ""), input.getPluginBypassStream());

}

Expand Down Expand Up @@ -355,9 +356,9 @@ private void actionSetInputMute(@Data(stateId = "inputList") String[] choices,
if (newValueLocal) {
mutedValue = "muted";
}
String inputStateId = "com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ","") + "Local";
waveLinkPlugin.sendStateUpdate(inputStateId, mutedValue);
System.out.println(inputStateId + " - " + mutedValue);
String localMuteStateId = "com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkMuteStates.state." + input.getLocalMuteStateId().replace(" ","");
waveLinkPlugin.sendStateUpdate(localMuteStateId, mutedValue);
// System.out.println(localMuteStateId + " - " + mutedValue);
}
if (isStreamMixer(mixerId[0])) {
if (value[0].equals("toggle")) {
Expand All @@ -371,9 +372,9 @@ private void actionSetInputMute(@Data(stateId = "inputList") String[] choices,
}
WaveLinkActions.setInputConfig(input.getIdentifier(), Status.streamPackageName, "Mute", newValueStream);
input.setStreamMixerMuted(newValueStream);
String inputStateId = "com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ","") + "Stream";
waveLinkPlugin.sendStateUpdate(inputStateId, mutedValue);
System.out.println(inputStateId + " - " + mutedValue);
String streamMuteStateId = "com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkMuteStates.state." + input.getStreamMuteStateId().replace(" ","");
waveLinkPlugin.sendStateUpdate(streamMuteStateId, mutedValue);
System.out.println(streamMuteStateId + " - " + mutedValue);

}
});
Expand Down Expand Up @@ -419,7 +420,7 @@ private void actionSetInputFilterActive(@Data(stateId = "inputList") String[] c

inputPlugin.setIsActive(newValue);
WaveLinkActions.setInputFilter(input.getIdentifier(),inputPlugin.getFilterID(),newValue);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + stateId,stateIdValue);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkFilterStates.state." + stateId,stateIdValue);
System.out.println(stateId + " - " + stateIdValue);

});
Expand Down Expand Up @@ -457,12 +458,12 @@ private void actionSetInputVolume(@Data(stateId = "inputList") String[] choices
if (isLocalMixer(mixerId[0])) {
WaveLinkActions.setInputConfig(input.getIdentifier(),Status.localPackageName,"Volume", finalIntegerValue);
input.setLocalMixerLevel(finalIntegerValue);
Status.setInputValue(input.getName(), finalIntegerValue,"Local");
Status.setInputValue(finalIntegerValue,"Local", input);
}
if (isStreamMixer(mixerId[0])) {
WaveLinkActions.setInputConfig(input.getIdentifier(), Status.streamPackageName, "Volume", finalIntegerValue);
input.setStreamMixerLevel(finalIntegerValue);
Status.setInputValue(input.getName(), finalIntegerValue,"Stream");
Status.setInputValue(finalIntegerValue,"Stream",input);
}
});
}
Expand All @@ -486,7 +487,7 @@ public void actionUpdatePuts() throws InterruptedException {
public void updateInputs() throws InterruptedException {
if (!firstRun) {
Status.allInputs.clear();
Status.getInput();
// Status.getInput();
WaveJson getInputConfigs = new WaveJson("getInputConfigs", 16);
client.send(getInputConfigs.getJsonString());
}
Expand All @@ -501,30 +502,31 @@ public void updateInputs() throws InterruptedException {


//create dynamic states and set it to null
if (!Status.sentStates.contains(input.getName().replace(" ",""))) {
waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "Local", input.getName() + " Local", "null");
waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "Stream", input.getName() + " Stream", "null");
//create states for filters
waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "LocalFilterBypass", input.getName() + " Local Filter Bypass", "null");
waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "StreamFilterBypass", input.getName() + " Stream Filter Bypass", "null");

Status.sentStates.add(input.getName().replace(" ",""));
System.out.println("Sent state: " + input.getName().replace(" ",""));

//TODO: adding states for each input
//NEW
input.getPlugins().forEach(inputPlugin -> {
String inputFilterStateId = input.getName().replace(" ", "") + "Filter" + inputPlugin.getName();
String inputFilterStateDescription = input.getName() + " " + inputPlugin.getName() + " (Filter)";
String stateIdValue;
if (inputPlugin.getIsActive()) stateIdValue = "active";
else stateIdValue = "inactive";

waveLinkPlugin.sendCreateState("WaveLinkInputs", inputFilterStateId,
inputFilterStateDescription, stateIdValue);


});
if (!input.isStatesSentToTP()) {
sendDynamicStates(input);
// waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "Local", input.getName() + " Local", "null");
// waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "Stream", input.getName() + " Stream", "null");
// //create states for filters
// waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "LocalFilterBypass", input.getName() + " Local Filter Bypass", "null");
// waveLinkPlugin.sendCreateState("WaveLinkInputs", input.getName().replace(" ", "") + "StreamFilterBypass", input.getName() + " Stream Filter Bypass", "null");
//
// Status.sentStates.add(input.getName().replace(" ",""));
// System.out.println("Sent state: " + input.getName().replace(" ",""));
//
// //TODO: adding states for each input
// //NEW
// input.getPlugins().forEach(inputPlugin -> {
// String inputFilterStateId = input.getName().replace(" ", "") + "Filter" + inputPlugin.getName();
// String inputFilterStateDescription = input.getName() + " " + inputPlugin.getName() + " (Filter)";
// String stateIdValue;
// if (inputPlugin.getIsActive()) stateIdValue = "active";
// else stateIdValue = "inactive";
//
// waveLinkPlugin.sendCreateState("WaveLinkInputs", inputFilterStateId,
// inputFilterStateDescription, stateIdValue);
//
//
// });
}


Expand All @@ -538,6 +540,7 @@ public void updateInputs() throws InterruptedException {
}

public void updateInputValues() {
System.out.println("STARTING input UPDATE");
Status.allInputs.forEach(input -> {

String localMutedValue = "unmuted";
Expand All @@ -551,15 +554,16 @@ public void updateInputValues() {
}

//updates states with values of muted or unmuted so it will update any buttons when the plugin loads
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ","") + "Local",localMutedValue);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ","") + "Stream",streamMutedValue);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkMuteStates.state." + input.getLocalMuteStateId().replace(" ",""),localMutedValue);
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkMuteStates.state." + input.getStreamMuteStateId().replace(" ",""),streamMutedValue);

waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ", "") + "LocalFilterBypass", input.getPluginBypassLocal());
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkInputs.state." + input.getName().replace(" ", "") + "StreamFilterBypass", input.getPluginBypassStream());
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkFilterStates.state." + input.getLocalFilterBypassStateId().replace(" ", ""), input.getPluginBypassLocal());
waveLinkPlugin.sendStateUpdate("com.kylergib.wavelinktp.WaveLinkPlugin.WaveLinkFilterStates.state." + input.getStreamFilterBypassStateId().replace(" ", ""), input.getPluginBypassStream());

Status.setInputValue(input.getName(), input.getLocalMixerLevel(), "Local");
Status.setInputValue(input.getName(), input.getStreamMixerLevel(), "Stream");
Status.setInputValue(input.getLocalMixerLevel(), "Local", input);
Status.setInputValue(input.getStreamMixerLevel(), "Stream", input);
});
System.out.println("ending inputs UPDATE");

}
public void updateOutputs() {
Expand Down Expand Up @@ -591,7 +595,7 @@ public void updateOutputs() {
}
}
waveLinkPlugin.sendChoiceUpdate(WaveLinkPluginConstants.WaveLinkOutputs.States.OutputList.ID, allOutputsString);

System.out.println("ending OUTPUTS UPDATE");
}

public void updateMics() {
Expand Down Expand Up @@ -728,9 +732,27 @@ private void actionSetMicrophoneMute(@Data(stateId = "micList") String[] choices
@State(defaultValue = "", categoryId = "WaveLinkOutputs",desc = "Local Mixer Output")
private String localMixOut;

@State(defaultValue = "", categoryId = "WaveLinkOutputs", desc = "Local Mixer Left Level")
private String localLeftLevel;

@State(defaultValue = "", categoryId = "WaveLinkOutputs", desc = "Local Mixer Right Level")
private String localRightLevel;

@State(defaultValue = "", categoryId = "WaveLinkOutputs", desc = "Local Mixer Volume")
private String localVolume;

@State(defaultValue = "", categoryId = "WaveLinkOutputs",desc = "Stream Mixer Output")
private String streamMixOut;

@State(defaultValue = "", categoryId = "WaveLinkOutputs", desc = "Stream Mixer Left Level")
private String streamLeftLevel;

@State(defaultValue = "", categoryId = "WaveLinkOutputs", desc = "Stream Mixer Right Level")
private String streamRightLevel;

@State(defaultValue = "", categoryId = "WaveLinkOutputs", desc = "Stream Mixer Volume")
private String streamVolume;

@State(defaultValue = "",categoryId = "WaveLinkOutputs", desc = "Monitor Mix Selected")
private String monitoredMix;

Expand Down Expand Up @@ -1140,5 +1162,45 @@ public boolean checkForUpdate() {
return false;
}

public void sendDynamicStates(Input input) {
//todo: left off, next to to update the send update states and add output level states
LOGGER.log(Level.FINER, "Trying to send states for input: " + input.getName());
waveLinkPlugin.sendCreateState("WaveLinkMuteStates",input.getLocalMuteStateId().replace(" ", ""),"Wave Link Mute States",input.getLocalMuteStateId(), input.getLocalMixerMuted());
waveLinkPlugin.sendCreateState("WaveLinkMuteStates",input.getStreamMuteStateId().replace(" ", ""),"Wave Link Mute States",input.getStreamMuteStateId(), input.getStreamMixerMuted());


waveLinkPlugin.sendCreateState("WaveLinkFilterStates",input.getLocalFilterBypassStateId().replace(" ", ""),"Wave Link Filter States",input.getLocalFilterBypassStateId(), input.getPluginBypassLocal());
waveLinkPlugin.sendCreateState("WaveLinkFilterStates",input.getStreamFilterBypassStateId().replace(" ", ""),"Wave Link Filter States",input.getStreamFilterBypassStateId(), input.getPluginBypassStream());
BigDecimal levelLeft = BigDecimal.valueOf(0.0);
BigDecimal levelRight = BigDecimal.valueOf(0.0);
if (input.getLevelLeft() != null) {
levelLeft = input.getLevelLeft();
}
if (input.getLevelRight() != null) {
levelRight = input.getLevelRight();
}
waveLinkPlugin.sendCreateState("WaveLinkLevelStates", input.getLevelLeftStateId().replace(" ", ""),"Wave Link Level States",input.getLevelLeftStateId(),levelLeft);
waveLinkPlugin.sendCreateState("WaveLinkLevelStates", input.getLevelRightStateId().replace(" ", ""),"Wave Link Level States",input.getLevelRightStateId(),levelRight);

waveLinkPlugin.sendCreateState("WaveLinkVolumeStates",input.getLocalVolumeStateId().replace(" ", ""),"Wave Link Volume States",input.getLocalVolumeStateId(),input.getLocalMixerLevel());
waveLinkPlugin.sendCreateState("WaveLinkVolumeStates",input.getStreamVolumeStateId().replace(" ", ""),"Wave Link Volume States",input.getStreamVolumeStateId(),input.getStreamMixerLevel());


input.getPlugins().forEach(inputPlugin -> {
String inputFilterStateId = input.getName().replace(" ", "") + "Filter" + inputPlugin.getName();
String inputFilterStateDescription = input.getName() + " " + inputPlugin.getName() + " (Filter)";
String stateIdValue;
if (inputPlugin.getIsActive()) stateIdValue = "active";
else stateIdValue = "inactive";
waveLinkPlugin.sendCreateState("WaveLinkFilterStates", inputFilterStateId,"Wave Link Filter States",
inputFilterStateDescription, stateIdValue);
});



input.setStatesSentToTP(true);
LOGGER.log(Level.FINER, "Sent states for input: " + input.getName());


}
}
112 changes: 112 additions & 0 deletions src/main/java/com/kylergib/wavelinktp/model/Input.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.kylergib.wavelinktp.model;

import java.math.BigDecimal;
import java.util.ArrayList;
/**
* Inputs in wave link
Expand All @@ -17,6 +18,24 @@ public class Input {
private int inputType;
private Boolean pluginBypassLocal; //if false then it is not bypassing the filter/plugin
private Boolean pluginBypassStream; //if false then it is not bypassing the filter/plugin
private BigDecimal levelLeft;
private BigDecimal levelRight;

//dynamic state info
// private final String stateCategoryId = "WaveLinkInputs";
private String localMuteStateId;
private String streamMuteStateId;
private String localFilterBypassStateId;
private String streamFilterBypassStateId;

private String levelLeftStateId;
private String levelRightStateId;
private String localVolumeStateId;
private String streamVolumeStateId;

private boolean statesSentToTP;





Expand All @@ -38,6 +57,99 @@ public Input(String identifier, String name,
this.pluginBypassStream = pluginBypassStream;
}


// public String getStateCategoryId() {
// return stateCategoryId;
// }

public String getLocalMuteStateId() {
return localMuteStateId;
}

public void setLocalMuteStateId(String localMuteStateId) {
this.localMuteStateId = localMuteStateId;
}

public String getStreamMuteStateId() {
return streamMuteStateId;
}

public void setStreamMuteStateId(String streamMuteStateId) {
this.streamMuteStateId = streamMuteStateId;
}

public String getLocalFilterBypassStateId() {
return localFilterBypassStateId;
}

public void setLocalFilterBypassStateId(String localFilterBypassStateId) {
this.localFilterBypassStateId = localFilterBypassStateId;
}

public String getStreamFilterBypassStateId() {
return streamFilterBypassStateId;
}

public void setStreamFilterBypassStateId(String streamFilterBypassStateId) {
this.streamFilterBypassStateId = streamFilterBypassStateId;
}

public String getLevelLeftStateId() {
return levelLeftStateId;
}

public void setLevelLeftStateId(String levelLeftStateId) {
this.levelLeftStateId = levelLeftStateId;
}

public String getLevelRightStateId() {
return levelRightStateId;
}

public void setLevelRightStateId(String levelRightStateId) {
this.levelRightStateId = levelRightStateId;
}

public String getLocalVolumeStateId() {
return localVolumeStateId;
}

public void setLocalVolumeStateId(String localVolumeStateId) {
this.localVolumeStateId = localVolumeStateId;
}

public String getStreamVolumeStateId() {
return streamVolumeStateId;
}

public void setStreamVolumeStateId(String streamVolumeStateId) {
this.streamVolumeStateId = streamVolumeStateId;
}

public boolean isStatesSentToTP() {
return statesSentToTP;
}

public void setStatesSentToTP(boolean statesSentToTP) {
this.statesSentToTP = statesSentToTP;
}

public BigDecimal getLevelLeft() {
return levelLeft;
}

public void setLevelLeft(BigDecimal levelLeft) {
this.levelLeft = levelLeft;
}

public BigDecimal getLevelRight() {
return levelRight;
}

public void setLevelRight(BigDecimal levelRight) {
this.levelRight = levelRight;
}

public int getId() {
return id;
}
Expand Down
Loading

0 comments on commit a97c3b6

Please sign in to comment.