This document provides a comprehensive analysis of Crestron classes and interfaces used throughout the PepperDash Essentials framework, organized by namespace and library component.
The PepperDash Essentials framework extensively leverages Crestron SDK components across 100+ files, providing abstractions for:
- Control system hardware (processors, touchpanels, IO devices)
- Communication interfaces (Serial, TCP/IP, SSH, CEC, IR)
- Device management and routing
- User interface components and smart objects
- System monitoring and diagnostics
Primary Usage: Foundational framework components, collections, and basic types.
Key Files:
- Multiple files across all projects use
Crestron.SimplSharpnamespaces - Provides basic C# runtime support for Crestron processors
Primary Usage: Main hardware abstraction layer for Crestron devices.
Key Classes Used:
- File:
/src/PepperDash.Essentials/ControlSystem.cs - Usage: Base class for the main control system implementation
- Implementation:
public class ControlSystem : CrestronControlSystem, ILoadConfig
- Files: 50+ files inherit from or use this class
- Key Implementations:
/src/PepperDash.Core/Device.cs- Core device abstraction/src/PepperDash.Essentials.Core/Devices/EssentialsDevice.cs- Extended device base/src/PepperDash.Essentials.Core/Room/Room.cs- Room device implementation/src/PepperDash.Essentials.Core/Devices/CrestronProcessor.cs- Processor device wrapper
- Files: 30+ files use this class extensively
- Primary Usage: Touchpanel communication and SIMPL bridging
- Key Files:
/src/PepperDash.Essentials.Core/Touchpanels/TriListExtensions.cs- Extension methods for signal handling/src/PepperDash.Essentials.Core/Devices/EssentialsBridgeableDevice.cs- Bridge interface/src/PepperDash.Essentials.Core/Touchpanels/ModalDialog.cs- UI dialog implementation
- Files: Multiple touchpanel and UI files
- Usage: Enhanced touchpanel support with smart object integration
- Key Files:
/src/PepperDash.Essentials.Core/Touchpanels/Interfaces.cs- Interface definitions/src/PepperDash.Essentials.Core/SmartObjects/SubpageReferenceList/SubpageReferenceList.cs
Primary Class: ComPort
Key Files:
/src/PepperDash.Essentials.Core/Comm and IR/ComPortController.cs/src/PepperDash.Essentials.Core/Comm and IR/CommFactory.cs
Usage Pattern:
public class ComPortController : Device, IBasicCommunicationWithStreamDebugging
public static ComPort GetComPort(EssentialsControlPropertiesConfig config)Interface Support: IComPorts - Used for devices that provide multiple COM ports
Primary Class: IROutputPort
Key Files:
/src/PepperDash.Essentials.Core/Devices/IrOutputPortController.cs/src/PepperDash.Essentials.Core/Devices/GenericIRController.cs/src/PepperDash.Essentials.Core/Comm and IR/IRPortHelper.cs
Usage Pattern:
public class IrOutputPortController : Device
IROutputPort IrPort;
public IrOutputPortController(string key, IROutputPort port, string irDriverFilepath)Primary Interface: ICec
Key Files:
/src/PepperDash.Essentials.Core/Comm and IR/CecPortController.cs/src/PepperDash.Essentials.Core/Comm and IR/CommFactory.cs
Usage Pattern:
public class CecPortController : Device, IBasicCommunicationWithStreamDebugging
public static ICec GetCecPort(ControlPropertiesConfig config)Primary Interface: IDigitalInput
Key Files:
/src/PepperDash.Essentials.Core/CrestronIO/GenericDigitalInputDevice.cs/src/PepperDash.Essentials.Core/Microphone Privacy/MicrophonePrivacyController.cs
Usage Pattern:
public List<IDigitalInput> Inputs { get; private set; }
void AddInput(IDigitalInput input)Key Files:
/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportInputDevice.cs/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportAnalogInputDevice.cs/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportOutputDevice.cs
Usage: Provides flexible I/O port configuration for various signal types
Primary Class: MPC3Basic
Key File: /src/PepperDash.Essentials.Core/Touchpanels/Mpc3Touchpanel.cs
Usage Pattern:
public class Mpc3TouchpanelController : Device
readonly MPC3Basic _touchpanel;
_touchpanel = processor.ControllerTouchScreenSlotDevice as MPC3Basic;Evidence: References found in messenger files and mobile control components Usage: Integrated through mobile control messaging system for TSW touchpanel features
Primary Class: CTimer
Key File: /src/PepperDash.Core/PasswordManagement/PasswordManager.cs
Usage Pattern:
Debug.Console(1, string.Format("PasswordManager.UpdatePassword: CTimer Started"));
Debug.Console(1, string.Format("PasswordManager.UpdatePassword: CTimer Reset"));Libraries Used:
Crestron.SimplSharpPro.EthernetCommunicationCrestron.SimplSharp.Net.Utilities.EthernetHelper
Key Files:
/src/PepperDash.Core/Comm/GenericTcpIpClient.cs/src/PepperDash.Core/Comm/GenericTcpIpServer.cs/src/PepperDash.Core/Comm/GenericSecureTcpIpClient.cs/src/PepperDash.Core/Comm/GenericSshClient.cs/src/PepperDash.Core/Comm/GenericUdpServer.cs
Usage Pattern:
public class GenericTcpIpClient : Device, ISocketStatusWithStreamDebugging, IAutoReconnect
public class GenericSecureTcpIpClient : Device, ISocketStatusWithStreamDebugging, IAutoReconnectLibrary: Crestron.SimplSharpPro.DeviceSupport
Usage: Core device support infrastructure used throughout the framework
Library: Crestron.SimplSharpPro.DM
Usage: Digital media routing and switching support
Evidence: Found in routing configuration and DM output card references
Library: Crestron.SimplSharpPro.UI
Usage: User interface elements and touchpanel controls
Key Files:
/src/PepperDash.Essentials.Core/SmartObjects/SmartObjectDynamicList.cs/src/PepperDash.Essentials.Core/SmartObjects/SubpageReferenceList/SubpageReferenceList.cs
Usage: Advanced UI components with dynamic content
Library: Crestron.SimplSharpPro.Diagnostics
Usage: System health monitoring and performance tracking
Key Files:
/src/PepperDash.Essentials.Core/Monitoring/SystemMonitorController.cs
Usage: Provides system status, Ethernet information, and program details
Pattern: Extensive use of BasicTriList for SIMPL integration
Files: Bridge classes throughout the framework implement LinkToApi methods:
public abstract void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge);Implementation: Factory classes create hardware-specific implementations
Example: CommFactory.cs provides communication device creation
Pattern: Extensive use of extension methods for Crestron classes
Example: TriListExtensions.cs adds 30+ extension methods to BasicTriList
Bool Signals: Digital control and feedback UShort Signals: Analog values and numeric data String Signals: Text and configuration data
Implementation: Comprehensive signal handling in TriListExtensions.cs
Pattern: Consistent use of Crestron's Debug logging throughout Examples:
Debug.LogMessage(LogEventLevel.Information, "Device {0} is not a valid device", dc.PortDeviceKey);
Debug.LogMessage(LogEventLevel.Debug, "Error Waking Panel. Maybe testing with Xpanel?");Components:
- CTimer for time-based operations
- Thread-safe collections and patterns
- Event-driven programming models
The PepperDash Essentials framework demonstrates sophisticated integration with the Crestron ecosystem, leveraging:
- Core Infrastructure: CrestronControlSystem, Device base classes
- Communication: COM, IR, CEC, TCP/IP, SSH protocols
- Hardware Abstraction: Touchpanels, I/O devices, processors
- User Interface: Smart objects, signal processing, SIMPL bridging
- System Services: Monitoring, diagnostics, device management
This analysis shows that Essentials serves as a comprehensive middleware layer, abstracting Crestron hardware complexities while providing modern software development patterns and practices.
Generated: [Current Date] Framework Version: PepperDash Essentials (Based on codebase analysis)