ROOT object 
                    
                          This top level object holds all configuration information for this plugin. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     subscribesTo array 
                    
                          An array of plugin instance names corresponding to plugin instances which will be subscribed to by this plugin instance. 
                         Required: false 
                        
                        
                     
                 
                
                
                     subscribesTo[n] string 
                    
                          A plugin instance name (corresponding to a plugin you wish to subscribe to) or a topic published by the worker (ex. __PLUGIN_INFO__). 
                         Required: false 
                         Default: "" 
                        
                     
                 
                
                
                     options object 
                    
                          Configuration options specific to this plugin.  Note that variables and expressions are generally allowed in this section. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.messageSourceKeyNames array 
                    
                          An array of key names to look for when inspecting incoming messages for merge.  The first element in this array found as a key name in the Latest Message will be used as the key under which that message will be placed in the Merged Messages object.  If no key is found, the message will be placed under a key named "__UNKNOWN_SOURCE__". 
                         Required: true 
                         Default: [
    "workerName",
    "instanceName"
]  
                        
                     
                 
                
                
                     options.messageSourceKeyNames[n] string 
                    
                          A key name to look for when inspecting incoming messages for merge. 
                         Required: false 
                         Default: "" 
                        
                     
                 
                
                
                     options.digitalOutputConnections object 
                    
                          An object containing digital output connection information.  This object layer is provided primarily for extensibility purposes at this time. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging object 
                    
                          An object which defines the logging behavior. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.strategy enum (string) 
                    
                          The logging state for digital output data.  OnChange will log on digital output state changes, where notably Startup and Shutdown states are always recorded.  OnUpdate will log anytime digital outputs are updated (which may not be exclusively on changes, such as when updating from a valueAutoUpdateCondition which evaluates to the same/current value). 
                         Required: true 
                         Default: "OnChange" 
                         Enum Items: "OnChange" | "OnUpdate" 
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.booleanRecordType enum (string) 
                    
                          Determines how boolean values display in the log file.  The valid values for this option are: true/false, True/False, TRUE/FALSE, T/F, and 1/0 
                         Required: true 
                         Default: "1/0" 
                         Enum Items: "true/false" | "True/False" | "TRUE/FALSE" | "T/F" | "1/0" 
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.includeUILockStateColumns boolean 
                    
                          Whether to include the lock status in the data log file. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.dataLogger object 
                    
                          Defines the logging (data and errors) for this plugin.  Note that a LOG variable space is provided here, as well as the VAR variable space.  Available variables are: @LOG{LOGGERNAME}, @LOG{TIMESTAMP}, @LOG{LOGMESSAGE}, @LOG{ERRORMESSAGE}, and @VAR{instanceName} are available variables.  note: @LOG{LOGGERNAME} is equal to the @VAR{instanceName} here. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.Enable boolean 
                    
                          Whether to enable the logger. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.LogFolder string 
                    
                          The folder in which to write log files. 
                         Required: true 
                         Default: "\\JADE_LOGS\\@VAR{instanceName}" 
                        
                     
                 
                
                
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.DiskThrashPeriod integer 
                    
                          The period in milliseconds with which to flush the file buffer to ensure it's committed to the hard drive.  Note: This is a performance consideration to prevent writing to disk too frequently. 
                         Required: true 
                         Default: 1000 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.FileSizeLimit integer 
                    
                          The file size at which to create new files. 
                         Required: true 
                         Default: 1000000 
                        
                     
                 
                
                
                
                
                     options.digitalOutputConnections.digitalOutputSections array 
                    
                          An array of objects where each object defines a digital output section.  DigitalOutput sections are organized left to right, each with a name and digital output list which renders top to bottom. 
                         Required: true 
                        
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n] object 
                    
                          An object defining a digital output section.  A digital output section has a name and digital output list which renders top to bottom.  The section is intended to allow organizing / grouping digital outputs in the user interface according to function vs the boards and banks to which they are connected. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputSectionName string 
                    
                          A semantic name for the digital output section.  For example "Instrument Digital Outputs" or "Control DigitalOutputs".  Note that because this is used to compose the DAQmx task name, only characters a-z, A-Z, 0-9, -, _ , and spaces are allowed with the additional rule that the _ cannot be the leading / first character. 
                         Required: true 
                         Default: "My DigitalOutput Section" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].delayPerDigitalOutputForSetAllToTrue integer 
                    
                          The delay to apply in milliseconds between turning on individual digital outputs when the Set All to True button is clicked.  In many cases such a delay is not a concern and the value can be set to 0.  An example of where this may be useful is when multiple digital outputs are controlling power on/off state for instruments powered by the same bus.  Turning all of the insruments on/off too quickly could cause an undesirable transient current draw, and slowing this down while still having a single-click solution to turn everything on may be helpful. 
                         Required: true 
                         Default: 0 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].delayPerDigitalOutputForSetAllToFalse integer 
                    
                          The delay to apply in milliseconds between turning on individual digital outputs when the Set All to False button is clicked.  In many cases such a delay is not a concern and the value can be set to 0.  An example of where this may be useful is when multiple digital outputs are controlling power on/off state for instruments powered by the same bus.  Turning all of the insruments on/off too quickly could cause a undesirable transient current draw, and slowing this down while still having a single-click solution to turn everything on may be helpful. 
                         Required: true 
                         Default: 0 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList array 
                    
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n] object 
                    
                          Defines a digital output by specifying the digital output location in a board and bank, its default state, and a semantic name to display in the user interface. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].name string 
                    
                          A semantic name for the digital output, such as the name of the instrument it enables/disables or the purpose it serves in the system.  Note that because this is used to compose the DAQmx task name, only characters a-z, A-Z, 0-9, -, _ , and spaces are allowed with the additional rule that the _ cannot be the leading / first character. 
                         Required: true 
                         Default: "My Digital Output" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].lines string 
                    
                          A DAQmx digital output channel name such as Dev1/port0/line0.  Note that this option may be set to an empty string which effectively just tracks this as a variable for condition computation and data logging. 
                         Required: true 
                         Default: "Dev1/port0/line0" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].invertLines boolean 
                    
                          Inverts the output value so that if logic true is written then logic false is output on the line, and vice versa. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].startupValue booleannull 
                    
                          The value to assign to the digital output at plugin startup.  If this value is null the output will not be updated at startup. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].shutdownValue booleannull 
                    
                          The value to assign to the digital output at plugin shutdown.  If this value is null the output will not be updated at shutdown. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].falseLabel string 
                    
                          A semantic label for the false state of the digital output. 
                         Required: true 
                         Default: "Off" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].trueLabel string 
                    
                          A semantic label for the true state of the digital output. 
                         Required: true 
                         Default: "On" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].valueAutoUpdateCondition stringbooleannull 
                    
                          A boolean condition that sets the value of the digital output.  The condition is evaluated when 1. subscription data arrives or 2. digital outputs are updated via an explicit control message or manually.  If set to null, this setting is ignored.  Generally there are two variable containers available here: 1. SUB which contains subscription data, and 2. VAR which contains the all digital output values and ui lock states.  Digial output values are available as @VAR{section-name.digital-output-name.value} and UI lock states are available as @VAR{section-name.digital-output-name.uiLock}.  For example, the variable for the digital value for some "SectionA" with digital output named "DO1" would be: @VAR{SectionA.DO1.value}.  Similarly the UI lock state would be:  @VAR{SectionA.DO1.uiLock}. 
                         Required: true 
                         Default: "" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock object 
                    
                          An object defining the UI Lock behavior. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.startupValue boolean 
                    
                          The value to assign to the UI Lock at plugin startup. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.autoUpdateCondition stringbooleannull 
                    
                          A boolean condition that sets the value of the UI Lock state.  The condition is evaluated when 1, subscription data arrives or 2. digital outputs are updated via an explicit control message or manually.  If set to null, this setting is ignored. 
                         Required: true 
                         Default: "" 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.confirmManualUnlock boolean 
                    
                          Whether to force the user to confirm when manually unlocking (i.e. clicking the checkbox) a lock state for this digital output. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.confirmManualUnlockMessage string 
                    
                          If confirmManualUnlock is true, this is the message to display to the user when attempting to unlock the digital output. 
                         Required: true 
                         Default: "\nAre you sure you want to unlock digital output \"@VAR{digitalOutputName}\" in section \"@VAR{sectionName}\"?" 
                        
                     
                 
                
                
                     options.publishing object 
                    
                          An object defining the plugin's publishing behavior. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.publishing.publishOnUpdate boolean 
                    
                          Whether to publish data when digital output state changes. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.publishing.publishPeriodically boolean 
                    
                          Whether to publish data periodically. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.publishing.publishPeriod integer 
                    
                          The period with which to publish.  Only applies if publishPeriodically is true. 
                         Required: true 
                         Default: 2000 
                        
                     
                 
                
                
                     options.logger object 
                    
                          Defines the standard logger for this plugin.  Note that a LOG variable space is provided here, as well as the VAR variable space.  Available variables are: @LOG{LOGGERNAME}, @LOG{TIMESTAMP}, @LOG{LOGMESSAGE}, @LOG{ERRORMESSAGE}, and @VAR{instanceName} are available variables.  note: @LOG{LOGGERNAME} is equal to the @VAR{instanceName} here. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.logger.Enable boolean 
                    
                          Whether to enable the logger. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     options.logger.LogFolder string 
                    
                          The folder in which to write log files. 
                         Required: true 
                         Default: "\\JADE_LOGS\\@VAR{instanceName}" 
                        
                     
                 
                
                
                
                
                     options.logger.ErrorsOnly boolean 
                    
                          Whether to log only errors. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     options.logger.DiskThrashPeriod integer 
                    
                          The period in milliseconds with which to flush the file buffer to ensure it's committed to the hard drive.  Note: This is a performance consideration to prevent writing to disk too frequently. 
                         Required: true 
                         Default: 1000 
                        
                     
                 
                
                
                     options.logger.FileSizeLimit integer 
                    
                          The file size at which to create new files. 
                         Required: true 
                         Default: 1000000 
                        
                     
                 
                
                
                
                
                
                
                     options.logger.LogEntryFormat string 
                    
                          The format to use when writing log entries when errors are not present. 
                         Required: true 
                         Default: "\n\n@LOG{LOGMESSAGE}" 
                        
                     
                 
                
                
                     options.logger.ErrorLogEntryFormat string 
                    
                          The message format used to construct error log entries. 
                         Required: true 
                         Default: "\n\n@LOG{ERRORMESSAGE}" 
                        
                     
                 
                
                
                
                
                     panel object 
                    
                           
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     panel.open boolean 
                    
                          Whether to open the front panel immediately when run. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     panel.state enum (string) 
                    
                          The state in which the window will open. 
                         Required: true 
                         Default: "Standard" 
                         Enum Items: "Standard" | "Hidden" | "Closed" | "Minimized" | "Maximized" 
                     
                 
                
                
                     panel.transparency integer 
                    
                          The transparency of the window. 0 = opaque, 100 = invisible. 
                         Required: true 
                         Default: 0 
                        
                     
                 
                
                
                     panel.title string 
                    
                          The title of the plugin window when it runs.  Note that the variable 'instanceName' is provided here in a VAR variable container. 
                         Required: true 
                         Default: "@VAR{instanceName}" 
                        
                     
                 
                
                
                     panel.titleBarVisible boolean 
                    
                          Whether the window title bar is visible. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                
                
                
                
                     panel.makeActive boolean 
                    
                          Whether the window becomes active when opened. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     panel.bringToFront boolean 
                    
                          Whether the window is brought to the front / top of other windows when opened. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     panel.minimizable boolean 
                    
                          Whether the window is minimizable. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     panel.resizable boolean 
                    
                          Whether the window is resizable. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     panel.closeable boolean 
                    
                          Whether the window is closeable. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     panel.closeWhenDone boolean 
                    
                          Whether to close the window when complete. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     panel.center boolean 
                    
                          Whether to center the window when opened.  Note: this property overrides the 'position' property. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     panel.position object 
                    
                          The position of the window when opened the first time. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     panel.position.top integer 
                    
                          The vertical position of the window in pixels from the top edge of the viewport.  Note: this property is overriden by the 'center' property. 
                         Required: true 
                         Default: 100 
                        
                     
                 
                
                
                     panel.position.left integer 
                    
                          The horizontal position of the window in pixels from the left edge of the viewport.  Note: this property is overriden by the 'center' property. 
                         Required: true 
                         Default: 100 
                        
                     
                 
                
                
                     panel.size object 
                    
                          The size of the window when opened the first time. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     panel.size.width integer 
                    
                          The width of the window in pixels.  -1 means use the default width for the panel.  Note that depending on panel features exposed, there may be a limit to how small a panel can become. 
                         Required: true 
                         Default: -1 
                        
                     
                 
                
                
                     panel.size.height integer 
                    
                          The height of the window in pixels.  -1 means use the default height for the panel.  Note that depending on panel features exposed, there may be a limit to how small a panel can become. 
                         Required: true 
                         Default: -1 
                        
                     
                 
                
                
                     channel object 
                    
                          The communication channel definition used by this plugin. Note: this section rarely needs modifications. In many cases, the underlying plugin implementation depends on at least some of these settings having the values below. Consult with a JADE expert before making changes to this section if you are unfamiliar with the implications of changes to this section. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     channel.SendBreakTimeout integer 
                    
                          The timeout duration in milliseconds to wait for sending messages. 
                         Required: true 
                         Default: 1000 
                        
                     
                 
                
                
                     channel.WaitOnBreakTimeout integer 
                    
                          The timeout duration in milliseconds to wait for receiving messages.  Note: -1 means wait indefinitely or until shutdown is signalled. 
                         Required: true 
                         Default: -1 
                        
                     
                 
                
                
                     channel.WaitOnShutdownTimeout integer 
                    
                          The timeout duration in milliseconds to wait for shutdown acknowledgment. 
                         Required: true 
                         Default: 2000 
                        
                     
                 
                
                
                     channel.ThrowTimeoutErrors boolean 
                    
                          Whether to throw timeout errors vs simply returning a boolean indicating whether a timeout occurred. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     channel.ThrowShutdownUnacknowledgedErrors boolean 
                    
                          Whether to throw 'shutdown unacknowledged' errors. 
                         Required: true 
                         Default: true 
                        
                     
                 
                
                
                     channel.QueueSize integer 
                    
                          The size of the underlying communication queue in bytes.  Note: -1 means unbounded (i.e. grow as needed with available memory). 
                         Required: true 
                         Default: 100 
                        
                     
                 
                
                
                     channel.SendBreakEnqueueType enum (string) 
                    
                          The enqueue strategy employed on the underlying queue for standard messages. 
                         Required: true 
                         Default: "LossyEnqueue" 
                         Enum Items: "Enqueue" | "EnqueueAtFront" | "LossyEnqueue" | "LossyEnqueueAtFront" 
                     
                 
                
                
                     channel.SendErrorEnqueueType enum (string) 
                    
                          The enqueue strategy employed on the underlying queue for error messages. 
                         Required: true 
                         Default: "LossyEnqueue" 
                         Enum Items: "Enqueue" | "EnqueueAtFront" | "LossyEnqueue" | "LossyEnqueueAtFront" 
                     
                 
                
                
                     channel.SendShutdownEnqueueType enum (string) 
                    
                          The enqueue strategy employed on the underlying queue for the shutdown message. 
                         Required: true 
                         Default: "LossyEnqueueAtFront" 
                         Enum Items: "Enqueue" | "EnqueueAtFront" | "LossyEnqueue" | "LossyEnqueueAtFront" 
                     
                 
                
                
                     channel.FlushQueueBeforeWaitingOnBreak boolean 
                    
                          Whether to flush the queue upon waiting for new messages (i.e. whether to clear the queue and wait for the next 'new' message; this has the effect of removing old messages and waiting for the next message. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     channel.FlushQueueAfterBreaking boolean 
                    
                          Whether to flush the queue after receiving a new message (i.e. whether to handle the next message coming in the queue and then flush; this has the effect of handling the oldest message (if it exsits) or the next message before flushing the queue. 
                         Required: true 
                         Default: false