public void Run(StreamDeckOptions options) { pluginUUID = options.PluginUUID; deviceInfo = options.DeviceInfo; connection = new StreamDeckConnection(options.Port, options.PluginUUID, options.RegisterEvent); // Register for events connection.OnConnected += Connection_OnConnected; connection.OnDisconnected += Connection_OnDisconnected; connection.OnKeyDown += Connection_OnKeyDown; connection.OnKeyUp += Connection_OnKeyUp; connection.OnWillAppear += Connection_OnWillAppear; connection.OnWillDisappear += Connection_OnWillDisappear; // Settings changed connection.OnDidReceiveSettings += Connection_OnDidReceiveSettings; connection.OnDidReceiveGlobalSettings += Connection_OnDidReceiveGlobalSettings; // Start the connection connection.Run(); Logger.Instance.LogMessage(TracingLevel.INFO, "Connecting to Stream Deck"); // Wait for up to 10 seconds to connect if (connectEvent.WaitOne(TimeSpan.FromSeconds(10))) { Logger.Instance.LogMessage(TracingLevel.INFO, "Connected to Stream Deck"); // We connected, loop every second until we disconnect while (!disconnectEvent.WaitOne(TimeSpan.FromMilliseconds(1000))) { RunTick(); } } Logger.Instance.LogMessage(TracingLevel.INFO, "Plugin Disconnected - Exiting"); }
/// <summary> /// Constructor /// </summary> /// <param name="coordinates"></param> /// <param name="settings"></param> /// <param name="state"></param> /// <param name="isInMultiAction"></param> /// <param name="deviceInfo"></param> public InitialPayload(KeyCoordinates coordinates, JObject settings, uint state, bool isInMultiAction, StreamDeckInfo deviceInfo) { Coordinates = coordinates; Settings = settings; State = state; IsInMultiAction = isInMultiAction; DeviceInfo = deviceInfo; }
/// <summary> /// Public constructor, a StreamDeckConnection object is required along with the current action and context IDs /// These will be used to correctly communicate with the StreamDeck App /// </summary> /// <param name="connection"></param> /// <param name="pluginUUID"></param> /// <param name="actionId"></param> /// <param name="contextId"></param> /// /// <param name="deviceId"></param> public SDConnection(streamdeck_client_csharp.StreamDeckConnection connection, string pluginUUID, StreamDeckInfo deviceInfo, string actionId, string contextId, string deviceId) { StreamDeckConnection = connection; this.pluginUUID = pluginUUID; this.deviceInfo = deviceInfo; this.actionId = actionId; this.ContextId = contextId; this.DeviceId = deviceId; }
/// <summary> /// Public constructor, a StreamDeckConnection object is required along with the current action and context IDs /// These will be used to correctly communicate with the StreamDeck App /// </summary> /// <param name="connection"></param> /// <param name="pluginUUID"></param> /// <param name="deviceInfo"></param> /// <param name="actionId"></param> /// <param name="contextId"></param> /// /// <param name="deviceId"></param> public SDConnection(streamdeck_client_csharp.StreamDeckConnection connection, string pluginUUID, StreamDeckInfo deviceInfo, string actionId, string contextId, string deviceId) { StreamDeckConnection = connection; this.pluginUUID = pluginUUID; this.deviceInfo = deviceInfo; this.actionId = actionId; this.ContextId = contextId; this.DeviceId = deviceId; StreamDeckConnection.OnSendToPlugin += Connection_OnSendToPlugin; StreamDeckConnection.OnTitleParametersDidChange += Connection_OnTitleParametersDidChange; StreamDeckConnection.OnApplicationDidTerminate += Connection_OnApplicationDidTerminate; StreamDeckConnection.OnApplicationDidLaunch += Connection_OnApplicationDidLaunch; StreamDeckConnection.OnDeviceDidDisconnect += Connection_OnDeviceDidDisconnect; StreamDeckConnection.OnDeviceDidConnect += Connection_OnDeviceDidConnect; StreamDeckConnection.OnPropertyInspectorDidAppear += Connection_OnPropertyInspectorDidAppear; StreamDeckConnection.OnPropertyInspectorDidDisappear += Connection_OnPropertyInspectorDidDisappear; }