diff --git a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs index 837eb2c..20c99da 100644 --- a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs +++ b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs @@ -5,6 +5,8 @@ using PepperDash.Core; using PepperDash.Essentials.Core; using PepperDash.Essentials.Core.Bridges; +using PepperDash_Essentials_Core.Queues; + namespace EssentialsPluginTemplate { @@ -24,6 +26,11 @@ public class EssentialsPluginTemplateDevice : EssentialsBridgeableDevice /// private EssentialsPluginConfigObjectTemplate _config; + /// + /// Provides a queue and dedicated worker thread for processing feedback messages from a device. + /// + private GenericQueue ReceiveQueue; + #region IBasicCommunication Properties and Constructor. Remove if not needed. // TODO [ ] Add, modify, remove properties and fields as needed for the plugin being developed @@ -100,6 +107,8 @@ public EssentialsPluginTemplateDevice(string key, string name, EssentialsPluginC _config = config; + ReceiveQueue = new GenericQueue(key + "-rxqueue"); // If you need to set the thread priority, use one of the available overloaded constructors. + ConnectFeedback = new BoolFeedback(() => Connect); OnlineFeedback = new BoolFeedback(() => _commsMonitor.IsOnline); StatusFeedback = new IntFeedback(() => (int)_commsMonitor.Status); @@ -149,7 +158,9 @@ private void socket_ConnectionChange(object sender, GenericSocketStatusChageEven private void Handle_LineRecieved(object sender, GenericCommMethodReceiveTextArgs args) { // TODO [ ] Implement method - throw new System.NotImplementedException(); + + // Enqueues the message to be processed in a dedicated thread, but the specified method + ReceiveQueue.Enqueue(new ProcessStringMessage(args.Text, ProcessFeedbackMessage)); } // TODO [ ] If not using an HEX/byte based API with no delimeter, delete the method below @@ -166,6 +177,15 @@ void Handle_TextReceived(object sender, GenericCommMethodReceiveTextArgs e) throw new System.NotImplementedException(); } + /// + /// This method should perform any necessary parsing of feedback messages from the device + /// + /// + void ProcessFeedbackMessage(string message) + { + + } + // TODO [ ] If not using an ACII based API, delete the properties below /// diff --git a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs index 8cfa212..1798d19 100644 --- a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs +++ b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs @@ -188,7 +188,7 @@ public EssentialsPluginFactoryCrestronDeviceTemplate() { // Set the minimum Essentials Framework Version // TODO [ ] Update the Essentials minimum framework version which this plugin has been tested against - MinimumEssentialsFrameworkVersion = "1.6.4"; + MinimumEssentialsFrameworkVersion = "1.7.5"; // In the constructor we initialize the list with the typenames that will build an instance of this device // TODO [ ] Update the TypeNames for the plugin being developed diff --git a/packages.config b/packages.config index fa05b32..c66e4a9 100644 --- a/packages.config +++ b/packages.config @@ -1,3 +1,3 @@ - + \ No newline at end of file