mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
Closes #8. Updates Sidebar and Plugins with links to SIMPL Bridging. Adds detail to Plugins.
@@ -2,7 +2,10 @@
|
||||
Plugins are SIMPL# Pro libraries that reference the Essentials Framework and can be loaded into an Essentials Application at runtime to extend functionality beyond what the Essentials Framework provides on its own.
|
||||
|
||||
## Why Use Plugins?
|
||||
Plugins are a way to extend or add new functionality to the Essentials Application without having to modify the actual Framework. In most cases, a plugin can be written to support a new device or behavior. Using plugins also limits the scope of understanding needed to work within the Essentials Framework.
|
||||
Plugins are a way to extend or add new functionality to the Essentials Application without having to modify the actual Framework. In most cases, a plugin can be written to support a new device or behavior. Using plugins also limits the scope of understanding needed to work within the Essentials Framework.
|
||||
|
||||
## Should I use a Plugin?
|
||||
Essentials is meant to be a lightweight framework and an extensible basis for development. While some devices are included in the framework, mostly for the purposes of providing examples and developing and prototyping new device types, the bulk of new development is intended to take place in Plugins. Once a plugin adds new functionality that may be of benefit if shared across multiple plugins, it may make sense to port that common logic (base classes and/or interfaces) back into the framework to make it available to others. The thrust of future Essentials development is targeted towards building a library of plugins.
|
||||
|
||||
## How do Plugins Work?
|
||||
One or more plugins can be loaded to the /user/ProgramX/plugins as .dlls or .cplz packages. When the Essentials Application starts, it looks for any .cplz files, unzips them and then iterates any .dll assemblies in that folder and loads them. Once the plugin assemblies are loaded the Essentials Application will then attempt to load a configuration file and construct items as defined in the file. Those items can be defined in either the Essentials Framework or in any of the loaded plugin assemblies.
|
||||
@@ -51,6 +54,8 @@ Optionally, if your plugin device needs to be able to bridge to a SIMPL program
|
||||
|
||||
Often though, you may find that a bridge class already exists in the Essentials Framework that you can leverage. For example, if you were writing a plugin to support a new display model that isn't already in the Essentials Framework, you would define a class in your plugin that inherits from PepperDash.Essentials.Core.DisplayBase. If you're only implementing the standard display control functions such as power/input/volume control, then the existing bridge class `DisplayControllerBridge` can be used. If you needed to add additional functions to the bridge, then you would need to write your own bridge in the plugin.
|
||||
|
||||
For additional info see the [article](SIMPL-Bridging).
|
||||
|
||||
## Template Essentials Plugin Repository
|
||||
Fork this repository when starting a new plugin. The template repository uses the essentials-builds repository as a submodule. This allows the plugin to reference a specific build version of Essentials. You must make sure that you checkout the correct build of the Essentials-Builds repo that contains any dependencies that your plugin may rely on.
|
||||
|
||||
|
||||
14
_Sidebar.md
14
_Sidebar.md
@@ -3,11 +3,13 @@
|
||||
|
||||
**Get started**
|
||||
* Get Essentials
|
||||
* How to get started
|
||||
|
||||
**Technical documentation**
|
||||
* How to get started
|
||||
|
||||
* [Standalone use](Standalone-Use)
|
||||
**Usage**
|
||||
* [Standalone Use](Standalone-Use)
|
||||
* [SIMPL Windows Bridging](SIMPL-Bridging)
|
||||
|
||||
**Technical Documentation**
|
||||
* [Essentials Architecture](Essentials-Architecture)
|
||||
* Subtopic
|
||||
* Another
|
||||
@@ -17,5 +19,5 @@
|
||||
* [Debugging](Debugging)
|
||||
* [Feedback Classes](Feedback-Classes)
|
||||
* [Connection Based Routing](Connection-Based-Routing)
|
||||
* [Glossary of Terms](Glossary-of-Terms)
|
||||
* [Supported Devices](Supported-Devices)
|
||||
* [Supported Devices](Supported-Devices)
|
||||
* [Glossary of Terms](Glossary-of-Terms)
|
||||
Reference in New Issue
Block a user