@sixclear/scanivalve-mps4264
                    Scanivalve MPS 4264 v1.0.0
                Overview
The Scanivalve 4264 MPS plugin works with the Scanivalve 4264 MPS pressure scanner. The Scanivalve MPS 4264 plugin scans up to 64 pressure channels at a configurable scan rate. Each scan returns pressure data, a temperature, and the sample count.
User Interface
The interface has configurable sections at the top where configuration parameters may be displayed at run-time. Below that we have a large graph with many of the usual features exposed including zoom, pan, scrolling, and the ability to show/hide any of the 64 data plots. The bottom section shows the configurable, published data.
 
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. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.connection object 
                      An object defining the connection. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.connection.simulationMode boolean 
                      Whether to use simulation mode. 
                         Required: true 
                         Default: false 
                        
                     options.connection.address string 
                      The IP address of the Scanivalv. 
                         Required: true 
                         Default: "192.168.1.2" 
                        
                     options.connection.commandPort integer 
                      The port to use for sending commands.  This will almost certainly need to be 23. 
                         Required: true 
                         Default: 23 
                        
                     options.connection.scanPort integer 
                      The port to use for receiving scan data.  This will almost certainly need to be 503. 
                         Required: true 
                         Default: 503 
                        
                     options.acquisition object 
                      An object defining the acquisition. 
                         Required: true 
                         Default: 
                        
                    {
    "mode": "Continuous Samples",
    "samplingRate": 100,
    "numberOfChannels": 64,
    "timeout": 5000,
    "units": "PSI",
    "pressureChannelNames": []
}  options.acquisition::{Continuous Samples} object 
                      An object describing a continuous acquisition. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     options.acquisition::{Continuous Samples}.mode enum (string) 
                      Continuous samples means acquire samples continuously until the plugin is shut down. 
                         Required: true 
                         Default: "Continuous Samples" 
                         Enum Items: "Continuous Samples" 
                     options.acquisition::{Continuous Samples}.samplingRate number 
                      The sampling rate to use specified in samples/second (Hz). 
                         Required: true 
                         Default: 100 
                        
                     options.acquisition::{Continuous Samples}.numberOfChannels enum (integer) 
                      The number of channels to acquire data on.  This should be 64 unless high-speed mode is used which may decrease the number of channels to 16 
                         Required: true 
                         Default: 64 
                         Enum Items: 64 | 16 
                     options.acquisition::{Continuous Samples}.timeout integer 
                      How long to wait in milliseconds before generating a timeout error when reading data. 
                         Required: true 
                         Default: 5000 
                        
                     options.acquisition::{Continuous Samples}.units enum (string) 
                      The units in which the returned pressure measurements are returned. 
                         Required: true 
                         Default: "PSI" 
                         Enum Items: "PSI" | "ATM" | "BAR" | "CMHG" | "CMH2O" | "DECIBAR" | "FTH2O" | "GCM2" | "INHG" | "INH2O" | "KNM2" | "KGM2" | "KGCM2" | "KPA" | "KIPIN2" | "MPA" | "MBAR" | "MH2O" | "MMHG" | "NM2" | "NCM2" | "OZIN2" | "OZFT2" | "PA" | "PSF" | "TORR" | "USER" | "RAW" 
                     options.acquisition::{Continuous Samples}.pressureChannelNames array 
                      Names to assign to the pressure channels here.  Note that this can have at most 64 values corresponding to the total number of pressure channels on the Scanivalv.  For example, if the sensors are located at locations which can be named, this is a place to capture this association and will be used in the plot legend on the graph interface, as well as in the column headers of the logged data.  If left as an empty array, the following channel names will be used: Pressure 1, Pressure 2, ... Pressure 64. 
                         Required: true 
                         Default: 
                        
                    []
 options.acquisition::{Continuous Samples}.pressureChannelNames[n] string 
                      Provide a semantic name for a pressure channel. 
                         Required: false 
                         Default: "Pressure 1" 
                        
                     options.acquisition::{Finite Samples} object 
                      An object describing a continuous acquisition. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     options.acquisition::{Finite Samples}.mode enum (string) 
                      Finite samples means only finitely many samples are acquired. 
                         Required: true 
                         Default: "Finite Samples" 
                         Enum Items: "Finite Samples" 
                     options.acquisition::{Finite Samples}.samplingRate number 
                      The sampling rate to use specified in samples/second (Hz). 
                         Required: true 
                         Default: 100 
                        
                     options.acquisition::{Finite Samples}.numberOfChannels enum (integer) 
                      The number of channels to acquire data on.  This must be 64 unless high-speed mode is used which may decrease the number of channels to 16 
                         Required: true 
                         Default: 64 
                         Enum Items: 64 | 16 
                     options.acquisition::{Finite Samples}.totalSamplesPerChannel integer 
                      The total number of samples per channel to acquire. 
                         Required: true 
                         Default: 100 
                        
                     options.acquisition::{Finite Samples}.timeout integer 
                      How long to wait in milliseconds before generating a timeout error when reading data. 
                         Required: true 
                         Default: 5000 
                        
                     options.acquisition::{Finite Samples}.units enum (string) 
                      The units in which the returned pressure measurements are returned. 
                         Required: true 
                         Default: "PSI" 
                         Enum Items: "PSI" | "ATM" | "BAR" | "CMHG" | "CMH2O" | "DECIBAR" | "FTH2O" | "GCM2" | "INHG" | "INH2O" | "KNM2" | "KGM2" | "KGCM2" | "KPA" | "KIPIN2" | "MPA" | "MBAR" | "MH2O" | "MMHG" | "NM2" | "NCM2" | "OZIN2" | "OZFT2" | "PA" | "PSF" | "TORR" | "USER" | "RAW" 
                     options.acquisition::{Finite Samples}.pressureChannelNames array 
                      Names to assign to the pressure channels here.  Note that this can have at most 64 values corresponding to the total number of pressure channels on the Scanivalv.  For example, if the sensors are located at locations which can be named, this is a place to capture this association and will be used in the plot legend on the graph interface, as well as in the column headers of the logged data.  If left as an empty array, the following channel names will be used: Pressure 1, Pressure 2, ... Pressure 64. 
                         Required: true 
                         Default: 
                        
                    []
 options.acquisition::{Finite Samples}.pressureChannelNames[n] string 
                      Provide a semantic name for a pressure channel. 
                         Required: false 
                         Default: "Pressure 1" 
                        
                     options.display object 
                      An object defining properties of the plugin display. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.enable boolean 
                      Whether to enable the display / graph. 
                         Required: true 
                         Default: true 
                        
                     options.display.updatePeriod integer 
                      The period with which to update the user interface.  This does not impact the acquisition or storage of samples. 
                         Required: true 
                         Default: 1000 
                        
                     options.display.graph object 
                      An object defining properties of the graph on the interface. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.label string 
                      The label to display on the chart. 
                         Required: true 
                         Default: "My Plot Name" 
                        
                     options.display.graph.historyLength integer 
                      The number of samples to store for display in the graph per pressure channel. 
                         Required: true 
                         Default: 1000 
                        
                     options.display.graph.xAxis object 
                      This configuration for the x-axis required configuring label, format, duration, and numTicks. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.xAxis.label string 
                      The x-axis label to display. 
                         Required: true 
                         Default: "x-axis" 
                        
                     options.display.graph.xAxis.format string 
                      A string defining the x-axis format. 
                         Required: true 
                         Default: "%<%I:%M:%S>T" 
                        
                     options.display.graph.xAxis.duration number 
                      The time duration in seconds to display on the x-axis. 
                         Required: true 
                         Default: 10 
                        
                     options.display.graph.xAxis.numTicks number 
                      The number of ticks to show on the x-axis. 
                         Required: true 
                         Default: 5 
                        
                     options.display.graph.yAxis object 
                      The y-axis properties. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.yAxis.label string 
                      The y-axis label to display. 
                         Required: true 
                         Default: "y-axis" 
                        
                     options.display.graph.yAxis.flipped boolean 
                      Whether to flip the y-axis (ex. if true, instead of rendering 0 on the bottom and 10 on the top of the y-axis, it would render 0 on the top and 10 on the bottom. 
                         Required: true 
                         Default: false 
                        
                     options.display.graph.yAxis.min number 
                      The y-axis min value. 
                         Required: true 
                         Default: 0 
                        
                     options.display.graph.yAxis.max number 
                      The y-axis max value. 
                         Required: true 
                         Default: 10 
                        
                     options.display.graph.yAxis.increment number 
                      The y-axis increment used to display y-axis tick marks. 
                         Required: true 
                         Default: 1 
                        
                     options.display.graph.yAxis.format string 
                      A string defining the y-axis format. 
                         Required: true 
                         Default: "%d" 
                        
                     options.display.graph.yAxis.autoscale enum (string) 
                      Whether to autoscale the y-axis.  The value "on" autoscales on every update, "off" never autoscales, and "once" autoscales just once when data is first rendered. 
                         Required: true 
                         Default: "on" 
                         Enum Items: "on" | "off" | "once" 
                     options.display.graph.plotArea object 
                      The plot area properties. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.plotArea.fgColor object 
                      The plot area foreground color specified as an RGB value. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.plotArea.fgColor.r integer 
                      The red component of the RGB color definition. 
                         Required: true 
                         Default: 255 
                        
                     options.display.graph.plotArea.fgColor.g integer 
                      The green component of the RGB color definition. 
                         Required: true 
                         Default: 255 
                        
                     options.display.graph.plotArea.fgColor.b integer 
                      The blue component of the RGB color definition. 
                         Required: true 
                         Default: 255 
                        
                     options.display.graph.plotArea.bgColor object 
                      The plot area background color specified as an RGB value. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.plotArea.bgColor.r integer 
                      The red component of the RGB color definition. 
                         Required: true 
                         Default: 250 
                        
                     options.display.graph.plotArea.bgColor.g integer 
                      The green component of the RGB color definition. 
                         Required: true 
                         Default: 250 
                        
                     options.display.graph.plotArea.bgColor.b integer 
                      The blue component of the RGB color definition. 
                         Required: true 
                         Default: 250 
                        
                     options.display.graph.palette object 
                      An object defining properties for the graph palette. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.graph.palette.initialTool enum (string) 
                      Sets the initial active tool for the graph palette.  Valid options: `Selection Cursor`, `Panning Tool`, `Zoom to Rectangle`, `Zoom X`, `Zoom Y`, `Zoom To Fit`, `Zoom Out At Point`, and `Zoom In At Point`.  The graph palette is manually accessible just above the graph, where the active tool can also be changed at any time. 
                         Required: true 
                         Default: "Zoom X" 
                         Enum Items: "Selection Cursor" | "Panning Tool" | "Zoom to Rectangle" | "Zoom X" | "Zoom Y" | "Zoom To Fit" | "Zoom Out At Point" | "Zoom In At Point" 
                     options.display.decimationFactor integer 
                      The decimation factor for publishing.  A factor of N means publish every Nth data payload. 
                         Required: true 
                         Default: 1 
                        
                     options.display.horizontalLines array 
                      An array of horizontal line definitions. 
                         Required: true 
                         Default: 
                        
                    []
 options.display.horizontalLines[n] object 
                      A horizontal line definition 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.horizontalLines[n].name string 
                      The name of the horizontal line.  This shows up in the plot legend on the front panel waveform chart. 
                         Required: true 
                         Default: "My Horizontal Line" 
                        
                     options.display.horizontalLines[n].yValue number 
                      The y-value of the horizontal line. 
                         Required: true 
                         Default: 10 
                        
                     options.display.plotProperties object 
                      An object where keys are plot names (form the acquisition.channels or horizontalLines definitions) and the values are objects with plot display properties. 
                         Required: true 
                         Default: 
                        
                    {}  options.display.plotProperties.{^.+$} object 
                      An object defining the plot properties. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.plotProperties.{^.+$}.visible boolean 
                      Whether the plot is visible in the chart. 
                         Required: true 
                         Default: true 
                        
                     options.display.plotProperties.{^.+$}.antiAlias boolean 
                      Whether the apply antiAliasing when rendering the plot. 
                         Required: true 
                         Default: true 
                        
                     options.display.plotProperties.{^.+$}.pointStyle enum (string) 
                      The point style to use for the plot. 
                         Required: true 
                         Default: "circleFull" 
                         Enum Items: "none" | "circleEmpty" | "circleFull" | "circleFullDot" | "circleEmptyDot" | "squareEmpty" | "squareFull" | "squareFullDot" | "squareEmptyDot" | "squareFullSmall" | "dot" | "cross" | "crossSmall" | "X" | "x" | "diamondFullDot" | "squareEmptySmall" 
                     options.display.plotProperties.{^.+$}.lineStyle enum (string) 
                      The line style to use for the plot. 
                         Required: true 
                         Default: "solid" 
                         Enum Items: "solid" | "dash" | "dot" | "dashdot" | "dashdotdot" 
                     options.display.plotProperties.{^.+$}.lineWidth enum (string) 
                      The line width to use for the plot. 
                         Required: true 
                         Default: "1" 
                         Enum Items: "0" | "1" | "2" | "3" | "4" | "5" 
                     options.display.plotProperties.{^.+$}.fillTo enum (string) 
                      The color fill approach to use for the plot.  For example, "below" would apply the line color to the area below the plot in the chart. 
                         Required: true 
                         Default: "none" 
                         Enum Items: "none" | "zero" | "below" | "above" 
                     options.display.plotProperties.{^.+$}.interpolation enum (string) 
                      The interpolation strategy to apply between points. 
                         Required: true 
                         Default: "none" 
                         Enum Items: "none" | "stepwiseVertical" | "linear" | "stepwiseHorizontal" | "stepwiseHorizontalCentered" | "stepwiseVerticalCentered" 
                     options.display.plotProperties.{^.+$}.lineColor objectstring 
                      The color to use for the plot line specified as an RGB value.  Specify this as either a string `auto` or an object with `r`, `g`, and `b` values. 
                         Required: true 
                         Default: "auto" 
                        
                     options.display.plotProperties.{^.+$}.pointColor objectstring 
                      The color to use for plot points specified as an RGB value. 
                         Required: true 
                         Default: "auto" 
                        
                     options.display.description object 
                      Defines how the description string on the interface will display, including its text, height in lines, justification, and font properties. 
                         Required: true 
                         Default: 
                        
                    {
    "text": "Acquisition Rate: @VAR{acquisition.sampling.rate} Hz",
    "height": 2,
    "justify": "Left",
    "font": {
        "name": "App Font",
        "size": 15,
        "bold": false,
        "italic": false,
        "underline": false,
        "strikethrough": false,
        "color": {
            "r": 0,
            "g": 0,
            "b": 0
        }
    }
}  options.display.description.text string 
                      The text to render in the description string on the interface.  This can use any acquisition configuration options with variables such as `@VAR{acquisition.sampling.rate}`. 
                         Required: true 
                         Default: "Acquisition Rate: @VAR{acquisition.sampling.rate} Hz" 
                        
                     options.display.description.height integer 
                      The height of the description section in lines. The minimum is 1. 
                         Required: true 
                         Default: 0 
                        
                     options.display.description.justify enum (string) 
                      The justification orientation of the text.  One of: Left, Center, Right. 
                         Required: true 
                         Default: "Left" 
                         Enum Items: "Left" | "Center" | "Right" 
                     options.display.description.font object 
                      Defines the font properties used to display the description text. 
                         Required: true 
                         Default: 
                        
                    {
    "name": "App Font",
    "size": 15,
    "bold": false,
    "italic": false,
    "underline": false,
    "strikethrough": false,
    "color": {
        "r": 0,
        "g": 0,
        "b": 0
    }
}  options.display.description.font.name string 
                      The name of the font to apply.  The available font names depend on the fonts installed with your operating system.  For example, `Arial` is often an installed font and should work here. 
                         Required: false 
                         Default: "App Font" 
                        
                     options.display.description.font.size integer 
                      The size of the font in pixels. 
                         Required: false 
                         Default: 0 
                        
                     options.display.description.font.bold boolean 
                      Whether to bold the font. 
                         Required: false 
                         Default: false 
                        
                     options.display.description.font.italic boolean 
                      Whether to italicize the font. 
                         Required: false 
                         Default: false 
                        
                     options.display.description.font.underline boolean 
                      Whether to underline the font. 
                         Required: false 
                         Default: false 
                        
                     options.display.description.font.strikethrough boolean 
                      Whether to strike through the font. 
                         Required: false 
                         Default: false 
                        
                     options.display.description.font.color object 
                      The font color defined as r, g, b. 
                         Required: false 
                         Default: (not specified; see any element defaults within) 
                        
                     options.display.description.font.color.r integer 
                      The red component of the RGB color definition. 
                         Required: false 
                         Default: 100 
                        
                     options.display.description.font.color.g integer 
                      The green component of the RGB color definition. 
                         Required: false 
                         Default: 100 
                        
                     options.display.description.font.color.b integer 
                      The blue component of the RGB color definition. 
                         Required: false 
                         Default: 100 
                        
                     options.publishing object 
                      An object defining if and how the plugin publishes data. 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.publishing.enable boolean 
                      Whether to enable publishing. 
                         Required: true 
                         Default: false 
                        
                     options.publishing.decimationFactor integer 
                      The decimation factor for publishing.  A factor of N means publish every Nth data payload. 
                         Required: true 
                         Default: 1 
                        
                     options.publishing.messageFormat object 
                      An object defining the published message format, if publishing is enabled.  Several variables are available for use in constructing the published message in a VAR variable container: instanceName (the name of the plugin instance), units (the units of the pressure measurement), channelsPerScan (the number of pressure channels measured on each scan), scanRate (the specified sampling rate), actualSamplingRate (the actual achieved sampling rate in hardware), temperature (the temperature returned from the Scanivalv), publishTime (the timestamp that the current message was published), acquisitionStartTime (the timestamp for the start of the acquisition), data (the data for each pressure channel), frameNumber (the number of samples acquired thus far for the current acquisition), and acquisitionStartTime (the time the acquisition started).  Note that timestamps are the number of seconds elapsed since 12:00 a.m., Friday, January 1, 1904, Universal Time [01-01-1904 00:00:00] 
                         Required: true 
                         Default: (not specified; see any element defaults within) 
                        
                     options.publishing.messageFormat.{^.+$} arraybooleanintegernumberobjectstring 
                      An element of data to publish. 
                         Required: false 
                         Default: 
                        
                    []
 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}, @VAR{instanceName}, @VAR{timestamp}, and @VAR{acquisition} which contains the entire acquisition object meaning you can index out individual properties such as @VAR{acquisition.sampling.readSamplesPerChannel} 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.FileNameFormat string 
                      The filename to use when creating log files.  Note: if the filesize limit is reached new files will be created with enumerated suffixes such as: MyLogFile-1.txt, MyLogFile-2.txt, etc. 
                         Required: true 
                         Default: "@VAR{instanceName}-@LOG{TIMESTAMP}.log" 
                        
                     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.StartLogFormat string 
                      The initial string to put into the log file when opened for the first time.  The variable @VAR{columnHeaders} is available here which contains the precise column headers CSV row based on the channelsPerScan setting. 
                         Required: true 
                         Default: "@VAR{columnHeaders}" 
                        
                     options.logger.EndLogFormat string 
                      The final string to put in the log file when closed. 
                         Required: true 
                         Default: "" 
                        
                     options.logger.LogEntryFormat string 
                      The format to use when writing log entries when errors are not present. 
                         Required: true 
                         Default: "\n@LOG{LOGMESSAGE}" 
                        
                     options.logger.ErrorLogEntryFormat string 
                      The message format used to construct error log entries. 
                         Required: true 
                         Default: "\n\n@LOG{ERRORMESSAGE}\n\n" 
                        
                     options.logger.TimestampFormat string 
                      The format used by the @LOG{TIMESTAMP} variable. 
                         Required: true 
                         Default: "%Y-%m-%d %H-%M-%S%3u" 
                        
                     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.showMenuBar boolean 
                      Whether the menu bar is visible. 
                         Required: true 
                         Default: false 
                        
                     panel.showToolBar boolean 
                      Whether the toolbar is visible. 
                         Required: true 
                         Default: false 
                        
                     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