{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"3.0",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-3.0.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "component": [
          {
            "@name":"DIS",
            "@level":1
          }
        ],
        "meta": [
          {
            "@name":"title",
            "@content":"RadioCommunicationsPrototypes.x3d"
          },
          {
            "@name":"creator",
            "@content":"Don Brutzman and Dave Laflam"
          },
          {
            "@name":"created",
            "@content":"7 December 2000"
          },
          {
            "@name":"modified",
            "@content":"20 October 2019"
          },
          {
            "@name":"warning",
            "@content":"under development. Need to fix url values in X3dToVrml97.xslt translation signatures, and check Savage CommunicationsAndSensors DIS examples."
          },
          {
            "@name":"description",
            "@content":"Prototype definitions for ReceiverPdu SignalPdu and TransmitterPdu, all of which share share RadioCommunicationsPduScriptNode class"
          },
          {
            "@name":"reference",
            "@content":"http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPrototypes.x3d"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypes.x3d"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"license",
            "@content":"../license.html"
          },
          {
            "@name":"translated",
            "@content":"02 September 2025"
          },
          {
            "@name":"generator",
            "@content":"X3dToJson.xslt, https://www.web3d.org/x3d/stylesheets/X3dToJson.html"
          },
          {
            "@name":"reference",
            "@content":"X3D JSON encoding: https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding"
          }
        ]
    },
    "Scene": {
        "-children":[
          {
            "#comment":"============================================================"
          },
          { "WorldInfo":
            {
              "@title":"RadioCommunicationsPrototypes.x3d"
            }
          },
          { "ProtoDeclare":
            {
              "@name":"ReceiverPdu",
              "ProtoInterface": {
                  "field": [
                    {
                      "@name":"whichGeometry",
                      "@accessType":"inputOutput",
                      "@appinfo":"set whichGeometry to -1 for no geometry 0 for text trace 1 for default geometry",
                      "@type":"SFInt32",
                      "@value":0
                    },
                    {
                      "@name":"bboxCenter",
                      "@accessType":"initializeOnly",
                      "@appinfo":"Bounding box center: position offset from origin of local coordinate system.",
                      "@type":"SFVec3f",
                      "@value":[0,0,0]
                    },
                    {
                      "@name":"bboxSize",
                      "@accessType":"initializeOnly",
                      "@appinfo":"Bounding box size: automatically calculated can be specified as an optimization or constraint.",
                      "@type":"SFVec3f",
                      "@value":[-1,-1,-1]
                    },
                    {
                      "@name":"readInterval",
                      "@accessType":"initializeOnly",
                      "@type":"SFTime",
                      "@value":0.1
                    },
                    {
                      "@name":"writeInterval",
                      "@accessType":"initializeOnly",
                      "@type":"SFTime",
                      "@value":1.0
                    },
                    {
                      "@name":"siteID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":14
                    },
                    {
                      "@name":"applicationID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":17
                    },
                    {
                      "@name":"entityID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":9
                    },
                    {
                      "@name":"address",
                      "@accessType":"initializeOnly",
                      "@type":"SFString",
                      "@value":"224.2.181.145"
                    },
                    {
                      "@name":"port",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":62040
                    },
                    {
                      "@name":"multicastRelayHost",
                      "@accessType":"initializeOnly",
                      "@type":"SFString",
                      "@value":"devo.cs.nps.navy.mil"
                    },
                    {
                      "@name":"multicastRelayPort",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":8010
                    },
                    {
                      "@name":"networkMode",
                      "@accessType":"inputOutput",
                      "@appinfo":"networkMode:&#10;standAlone (ignore network but still respond to local events)&#10;networkReader (listen to network as ghost entity)&#10;networkWriter (output to network as master entity at writeInterval)",
                      "@type":"SFString",
                      "@value":"standAlone"
                    },
                    {
                      "@name":"isStandAlone",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode standAlone (ignore network but still respond to local events) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"isMaster",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"isRemote",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"rtpHeaderExpected",
                      "@accessType":"initializeOnly",
                      "@type":"SFBool",
                      "@value":false
                    },
                    {
                      "@name":"isRtpHeaderHeard",
                      "@accessType":"outputOnly",
                      "@appinfo":"whether RTP header was found prepended to DIS packet",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"trace",
                      "@accessType":"initializeOnly",
                      "@type":"SFBool",
                      "@value":false
                    },
                    {
                      "@name":"active",
                      "@accessType":"outputOnly",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"timestamp",
                      "@accessType":"outputOnly",
                      "@type":"SFTime"
                    },
                    {
                      "@name":"radioID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"receivedPower",
                      "@accessType":"outputOnly",
                      "@type":"SFFloat"
                    },
                    {
                      "@name":"receiverState",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"transmitterSiteID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"transmitterApplicationID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"transmitterEntityID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"transmitterRadioID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    }
                  ],
                  "-children":[
                    {
                      "#comment":"Initialization fields"
                    },
                    {
                      "#comment":"Generic events"
                    },
                    {
                      "#comment":"RadioCommunicationsFamily events"
                    },
                    {
                      "#comment":"ReceiverPdu fields"
                    }
                  ]
              },
              "ProtoBody": {
                  "-children":[
                    {
                      "#comment":"First node inside a PrototypeDeclaration is the node type of the ProtoInstance"
                    },
                    { "Switch":
                      {
                        "@DEF":"ReceiverPduGeometrySwitch",
                        "@whichChoice":-1,
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"whichChoice",
                                "@protoField":"whichGeometry"
                              }
                            ]
                        },
                        "-children":[
                          {
                            "#comment":"whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry"
                          },
                          { "Group":
                            {
                              "-children":[
                                { "Viewpoint":
                                  {
                                    "@description":"Receiver Pdu Observer",
                                    "@position":[0,0,15]
                                  }
                                },
                                { "Group":
                                  {
                                    "-children":[
                                      { "Transform":
                                        {
                                          "@translation":[0,6,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@string":["Open Java Console to see PDU trace messages","Netscape..Communicator..Tools..Java Console"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@DEF":"FONT1",
                                                            "@justify":["MIDDLE","BEGIN"],
                                                            "@size":0.5
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0,0.4,0.8]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,4.75,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@string":["Receiver PDU values"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT1"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0,0.8,0.4]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,4,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@DEF":"ReceiverOutput1",
                                                      "@string":["Receiver output uninitialized"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT1"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0.8,0.8,0]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                },
                                { "Script":
                                  {
                                    "@DEF":"ReceiverOutputAssembler1",
                                    "-children":[
                                      {
                                        "#comment":"surprising limit on MFString: 10 strings"
                                      }
                                    ],
                                    "field": [
                                      {
                                        "@name":"messageResult",
                                        "@accessType":"outputOnly",
                                        "@type":"MFString"
                                      },
                                      {
                                        "@name":"active",
                                        "@accessType":"inputOnly",
                                        "@type":"SFBool"
                                      },
                                      {
                                        "@name":"timestamp",
                                        "@accessType":"inputOnly",
                                        "@type":"SFTime"
                                      },
                                      {
                                        "@name":"isRtpHeaderHeard",
                                        "@accessType":"inputOnly",
                                        "@type":"SFBool"
                                      },
                                      {
                                        "@name":"radioID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"receivedPower",
                                        "@accessType":"inputOnly",
                                        "@type":"SFFloat"
                                      },
                                      {
                                        "@name":"receiverState",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"transmitterSiteID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"transmitterApplicationID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"transmitterEntityID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"transmitterRadioID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      }
                                    ],
                                    "#sourceCode":[
"",
"",
"ecmascript:",
"",
"function initialize ()",
"{",
"\tvalue='awaiting PDU';",
"\tmessageResult  [0] = 'active=' + value;",
"\tmessageResult  [1] = 'timestamp=' + value;",
"\tmessageResult  [2] = 'isRtpHeaderHeard=' + value;",
"\tmessageResult  [3] = 'radioID=' + value;",
"\tmessageResult  [4] = 'receivedPower=' + value;",
"\tmessageResult  [5] = 'receiverState=' + value;",
"\tmessageResult  [6] = 'transmitterSiteID=' + value;",
"\tmessageResult  [7] = 'transmitterApplicationID=' + value;",
"\tmessageResult  [8] = 'transmitterEntityID=' + value;",
"\tmessageResult  [9] = 'transmitterRadioID=' + value;",
"}",
"function active \t\t\t(value, ts) { messageResult [0] = 'active=' + value; }",
"function timestamp\t\t\t(value, ts) { messageResult [1] = 'timestamp=' + value; }",
"function isRtpHeaderHeard\t\t(value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }",
"function radioID\t\t\t(value, ts) { messageResult [3] = 'radioID=' + value; }",
"function receivedPower\t\t\t(value, ts) { messageResult [4] = 'receiverPower=' + value; }",
"function receiverState\t\t\t(value, ts) { messageResult [5] = 'receiverState=' + value; }",
"function transmitterSiteID\t\t(value, ts) { messageResult [6] = 'transmitterSiteID=' + value; }",
"function transmitterApplicationID\t(value, ts) { messageResult [7] = 'transmitterApplicationID=' + value; }",
"function transmitterEntityID\t\t(value, ts) { messageResult [8] = 'transmitterEntityID=' + value; }",
"function transmitterRadioID \t\t(value, ts) { messageResult [9] = 'transmitterRadioID=' + value; }",
"",
""
]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "#comment":"The Script follows the Switch, since the first node in the file determines the node type of this prototype"
                    },
                    {
                      "#comment":"Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct"
                    },
                    {
                      "#comment":"Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI)"
                    },
                    { "Script":
                      {
                        "@DEF":"ReceiverPduScriptNode",
                        "@mustEvaluate":true,
                        "@url":["RadioCommunicationsPduScriptNode.class","http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class"],
                        "-children":[
                          {
                            "#comment":"Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu"
                          },
                          {
                            "#comment":"Initialization fields"
                          },
                          {
                            "#comment":"Generic events"
                          },
                          {
                            "#comment":"RadioCommunicationsFamily events"
                          },
                          {
                            "#comment":"SignalPdu fields"
                          }
                        ],
                        "field": [
                          {
                            "@name":"radioPduType",
                            "@accessType":"initializeOnly",
                            "@type":"SFString",
                            "@value":"ReceiverPdu"
                          },
                          {
                            "@name":"readInterval",
                            "@accessType":"initializeOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"writeInterval",
                            "@accessType":"initializeOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"siteID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"applicationID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"entityID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"address",
                            "@accessType":"initializeOnly",
                            "@type":"SFString"
                          },
                          {
                            "@name":"port",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"multicastRelayHost",
                            "@accessType":"initializeOnly",
                            "@type":"SFString"
                          },
                          {
                            "@name":"multicastRelayPort",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"rtpHeaderExpected",
                            "@accessType":"initializeOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"trace",
                            "@accessType":"initializeOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"update",
                            "@accessType":"inputOnly",
                            "@appinfo":"update is triggered by local TimeSensor clocks to allow regular read/write",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"active",
                            "@accessType":"outputOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"timestamp",
                            "@accessType":"outputOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"isRtpHeaderHeard",
                            "@accessType":"outputOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"radioID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"receivedPower",
                            "@accessType":"outputOnly",
                            "@type":"SFFloat"
                          },
                          {
                            "@name":"receiverState",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"transmitterSiteID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"transmitterApplicationID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"transmitterEntityID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"transmitterRadioID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          }
                        ],
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"readInterval",
                                "@protoField":"readInterval"
                              },
                              {
                                "@nodeField":"writeInterval",
                                "@protoField":"writeInterval"
                              },
                              {
                                "@nodeField":"siteID",
                                "@protoField":"siteID"
                              },
                              {
                                "@nodeField":"applicationID",
                                "@protoField":"applicationID"
                              },
                              {
                                "@nodeField":"entityID",
                                "@protoField":"entityID"
                              },
                              {
                                "@nodeField":"address",
                                "@protoField":"address"
                              },
                              {
                                "@nodeField":"port",
                                "@protoField":"port"
                              },
                              {
                                "@nodeField":"multicastRelayHost",
                                "@protoField":"multicastRelayHost"
                              },
                              {
                                "@nodeField":"multicastRelayPort",
                                "@protoField":"multicastRelayPort"
                              },
                              {
                                "@nodeField":"rtpHeaderExpected",
                                "@protoField":"rtpHeaderExpected"
                              },
                              {
                                "@nodeField":"trace",
                                "@protoField":"trace"
                              },
                              {
                                "@nodeField":"active",
                                "@protoField":"active"
                              },
                              {
                                "@nodeField":"timestamp",
                                "@protoField":"timestamp"
                              },
                              {
                                "@nodeField":"isRtpHeaderHeard",
                                "@protoField":"isRtpHeaderHeard"
                              },
                              {
                                "@nodeField":"radioID",
                                "@protoField":"radioID"
                              },
                              {
                                "@nodeField":"receivedPower",
                                "@protoField":"receivedPower"
                              },
                              {
                                "@nodeField":"receiverState",
                                "@protoField":"receiverState"
                              },
                              {
                                "@nodeField":"transmitterSiteID",
                                "@protoField":"transmitterSiteID"
                              },
                              {
                                "@nodeField":"transmitterApplicationID",
                                "@protoField":"transmitterApplicationID"
                              },
                              {
                                "@nodeField":"transmitterEntityID",
                                "@protoField":"transmitterEntityID"
                              },
                              {
                                "@nodeField":"transmitterRadioID",
                                "@protoField":"transmitterRadioID"
                              }
                            ]
                        }
                      }
                    },
                    {
                      "#comment":"Clocks stimulate the processEvents() method in the Script code, resulting in DIS PDU reads/writes. The 'update' eventIn is implicit (i.e. no corresponding Java method is needed)."
                    },
                    { "TimeSensor":
                      {
                        "@DEF":"ReceiverPduReadIntervalClock",
                        "@loop":true
                      }
                    },
                    { "TimeSensor":
                      {
                        "@DEF":"ReceiverPduWriteIntervalClock",
                        "@enabled":false,
                        "@loop":true
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cycleTime",
                        "@fromNode":"ReceiverPduReadIntervalClock",
                        "@toField":"update",
                        "@toNode":"ReceiverPduScriptNode"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cycleTime",
                        "@fromNode":"ReceiverPduWriteIntervalClock",
                        "@toField":"update",
                        "@toNode":"ReceiverPduScriptNode"
                      }
                    },
                    {
                      "#comment":"These ROUTEs connect the PDU Script node to the geometryChoice=0 text output"
                    },
                    { "ROUTE":
                      {
                        "@fromField":"active",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"active",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"timestamp",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"timestamp",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"isRtpHeaderHeard",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"isRtpHeaderHeard",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioID",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"radioID",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"receivedPower",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"receivedPower",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"receiverState",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"receiverState",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"transmitterSiteID",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"transmitterSiteID",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"transmitterApplicationID",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"transmitterApplicationID",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"transmitterEntityID",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"transmitterEntityID",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"transmitterRadioID",
                        "@fromNode":"ReceiverPduScriptNode",
                        "@toField":"transmitterRadioID",
                        "@toNode":"ReceiverOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"messageResult",
                        "@fromNode":"ReceiverOutputAssembler1",
                        "@toField":"string",
                        "@toNode":"ReceiverOutput1"
                      }
                    },
                    {
                      "#comment":"ROUTEs for further geometry representations go here"
                    }
                  ]
              }
            }
          },
          {
            "#comment":"============================================================"
          },
          { "ProtoDeclare":
            {
              "@name":"SignalPdu",
              "ProtoInterface": {
                  "-children":[
                    {
                      "#comment":"set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry"
                    },
                    {
                      "#comment":"Initialization fields"
                    },
                    {
                      "#comment":"Generic events"
                    },
                    {
                      "#comment":"RadioCommunicationsFamily events"
                    },
                    {
                      "#comment":"SignalPdu fields"
                    }
                  ],
                  "field": [
                    {
                      "@name":"whichGeometry",
                      "@accessType":"inputOutput",
                      "@type":"SFInt32",
                      "@value":0
                    },
                    {
                      "@name":"bboxCenter",
                      "@accessType":"initializeOnly",
                      "@appinfo":"Bounding box center: position offset from origin of local coordinate system.",
                      "@type":"SFVec3f",
                      "@value":[0,0,0]
                    },
                    {
                      "@name":"bboxSize",
                      "@accessType":"initializeOnly",
                      "@appinfo":"Bounding box size: automatically calculated can be specified as an optimization or constraint.",
                      "@type":"SFVec3f",
                      "@value":[-1,-1,-1]
                    },
                    {
                      "@name":"readInterval",
                      "@accessType":"initializeOnly",
                      "@type":"SFTime",
                      "@value":0.1
                    },
                    {
                      "@name":"writeInterval",
                      "@accessType":"initializeOnly",
                      "@type":"SFTime",
                      "@value":1.0
                    },
                    {
                      "@name":"siteID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":14
                    },
                    {
                      "@name":"applicationID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":17
                    },
                    {
                      "@name":"entityID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":9
                    },
                    {
                      "@name":"address",
                      "@accessType":"initializeOnly",
                      "@type":"SFString",
                      "@value":"224.2.181.145"
                    },
                    {
                      "@name":"port",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":62040
                    },
                    {
                      "@name":"multicastRelayHost",
                      "@accessType":"initializeOnly",
                      "@type":"SFString",
                      "@value":"devo.cs.nps.navy.mil"
                    },
                    {
                      "@name":"multicastRelayPort",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":8010
                    },
                    {
                      "@name":"networkMode",
                      "@accessType":"inputOutput",
                      "@appinfo":"networkMode:&#10;standAlone (ignore network but still respond to local events)&#10;networkReader (listen to network as ghost entity)&#10;networkWriter (output to network as master entity at writeInterval)",
                      "@type":"SFString",
                      "@value":"standAlone"
                    },
                    {
                      "@name":"isStandAlone",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode standAlone (ignore network but still respond to local events) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"isMaster",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"isRemote",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"rtpHeaderExpected",
                      "@accessType":"initializeOnly",
                      "@type":"SFBool",
                      "@value":false
                    },
                    {
                      "@name":"isRtpHeaderHeard",
                      "@accessType":"outputOnly",
                      "@appinfo":"whether RTP header was found prepended to DIS packet",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"trace",
                      "@accessType":"initializeOnly",
                      "@type":"SFBool",
                      "@value":false
                    },
                    {
                      "@name":"active",
                      "@accessType":"outputOnly",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"timestamp",
                      "@accessType":"outputOnly",
                      "@type":"SFTime"
                    },
                    {
                      "@name":"radioID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"encodingScheme",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"tdlType",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"sampleRate",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"samples",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"dataLength",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data00",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data01",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data02",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data03",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data04",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data05",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data06",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data07",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data08",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data09",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"data10",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    }
                  ]
              },
              "ProtoBody": {
                  "-children":[
                    {
                      "#comment":"First node inside a PrototypeDeclaration is the node type of the ProtoInstance"
                    },
                    { "Switch":
                      {
                        "@DEF":"SignalPduGeometrySwitch",
                        "@whichChoice":-1,
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"whichChoice",
                                "@protoField":"whichGeometry"
                              }
                            ]
                        },
                        "-children":[
                          {
                            "#comment":"whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry"
                          },
                          { "Group":
                            {
                              "-children":[
                                { "Viewpoint":
                                  {
                                    "@description":"Signal Pdu Observer",
                                    "@position":[0,0,15]
                                  }
                                },
                                { "Group":
                                  {
                                    "-children":[
                                      { "Transform":
                                        {
                                          "@translation":[0,6,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@string":["Open Java Console to see PDU trace messages","Netscape..Communicator..Tools..Java Console"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@DEF":"FONT2",
                                                            "@justify":["MIDDLE","BEGIN"],
                                                            "@size":0.5
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0,0.4,0.8]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,4.75,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@string":["Signal PDU values"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT2"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0,0.8,0.4]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,4,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@DEF":"SignalOutput1",
                                                      "@string":["Signal Output1 unset"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT2"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "@DEF":"YellowAppearance2",
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0.8,0.8,0]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,-1,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@DEF":"SignalOutput2",
                                                      "@string":["Signal Output2 unset"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT2"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "@USE":"YellowAppearance2"
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                },
                                { "Script":
                                  {
                                    "@DEF":"SignalOutputAssembler1",
                                    "-children":[
                                      {
                                        "#comment":"surprising limit on MFString: 10 strings"
                                      }
                                    ],
                                    "field": [
                                      {
                                        "@name":"messageResult",
                                        "@accessType":"outputOnly",
                                        "@type":"MFString"
                                      },
                                      {
                                        "@name":"active",
                                        "@accessType":"inputOnly",
                                        "@type":"SFBool"
                                      },
                                      {
                                        "@name":"timestamp",
                                        "@accessType":"inputOnly",
                                        "@type":"SFTime"
                                      },
                                      {
                                        "@name":"isRtpHeaderHeard",
                                        "@accessType":"inputOnly",
                                        "@type":"SFBool"
                                      },
                                      {
                                        "@name":"radioID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"encodingScheme",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"tdlType",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"sampleRate",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"samples",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"dataLength",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data00",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      }
                                    ],
                                    "#sourceCode":[
"",
"",
"ecmascript:",
"",
"function initialize ()",
"{",
"\tvalue='awaiting PDU';",
"\tmessageResult  [0] = 'active=' + value;",
"\tmessageResult  [1] = 'timestamp=' + value;",
"\tmessageResult  [2] = 'isRtpHeaderHeard=' + value;",
"\tmessageResult  [3] = 'radioID=' + value;",
"\tmessageResult  [4] = 'encodingScheme=' + value;",
"\tmessageResult  [5] = 'tdlType=' + value;",
"\tmessageResult  [6] = 'sampleRate=' + value;",
"\tmessageResult  [7] = 'samples=' + value;",
"\tmessageResult  [8] = 'dataLength=' + value;",
"\tmessageResult  [9] = 'data00=' + value;",
"}",
"function active \t(value, ts) { messageResult [0] = 'active=' + value; }",
"function timestamp\t(value, ts) { messageResult [1] = 'timestamp=' + value; }",
"function isRtpHeaderHeard\t(value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }",
"function radioID\t(value, ts) { messageResult [3] = 'radioID=' + value; }",
"function encodingScheme\t(value, ts) { messageResult [4] = 'encodingScheme=' + value; }",
"function tdlType\t(value, ts) { messageResult [5] = 'tdlType=' + value; }",
"function sampleRate\t(value, ts) { messageResult [6] = 'sampleRate=' + value; }",
"function samples\t(value, ts) { messageResult [7] = 'samples=' + value; }",
"function dataLength\t(value, ts) { messageResult [8] = 'dataLength=' + value; }",
"function data00  \t(value, ts) { messageResult [9] = 'data00=' + value; }",
"",
""
]
                                  }
                                },
                                { "Script":
                                  {
                                    "@DEF":"SignalOutputAssembler2",
                                    "field": [
                                      {
                                        "@name":"messageResult",
                                        "@accessType":"outputOnly",
                                        "@type":"MFString"
                                      },
                                      {
                                        "@name":"data01",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data02",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data03",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data04",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data05",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data06",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data07",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data08",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data09",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"data10",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      }
                                    ],
                                    "#sourceCode":[
"",
"",
"ecmascript:",
"",
"function initialize ()",
"{",
"\tmessageResult [0] = 'data01=' + value;",
"\tmessageResult [1] = 'data02=' + value;",
"\tmessageResult [2] = 'data03=' + value;",
"\tmessageResult [3] = 'data04=' + value;",
"\tmessageResult [4] = 'data05=' + value;",
"\tmessageResult [5] = 'data06=' + value;",
"\tmessageResult [6] = 'data07=' + value;",
"\tmessageResult [7] = 'data08=' + value;",
"\tmessageResult [8] = 'data09=' + value;",
"\tmessageResult [9] = 'data10=' + value;",
"}",
"function data01 \t(value, ts) { messageResult [0] = 'data01=' + value; }",
"function data02 \t(value, ts) { messageResult [1] = 'data02=' + value; }",
"function data03 \t(value, ts) { messageResult [2] = 'data03=' + value; }",
"function data04 \t(value, ts) { messageResult [3] = 'data04=' + value; }",
"function data05 \t(value, ts) { messageResult [4] = 'data05=' + value; }",
"function data06 \t(value, ts) { messageResult [5] = 'data06=' + value; }",
"function data07 \t(value, ts) { messageResult [6] = 'data07=' + value; }",
"function data08 \t(value, ts) { messageResult [7] = 'data08=' + value; }",
"function data09 \t(value, ts) { messageResult [8] = 'data09=' + value; }",
"function data10 \t(value, ts) { messageResult [9] = 'data10=' + value; }",
"",
""
]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "#comment":"The Script follows the Switch, since the first node in the file determines the node type of this prototype"
                    },
                    {
                      "#comment":"Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct"
                    },
                    {
                      "#comment":"Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI)"
                    },
                    { "Script":
                      {
                        "@DEF":"SignalPduScriptNode",
                        "@mustEvaluate":true,
                        "@url":["RadioCommunicationsPduScriptNode.class","http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class"],
                        "-children":[
                          {
                            "#comment":"Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu"
                          },
                          {
                            "#comment":"Initialization fields"
                          },
                          {
                            "#comment":"Generic events"
                          },
                          {
                            "#comment":"RadioCommunicationsFamily events"
                          },
                          {
                            "#comment":"SignalPdu fields"
                          }
                        ],
                        "field": [
                          {
                            "@name":"radioPduType",
                            "@accessType":"initializeOnly",
                            "@type":"SFString",
                            "@value":"SignalPdu"
                          },
                          {
                            "@name":"readInterval",
                            "@accessType":"initializeOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"writeInterval",
                            "@accessType":"initializeOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"siteID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"applicationID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"entityID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"address",
                            "@accessType":"initializeOnly",
                            "@type":"SFString"
                          },
                          {
                            "@name":"port",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"multicastRelayHost",
                            "@accessType":"initializeOnly",
                            "@type":"SFString"
                          },
                          {
                            "@name":"multicastRelayPort",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"rtpHeaderExpected",
                            "@accessType":"initializeOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"trace",
                            "@accessType":"initializeOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"update",
                            "@accessType":"inputOnly",
                            "@appinfo":"update is triggered by local TimeSensor clocks to allow regular read/write",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"active",
                            "@accessType":"outputOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"timestamp",
                            "@accessType":"outputOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"isRtpHeaderHeard",
                            "@accessType":"outputOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"radioID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"encodingScheme",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"tdlType",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"sampleRate",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"samples",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"dataLength",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data00",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data01",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data02",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data03",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data04",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data05",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data06",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data07",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data08",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data09",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"data10",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          }
                        ],
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"readInterval",
                                "@protoField":"readInterval"
                              },
                              {
                                "@nodeField":"writeInterval",
                                "@protoField":"writeInterval"
                              },
                              {
                                "@nodeField":"siteID",
                                "@protoField":"siteID"
                              },
                              {
                                "@nodeField":"applicationID",
                                "@protoField":"applicationID"
                              },
                              {
                                "@nodeField":"entityID",
                                "@protoField":"entityID"
                              },
                              {
                                "@nodeField":"address",
                                "@protoField":"address"
                              },
                              {
                                "@nodeField":"port",
                                "@protoField":"port"
                              },
                              {
                                "@nodeField":"multicastRelayHost",
                                "@protoField":"multicastRelayHost"
                              },
                              {
                                "@nodeField":"multicastRelayPort",
                                "@protoField":"multicastRelayPort"
                              },
                              {
                                "@nodeField":"rtpHeaderExpected",
                                "@protoField":"rtpHeaderExpected"
                              },
                              {
                                "@nodeField":"trace",
                                "@protoField":"trace"
                              },
                              {
                                "@nodeField":"active",
                                "@protoField":"active"
                              },
                              {
                                "@nodeField":"timestamp",
                                "@protoField":"timestamp"
                              },
                              {
                                "@nodeField":"isRtpHeaderHeard",
                                "@protoField":"isRtpHeaderHeard"
                              },
                              {
                                "@nodeField":"radioID",
                                "@protoField":"radioID"
                              },
                              {
                                "@nodeField":"encodingScheme",
                                "@protoField":"encodingScheme"
                              },
                              {
                                "@nodeField":"tdlType",
                                "@protoField":"tdlType"
                              },
                              {
                                "@nodeField":"sampleRate",
                                "@protoField":"sampleRate"
                              },
                              {
                                "@nodeField":"samples",
                                "@protoField":"samples"
                              },
                              {
                                "@nodeField":"dataLength",
                                "@protoField":"dataLength"
                              },
                              {
                                "@nodeField":"data00",
                                "@protoField":"data00"
                              },
                              {
                                "@nodeField":"data01",
                                "@protoField":"data01"
                              },
                              {
                                "@nodeField":"data02",
                                "@protoField":"data02"
                              },
                              {
                                "@nodeField":"data03",
                                "@protoField":"data03"
                              },
                              {
                                "@nodeField":"data04",
                                "@protoField":"data04"
                              },
                              {
                                "@nodeField":"data05",
                                "@protoField":"data05"
                              },
                              {
                                "@nodeField":"data06",
                                "@protoField":"data06"
                              },
                              {
                                "@nodeField":"data07",
                                "@protoField":"data07"
                              },
                              {
                                "@nodeField":"data08",
                                "@protoField":"data08"
                              },
                              {
                                "@nodeField":"data09",
                                "@protoField":"data09"
                              },
                              {
                                "@nodeField":"data10",
                                "@protoField":"data10"
                              }
                            ]
                        }
                      }
                    },
                    {
                      "#comment":"Clocks stimulate the processEvents() method in the Script code, resulting in DIS PDU reads/writes. The 'update' eventIn is implicit (i.e. no corresponding Java method is needed)."
                    },
                    { "TimeSensor":
                      {
                        "@DEF":"SignalPduReadIntervalClock",
                        "@loop":true
                      }
                    },
                    { "TimeSensor":
                      {
                        "@DEF":"SignalPduWriteIntervalClock",
                        "@enabled":false,
                        "@loop":true
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cycleTime",
                        "@fromNode":"SignalPduReadIntervalClock",
                        "@toField":"update",
                        "@toNode":"SignalPduScriptNode"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cycleTime",
                        "@fromNode":"SignalPduWriteIntervalClock",
                        "@toField":"update",
                        "@toNode":"SignalPduScriptNode"
                      }
                    },
                    {
                      "#comment":"These ROUTEs connect the PDU Script node to the geometryChoice=0 text output"
                    },
                    { "ROUTE":
                      {
                        "@fromField":"active",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"active",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"timestamp",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"timestamp",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"isRtpHeaderHeard",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"isRtpHeaderHeard",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioID",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"radioID",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"encodingScheme",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"encodingScheme",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"tdlType",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"tdlType",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"sampleRate",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"sampleRate",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"samples",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"samples",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"dataLength",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"dataLength",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data00",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data00",
                        "@toNode":"SignalOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data01",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data01",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data02",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data02",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data03",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data03",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data04",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data04",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data05",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data05",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data06",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data06",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data07",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data07",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data08",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data08",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data09",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data09",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"data10",
                        "@fromNode":"SignalPduScriptNode",
                        "@toField":"data10",
                        "@toNode":"SignalOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"messageResult",
                        "@fromNode":"SignalOutputAssembler1",
                        "@toField":"string",
                        "@toNode":"SignalOutput1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"messageResult",
                        "@fromNode":"SignalOutputAssembler2",
                        "@toField":"string",
                        "@toNode":"SignalOutput2"
                      }
                    },
                    {
                      "#comment":"ROUTEs for further geometry representations go here"
                    }
                  ]
              }
            }
          },
          {
            "#comment":"============================================================"
          },
          { "ProtoDeclare":
            {
              "@name":"TransmitterPdu",
              "ProtoInterface": {
                  "-children":[
                    {
                      "#comment":"set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry"
                    },
                    {
                      "#comment":"Initialization fields"
                    },
                    {
                      "#comment":"Generic events"
                    },
                    {
                      "#comment":"RadioCommunicationsFamily events"
                    },
                    {
                      "#comment":"TransmitterPdu fields"
                    }
                  ],
                  "field": [
                    {
                      "@name":"whichGeometry",
                      "@accessType":"inputOutput",
                      "@type":"SFInt32",
                      "@value":0
                    },
                    {
                      "@name":"bboxCenter",
                      "@accessType":"initializeOnly",
                      "@appinfo":"Bounding box center: position offset from origin of local coordinate system.",
                      "@type":"SFVec3f",
                      "@value":[0,0,0]
                    },
                    {
                      "@name":"bboxSize",
                      "@accessType":"initializeOnly",
                      "@appinfo":"Bounding box size: automatically calculated can be specified as an optimization or constraint.",
                      "@type":"SFVec3f",
                      "@value":[-1,-1,-1]
                    },
                    {
                      "@name":"readInterval",
                      "@accessType":"initializeOnly",
                      "@type":"SFTime",
                      "@value":0.1
                    },
                    {
                      "@name":"writeInterval",
                      "@accessType":"initializeOnly",
                      "@type":"SFTime",
                      "@value":1.0
                    },
                    {
                      "@name":"siteID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":14
                    },
                    {
                      "@name":"applicationID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":17
                    },
                    {
                      "@name":"entityID",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":9
                    },
                    {
                      "@name":"address",
                      "@accessType":"initializeOnly",
                      "@type":"SFString",
                      "@value":"224.2.181.145"
                    },
                    {
                      "@name":"port",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":62040
                    },
                    {
                      "@name":"multicastRelayHost",
                      "@accessType":"initializeOnly",
                      "@type":"SFString",
                      "@value":"devo.cs.nps.navy.mil"
                    },
                    {
                      "@name":"multicastRelayPort",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":8010
                    },
                    {
                      "@name":"networkMode",
                      "@accessType":"inputOutput",
                      "@appinfo":"networkMode:&#10;standAlone (ignore network but still respond to local events)&#10;networkReader (listen to network as ghost entity)&#10;networkWriter (output to network as master entity at writeInterval)",
                      "@type":"SFString",
                      "@value":"standAlone"
                    },
                    {
                      "@name":"isStandAlone",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode standAlone (ignore network but still respond to local events) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"isMaster",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"isRemote",
                      "@accessType":"outputOnly",
                      "@appinfo":"Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"rtpHeaderExpected",
                      "@accessType":"initializeOnly",
                      "@type":"SFBool",
                      "@value":false
                    },
                    {
                      "@name":"isRtpHeaderHeard",
                      "@accessType":"outputOnly",
                      "@appinfo":"whether RTP header was found prepended to DIS packet",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"trace",
                      "@accessType":"initializeOnly",
                      "@type":"SFBool",
                      "@value":false
                    },
                    {
                      "@name":"active",
                      "@accessType":"outputOnly",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"timestamp",
                      "@accessType":"outputOnly",
                      "@type":"SFTime"
                    },
                    {
                      "@name":"radioID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"antennaLocation",
                      "@accessType":"outputOnly",
                      "@type":"SFVec3f"
                    },
                    {
                      "@name":"antennaPatternLength",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"antennaPatternType",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"cryptoKeyID",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"cryptoSytem",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"frequency",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"inputSource",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"lengthOfModulationParameters",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"modulationTypeDetail",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"modulationTypeMajor",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"modulationTypeSpreadSpectrum",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"modulationTypeSystem",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"power",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"radioEntityTypeCategory",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"radioEntityTypeCountry",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"radioEntityTypeDomain",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"radioEntityTypeKind",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"radioEntityTypeNomenclature",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"radioEntityTypeNomenclatureVersion",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"relativeAntennaLocation",
                      "@accessType":"outputOnly",
                      "@type":"SFVec3f"
                    },
                    {
                      "@name":"transmitFrequencyBandwidth",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    },
                    {
                      "@name":"transmitState",
                      "@accessType":"outputOnly",
                      "@type":"SFInt32"
                    }
                  ]
              },
              "ProtoBody": {
                  "-children":[
                    {
                      "#comment":"First node inside a PrototypeDeclaration is the node type of the ProtoInstance"
                    },
                    { "Switch":
                      {
                        "@DEF":"TransmitterPduGeometrySwitch",
                        "@whichChoice":-1,
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"whichChoice",
                                "@protoField":"whichGeometry"
                              }
                            ]
                        },
                        "-children":[
                          {
                            "#comment":"whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry"
                          },
                          { "Group":
                            {
                              "-children":[
                                { "Viewpoint":
                                  {
                                    "@description":"Transmitter Pdu Observer",
                                    "@position":[0,0,15]
                                  }
                                },
                                { "Group":
                                  {
                                    "-children":[
                                      { "Transform":
                                        {
                                          "@translation":[0,6,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@string":["Open Java Console to see PDU trace messages","Netscape..Communicator..Tools..Java Console"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@DEF":"FONT3",
                                                            "@justify":["MIDDLE","BEGIN"],
                                                            "@size":0.5
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0,0.4,0.8]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,4.75,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@string":["Transmitter PDU values"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT3"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0,0.8,0.4]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,4,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@DEF":"TransmitterOutput1",
                                                      "@string":["Transmitter Output1 unset"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT3"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "@DEF":"YellowAppearance3",
                                                      "-material":
                                                        { "Material":
                                                          {
                                                            "@diffuseColor":[0.8,0.8,0]
                                                          }
                                                        }
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,-1,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@DEF":"TransmitterOutput2",
                                                      "@string":["Transmitter Output2 unset"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT3"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "@USE":"YellowAppearance3"
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      { "Transform":
                                        {
                                          "@translation":[0,-6,0],
                                          "-children":[
                                            { "Shape":
                                              {
                                                "-geometry":
                                                  { "Text":
                                                    {
                                                      "@DEF":"TransmitterOutput3",
                                                      "@string":["Transmitter Output2 unset"],
                                                      "-fontStyle":
                                                        { "FontStyle":
                                                          {
                                                            "@USE":"FONT3"
                                                          }
                                                        }
                                                    }
                                                  },
                                                "-appearance":
                                                  { "Appearance":
                                                    {
                                                      "@USE":"YellowAppearance3"
                                                    }
                                                  }
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                },
                                { "Script":
                                  {
                                    "@DEF":"TransmitterOutputAssembler1",
                                    "-children":[
                                      {
                                        "#comment":"surprising limit on MFString: 10 strings"
                                      }
                                    ],
                                    "field": [
                                      {
                                        "@name":"messageResult",
                                        "@accessType":"outputOnly",
                                        "@type":"MFString"
                                      },
                                      {
                                        "@name":"active",
                                        "@accessType":"inputOnly",
                                        "@type":"SFBool"
                                      },
                                      {
                                        "@name":"timestamp",
                                        "@accessType":"inputOnly",
                                        "@type":"SFTime"
                                      },
                                      {
                                        "@name":"isRtpHeaderHeard",
                                        "@accessType":"inputOnly",
                                        "@type":"SFBool"
                                      },
                                      {
                                        "@name":"radioID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"antennaLocation",
                                        "@accessType":"inputOnly",
                                        "@type":"SFVec3f"
                                      },
                                      {
                                        "@name":"antennaPatternLength",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"antennaPatternType",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"cryptoKeyID",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"cryptoSytem",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"frequency",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      }
                                    ],
                                    "#sourceCode":[
"",
"",
"ecmascript:",
"",
"function initialize ()",
"{",
"\tvalue='awaiting PDU';",
"\tmessageResult  [0] = 'active=' + value;",
"\tmessageResult  [1] = 'timestamp=' + value;",
"\tmessageResult  [2] = 'isRtpHeaderHeard=' + value;",
"\tmessageResult  [3] = 'radioID=' + value;",
"\tmessageResult  [4] = 'antennaLocation=' + value;",
"\tmessageResult  [5] = 'antennaPatternLength=' + value;",
"\tmessageResult  [6] = 'antennaPatternType=' + value;",
"\tmessageResult  [7] = 'cryptoKeyID=' + value;",
"\tmessageResult  [8] = 'cryptoSytem=' + value;",
"\tmessageResult  [9] = 'frequency=' + value;",
"}",
"function active \t\t(value, ts) { messageResult [0] = 'active=' + value; }",
"function timestamp\t\t(value, ts) { messageResult [1] = 'timestamp=' + value; }",
"function isRtpHeaderHeard\t\t(value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }",
"function radioID\t\t(value, ts) { messageResult [3] = 'radioID=' + value; }",
"function antennaLocation\t(value, ts) { messageResult [4] = 'antennaLocation=' + value; }",
"function antennaPatternLength\t(value, ts) { messageResult [5] = 'antennaPatternLength=' + value; }",
"function antennaPatternType\t(value, ts) { messageResult [6] = 'antennaPatternType=' + value; }",
"function cryptoKeyID\t\t(value, ts) { messageResult [7] = 'cryptoKeyID=' + value; }",
"function cryptoSytem\t\t(value, ts) { messageResult [8] = 'cryptoSytem=' + value; }",
"function frequency  \t\t(value, ts) { messageResult [9] = 'frequency=' + value; }",
"",
""
]
                                  }
                                },
                                { "Script":
                                  {
                                    "@DEF":"TransmitterOutputAssembler2",
                                    "field": [
                                      {
                                        "@name":"messageResult",
                                        "@accessType":"outputOnly",
                                        "@type":"MFString"
                                      },
                                      {
                                        "@name":"inputSource",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"lengthOfModulationParameters",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"modulationTypeDetail",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"modulationTypeMajor",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"modulationTypeSpreadSpectrum",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"modulationTypeSystem",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"power",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"radioEntityTypeCategory",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"radioEntityTypeCountry",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"radioEntityTypeDomain",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      }
                                    ],
                                    "#sourceCode":[
"",
"",
"ecmascript:",
"",
"function initialize ()",
"{",
"\tmessageResult [0] = 'inputSource=' + value;",
"\tmessageResult [1] = 'lengthOfModulationParameters=' + value;",
"\tmessageResult [2] = 'modulationTypeDetail=' + value;",
"\tmessageResult [3] = 'modulationTypeMajor=' + value;",
"\tmessageResult [4] = 'modulationTypeSpreadSpectrum=' + value;",
"\tmessageResult [5] = 'modulationTypeSystem=' + value;",
"\tmessageResult [6] = 'power=' + value;",
"\tmessageResult [7] = 'radioEntityTypeCategory=' + value;",
"\tmessageResult [8] = 'radioEntityTypeCountry=' + value;",
"\tmessageResult [9] = 'radioEntityTypeDomain=' + value;",
"}",
"function inputSource \t\t\t(value, ts) { messageResult [0] = 'inputSource=' + value; }",
"function lengthOfModulationParameters \t(value, ts) { messageResult [1] = 'lengthOfModulationParameters=' + value; }",
"function modulationTypeDetail\t\t(value, ts) { messageResult [2] = 'modulationTypeDetail=' + value; }",
"function modulationTypeMajor \t\t(value, ts) { messageResult [3] = 'modulationTypeMajor=' + value; }",
"function modulationTypeSpreadSpectrum \t(value, ts) { messageResult [4] = 'modulationTypeSpreadSpectrum=' + value; }",
"function modulationTypeSystem\t\t(value, ts) { messageResult [5] = 'modulationTypeSystem=' + value; }",
"function power\t \t\t\t(value, ts) { messageResult [6] = 'power=' + value; }",
"function radioEntityTypeCategory \t(value, ts) { messageResult [7] = 'radioEntityTypeCategory=' + value; }",
"function radioEntityTypeCountry \t(value, ts) { messageResult [8] = 'radioEntityTypeCountry=' + value; }",
"function radioEntityTypeDomain \t\t(value, ts) { messageResult [9] = 'radioEntityTypeDomain=' + value; }",
"",
""
]
                                  }
                                },
                                { "Script":
                                  {
                                    "@DEF":"TransmitterOutputAssembler3",
                                    "field": [
                                      {
                                        "@name":"messageResult",
                                        "@accessType":"outputOnly",
                                        "@type":"MFString"
                                      },
                                      {
                                        "@name":"radioEntityTypeKind",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"radioEntityTypeNomenclature",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"radioEntityTypeNomenclatureVersion",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"relativeAntennaLocation",
                                        "@accessType":"inputOnly",
                                        "@type":"SFVec3f"
                                      },
                                      {
                                        "@name":"transmitFrequencyBandwidth",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      },
                                      {
                                        "@name":"transmitState",
                                        "@accessType":"inputOnly",
                                        "@type":"SFInt32"
                                      }
                                    ],
                                    "#sourceCode":[
"",
"",
"ecmascript:",
"",
"function initialize ()",
"{",
"\tmessageResult [0] = 'radioEntityTypeKind=' + value;",
"\tmessageResult [1] = 'radioEntityTypeNomenclature=' + value;",
"\tmessageResult [2] = 'radioEntityTypeNomenclatureVersion=' + value;",
"\tmessageResult [3] = 'relativeAntennaLocation=' + value;",
"\tmessageResult [4] = 'transmitFrequencyBandwidth=' + value;",
"\tmessageResult [5] = 'transmitState=' + value;",
"}",
"function radioEntityTypeKind \t\t\t(value, ts) { messageResult [0] = 'radioEntityTypeKind=' + value; }",
"function radioEntityTypeNomenclature \t\t(value, ts) { messageResult [1] = 'radioEntityTypeNomenclature=' + value; }",
"function radioEntityTypeNomenclatureVersion \t(value, ts) { messageResult [2] = 'radioEntityTypeNomenclatureVersion=' + value; }",
"function relativeAntennaLocation \t\t(value, ts) { messageResult [3] = 'relativeAntennaLocation=' + value; }",
"function transmitFrequencyBandwidth\t\t(value, ts) { messageResult [4] = 'transmitFrequencyBandwidth=' + value; }",
"function transmitState\t \t\t\t(value, ts) { messageResult [5] = 'transmitState=' + value; }",
"",
""
]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "#comment":"The Script follows the Switch, since the first node in the file determines the node type of this prototype"
                    },
                    {
                      "#comment":"Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct"
                    },
                    {
                      "#comment":"Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI)"
                    },
                    { "Script":
                      {
                        "@DEF":"TransmitterPduScriptNode",
                        "@mustEvaluate":true,
                        "@url":["RadioCommunicationsPduScriptNode.class","http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class"],
                        "-children":[
                          {
                            "#comment":"Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu"
                          },
                          {
                            "#comment":"Initialization fields"
                          },
                          {
                            "#comment":"Generic events"
                          },
                          {
                            "#comment":"RadioCommunicationsFamily events"
                          },
                          {
                            "#comment":"SignalPdu fields"
                          }
                        ],
                        "field": [
                          {
                            "@name":"radioPduType",
                            "@accessType":"initializeOnly",
                            "@type":"SFString",
                            "@value":"TransmitterPdu"
                          },
                          {
                            "@name":"readInterval",
                            "@accessType":"initializeOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"writeInterval",
                            "@accessType":"initializeOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"siteID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"applicationID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"entityID",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"address",
                            "@accessType":"initializeOnly",
                            "@type":"SFString"
                          },
                          {
                            "@name":"port",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"multicastRelayHost",
                            "@accessType":"initializeOnly",
                            "@type":"SFString"
                          },
                          {
                            "@name":"multicastRelayPort",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"rtpHeaderExpected",
                            "@accessType":"initializeOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"isRtpHeaderHeard",
                            "@accessType":"outputOnly",
                            "@appinfo":"whether RTP header was found prepended to DIS packet",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"trace",
                            "@accessType":"initializeOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"update",
                            "@accessType":"inputOnly",
                            "@appinfo":"update is triggered by local TimeSensor clocks to allow regular read/write",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"active",
                            "@accessType":"outputOnly",
                            "@type":"SFBool"
                          },
                          {
                            "@name":"timestamp",
                            "@accessType":"outputOnly",
                            "@type":"SFTime"
                          },
                          {
                            "@name":"radioID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"antennaLocation",
                            "@accessType":"outputOnly",
                            "@type":"SFVec3f"
                          },
                          {
                            "@name":"antennaPatternLength",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"antennaPatternType",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"cryptoKeyID",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"cryptoSytem",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"frequency",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"inputSource",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"lengthOfModulationParameters",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"modulationTypeDetail",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"modulationTypeMajor",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"modulationTypeSpreadSpectrum",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"modulationTypeSystem",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"power",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"radioEntityTypeCategory",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"radioEntityTypeCountry",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"radioEntityTypeDomain",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"radioEntityTypeKind",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"radioEntityTypeNomenclature",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"radioEntityTypeNomenclatureVersion",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"relativeAntennaLocation",
                            "@accessType":"outputOnly",
                            "@type":"SFVec3f"
                          },
                          {
                            "@name":"transmitFrequencyBandwidth",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"transmitState",
                            "@accessType":"outputOnly",
                            "@type":"SFInt32"
                          }
                        ],
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"readInterval",
                                "@protoField":"readInterval"
                              },
                              {
                                "@nodeField":"writeInterval",
                                "@protoField":"writeInterval"
                              },
                              {
                                "@nodeField":"siteID",
                                "@protoField":"siteID"
                              },
                              {
                                "@nodeField":"applicationID",
                                "@protoField":"applicationID"
                              },
                              {
                                "@nodeField":"entityID",
                                "@protoField":"entityID"
                              },
                              {
                                "@nodeField":"address",
                                "@protoField":"address"
                              },
                              {
                                "@nodeField":"port",
                                "@protoField":"port"
                              },
                              {
                                "@nodeField":"multicastRelayHost",
                                "@protoField":"multicastRelayHost"
                              },
                              {
                                "@nodeField":"multicastRelayPort",
                                "@protoField":"multicastRelayPort"
                              },
                              {
                                "@nodeField":"rtpHeaderExpected",
                                "@protoField":"rtpHeaderExpected"
                              },
                              {
                                "@nodeField":"trace",
                                "@protoField":"trace"
                              },
                              {
                                "@nodeField":"active",
                                "@protoField":"active"
                              },
                              {
                                "@nodeField":"timestamp",
                                "@protoField":"timestamp"
                              },
                              {
                                "@nodeField":"isRtpHeaderHeard",
                                "@protoField":"isRtpHeaderHeard"
                              },
                              {
                                "@nodeField":"radioID",
                                "@protoField":"radioID"
                              },
                              {
                                "@nodeField":"antennaLocation",
                                "@protoField":"antennaLocation"
                              },
                              {
                                "@nodeField":"antennaPatternLength",
                                "@protoField":"antennaPatternLength"
                              },
                              {
                                "@nodeField":"antennaPatternType",
                                "@protoField":"antennaPatternType"
                              },
                              {
                                "@nodeField":"cryptoKeyID",
                                "@protoField":"cryptoKeyID"
                              },
                              {
                                "@nodeField":"cryptoSytem",
                                "@protoField":"cryptoSytem"
                              },
                              {
                                "@nodeField":"frequency",
                                "@protoField":"frequency"
                              },
                              {
                                "@nodeField":"inputSource",
                                "@protoField":"inputSource"
                              },
                              {
                                "@nodeField":"lengthOfModulationParameters",
                                "@protoField":"lengthOfModulationParameters"
                              },
                              {
                                "@nodeField":"modulationTypeDetail",
                                "@protoField":"modulationTypeDetail"
                              },
                              {
                                "@nodeField":"modulationTypeMajor",
                                "@protoField":"modulationTypeMajor"
                              },
                              {
                                "@nodeField":"modulationTypeSpreadSpectrum",
                                "@protoField":"modulationTypeSpreadSpectrum"
                              },
                              {
                                "@nodeField":"modulationTypeSystem",
                                "@protoField":"modulationTypeSystem"
                              },
                              {
                                "@nodeField":"power",
                                "@protoField":"power"
                              },
                              {
                                "@nodeField":"radioEntityTypeCategory",
                                "@protoField":"radioEntityTypeCategory"
                              },
                              {
                                "@nodeField":"radioEntityTypeCountry",
                                "@protoField":"radioEntityTypeCountry"
                              },
                              {
                                "@nodeField":"radioEntityTypeDomain",
                                "@protoField":"radioEntityTypeDomain"
                              },
                              {
                                "@nodeField":"radioEntityTypeKind",
                                "@protoField":"radioEntityTypeKind"
                              },
                              {
                                "@nodeField":"radioEntityTypeNomenclature",
                                "@protoField":"radioEntityTypeNomenclature"
                              },
                              {
                                "@nodeField":"radioEntityTypeNomenclatureVersion",
                                "@protoField":"radioEntityTypeNomenclatureVersion"
                              },
                              {
                                "@nodeField":"relativeAntennaLocation",
                                "@protoField":"relativeAntennaLocation"
                              },
                              {
                                "@nodeField":"transmitFrequencyBandwidth",
                                "@protoField":"transmitFrequencyBandwidth"
                              },
                              {
                                "@nodeField":"transmitState",
                                "@protoField":"transmitState"
                              }
                            ]
                        }
                      }
                    },
                    {
                      "#comment":"Clocks stimulate the processEvents() method in the Script code, resulting in DIS PDU reads/writes. The 'update' eventIn is implicit (i.e. no corresponding Java method is needed)."
                    },
                    { "TimeSensor":
                      {
                        "@DEF":"TransmitterPduReadIntervalClock",
                        "@loop":true
                      }
                    },
                    { "TimeSensor":
                      {
                        "@DEF":"TransmitterPduWriteIntervalClock",
                        "@enabled":false,
                        "@loop":true
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cycleTime",
                        "@fromNode":"TransmitterPduReadIntervalClock",
                        "@toField":"update",
                        "@toNode":"TransmitterPduScriptNode"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cycleTime",
                        "@fromNode":"TransmitterPduWriteIntervalClock",
                        "@toField":"update",
                        "@toNode":"TransmitterPduScriptNode"
                      }
                    },
                    {
                      "#comment":"These ROUTEs connect the PDU Script node to the geometryChoice=0 text output"
                    },
                    { "ROUTE":
                      {
                        "@fromField":"active",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"active",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"timestamp",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"timestamp",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"isRtpHeaderHeard",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"isRtpHeaderHeard",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioID",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioID",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"antennaLocation",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"antennaLocation",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"antennaPatternLength",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"antennaPatternLength",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"antennaPatternType",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"antennaPatternType",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cryptoKeyID",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"cryptoKeyID",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"cryptoSytem",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"cryptoSytem",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"frequency",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"frequency",
                        "@toNode":"TransmitterOutputAssembler1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"inputSource",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"inputSource",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"lengthOfModulationParameters",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"lengthOfModulationParameters",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"modulationTypeDetail",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"modulationTypeDetail",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"modulationTypeMajor",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"modulationTypeMajor",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"modulationTypeSpreadSpectrum",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"modulationTypeSpreadSpectrum",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"modulationTypeSystem",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"modulationTypeSystem",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"power",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"power",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioEntityTypeCategory",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioEntityTypeCategory",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioEntityTypeCountry",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioEntityTypeCountry",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioEntityTypeDomain",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioEntityTypeDomain",
                        "@toNode":"TransmitterOutputAssembler2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioEntityTypeKind",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioEntityTypeKind",
                        "@toNode":"TransmitterOutputAssembler3"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioEntityTypeNomenclature",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioEntityTypeNomenclature",
                        "@toNode":"TransmitterOutputAssembler3"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"radioEntityTypeNomenclatureVersion",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"radioEntityTypeNomenclatureVersion",
                        "@toNode":"TransmitterOutputAssembler3"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"relativeAntennaLocation",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"relativeAntennaLocation",
                        "@toNode":"TransmitterOutputAssembler3"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"transmitFrequencyBandwidth",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"transmitFrequencyBandwidth",
                        "@toNode":"TransmitterOutputAssembler3"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"transmitState",
                        "@fromNode":"TransmitterPduScriptNode",
                        "@toField":"transmitState",
                        "@toNode":"TransmitterOutputAssembler3"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"messageResult",
                        "@fromNode":"TransmitterOutputAssembler1",
                        "@toField":"string",
                        "@toNode":"TransmitterOutput1"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"messageResult",
                        "@fromNode":"TransmitterOutputAssembler2",
                        "@toField":"string",
                        "@toNode":"TransmitterOutput2"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"messageResult",
                        "@fromNode":"TransmitterOutputAssembler3",
                        "@toField":"string",
                        "@toNode":"TransmitterOutput3"
                      }
                    },
                    {
                      "#comment":"ROUTEs for further geometry representations go here"
                    }
                  ]
              }
            }
          },
          {
            "#comment":"============================================================"
          },
          {
            "#comment":"Default content"
          },
          { "Group":
            {
              "-children":[
                { "Transform":
                  {
                    "@translation":[-15,15,0],
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"ReceiverPdu"
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[-15,-15,0],
                    "-children":[
                      { "ReceiverPdu":
                        {
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[0,15,0],
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"SignalPdu"
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[0,-15,0],
                    "-children":[
                      { "SignalPdu":
                        {
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[15,15,0],
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"TransmitterPdu"
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[15,-15,0],
                    "-children":[
                      { "TransmitterPdu":
                        {
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
    }
  }
}