PepperDash_Core
An embedded JsonToSimpl master object.
SIMPL+ can only execute the default constructor. If you have variables that require initialization, please
use an Initialize method
After save operation on JSON master happens, send it to server
The core event and status-bearing class that most if not all device and connectors can derive from.
Base constructor for all Devices.
Gets this device ready to be used in the system. Runs any added pre-activation items, and
all post-activation at end. Classes needing additional logic to
run should override CustomActivate()
Called in between Pre and PostActivationActions when Activate() is called.
Override to provide addtitional setup when calling activation. Overriding classes
do not need to call base.CustomActivate()
true if device activated successfully.
Call to deactivate device - unlink events, etc. Overriding classes do not
need to call base.Deactivate()
Helper method to check object for bool value false and fire an Action method
Should be of type bool, others will be ignored
Action to be run when o is false
A bandaid client that monitors whether the server is reachable
Timer to operate the bandaid monitor client in a loop.
constructor S+ Does not accept a key. Use initialze with key to set the debug key on this device. If using with + make sure to set all properties manually.
constructor with debug key set at instantiation. Make sure to set all properties before listening.
Contstructor that sets all properties by calling the initialize method with a config object.
Disconnects all clients and stops the server
Initialize Key for device using client name from SIMPL+. Called on Listen from SIMPL+
Start listening on the specified port
Stop Listeneing
Disconnects Client
Disconnect All Clients
Broadcast text from server to all connected clients
Not sure this is useful in library, maybe Pro??
Secure Server Socket Status Changed Callback
Secure TCP Client Connected to Secure Server Callback
Secure Received Data Async Callback
Private Event Handler method to handle the closing of connections when the program stops
Starts the monitor client cycle. Timed wait, then call RunMonitorClient
On monitor connect, restart the operation
If the client hangs, add to counter and maybe fire the choke event
Event for Receiving text
Event for client connection socket status change
Event for Server State Change
For a server with a pre shared key, this will fire after the communication is established and the key exchange is complete. If no shared key, this will fire
after connection is successful. Use this event to know when the client is ready for communication to avoid stepping on shared key.
A band aid event to notify user that the server has choked.
3 by default
Text representation of the Socket Status enum values for the server
Bool showing if socket is connected
S+ helper for IsConnected
Bool showing if socket is connected
S+ helper for IsConnected
Number of clients currently connected.
Port Server should listen on
S+ helper for Port
Bool to show whether the server requires a preshared key. Must be set the same in the client, and if true shared keys must be identical on server/client
S+ helper for requires shared key bool
SharedKey is sent for varification to the server. Shared key can be any text (255 char limit in SIMPL+ Module), but must match the Shared Key on the Server module.
If SharedKey changes while server is listening or clients are connected, disconnect and stop listening will be called
Heartbeat Required bool sets whether server disconnects client if heartbeat is not received
S+ Helper for Heartbeat Required
Milliseconds before server expects another heartbeat. Set by property HeartbeatRequiredIntervalInSeconds which is driven from S+
Simpl+ Heartbeat Analog value in seconds
String to Match for heartbeat. If null or empty any string will reset heartbeat timer
Defaults to 2000
Private flag to note that the server has stopped intentionally
Privates *
SIMPL+ default constructor.
Sets up class - overriding methods should always call this.
Adds a child "module" to this master
Called from the child to add changed or new values for saving
Events *
Mirrors the Unique ID for now.
Merely for use in debug messages
This will be prepended to all paths to allow path swapping or for more organized
sub-paths
This is added to the end of all paths
Enables debugging output to the console. Certain error messages will be logged to the
system's error log regardless of this setting
Ushort helper for Debug property
Privates *
SIMPL+ default constructor.
Read, evaluate and udpate status
Sets the filepath as well as registers this with the Global.Masters list
Call this before doing anything else
Set the JPath to evaluate for a given bool out index.
Set the JPath for a ushort out index.
Set the JPath for a string output index.
Evalutates all outputs with defined paths. called by S+ when paths are ready to process
and by Master when file is read.
Processes a bool property, converting to bool, firing off a BoolChange event
Processes the given path.
JPath formatted path to the desired property
The string value of the property, or a default value if it
doesn't exist
This will return false in the case that EvaulateAllOnJsonChange
is false and the path does not evaluate to a property in the incoming JSON.
Called from Master to read inputs and update their values in master JObject
Callback should hit one of the following four methods
Called during Process(...) to get the path to a given property. By default,
returns PathPrefix+path+PathSuffix. Override to change the way path is built.
Use a callback to reduce task switch/threading
This will be prepended to all paths to allow path swapping or for more organized
sub-paths
This is added to the end of all paths
Defaults to Environment.NewLine;
This is something of a band-aid callback. If the client times out during the connection process, because the server
is stuck, this will fire. It is intended to be used by the Server class monitor client, to help
keep a watch on the server and reset it if necessary.
Semaphore on connect method
Flag Set only when the disconnect method is called.
private Timer for auto reconnect
Used to force disconnection on a dead connect attempt
Internal secure client
Just to help S+ set the key
Handles closing this up when the program shuts down
Connect Method. Will return if already connected. Will write errors if missing address, port, or unique key/name.
Internal call to close up client. ALWAYS use this when disconnecting.
ff
Called from Connect failure or Socket Status change if
auto reconnect and socket disconnected (Not disconnected by user)
Receive callback
General send method
SocketStatusChange Callback
Helper for ConnectionChange event
Helper to fire ClientReadyForCommunications event
For a client with a pre shared key, this will fire after the communication is established and the key exchange is complete. If you require
a key and subscribe to the socket change event and try to send data on a connection the data sent will interfere with the key exchange and disconnect.
Address of server
Port on server
S+ helper
Bool to show whether the server requires a preshared key. This is used in the DynamicTCPServer class
S+ helper for requires shared key bool
SharedKey is sent for varification to the server. Shared key can be any text (255 char limit in SIMPL+ Module), but must match the Shared Key on the Server module
flag to show the client is waiting for the server to send the shared key
Defaults to 2000
Bool showing if socket is connected
S+ helper for IsConnected
Bool showing if socket is ready for communication after shared key exchange
S+ helper for IsReadyForCommunication
Client socket status Read only
Contains the familiar Simpl analog status values. This drives the ConnectionChange event
and IsConnected would be true when this == 2.
Status text shows the message associated with socket status
bool to track if auto reconnect should be set on the socket
S+ helper for AutoReconnect
Milliseconds to wait before attempting to reconnect. Defaults to 5000
Band aid delegate for choked server
An incoming communication stream
Represents a device that uses basic connection
For IBasicCommunication classes that have SocketStatus. GenericSshClient,
GenericTcpIpClient
This delegate defines handler for IBasicCommunication status changes
Device firing the status change
Stupid S+ Constructor
Stupid S+ Constructor
Gets a level or creates it if not existing
Adds a file master. If the master's key or filename is equivalent to any existing
master, this will fail
New master to add
Gets a master by its key. Case-insensitive
Privates *
SIMPL+ default constructor.
Loads in JSON and triggers evaluation on all children
Loads JSON into JsonObject, but does not trigger evaluation by children
This is something of a band-aid callback. If the client times out during the connection process, because the server
is stuck, this will fire. It is intended to be used by the Server class monitor client, to help
keep a watch on the server and reset it if necessary.
Semaphore on connect method
Flag Set only when the disconnect method is called.
private Timer for auto reconnect
Used to force disconnection on a dead connect attempt
Internal secure client
Just to help S+ set the key
Handles closing this up when the program shuts down
Connect Method. Will return if already connected. Will write errors if missing address, port, or unique key/name.
Internal call to close up client. ALWAYS use this when disconnecting.
ff
Called from Connect failure or Socket Status change if
auto reconnect and socket disconnected (Not disconnected by user)
Receive callback
General send method
SocketStatusChange Callback
Helper for ConnectionChange event
Helper to fire ClientReadyForCommunications event
For a client with a pre shared key, this will fire after the communication is established and the key exchange is complete. If you require
a key and subscribe to the socket change event and try to send data on a connection the data sent will interfere with the key exchange and disconnect.
Address of server
Port on server
S+ helper
Bool to show whether the server requires a preshared key. This is used in the DynamicTCPServer class
S+ helper for requires shared key bool
SharedKey is sent for varification to the server. Shared key can be any text (255 char limit in SIMPL+ Module), but must match the Shared Key on the Server module
flag to show the client is waiting for the server to send the shared key
Defaults to 2000
Bool showing if socket is connected
S+ helper for IsConnected
Bool showing if socket is ready for communication after shared key exchange
S+ helper for IsReadyForCommunication
Client socket status Read only
Contains the familiar Simpl analog status values. This drives the ConnectionChange event
and IsConnected would be true when this == 2.
Status text shows the message associated with socket status
bool to track if auto reconnect should be set on the socket
S+ helper for AutoReconnect
Milliseconds to wait before attempting to reconnect. Defaults to 5000
Band aid delegate for choked server
For Simpl+
True when user is found
For stupid S+
For newer >=2.4.1 array lookups.
Provides the path append for GetFullPath
Stores the state of the request
Waithandle for main thread.
For Simpl+
True when the preset is found
S+ helper for stupid S+
Set only when the disconnect method is called.
Just to help S+ set the key
Handles closing this up when the program shuts down
General send method
This is useful from console and...?
Address of server
Port on server
Another damn S+ helper because S+ seems to treat large port nums as signed ints
which screws up things
Defaults to 2000
S+ helper for IsConnected
Contains the familiar Simpl analog status values. This drives the ConnectionChange event
and IsConnected with be true when this == 2.
S+ helper for AutoReconnect
Milliseconds to wait before attempting to reconnect. Defaults to 5000
Defaults to 32768
Defaults to true
Defaults to 5000ms
Creates or gets a debug context
Do not use. For S+ access.
Used to save memory when shutting down
Callback for console command
Sets the debug level
Valid values 0 (no debug), 1 (critical), 2 (all messages)
Prints message to console if current debug level is equal to or higher than the level of this message.
Uses CrestronConsole.PrintLine.
Console format string
Object parameters
Appends a device Key to the beginning of a message
Writes the memory object after timeout
Writes the memory - use SaveMemoryOnTimeout
Helper to get the file path for this app's debug memory
Describes the folder location where a given program stores it's debug level memory. By default, the
file written will be named appNdebug where N is 1-10.
Defines the string event handler for line events on the gather
Attaches to IBasicCommunication as a text gather
For receive buffer
Delimiter, like it says!
Fires up a gather, given a IBasicCommunicaion port and char for de
Disconnects this gather from the Port's TextReceived event. This will not fire LineReceived
after the this call.
Handler for raw data coming from port
Deconstructor. Disconnects from port TextReceived events.
Event that fires when a line is received from the IBasicCommunication source.
The event merely contains the text, not an EventArgs type class.
The communication port that this gathers on
Default false. If true, the delimiter will be included in the line output
events
Privates *
SIMPL+ default constructor.
Read, evaluate and udpate status
Returns the FileInfo object for a given path, with possible wildcards
Sets the filepath as well as registers this with the Global.Masters list
A bandaid client that monitors whether the server is reachable
Timer to operate the bandaid monitor client in a loop.
constructor S+ Does not accept a key. Use initialze with key to set the debug key on this device. If using with + make sure to set all properties manually.
constructor with debug key set at instantiation. Make sure to set all properties before listening.
Contstructor that sets all properties by calling the initialize method with a config object.
Disconnects all clients and stops the server
Initialize Key for device using client name from SIMPL+. Called on Listen from SIMPL+
Start listening on the specified port
Stop Listeneing
Disconnects Client
Disconnect All Clients
Broadcast text from server to all connected clients
Not sure this is useful in library, maybe Pro??
Secure Server Socket Status Changed Callback
Secure TCP Client Connected to Secure Server Callback
Secure Received Data Async Callback
Private Event Handler method to handle the closing of connections when the program stops
Starts the monitor client cycle. Timed wait, then call RunMonitorClient
On monitor connect, restart the operation
If the client hangs, add to counter and maybe fire the choke event
Event for Receiving text
Event for client connection socket status change
Event for Server State Change
For a server with a pre shared key, this will fire after the communication is established and the key exchange is complete. If no shared key, this will fire
after connection is successful. Use this event to know when the client is ready for communication to avoid stepping on shared key.
A band aid event to notify user that the server has choked.
3 by default
Text representation of the Socket Status enum values for the server
Bool showing if socket is connected
S+ helper for IsConnected
Bool showing if socket is connected
S+ helper for IsConnected
Number of clients currently connected.
Port Server should listen on
S+ helper for Port
Bool to show whether the server requires a preshared key. Must be set the same in the client, and if true shared keys must be identical on server/client
S+ helper for requires shared key bool
SharedKey is sent for varification to the server. Shared key can be any text (255 char limit in SIMPL+ Module), but must match the Shared Key on the Server module.
If SharedKey changes while server is listening or clients are connected, disconnect and stop listening will be called
Heartbeat Required bool sets whether server disconnects client if heartbeat is not received
S+ Helper for Heartbeat Required
Milliseconds before server expects another heartbeat. Set by property HeartbeatRequiredIntervalInSeconds which is driven from S+
Simpl+ Heartbeat Analog value in seconds
String to Match for heartbeat. If null or empty any string will reset heartbeat timer
Defaults to 2000
Private flag to note that the server has stopped intentionally
Describes the folder location where a given program stores it's debug level memory. By default, the
file written will be named appNdebug where N is 1-10.
The name of the file containing the current debug settings.
When true, the IncludedExcludedKeys dict will contain keys to include.
When false (default), IncludedExcludedKeys will contain keys to exclude.
Used to save memory when shutting down
Callback for console command
Sets the debug level
Valid values 0 (no debug), 1 (critical), 2 (all messages)
Prints message to console if current debug level is equal to or higher than the level of this message.
Uses CrestronConsole.PrintLine.
Console format string
Object parameters
Logs to Console when at-level, and all messages to error log, including device key
Logs to Console when at-level, and all messages to error log
Logs to both console and the custom user log (not the built-in error log). If appdebug level is set at
or above the level provided, then the output will be written to both console and the log. Otherwise
it will only be written to the log.
Logs to both console and the custom user log (not the built-in error log). If appdebug level is set at
or above the level provided, then the output will be written to both console and the log. Otherwise
it will only be written to the log.
String.format string
Parameters for substitution in the format string.
Prints to log and error log
Writes the memory object after timeout
Writes the memory - use SaveMemoryOnTimeout
Helper to get the file path for this app's debug memory
Reads the config file, checks if it needs a merge, merges and saves, then returns the merged Object.
JObject of config file
Merges the contents of a base and a delta array, matching the entries on a top-level property
given by propertyName. Returns a merge of them. Items in the delta array that do not have
a matched item in base array will not be merged. Non keyed system items will replace the template items.
Helper for using with JTokens. Converts to JObject
Merge o2 onto o1
Queue to temporarily store received messages with the source IP and Port info
Enables the UDP Server
Disabled the UDP Server
Recursive method to receive data
This method gets spooled up in its own thread an protected by a CCriticalSection to prevent multiple threads from running concurrently.
It will dequeue items as they are enqueued automatically.
General send method
This event will fire when a message is dequeued that includes the source IP and Port info if needed to determine the source of the received data.
Address of server
Port on server
Another damn S+ helper because S+ seems to treat large port nums as signed ints
which screws up things
Indicates that the UDP Server is enabled
Defaults to 2000
Stupid S+ Constructor
Defaults to 32768
Typical constructor.
S+ Constructor - Must set all properties before calling Connect
Just to help S+ set the key
Handles closing this up when the program shuts down
Connect to the server, using the provided properties.
Disconnect the clients and put away it's resources.
Anything to do with reestablishing connection on failures
Handles the keyboard interactive authentication, should it be required.
Handler for data receive on ShellStream. Passes data across to queue for line parsing.
Error event handler for client events - disconnect, etc. Will forward those events via ConnectionChange
event
Helper for ConnectionChange event
Event that fires when data is received. Delivers args with byte array
Event that fires when data is received. Delivered as text.
Event when the connection status changes.
Address of server
Port on server
Username for server
And... Password for server. That was worth documenting!
True when the server is connected - when status == 2.
S+ helper for IsConnected
Contains the familiar Simpl analog status values. This drives the ConnectionChange event
and IsConnected with be true when this == 2.
Determines whether client will attempt reconnection on failure. Default is true
Will be set and unset by connect and disconnect only
S+ helper for AutoReconnect
Millisecond value, determines the timeout period in between reconnect attempts.
Set to 5000 by default
Fired when connection changes
Background class that manages debug features for sockets
Sets up the backing class. Adds console commands for S#Pro programs
Helper for socket list, to show types