Skip to content

Commit

Permalink
Rebuilt communication with wcf / pipes
Browse files Browse the repository at this point in the history
- Added Steps for Intensities
- Cleanup
- Version Bump 0.0.1.2
  • Loading branch information
ashupp committed Apr 19, 2020
1 parent b68f2c6 commit d62cbb6
Show file tree
Hide file tree
Showing 25 changed files with 497 additions and 348 deletions.
32 changes: 32 additions & 0 deletions sfx-100-streamdeck-plugin/PipeContract.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System.ServiceModel;

namespace sfx_100_streamdeck_plugin
{
[ServiceContract]
interface PipeContract
{
[OperationContract]
bool CheckConnection();

[OperationContract]
bool IsRunning();

[OperationContract]
bool StartMotion();

[OperationContract]
bool StopMotion();

[OperationContract]
bool EnableAllEffects();

[OperationContract]
bool DisableAllEffects();

[OperationContract]
bool IncrementOverallIntensity(int steps);

[OperationContract]
bool DecrementOverallIntensity(int steps);
}
}
47 changes: 47 additions & 0 deletions sfx-100-streamdeck-plugin/PipeServerConnection.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace sfx_100_streamdeck_plugin
{
class PipeServerConnection
{
#region Singleton
private static volatile PipeServerConnection instance;
private static object syncRoot = new Object();
public PipeContract Channel;

private PipeServerConnection()
{
string address = "net.pipe://localhost/ashnet/StreamDeckExtension";
NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
EndpointAddress ep = new EndpointAddress(address);
Channel = ChannelFactory<PipeContract>.CreateChannel(binding, ep);
}

public static PipeServerConnection Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new PipeServerConnection();
}
return instance;


}
}
return instance;
}
}
#endregion
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,80 @@
using BarRaider.SdTools;
using NPCommunication;
using System;
using System.Threading.Tasks;
using BarRaider.SdTools;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;


namespace sfx_100_streamdeck_plugin.PluginActions
{
[PluginActionId("sfx-100-streamdeck-plugin.decrementoverallintensity")]
public class DecrementOverallIntensity : PluginBase
{
public DecrementOverallIntensity(SDConnection connection, InitialPayload payload) : base(connection, payload) { }
private class PluginSettings
{
public static PluginSettings CreateDefaultSettings()
{
PluginSettings instance = new PluginSettings();
instance.Steps = "1";
return instance;
}

[JsonProperty(PropertyName = "Steps")]
public string Steps { get; set; }
}

#region Private Members

private PluginSettings settings;

public override void Dispose() { }
#endregion
public DecrementOverallIntensity(SDConnection connection, InitialPayload payload) : base(connection, payload)
{
if (payload.Settings == null || payload.Settings.Count == 0)
{
settings = PluginSettings.CreateDefaultSettings();
}
else
{
settings = payload.Settings.ToObject<PluginSettings>();
}
}

public override void KeyPressed(KeyPayload payload) { }
public override void Dispose()
{
Logger.Instance.LogMessage(TracingLevel.INFO, $"Destructor called");
}

public override void KeyPressed(KeyPayload payload)
{
Logger.Instance.LogMessage(TracingLevel.INFO, "Key Pressed");
}

public override void KeyReleased(KeyPayload payload)
{
var client = new NPClient("sfx100streamdeck", "sfx100streamdeck");
client.Get("DecrementOverallIntensity");
if (PipeServerConnection.Instance.Channel.CheckConnection())
{
PipeServerConnection.Instance.Channel.DecrementOverallIntensity(Convert.ToInt32(settings.Steps));
}
}

public override void OnTick() { }

public override void ReceivedSettings(ReceivedSettingsPayload payload) { }
public override void ReceivedSettings(ReceivedSettingsPayload payload)
{
Tools.AutoPopulateSettings(settings, payload.Settings);
SaveSettings();
}

public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload) { }

#region Private Methods

private Task SaveSettings()
{
return Connection.SetSettingsAsync(JObject.FromObject(settings));
}

#endregion
}
}
7 changes: 4 additions & 3 deletions sfx-100-streamdeck-plugin/PluginActions/DisableAllEffects.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using BarRaider.SdTools;
using NPCommunication;


namespace sfx_100_streamdeck_plugin.PluginActions
Expand All @@ -15,8 +14,10 @@ public override void KeyPressed(KeyPayload payload) { }

public override void KeyReleased(KeyPayload payload)
{
var client = new NPClient("sfx100streamdeck", "sfx100streamdeck");
client.Get("DisableAllEffects");
if (PipeServerConnection.Instance.Channel.CheckConnection())
{
PipeServerConnection.Instance.Channel.EnableAllEffects();
}
}

public override void OnTick() { }
Expand Down
7 changes: 4 additions & 3 deletions sfx-100-streamdeck-plugin/PluginActions/EnableAllEffects.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using BarRaider.SdTools;
using NPCommunication;


namespace sfx_100_streamdeck_plugin.PluginActions
Expand All @@ -15,8 +14,10 @@ public override void KeyPressed(KeyPayload payload) { }

public override void KeyReleased(KeyPayload payload)
{
var client = new NPClient("sfx100streamdeck", "sfx100streamdeck");
client.Get("EnableAllEffects");
if (PipeServerConnection.Instance.Channel.CheckConnection())
{
PipeServerConnection.Instance.Channel.EnableAllEffects();
}
}

public override void OnTick() { }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
using System;
using System.IO;
using System.IO.Pipes;
using System.Threading.Tasks;
using BarRaider.SdTools;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPCommunication;


namespace sfx_100_streamdeck_plugin.PluginActions
Expand All @@ -18,17 +15,12 @@ private class PluginSettings
public static PluginSettings CreateDefaultSettings()
{
PluginSettings instance = new PluginSettings();
instance.OutputFileName = String.Empty;
instance.InputString = String.Empty;
instance.Steps = "1";
return instance;
}

[FilenameProperty]
[JsonProperty(PropertyName = "outputFileName")]
public string OutputFileName { get; set; }

[JsonProperty(PropertyName = "inputString")]
public string InputString { get; set; }
[JsonProperty(PropertyName = "Steps")]
public string Steps { get; set; }
}

#region Private Members
Expand Down Expand Up @@ -60,8 +52,10 @@ public override void KeyPressed(KeyPayload payload)

public override void KeyReleased(KeyPayload payload)
{
var client = new NPClient("sfx100streamdeck", "sfx100streamdeck");
client.Get("IncrementOverallIntensity");
if (PipeServerConnection.Instance.Channel.CheckConnection())
{
PipeServerConnection.Instance.Channel.IncrementOverallIntensity(Convert.ToInt32(settings.Steps));
}
}

public override void OnTick() { }
Expand Down
72 changes: 8 additions & 64 deletions sfx-100-streamdeck-plugin/PluginActions/StartMotion.cs
Original file line number Diff line number Diff line change
@@ -1,86 +1,30 @@
using System;
using System.IO;
using System.IO.Pipes;
using System.Threading.Tasks;
using BarRaider.SdTools;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPCommunication;
using BarRaider.SdTools;


namespace sfx_100_streamdeck_plugin.PluginActions
{
[PluginActionId("sfx-100-streamdeck-plugin.startmotion")]
public class StartMotion : PluginBase
{
private class PluginSettings
{
public static PluginSettings CreateDefaultSettings()
{
PluginSettings instance = new PluginSettings();
instance.OutputFileName = String.Empty;
instance.InputString = String.Empty;
return instance;
}
public StartMotion(SDConnection connection, InitialPayload payload) : base(connection, payload) { }

[FilenameProperty]
[JsonProperty(PropertyName = "outputFileName")]
public string OutputFileName { get; set; }
public override void Dispose() { }

[JsonProperty(PropertyName = "inputString")]
public string InputString { get; set; }
}
public override void KeyPressed(KeyPayload payload) { }

#region Private Members

private PluginSettings settings;

#endregion
public StartMotion(SDConnection connection, InitialPayload payload) : base(connection, payload)
public override void KeyReleased(KeyPayload payload)
{
if (payload.Settings == null || payload.Settings.Count == 0)
if (PipeServerConnection.Instance.Channel.CheckConnection())
{
settings = PluginSettings.CreateDefaultSettings();
PipeServerConnection.Instance.Channel.StartMotion();
}
else
{
settings = payload.Settings.ToObject<PluginSettings>();
}
}

public override void Dispose()
{
Logger.Instance.LogMessage(TracingLevel.INFO, $"Destructor called");
}

public override void KeyPressed(KeyPayload payload)
{
Logger.Instance.LogMessage(TracingLevel.INFO, "Key Pressed");
}

public override void KeyReleased(KeyPayload payload)
{
var client = new NPClient("sfx100streamdeck", "sfx100streamdeck");
client.Get("Start");
}

public override void OnTick() { }

public override void ReceivedSettings(ReceivedSettingsPayload payload)
{
Tools.AutoPopulateSettings(settings, payload.Settings);
SaveSettings();
}
public override void ReceivedSettings(ReceivedSettingsPayload payload) { }

public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload) { }

#region Private Methods

private Task SaveSettings()
{
return Connection.SetSettingsAsync(JObject.FromObject(settings));
}

#endregion
}
}
Loading

0 comments on commit d62cbb6

Please sign in to comment.