Overview
The NI DAQmx Counter Output Pulse Generation plugin allows for generating the two kinds of pulses supported by DAQmx: Single Pulse (specifying high and low time) and Pulse Train (specifying frequency, duty cycle, and number of pulses).  It provides a user interface for manually issuing the pulses, configuration for automatically generating one or more pulses when the plugin runs, and also provides a messaging interface for generating pulses.  It also supports edge triggering (including the retriggerable feature) to trigger pulse generation.  Generated pulses are also optionally logged to user-specified format, where the default is a CSV-like file format (with extra line breaks between rows) that records all of the relevant parameters used to generate the pulse.  All of the following are available variables in a VAR container for logging:
- @VAR{timestamp} - the current timestamp in the format specified in the logger configuration
- @VAR{status} - either Initiated or Complete
- @VAR{name} - the name given to the pulse
- @VAR{type} - the type of pulse, either Single Pulse or Pulse Train
- @VAR{counter} - the counter asset used (ex. PXI1Slot4/ctr0)
- @VAR{outputTerminal} - the output terminal / pin to which the pulse was generated (ex. /PXI1Slot4/PFI0)
- @VAR{initialDelay} - the time in seconds to delay before generating the pulse
- @VAR{idleState} - the state to drive the output terminal, either Low or High
- @VAR{singlePulse.highTime} - the high time in seconds for a single pulse (empty string otherwise)
- @VAR{singlePulse.lowTime} - the low time in seconds for a single pulse (empty string otherwise)
- @VAR{pulseTrain.frequency} - the configured frequency for a pulse train (empty string otherwise)
- @VAR{pulseTrain.dutyCycle} - the configured duty cycle for pulse train (empty string otherwise)
- @VAR{pulseTrain.frequencyActual} - the actual freuqency achieved for a pulse train pulse (empty string otherwise)
- @VAR{pulseTrain.dutyCycleActual} - the actual duty cycle achieved for a pulse train (empty string otherwise)
- @VAR{pulseTrain.numberOfPulses} - the number of pulses to generate for a pulse train (empty string otherwise)
- @VAR{triggering.enable} - whether to enable triggering, either true or false
- @VAR{triggering.source} - the trigger source pin
- @VAR{triggering.edge} - the edge on which to trigger, either Rising or Falling
- @VAR{triggering.retriggerable} - whether to make the task retriggerable, meaning after a trigger generates a pulse, should the task wait for another trigger
 User Interface
The NI DAQmx Counter Output Pulse Generation user interface allows sending manual pulses and also displays a log of all generated pulses during the life of the plugin instance.  Counter and output terminal controls define the counter asset and which pin the pulse will be generated on, respectively.  The tab control in the center of the interface allows defining either a single pulse or a pulse train.  Edge triggering is also supported, including the retriggerable ability.  The generate pulse operation of course generates the currently configured pulse (whichever of the two pulse types is visible in the tab control).
 Control Messages
As noted above, this plugin accepts messages to generate pulses.  Also as noted above, the two kinds of pulse types supported by this plugin are a single pulse and a pulse train.  Below are message examples for both cases.
 Generate Single Pulse
The following message will generate a single pulse:
{
    "operation": "Generate Single Pulse",
    "data": {
        "name": "My Single Pulse",
        "counter": "PXI1Slot4/ctr1",
        "outputTerminal": "/PXI1Slot4/PFI1",
        "completionCheckPeriod": 250,
        "singlePulse": {
            "highTime": 0.1,
            "lowTime": 0.1,
            "initialDelay": 0,
            "idleState": "Low"
        },
        "triggering": {
            "enable": false,
            "source": "/PXI1Slot4/PFI2",
            "edge": "Rising",
            "retriggerable": false
        }
    }
}
 Generate Pulse Train
The following message will generate a pulse train:
{
    "operation": "Generate Pulse Train",
    "data": {
        "name": "My Pulse Train",
        "counter": "PXI1Slot4/ctr1",
        "outputTerminal": "/PXI1Slot4/PFI1",
        "completionCheckPeriod": 250,
        "pulseTrain": {
            "frequency": 0.1,
            "dutyCycle": 0.5,
            "numberOfPulses": 10,
            "initialDelay": 0,
            "idleState": "Low"
        },
        "triggering": {
            "enable": false,
            "source": "/PXI1Slot4/PFI2",
            "edge": "Rising",
            "retriggerable": false
        }
    }
}
 Publishing
This plugin publishes information about all pulses it generates, and for each pulse it publishes an update at 3 pulse life cycle status: Initiated, Started, and Complete.  The following is an example of a publish message payload for a plugin instance named Pulse Generator which has generated pulses named My Single Pulse and My Pulse Train which have both completed:
{
    "instanceName": "Pulse Generator",
    "pulses": {
        <span style="color:yellow">"My Single Pulse"</span>: {
            <span style="color:yellow">"status": "Complete"</span>,
            "name": "My Single Pulse",
            "counter": "PXI1Slot4/ctr1",
            "outputTerminal": "/PXI1Slot4/PFI1",
            "completionCheckPeriod": 250,
            "singlePulse": {
                "highTime": 0.1,
                "lowTime": 0.1,
                "initialDelay": 0,
                "idleState": "Low"
            },
            "triggering": {
                "enable": false,
                "source": "/PXI1Slot4/PFI3",
                "edge": "Rising",
                "retriggerable": false
            }
        },
        <span style="color:yellow">"My Pulse Train"</span>: {
            <span style="color:yellow">"status": "Complete"</span>,
            "name": "My Pulse Train",
            "counter": "PXI1Slot4/ctr2",
            "outputTerminal": "/PXI1Slot4/PFI2",
            "completionCheckPeriod": 250,
            "pulseTrain": {
                "frequency": 0.1,
                "dutyCycle": 0.5,
                "numberOfPulses": 10,
                "initialDelay": 0,
                "idleState": "Low"
            },
            "triggering": {
                "enable": false,
                "source": "/PXI1Slot4/PFI3",
                "edge": "Rising",
                "retriggerable": false
            }
        }
    }
}
Notice that information about each pulse is placed under pulses object, and each pulse is housed under a key equal to the pulse’s name.  Also notable is that the Started status will be sent right after the task is started, which means it will be sent potentially before the pulse is generated if 1. an initial delay is configured for the pulse, or 2. the pulse is configured to wait for a trigger.
 
 Configuration Example
 Configuration Details
                
                     ROOT object 
                    
                          This top level object holds all configuration information for this plugin. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     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.autoGenerate 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.autoGenerate.enable boolean 
                    
                          Whether to auto-generate defined pulses when the plugin is launched. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.autoGenerate.pulses array 
                    
                          An array of initialization commands to send to the chiller.  For commands with multiple parameters, use an array as the parameter value.  These commands are sent before the UI is even initialized and before any user interaction is processed. 
                         Required: true 
                        
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n] object 
                    
                          An initialization command to send. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse} object 
                    
                          An object defining a single pulse generation. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.name string 
                    
                          A name for this pulse definition. 
                         Required: true 
                         Default: "My Single Pulse" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.counter string 
                    
                          The counter to use for pulse generation. 
                         Required: true 
                         Default: "PXI1Slot4/ctr0" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.outputTerminal string 
                    
                          The line on which to generate the pulse. 
                         Required: true 
                         Default: "/PXI1Slot4/PFI0" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.highTime number 
                    
                          The amount of time in seconds the pulse is at logic high voltage. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.lowTime number 
                    
                          The amount of time in seconds the pulse is at logic low voltage. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.initialDelay number 
                    
                          The amount of time in seconds to delay before generating the pulse. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.idleState enum (string) 
                    
                          The state to drive the output line to while idle and after the pulse is complete (i.e. the resting state of the output line). 
                         Required: true 
                         Default: "Low" 
                         Enum Items: "Low" | "High" 
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.completionCheckPeriod integer 
                    
                          The period in milliseconds to wait between checking whether the pulse generation is complete. 
                         Required: true 
                         Default: 250 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.triggering object 
                    
                          An object containing triggering options. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.triggering.enable boolean 
                    
                          Whether to wait for a trigger before generating the pulse. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.triggering.source string 
                    
                          The input / pin to which the trigger signal is connected. 
                         Required: true 
                         Default: "/PXI1Slot4/PFI1" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.triggering.edge enum (string) 
                    
                          The digital edge on which to trigger the acquisition. 
                         Required: true 
                         Default: "Rising" 
                         Enum Items: "Rising" | "Falling" 
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Single Pulse}.triggering.retriggerable boolean 
                    
                          Whether to wait loop back and wait for subsequent triggers to generate additional pulses. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train} object 
                    
                          An object defining a single pulse generation. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.name string 
                    
                          A name for this pulse definition. 
                         Required: true 
                         Default: "My Pulse Train" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.counter string 
                    
                          The counter to use for pulse generation. 
                         Required: true 
                         Default: "PXI1Slot4/ctr0" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.outputTerminal string 
                    
                          The line on which to generate the pulse. 
                         Required: true 
                         Default: "/PXI1Slot4/PFI0" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.frequency number 
                    
                          The frequency of the pulse train. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.dutyCycle number 
                    
                          The duty cycle of the pulse train. 
                         Required: true 
                         Default: 0.5 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.numberOfPulses number 
                    
                          The number of pulses to generate. 
                         Required: true 
                         Default: 10 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.initialDelay number 
                    
                          The amount of time to delay before generating the pulse. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.idleState enum (string) 
                    
                          The state to drive the output line to while idle and after the pulse is complete (i.e. the resting state of the output line). 
                         Required: true 
                         Default: "Low" 
                         Enum Items: "Low" | "High" 
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.completionCheckPeriod integer 
                    
                          The period in milliseconds to wait between checking whether the pulse generation is complete. 
                         Required: true 
                         Default: 250 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.triggering object 
                    
                          An object containing triggering options. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.triggering.enable boolean 
                    
                          Whether to wait for a trigger before generating the pulse. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.triggering.source string 
                    
                          The input / pin to which the trigger signal is connected. 
                         Required: true 
                         Default: "/PXI1Slot4/PFI1" 
                        
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.triggering.edge enum (string) 
                    
                          The digital edge on which to trigger the acquisition. 
                         Required: true 
                         Default: "Rising" 
                         Enum Items: "Rising" | "Falling" 
                     
                 
                
                
                     options.autoGenerate.pulses[n]::{Pulse Train}.triggering.retriggerable boolean 
                    
                          Whether to wait loop back and wait for subsequent triggers to generate additional pulses. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.userInterfaceDefaults object 
                    
                          An object containing pulse generation defaults for the two types of supported pulses. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.counter string 
                    
                          The counter to use for pulse generation. 
                         Required: false 
                         Default: "PXI1Slot4/ctr0" 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.outputTerminal string 
                    
                          The line on which to generate the pulse. 
                         Required: false 
                         Default: "/PXI1Slot4/PFI0" 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.triggering object 
                    
                          An object containing triggering options. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.triggering.enable boolean 
                    
                          Whether to wait for a trigger before generating the pulse. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.triggering.source string 
                    
                          The input / pin to which the trigger signal is connected. 
                         Required: true 
                         Default: "/PXI1Slot4/PFI1" 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.triggering.edge enum (string) 
                    
                          The digital edge on which to trigger the acquisition. 
                         Required: true 
                         Default: "Rising" 
                         Enum Items: "Rising" | "Falling" 
                     
                 
                
                
                     options.userInterfaceDefaults.triggering.retriggerable boolean 
                    
                          Whether to wait loop back and wait for subsequent triggers to generate additional pulses. 
                         Required: true 
                         Default: false 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse object 
                    
                          An object defining a single pulse generation. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse.name string 
                    
                          A name for this pulse definition. 
                         Required: true 
                         Default: "My Single Pulse" 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse.highTime number 
                    
                          The amount of time the pulse is at logic high voltage. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse.lowTime number 
                    
                          The amount of time the pulse is at logic low voltage. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse.initialDelay number 
                    
                          The amount of time to delay before generating the pulse. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse.idleState enum (string) 
                    
                          The state to drive the output line to while idle and after the pulse is complete (i.e. the resting state of the output line). 
                         Required: true 
                         Default: "Low" 
                         Enum Items: "Low" | "High" 
                     
                 
                
                
                     options.userInterfaceDefaults.singlePulse.completionCheckPeriod integer 
                    
                          The period in milliseconds to wait between checking whether the pulse generation is complete. 
                         Required: true 
                         Default: 250 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain object 
                    
                          An object defining a pulse train generation. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.name string 
                    
                          A name for this pulse definition. 
                         Required: true 
                         Default: "My Single Pulse" 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.frequency number 
                    
                          The frequency of the pulse train. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.dutyCycle number 
                    
                          The duty cycle of the pulse train. 
                         Required: true 
                         Default: 0.5 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.numberOfPulses number 
                    
                          The number of pulses to generate. 
                         Required: true 
                         Default: 10 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.initialDelay number 
                    
                          The amount of time to delay before generating the pulse train. 
                         Required: true 
                         Default: 1 
                        
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.idleState enum (string) 
                    
                          The state to drive the output line to while idle and after the pulse train is complete (i.e. the resting state of the output line). 
                         Required: true 
                         Default: "Low" 
                         Enum Items: "Low" | "High" 
                     
                 
                
                
                     options.userInterfaceDefaults.pulseTrain.completionCheckPeriod integer 
                    
                          The period in milliseconds to wait between checking whether the pulse generation is complete. 
                         Required: true 
                         Default: 250 
                        
                     
                 
                
                
                     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: "@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