diff --git a/README.md b/README.md index 458eca2..3e95e58 100644 --- a/README.md +++ b/README.md @@ -57,4 +57,4 @@ In the solution folder is a file named "PDT.EssentialsPluginTemplate.nuspec" There is no longer a requirement to adjust workflow files for nuget generation for private and public repositories. This is now handled automatically in the workflow. -__If you do not make these changes to the nuspec file, the project will not generate a nuget package__ \ No newline at end of file +__If you do not make these changes to the nuspec file, the project will not generate a nuget package__ \ No newline at end of file diff --git a/src/EssentialsPluginTemplateCrestronDevice.cs b/src/EssentialsPluginTemplateCrestronDevice.cs deleted file mode 100644 index 8836cc5..0000000 --- a/src/EssentialsPluginTemplateCrestronDevice.cs +++ /dev/null @@ -1,99 +0,0 @@ -// For Basic SIMPL# Classes -// For Basic SIMPL#Pro classes - -using Crestron.SimplSharpPro.DeviceSupport; -using Crestron.SimplSharpPro; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.Bridges; - -namespace EssentialsPluginTemplate -{ - /// - /// Plugin device - /// - /// - /// Rename the class to match the device plugin being developed. - /// - /// - /// "EssentialsPluginDeviceTemplate" renamed to "SamsungMdcDevice" - /// - public class EssentialsPluginTemplateCrestronDevice : CrestronGenericBridgeableBaseDevice - { - /// - /// It is often desirable to store the config - /// - private EssentialsPluginTemplateConfigObject _config; - - - #region Constructor for Devices without IBasicCommunication. Remove if not needed - /// - /// Plugin device constructor for Crestron devices - /// - /// - /// - /// - /// - public EssentialsPluginTemplateCrestronDevice(string key, string name, EssentialsPluginTemplateConfigObject config, GenericBase hardware) - : base(key, name, hardware) - { - Debug.Console(0, this, "Constructing new {0} instance", name); - - // The base class takes care of registering the hardware device for you - - // TODO [ ] Update the constructor as needed for the plugin device being developed - - _config = config; - } - - #endregion - - - #region Overrides of EssentialsBridgeableDevice - - /// - /// Links the plugin device to the EISC bridge - /// - /// - /// - /// - /// - public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge) - { - var joinMap = new EssentialsPluginTemplateBridgeJoinMap(joinStart); - - // This adds the join map to the collection on the bridge - if (bridge != null) - { - bridge.AddJoinMap(Key, joinMap); - } - - var customJoins = JoinMapHelper.TryGetJoinMapAdvancedForDevice(joinMapKey); - - if (customJoins != null) - { - joinMap.SetCustomJoinData(customJoins); - } - - Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X")); - Debug.Console(0, "Linking to Bridge Type {0}", GetType().Name); - - // TODO [ ] Implement bridge links as needed - - // links to bridge - trilist.SetString(joinMap.DeviceName.JoinNumber, Name); - - trilist.OnlineStatusChange += (o, a) => - { - if (!a.DeviceOnLine) return; - - trilist.SetString(joinMap.DeviceName.JoinNumber, Name); - }; - } - - - #endregion - - } -} - diff --git a/src/EssentialsPluginTemplateDevice.cs b/src/EssentialsPluginTemplateDevice.cs index b6d2031..8ccafee 100644 --- a/src/EssentialsPluginTemplateDevice.cs +++ b/src/EssentialsPluginTemplateDevice.cs @@ -1,7 +1,4 @@ -// For Basic SIMPL# Classes -// For Basic SIMPL#Pro classes - -using Crestron.SimplSharpPro.DeviceSupport; +using Crestron.SimplSharpPro.DeviceSupport; using PepperDash.Core; using PepperDash.Essentials.Core; using PepperDash.Essentials.Core.Bridges; @@ -21,9 +18,6 @@ namespace EssentialsPluginTemplate /// public class EssentialsPluginTemplateDevice : EssentialsBridgeableDevice { - /// - /// It is often desirable to store the config - /// private EssentialsPluginTemplateConfigObject _config; /// @@ -33,21 +27,14 @@ namespace EssentialsPluginTemplate #region IBasicCommunication Properties and Constructor. Remove if not needed. - // TODO [ ] Add, modify, remove properties and fields as needed for the plugin being developed private readonly IBasicCommunication _comms; private readonly GenericCommunicationMonitor _commsMonitor; - - // _comms gather for ASCII based API's - // TODO [ ] If not using an ASCII based API, delete the properties below private readonly CommunicationGather _commsGather; /// /// Set this value to that of the delimiter used by the API (if applicable) /// private const string CommsDelimiter = "\r"; - - // _comms byte buffer for HEX/byte based API's - // TODO [ ] If not using an HEX/byte based API, delete the properties below private byte[] _commsByteBuffer = { }; @@ -103,11 +90,9 @@ namespace EssentialsPluginTemplate { Debug.Console(0, this, "Constructing new {0} instance", name); - // TODO [ ] Update the constructor as needed for the plugin device being developed - _config = config; - ReceiveQueue = new GenericQueue(key + "-rxqueue"); // If you need to set the thread priority, use one of the available overloaded constructors. + ReceiveQueue = new GenericQueue(key + "-rxqueue"); ConnectFeedback = new BoolFeedback(() => Connect); OnlineFeedback = new BoolFeedback(() => _commsMonitor.IsOnline); @@ -119,26 +104,15 @@ namespace EssentialsPluginTemplate var socket = _comms as ISocketStatus; if (socket != null) { - // device comms is IP **ELSE** device comms is RS232 socket.ConnectionChange += socket_ConnectionChange; Connect = true; } #region Communication data event handlers. Comment out any that don't apply to the API type - // Only one of the below handlers should be necessary. - - // _comms gather for any API that has a defined delimiter - // TODO [ ] If not using an ASCII based API, remove the line below _commsGather = new CommunicationGather(_comms, CommsDelimiter); _commsGather.LineReceived += Handle_LineRecieved; - - // _comms byte buffer for HEX/byte based API's with no delimiter - // TODO [ ] If not using an HEX/byte based API, remove the line below _comms.BytesReceived += Handle_BytesReceived; - - // _comms byte buffer for HEX/byte based API's with no delimiter - // TODO [ ] If not using an HEX/byte based API, remove the line below _comms.TextReceived += Handle_TextReceived; #endregion @@ -154,26 +128,18 @@ namespace EssentialsPluginTemplate StatusFeedback.FireUpdate(); } - // TODO [ ] If not using an API with a delimeter, delete the method below private void Handle_LineRecieved(object sender, GenericCommMethodReceiveTextArgs args) { - // TODO [ ] Implement method - - // 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 private void Handle_BytesReceived(object sender, GenericCommMethodReceiveBytesArgs args) { - // TODO [ ] Implement method throw new System.NotImplementedException(); } - // TODO [ ] If not using an ASCII based API with no delimeter, delete the method below void Handle_TextReceived(object sender, GenericCommMethodReceiveTextArgs e) { - // TODO [ ] Implement method throw new System.NotImplementedException(); } @@ -183,26 +149,23 @@ namespace EssentialsPluginTemplate /// void ProcessFeedbackMessage(string message) { - + throw new System.NotImplementedException(); } - - // TODO [ ] If not using an ACII based API, delete the properties below - /// - /// Sends text to the device plugin comms - /// - /// - /// Can be used to test commands with the device plugin using the DEVPROPS and DEVJSON console commands - /// - /// Command to be sent - public void SendText(string text) + /// + /// Sends text to the device plugin comms + /// + /// + /// Can be used to test commands with the device plugin using the DEVPROPS and DEVJSON console commands + /// + /// Command to be sent + public void SendText(string text) { if (string.IsNullOrEmpty(text)) return; - _comms.SendText(string.Format("{0}{1}", text, CommsDelimiter)); + _comms.SendText($"{text}{CommsDelimiter}"); } - // TODO [ ] If not using an HEX/byte based API, delete the properties below /// /// Sends bytes to the device plugin comms /// @@ -225,8 +188,6 @@ namespace EssentialsPluginTemplate /// public void Poll() { - // TODO [ ] Update Poll method as needed for the plugin being developed - // Example: SendText("getstatus"); throw new System.NotImplementedException(); } @@ -246,7 +207,6 @@ namespace EssentialsPluginTemplate { var joinMap = new EssentialsPluginTemplateBridgeJoinMap(joinStart); - // This adds the join map to the collection on the bridge if (bridge != null) { bridge.AddJoinMap(Key, joinMap); @@ -262,9 +222,7 @@ namespace EssentialsPluginTemplate Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X")); Debug.Console(0, "Linking to Bridge Type {0}", GetType().Name); - // TODO [ ] Implement bridge links as needed - // links to bridge trilist.SetString(joinMap.DeviceName.JoinNumber, Name); trilist.SetBoolSigAction(joinMap.Connect.JoinNumber, sig => Connect = sig); @@ -286,7 +244,6 @@ namespace EssentialsPluginTemplate private void UpdateFeedbacks() { - // TODO [ ] Update as needed for the plugin being developed ConnectFeedback.FireUpdate(); OnlineFeedback.FireUpdate(); StatusFeedback.FireUpdate(); diff --git a/src/EssentialsPluginTemplateLogicDevice.cs b/src/EssentialsPluginTemplateLogicDevice.cs deleted file mode 100644 index 0685a43..0000000 --- a/src/EssentialsPluginTemplateLogicDevice.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Crestron.SimplSharpPro.DeviceSupport; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.Bridges; - -namespace EssentialsPluginTemplate -{ - /// - /// Plugin device template for logic devices that don't communicate outside the program - /// - /// - /// Rename the class to match the device plugin being developed. - /// - /// - /// "EssentialsPluginTemplateLogicDevice" renamed to "SamsungMdcDevice" - /// - public class EssentialsPluginTemplateLogicDevice : EssentialsBridgeableDevice - { - /// - /// It is often desirable to store the config - /// - private EssentialsPluginTemplateConfigObject _config; - - /// - /// Plugin device constructor - /// - /// - /// - /// - public EssentialsPluginTemplateLogicDevice(string key, string name, EssentialsPluginTemplateConfigObject config) - : base(key, name) - { - Debug.Console(0, this, "Constructing new {0} instance", name); - - // TODO [ ] Update the constructor as needed for the plugin device being developed - - _config = config; - } - - #region Overrides of EssentialsBridgeableDevice - - /// - /// Links the plugin device to the EISC bridge - /// - /// - /// - /// - /// - public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge) - { - var joinMap = new EssentialsPluginTemplateBridgeJoinMap(joinStart); - - // This adds the join map to the collection on the bridge - if (bridge != null) - { - bridge.AddJoinMap(Key, joinMap); - } - - var customJoins = JoinMapHelper.TryGetJoinMapAdvancedForDevice(joinMapKey); - - if (customJoins != null) - { - joinMap.SetCustomJoinData(customJoins); - } - - Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X")); - Debug.Console(0, "Linking to Bridge Type {0}", GetType().Name); - - // TODO [ ] Implement bridge links as needed - - // links to bridge - trilist.SetString(joinMap.DeviceName.JoinNumber, Name); - - trilist.OnlineStatusChange += (o, a) => - { - if (!a.DeviceOnLine) return; - - trilist.SetString(joinMap.DeviceName.JoinNumber, Name); - }; - } - - #endregion - - } -} -