mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
283 lines
9.4 KiB
Markdown
283 lines
9.4 KiB
Markdown
# Crestron Library Usage Analysis - PepperDash Essentials
|
|
|
|
This document provides a comprehensive analysis of Crestron classes and interfaces used throughout the PepperDash Essentials framework, organized by namespace and library component.
|
|
|
|
## Executive Summary
|
|
|
|
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
|
|
|
|
## 1. Core Crestron Libraries
|
|
|
|
### 1.1 Crestron.SimplSharp
|
|
|
|
**Primary Usage**: Foundational framework components, collections, and basic types.
|
|
|
|
**Key Files**:
|
|
- Multiple files across all projects use `Crestron.SimplSharp` namespaces
|
|
- Provides basic C# runtime support for Crestron processors
|
|
|
|
### 1.2 Crestron.SimplSharpPro
|
|
|
|
**Primary Usage**: Main hardware abstraction layer for Crestron devices.
|
|
|
|
**Key Classes Used**:
|
|
|
|
#### CrestronControlSystem
|
|
- **File**: `/src/PepperDash.Essentials/ControlSystem.cs`
|
|
- **Usage**: Base class for the main control system implementation
|
|
- **Implementation**: `public class ControlSystem : CrestronControlSystem, ILoadConfig`
|
|
|
|
#### Device (Base Class)
|
|
- **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
|
|
|
|
#### BasicTriList
|
|
- **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
|
|
|
|
#### BasicTriListWithSmartObject
|
|
- **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`
|
|
|
|
## 2. Communication Hardware
|
|
|
|
### 2.1 Serial Communication (ComPort)
|
|
|
|
**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**:
|
|
```csharp
|
|
public class ComPortController : Device, IBasicCommunicationWithStreamDebugging
|
|
public static ComPort GetComPort(EssentialsControlPropertiesConfig config)
|
|
```
|
|
|
|
**Interface Support**: `IComPorts` - Used for devices that provide multiple COM ports
|
|
|
|
### 2.2 IR Communication (IROutputPort)
|
|
|
|
**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**:
|
|
```csharp
|
|
public class IrOutputPortController : Device
|
|
IROutputPort IrPort;
|
|
public IrOutputPortController(string key, IROutputPort port, string irDriverFilepath)
|
|
```
|
|
|
|
### 2.3 CEC Communication (ICec)
|
|
|
|
**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**:
|
|
```csharp
|
|
public class CecPortController : Device, IBasicCommunicationWithStreamDebugging
|
|
public static ICec GetCecPort(ControlPropertiesConfig config)
|
|
```
|
|
|
|
## 3. Input/Output Hardware
|
|
|
|
### 3.1 Digital Input
|
|
|
|
**Primary Interface**: `IDigitalInput`
|
|
**Key Files**:
|
|
- `/src/PepperDash.Essentials.Core/CrestronIO/GenericDigitalInputDevice.cs`
|
|
- `/src/PepperDash.Essentials.Core/Microphone Privacy/MicrophonePrivacyController.cs`
|
|
|
|
**Usage Pattern**:
|
|
```csharp
|
|
public List<IDigitalInput> Inputs { get; private set; }
|
|
void AddInput(IDigitalInput input)
|
|
```
|
|
|
|
### 3.2 Versiport Support
|
|
|
|
**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
|
|
|
|
## 4. Touchpanel Hardware
|
|
|
|
### 4.1 MPC3 Touchpanel
|
|
|
|
**Primary Class**: `MPC3Basic`
|
|
**Key File**: `/src/PepperDash.Essentials.Core/Touchpanels/Mpc3Touchpanel.cs`
|
|
|
|
**Usage Pattern**:
|
|
```csharp
|
|
public class Mpc3TouchpanelController : Device
|
|
readonly MPC3Basic _touchpanel;
|
|
_touchpanel = processor.ControllerTouchScreenSlotDevice as MPC3Basic;
|
|
```
|
|
|
|
### 4.2 TSW Series Support
|
|
|
|
**Evidence**: References found in messenger files and mobile control components
|
|
**Usage**: Integrated through mobile control messaging system for TSW touchpanel features
|
|
|
|
## 5. Timer and Threading
|
|
|
|
### 5.1 CTimer
|
|
|
|
**Primary Class**: `CTimer`
|
|
**Key File**: `/src/PepperDash.Core/PasswordManagement/PasswordManager.cs`
|
|
|
|
**Usage Pattern**:
|
|
```csharp
|
|
Debug.Console(1, string.Format("PasswordManager.UpdatePassword: CTimer Started"));
|
|
Debug.Console(1, string.Format("PasswordManager.UpdatePassword: CTimer Reset"));
|
|
```
|
|
|
|
## 6. Networking and Communication
|
|
|
|
### 6.1 Ethernet Communication
|
|
|
|
**Libraries Used**:
|
|
- `Crestron.SimplSharpPro.EthernetCommunication`
|
|
- `Crestron.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**:
|
|
```csharp
|
|
public class GenericTcpIpClient : Device, ISocketStatusWithStreamDebugging, IAutoReconnect
|
|
public class GenericSecureTcpIpClient : Device, ISocketStatusWithStreamDebugging, IAutoReconnect
|
|
```
|
|
|
|
## 7. Device Management Libraries
|
|
|
|
### 7.1 DeviceSupport
|
|
|
|
**Library**: `Crestron.SimplSharpPro.DeviceSupport`
|
|
**Usage**: Core device support infrastructure used throughout the framework
|
|
|
|
### 7.2 DM (DigitalMedia)
|
|
|
|
**Library**: `Crestron.SimplSharpPro.DM`
|
|
**Usage**: Digital media routing and switching support
|
|
**Evidence**: Found in routing configuration and DM output card references
|
|
|
|
## 8. User Interface Libraries
|
|
|
|
### 8.1 UI Components
|
|
|
|
**Library**: `Crestron.SimplSharpPro.UI`
|
|
**Usage**: User interface elements and touchpanel controls
|
|
|
|
### 8.2 Smart Objects
|
|
|
|
**Key Files**:
|
|
- `/src/PepperDash.Essentials.Core/SmartObjects/SmartObjectDynamicList.cs`
|
|
- `/src/PepperDash.Essentials.Core/SmartObjects/SubpageReferenceList/SubpageReferenceList.cs`
|
|
|
|
**Usage**: Advanced UI components with dynamic content
|
|
|
|
## 9. System Monitoring and Diagnostics
|
|
|
|
### 9.1 Diagnostics
|
|
|
|
**Library**: `Crestron.SimplSharpPro.Diagnostics`
|
|
**Usage**: System health monitoring and performance tracking
|
|
|
|
### 9.2 System Information
|
|
|
|
**Key Files**:
|
|
- `/src/PepperDash.Essentials.Core/Monitoring/SystemMonitorController.cs`
|
|
|
|
**Usage**: Provides system status, Ethernet information, and program details
|
|
|
|
## 10. Integration Patterns
|
|
|
|
### 10.1 SIMPL Bridging
|
|
|
|
**Pattern**: Extensive use of `BasicTriList` for SIMPL integration
|
|
**Files**: Bridge classes throughout the framework implement `LinkToApi` methods:
|
|
```csharp
|
|
public abstract void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge);
|
|
```
|
|
|
|
### 10.2 Device Factory Pattern
|
|
|
|
**Implementation**: Factory classes create hardware-specific implementations
|
|
**Example**: `CommFactory.cs` provides communication device creation
|
|
|
|
### 10.3 Extension Methods
|
|
|
|
**Pattern**: Extensive use of extension methods for Crestron classes
|
|
**Example**: `TriListExtensions.cs` adds 30+ extension methods to `BasicTriList`
|
|
|
|
## 11. Signal Processing
|
|
|
|
### 11.1 Signal Types
|
|
|
|
**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`
|
|
|
|
## 12. Error Handling and Logging
|
|
|
|
**Pattern**: Consistent use of Crestron's Debug logging throughout
|
|
**Examples**:
|
|
```csharp
|
|
Debug.LogMessage(LogEventLevel.Information, "Device {0} is not a valid device", dc.PortDeviceKey);
|
|
Debug.LogMessage(LogEventLevel.Debug, "Error Waking Panel. Maybe testing with Xpanel?");
|
|
```
|
|
|
|
## 13. Threading and Synchronization
|
|
|
|
**Components**:
|
|
- CTimer for time-based operations
|
|
- Thread-safe collections and patterns
|
|
- Event-driven programming models
|
|
|
|
## Conclusion
|
|
|
|
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)*
|