<head>
</head>
<!--
<!--
Event Graph ROUTE Table
shows event connections
-->
<!--
Index for DEF nodes:
FONT1,
FONT2,
FONT3,
ReceiverOutput1,
ReceiverOutputAssembler1,
ReceiverPduGeometrySwitch,
ReceiverPduReadIntervalClock,
ReceiverPduScriptNode,
ReceiverPduWriteIntervalClock,
SignalOutput1,
SignalOutput2,
SignalOutputAssembler1,
SignalOutputAssembler2,
SignalPduGeometrySwitch,
SignalPduReadIntervalClock,
SignalPduScriptNode,
SignalPduWriteIntervalClock,
TransmitterOutput1,
TransmitterOutput2,
TransmitterOutput3,
TransmitterOutputAssembler1,
TransmitterOutputAssembler2,
TransmitterOutputAssembler3,
TransmitterPduGeometrySwitch,
TransmitterPduReadIntervalClock,
TransmitterPduScriptNode,
TransmitterPduWriteIntervalClock,
YellowAppearance2,
YellowAppearance3
Index for Viewpoint nodes:
Viewpoint_1,
Viewpoint_2,
Viewpoint_3
Index for ProtoDeclare definitions:
ReceiverPdu,
SignalPdu,
TransmitterPdu
-->
<Scene>
<!-- ============================================================ -->
<WorldInfo title='RadioCommunicationsPrototypes.x3d'/>
<ProtoDeclare name='ReceiverPdu'>
<ProtoInterface>
<field name='whichGeometry' type='SFInt32' value='0' accessType='inputOutput'
appinfo='set whichGeometry to -1 for no geometry 0 for text trace 1 for default geometry'
/>
<field name='bboxCenter' type='SFVec3f' value='0 0 0' accessType='initializeOnly'
appinfo='Bounding box center: position offset from origin of local coordinate system.'
/>
<field name='bboxSize' type='SFVec3f' value='-1 -1 -1' accessType='initializeOnly'
appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.'
/>
<!-- Initialization fields -->
<field name='readInterval' type='SFTime' value='0.1' accessType='initializeOnly'/>
<field name='writeInterval' type='SFTime' value='1.0' accessType='initializeOnly'/>
<field name='siteID' type='SFInt32' value='14' accessType='initializeOnly'/>
<field name='applicationID' type='SFInt32' value='17' accessType='initializeOnly'/>
<field name='entityID' type='SFInt32' value='9' accessType='initializeOnly'/>
<field name='address' type='SFString' value='224.2.181.145' accessType='initializeOnly'/>
<field name='port' type='SFInt32' value='62040' accessType='initializeOnly'/>
<field name='multicastRelayHost' type='SFString' value='devo.cs.nps.navy.mil' accessType='initializeOnly'/>
<field name='multicastRelayPort' type='SFInt32' value='8010' accessType='initializeOnly'/>
<field name='networkMode' type='SFString' value='standAlone' accessType='inputOutput'
appinfo='networkMode: standAlone (ignore network but still respond to local events) networkReader (listen to network as ghost entity) networkWriter (output to network as master entity at writeInterval)'
/>
<field name='isStandAlone' type='SFBool' accessType='outputOnly'
appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false'
/>
<field name='isMaster' type='SFBool' accessType='outputOnly'
appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false"
/>
<field name='isRemote' type='SFBool' accessType='outputOnly'
appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false"
/>
<field name='rtpHeaderExpected' type='SFBool' value='false' accessType='initializeOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='outputOnly'
appinfo='whether RTP header was found prepended to DIS packet'
/>
<field name='trace' type='SFBool' value='false' accessType='initializeOnly'/>
<!-- Generic events -->
<field name='active' type='SFBool' accessType='outputOnly'/>
<field name='timestamp' type='SFTime' accessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioID' type='SFInt32' accessType='outputOnly'/>
<!-- ReceiverPdu fields -->
<field name='receivedPower' type='SFFloat' accessType='outputOnly'/>
<field name='receiverState' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterSiteID' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterApplicationID' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterEntityID' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterRadioID' type='SFInt32' accessType='outputOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
<Switch DEF='ReceiverPduGeometrySwitch' whichChoice='-1'>
<IS>
</IS>
<!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
<Group>
<Viewpoint description='Receiver Pdu Observer' position='0 0 15'/>
<Group>
<Transform translation='0 6 0'>
<Shape>
<Text string='"Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console"'>
<FontStyle DEF='FONT1' justify='"MIDDLE" "BEGIN"' size='0.5'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.4 0.8'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 4.75 0'>
<Shape>
<Text string='"Receiver PDU values"'>
<FontStyle USE='
FONT1'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.8 0.4'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 4 0'>
<Shape>
<FontStyle USE='
FONT1'/>
</Text>
<Appearance>
<Material diffuseColor='0.8 0.8 0'/>
</Appearance>
</Shape>
</Transform>
</Group>
<!-- surprising limit on MFString: 10 strings -->
<field name='messageResult' type='MFString' accessType='outputOnly'/>
<field name='active' type='SFBool' accessType='inputOnly'/>
<field name='timestamp' type='SFTime' accessType='inputOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='inputOnly'/>
<field name='radioID' type='SFInt32' accessType='inputOnly'/>
<field name='receivedPower' type='SFFloat' accessType='inputOnly'/>
<field name='receiverState' type='SFInt32' accessType='inputOnly'/>
<field name='transmitterSiteID' type='SFInt32' accessType='inputOnly'/>
<field name='transmitterApplicationID' type='SFInt32' accessType='inputOnly'/>
<field name='transmitterEntityID' type='SFInt32' accessType='inputOnly'/>
<field name='transmitterRadioID' type='SFInt32' accessType='inputOnly'/>
<![CDATA[
ecmascript:
function initialize ()
{
value='awaiting PDU';
messageResult [0] = 'active=' + value;
messageResult [1] = 'timestamp=' + value;
messageResult [2] = 'isRtpHeaderHeard=' + value;
messageResult [3] = 'radioID=' + value;
messageResult [4] = 'receivedPower=' + value;
messageResult [5] = 'receiverState=' + value;
messageResult [6] = 'transmitterSiteID=' + value;
messageResult [7] = 'transmitterApplicationID=' + value;
messageResult [8] = 'transmitterEntityID=' + value;
messageResult [9] = 'transmitterRadioID=' + value;
}
function active (value, ts) { messageResult [0] = 'active=' + value; }
function timestamp (value, ts) { messageResult [1] = 'timestamp=' + value; }
function isRtpHeaderHeard (value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }
function radioID (value, ts) { messageResult [3] = 'radioID=' + value; }
function receivedPower (value, ts) { messageResult [4] = 'receiverPower=' + value; }
function receiverState (value, ts) { messageResult [5] = 'receiverState=' + value; }
function transmitterSiteID (value, ts) { messageResult [6] = 'transmitterSiteID=' + value; }
function transmitterApplicationID (value, ts) { messageResult [7] = 'transmitterApplicationID=' + value; }
function transmitterEntityID (value, ts) { messageResult [8] = 'transmitterEntityID=' + value; }
function transmitterRadioID (value, ts) { messageResult [9] = 'transmitterRadioID=' + value; }
]]>
</Switch>
<!-- The Script follows the Switch, since the first node in the file determines the node type of this prototype -->
<!-- Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct -->
<!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) -->
<!-- Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu -->
<field name='radioPduType' type='SFString' value='ReceiverPdu' accessType='initializeOnly'/>
<!-- Initialization fields -->
<field name='readInterval' type='SFTime' accessType='initializeOnly'/>
<field name='writeInterval' type='SFTime' accessType='initializeOnly'/>
<field name='siteID' type='SFInt32' accessType='initializeOnly'/>
<field name='applicationID' type='SFInt32' accessType='initializeOnly'/>
<field name='entityID' type='SFInt32' accessType='initializeOnly'/>
<field name='address' type='SFString' accessType='initializeOnly'/>
<field name='port' type='SFInt32' accessType='initializeOnly'/>
<field name='multicastRelayHost' type='SFString' accessType='initializeOnly'/>
<field name='multicastRelayPort' type='SFInt32' accessType='initializeOnly'/>
<field name='rtpHeaderExpected' type='SFBool' accessType='initializeOnly'/>
<field name='trace' type='SFBool' accessType='initializeOnly'/>
<!-- Generic events -->
<field name='update' type='SFTime' accessType='inputOnly'
appinfo='update is triggered by local TimeSensor clocks to allow regular read/write'
/>
<field name='active' type='SFBool' accessType='outputOnly'/>
<field name='timestamp' type='SFTime' accessType='outputOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioID' type='SFInt32' accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='receivedPower' type='SFFloat' accessType='outputOnly'/>
<field name='receiverState' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterSiteID' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterApplicationID' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterEntityID' type='SFInt32' accessType='outputOnly'/>
<field name='transmitterRadioID' type='SFInt32' accessType='outputOnly'/>
<IS>
<connect nodeField='readInterval' protoField='readInterval'/>
<connect nodeField='writeInterval' protoField='writeInterval'/>
<connect nodeField='siteID' protoField='siteID'/>
<connect nodeField='applicationID' protoField='applicationID'/>
<connect nodeField='entityID' protoField='entityID'/>
<connect nodeField='address' protoField='address'/>
<connect nodeField='port' protoField='port'/>
<connect nodeField='multicastRelayHost' protoField='multicastRelayHost'/>
<connect nodeField='multicastRelayPort' protoField='multicastRelayPort'/>
<connect nodeField='rtpHeaderExpected' protoField='rtpHeaderExpected'/>
<connect nodeField='trace' protoField='trace'/>
<connect nodeField='active' protoField='active'/>
<connect nodeField='timestamp' protoField='timestamp'/>
<connect nodeField='isRtpHeaderHeard' protoField='isRtpHeaderHeard'/>
<connect nodeField='radioID' protoField='radioID'/>
<connect nodeField='receivedPower' protoField='receivedPower'/>
<connect nodeField='receiverState' protoField='receiverState'/>
<connect nodeField='transmitterSiteID' protoField='transmitterSiteID'/>
<connect nodeField='transmitterApplicationID' protoField='transmitterApplicationID'/>
<connect nodeField='transmitterEntityID' protoField='transmitterEntityID'/>
<connect nodeField='transmitterRadioID' protoField='transmitterRadioID'/>
</IS>
</Script>
<!-- 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). -->
<
ROUTE
fromNode='
ReceiverPduReadIntervalClock' fromField='cycleTime' toNode='
ReceiverPduScriptNode' toField='update'/>
<
ROUTE
fromNode='
ReceiverPduWriteIntervalClock' fromField='cycleTime' toNode='
ReceiverPduScriptNode' toField='update'/>
<!-- These ROUTEs connect the PDU Script node to the geometryChoice=0 text output -->
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='active' toNode='
ReceiverOutputAssembler1' toField='active'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='timestamp' toNode='
ReceiverOutputAssembler1' toField='timestamp'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='isRtpHeaderHeard' toNode='
ReceiverOutputAssembler1' toField='isRtpHeaderHeard'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='radioID' toNode='
ReceiverOutputAssembler1' toField='radioID'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='receivedPower' toNode='
ReceiverOutputAssembler1' toField='receivedPower'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='receiverState' toNode='
ReceiverOutputAssembler1' toField='receiverState'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='transmitterSiteID' toNode='
ReceiverOutputAssembler1' toField='transmitterSiteID'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='transmitterApplicationID' toNode='
ReceiverOutputAssembler1' toField='transmitterApplicationID'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='transmitterEntityID' toNode='
ReceiverOutputAssembler1' toField='transmitterEntityID'/>
<
ROUTE
fromNode='
ReceiverPduScriptNode' fromField='transmitterRadioID' toNode='
ReceiverOutputAssembler1' toField='transmitterRadioID'/>
<
ROUTE
fromNode='
ReceiverOutputAssembler1' fromField='messageResult' toNode='
ReceiverOutput1' toField='string'/>
<!-- ROUTEs for further geometry representations go here -->
</ProtoBody>
</ProtoDeclare>
<!-- ============================================================ -->
<ProtoDeclare name='SignalPdu'>
<ProtoInterface>
<!-- set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry -->
<field name='whichGeometry' type='SFInt32' value='0' accessType='inputOutput'/>
<field name='bboxCenter' type='SFVec3f' value='0 0 0' accessType='initializeOnly'
appinfo='Bounding box center: position offset from origin of local coordinate system.'
/>
<field name='bboxSize' type='SFVec3f' value='-1 -1 -1' accessType='initializeOnly'
appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.'
/>
<!-- Initialization fields -->
<field name='readInterval' type='SFTime' value='0.1' accessType='initializeOnly'/>
<field name='writeInterval' type='SFTime' value='1.0' accessType='initializeOnly'/>
<field name='siteID' type='SFInt32' value='14' accessType='initializeOnly'/>
<field name='applicationID' type='SFInt32' value='17' accessType='initializeOnly'/>
<field name='entityID' type='SFInt32' value='9' accessType='initializeOnly'/>
<field name='address' type='SFString' value='224.2.181.145' accessType='initializeOnly'/>
<field name='port' type='SFInt32' value='62040' accessType='initializeOnly'/>
<field name='multicastRelayHost' type='SFString' value='devo.cs.nps.navy.mil' accessType='initializeOnly'/>
<field name='multicastRelayPort' type='SFInt32' value='8010' accessType='initializeOnly'/>
<field name='networkMode' type='SFString' value='standAlone' accessType='inputOutput'
appinfo='networkMode: standAlone (ignore network but still respond to local events) networkReader (listen to network as ghost entity) networkWriter (output to network as master entity at writeInterval)'
/>
<field name='isStandAlone' type='SFBool' accessType='outputOnly'
appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false'
/>
<field name='isMaster' type='SFBool' accessType='outputOnly'
appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false"
/>
<field name='isRemote' type='SFBool' accessType='outputOnly'
appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false"
/>
<field name='rtpHeaderExpected' type='SFBool' value='false' accessType='initializeOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='outputOnly'
appinfo='whether RTP header was found prepended to DIS packet'
/>
<field name='trace' type='SFBool' value='false' accessType='initializeOnly'/>
<!-- Generic events -->
<field name='active' type='SFBool' accessType='outputOnly'/>
<field name='timestamp' type='SFTime' accessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioID' type='SFInt32' accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='encodingScheme' type='SFInt32' accessType='outputOnly'/>
<field name='tdlType' type='SFInt32' accessType='outputOnly'/>
<field name='sampleRate' type='SFInt32' accessType='outputOnly'/>
<field name='samples' type='SFInt32' accessType='outputOnly'/>
<field name='dataLength' type='SFInt32' accessType='outputOnly'/>
<field name='data00' type='SFInt32' accessType='outputOnly'/>
<field name='data01' type='SFInt32' accessType='outputOnly'/>
<field name='data02' type='SFInt32' accessType='outputOnly'/>
<field name='data03' type='SFInt32' accessType='outputOnly'/>
<field name='data04' type='SFInt32' accessType='outputOnly'/>
<field name='data05' type='SFInt32' accessType='outputOnly'/>
<field name='data06' type='SFInt32' accessType='outputOnly'/>
<field name='data07' type='SFInt32' accessType='outputOnly'/>
<field name='data08' type='SFInt32' accessType='outputOnly'/>
<field name='data09' type='SFInt32' accessType='outputOnly'/>
<field name='data10' type='SFInt32' accessType='outputOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
<Switch DEF='SignalPduGeometrySwitch' whichChoice='-1'>
<IS>
</IS>
<!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
<Group>
<Viewpoint description='Signal Pdu Observer' position='0 0 15'/>
<Group>
<Transform translation='0 6 0'>
<Shape>
<Text string='"Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console"'>
<FontStyle DEF='FONT2' justify='"MIDDLE" "BEGIN"' size='0.5'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.4 0.8'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 4.75 0'>
<Shape>
<Text string='"Signal PDU values"'>
<FontStyle USE='
FONT2'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.8 0.4'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 4 0'>
<Shape>
<FontStyle USE='
FONT2'/>
</Text>
<Appearance DEF='YellowAppearance2'>
<Material diffuseColor='0.8 0.8 0'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 -1 0'>
</Transform>
</Group>
<!-- surprising limit on MFString: 10 strings -->
<field name='messageResult' type='MFString' accessType='outputOnly'/>
<field name='active' type='SFBool' accessType='inputOnly'/>
<field name='timestamp' type='SFTime' accessType='inputOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='inputOnly'/>
<field name='radioID' type='SFInt32' accessType='inputOnly'/>
<field name='encodingScheme' type='SFInt32' accessType='inputOnly'/>
<field name='tdlType' type='SFInt32' accessType='inputOnly'/>
<field name='sampleRate' type='SFInt32' accessType='inputOnly'/>
<field name='samples' type='SFInt32' accessType='inputOnly'/>
<field name='dataLength' type='SFInt32' accessType='inputOnly'/>
<field name='data00' type='SFInt32' accessType='inputOnly'/>
<![CDATA[
ecmascript:
function initialize ()
{
value='awaiting PDU';
messageResult [0] = 'active=' + value;
messageResult [1] = 'timestamp=' + value;
messageResult [2] = 'isRtpHeaderHeard=' + value;
messageResult [3] = 'radioID=' + value;
messageResult [4] = 'encodingScheme=' + value;
messageResult [5] = 'tdlType=' + value;
messageResult [6] = 'sampleRate=' + value;
messageResult [7] = 'samples=' + value;
messageResult [8] = 'dataLength=' + value;
messageResult [9] = 'data00=' + value;
}
function active (value, ts) { messageResult [0] = 'active=' + value; }
function timestamp (value, ts) { messageResult [1] = 'timestamp=' + value; }
function isRtpHeaderHeard (value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }
function radioID (value, ts) { messageResult [3] = 'radioID=' + value; }
function encodingScheme (value, ts) { messageResult [4] = 'encodingScheme=' + value; }
function tdlType (value, ts) { messageResult [5] = 'tdlType=' + value; }
function sampleRate (value, ts) { messageResult [6] = 'sampleRate=' + value; }
function samples (value, ts) { messageResult [7] = 'samples=' + value; }
function dataLength (value, ts) { messageResult [8] = 'dataLength=' + value; }
function data00 (value, ts) { messageResult [9] = 'data00=' + value; }
]]>
</Script>
<field name='messageResult' type='MFString' accessType='outputOnly'/>
<field name='data01' type='SFInt32' accessType='inputOnly'/>
<field name='data02' type='SFInt32' accessType='inputOnly'/>
<field name='data03' type='SFInt32' accessType='inputOnly'/>
<field name='data04' type='SFInt32' accessType='inputOnly'/>
<field name='data05' type='SFInt32' accessType='inputOnly'/>
<field name='data06' type='SFInt32' accessType='inputOnly'/>
<field name='data07' type='SFInt32' accessType='inputOnly'/>
<field name='data08' type='SFInt32' accessType='inputOnly'/>
<field name='data09' type='SFInt32' accessType='inputOnly'/>
<field name='data10' type='SFInt32' accessType='inputOnly'/>
<![CDATA[
ecmascript:
function initialize ()
{
messageResult [0] = 'data01=' + value;
messageResult [1] = 'data02=' + value;
messageResult [2] = 'data03=' + value;
messageResult [3] = 'data04=' + value;
messageResult [4] = 'data05=' + value;
messageResult [5] = 'data06=' + value;
messageResult [6] = 'data07=' + value;
messageResult [7] = 'data08=' + value;
messageResult [8] = 'data09=' + value;
messageResult [9] = 'data10=' + value;
}
function data01 (value, ts) { messageResult [0] = 'data01=' + value; }
function data02 (value, ts) { messageResult [1] = 'data02=' + value; }
function data03 (value, ts) { messageResult [2] = 'data03=' + value; }
function data04 (value, ts) { messageResult [3] = 'data04=' + value; }
function data05 (value, ts) { messageResult [4] = 'data05=' + value; }
function data06 (value, ts) { messageResult [5] = 'data06=' + value; }
function data07 (value, ts) { messageResult [6] = 'data07=' + value; }
function data08 (value, ts) { messageResult [7] = 'data08=' + value; }
function data09 (value, ts) { messageResult [8] = 'data09=' + value; }
function data10 (value, ts) { messageResult [9] = 'data10=' + value; }
]]>
</Switch>
<!-- The Script follows the Switch, since the first node in the file determines the node type of this prototype -->
<!-- Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct -->
<!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) -->
<!-- Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu -->
<field name='radioPduType' type='SFString' value='SignalPdu' accessType='initializeOnly'/>
<!-- Initialization fields -->
<field name='readInterval' type='SFTime' accessType='initializeOnly'/>
<field name='writeInterval' type='SFTime' accessType='initializeOnly'/>
<field name='siteID' type='SFInt32' accessType='initializeOnly'/>
<field name='applicationID' type='SFInt32' accessType='initializeOnly'/>
<field name='entityID' type='SFInt32' accessType='initializeOnly'/>
<field name='address' type='SFString' accessType='initializeOnly'/>
<field name='port' type='SFInt32' accessType='initializeOnly'/>
<field name='multicastRelayHost' type='SFString' accessType='initializeOnly'/>
<field name='multicastRelayPort' type='SFInt32' accessType='initializeOnly'/>
<field name='rtpHeaderExpected' type='SFBool' accessType='initializeOnly'/>
<field name='trace' type='SFBool' accessType='initializeOnly'/>
<!-- Generic events -->
<field name='update' type='SFTime' accessType='inputOnly'
appinfo='update is triggered by local TimeSensor clocks to allow regular read/write'
/>
<field name='active' type='SFBool' accessType='outputOnly'/>
<field name='timestamp' type='SFTime' accessType='outputOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioID' type='SFInt32' accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='encodingScheme' type='SFInt32' accessType='outputOnly'/>
<field name='tdlType' type='SFInt32' accessType='outputOnly'/>
<field name='sampleRate' type='SFInt32' accessType='outputOnly'/>
<field name='samples' type='SFInt32' accessType='outputOnly'/>
<field name='dataLength' type='SFInt32' accessType='outputOnly'/>
<field name='data00' type='SFInt32' accessType='outputOnly'/>
<field name='data01' type='SFInt32' accessType='outputOnly'/>
<field name='data02' type='SFInt32' accessType='outputOnly'/>
<field name='data03' type='SFInt32' accessType='outputOnly'/>
<field name='data04' type='SFInt32' accessType='outputOnly'/>
<field name='data05' type='SFInt32' accessType='outputOnly'/>
<field name='data06' type='SFInt32' accessType='outputOnly'/>
<field name='data07' type='SFInt32' accessType='outputOnly'/>
<field name='data08' type='SFInt32' accessType='outputOnly'/>
<field name='data09' type='SFInt32' accessType='outputOnly'/>
<field name='data10' type='SFInt32' accessType='outputOnly'/>
<IS>
<connect nodeField='readInterval' protoField='readInterval'/>
<connect nodeField='writeInterval' protoField='writeInterval'/>
<connect nodeField='siteID' protoField='siteID'/>
<connect nodeField='applicationID' protoField='applicationID'/>
<connect nodeField='entityID' protoField='entityID'/>
<connect nodeField='address' protoField='address'/>
<connect nodeField='port' protoField='port'/>
<connect nodeField='multicastRelayHost' protoField='multicastRelayHost'/>
<connect nodeField='multicastRelayPort' protoField='multicastRelayPort'/>
<connect nodeField='rtpHeaderExpected' protoField='rtpHeaderExpected'/>
<connect nodeField='trace' protoField='trace'/>
<connect nodeField='active' protoField='active'/>
<connect nodeField='timestamp' protoField='timestamp'/>
<connect nodeField='isRtpHeaderHeard' protoField='isRtpHeaderHeard'/>
<connect nodeField='radioID' protoField='radioID'/>
<connect nodeField='encodingScheme' protoField='encodingScheme'/>
<connect nodeField='tdlType' protoField='tdlType'/>
<connect nodeField='sampleRate' protoField='sampleRate'/>
<connect nodeField='samples' protoField='samples'/>
<connect nodeField='dataLength' protoField='dataLength'/>
<connect nodeField='data00' protoField='data00'/>
<connect nodeField='data01' protoField='data01'/>
<connect nodeField='data02' protoField='data02'/>
<connect nodeField='data03' protoField='data03'/>
<connect nodeField='data04' protoField='data04'/>
<connect nodeField='data05' protoField='data05'/>
<connect nodeField='data06' protoField='data06'/>
<connect nodeField='data07' protoField='data07'/>
<connect nodeField='data08' protoField='data08'/>
<connect nodeField='data09' protoField='data09'/>
<connect nodeField='data10' protoField='data10'/>
</IS>
</Script>
<!-- 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). -->
<
ROUTE
fromNode='
SignalPduReadIntervalClock' fromField='cycleTime' toNode='
SignalPduScriptNode' toField='update'/>
<
ROUTE
fromNode='
SignalPduWriteIntervalClock' fromField='cycleTime' toNode='
SignalPduScriptNode' toField='update'/>
<!-- These ROUTEs connect the PDU Script node to the geometryChoice=0 text output -->
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='active' toNode='
SignalOutputAssembler1' toField='active'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='timestamp' toNode='
SignalOutputAssembler1' toField='timestamp'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='isRtpHeaderHeard' toNode='
SignalOutputAssembler1' toField='isRtpHeaderHeard'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='radioID' toNode='
SignalOutputAssembler1' toField='radioID'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='encodingScheme' toNode='
SignalOutputAssembler1' toField='encodingScheme'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='tdlType' toNode='
SignalOutputAssembler1' toField='tdlType'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='sampleRate' toNode='
SignalOutputAssembler1' toField='sampleRate'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='samples' toNode='
SignalOutputAssembler1' toField='samples'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='dataLength' toNode='
SignalOutputAssembler1' toField='dataLength'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data00' toNode='
SignalOutputAssembler1' toField='data00'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data01' toNode='
SignalOutputAssembler2' toField='data01'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data02' toNode='
SignalOutputAssembler2' toField='data02'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data03' toNode='
SignalOutputAssembler2' toField='data03'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data04' toNode='
SignalOutputAssembler2' toField='data04'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data05' toNode='
SignalOutputAssembler2' toField='data05'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data06' toNode='
SignalOutputAssembler2' toField='data06'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data07' toNode='
SignalOutputAssembler2' toField='data07'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data08' toNode='
SignalOutputAssembler2' toField='data08'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data09' toNode='
SignalOutputAssembler2' toField='data09'/>
<
ROUTE
fromNode='
SignalPduScriptNode' fromField='data10' toNode='
SignalOutputAssembler2' toField='data10'/>
<
ROUTE
fromNode='
SignalOutputAssembler1' fromField='messageResult' toNode='
SignalOutput1' toField='string'/>
<
ROUTE
fromNode='
SignalOutputAssembler2' fromField='messageResult' toNode='
SignalOutput2' toField='string'/>
<!-- ROUTEs for further geometry representations go here -->
</ProtoBody>
</ProtoDeclare>
<!-- ============================================================ -->
<ProtoDeclare name='TransmitterPdu'>
<ProtoInterface>
<!-- set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry -->
<field name='whichGeometry' type='SFInt32' value='0' accessType='inputOutput'/>
<field name='bboxCenter' type='SFVec3f' value='0 0 0' accessType='initializeOnly'
appinfo='Bounding box center: position offset from origin of local coordinate system.'
/>
<field name='bboxSize' type='SFVec3f' value='-1 -1 -1' accessType='initializeOnly'
appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.'
/>
<!-- Initialization fields -->
<field name='readInterval' type='SFTime' value='0.1' accessType='initializeOnly'/>
<field name='writeInterval' type='SFTime' value='1.0' accessType='initializeOnly'/>
<field name='siteID' type='SFInt32' value='14' accessType='initializeOnly'/>
<field name='applicationID' type='SFInt32' value='17' accessType='initializeOnly'/>
<field name='entityID' type='SFInt32' value='9' accessType='initializeOnly'/>
<field name='address' type='SFString' value='224.2.181.145' accessType='initializeOnly'/>
<field name='port' type='SFInt32' value='62040' accessType='initializeOnly'/>
<field name='multicastRelayHost' type='SFString' value='devo.cs.nps.navy.mil' accessType='initializeOnly'/>
<field name='multicastRelayPort' type='SFInt32' value='8010' accessType='initializeOnly'/>
<field name='networkMode' type='SFString' value='standAlone' accessType='inputOutput'
appinfo='networkMode: standAlone (ignore network but still respond to local events) networkReader (listen to network as ghost entity) networkWriter (output to network as master entity at writeInterval)'
/>
<field name='isStandAlone' type='SFBool' accessType='outputOnly'
appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false'
/>
<field name='isMaster' type='SFBool' accessType='outputOnly'
appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false"
/>
<field name='isRemote' type='SFBool' accessType='outputOnly'
appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false"
/>
<field name='rtpHeaderExpected' type='SFBool' value='false' accessType='initializeOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='outputOnly'
appinfo='whether RTP header was found prepended to DIS packet'
/>
<field name='trace' type='SFBool' value='false' accessType='initializeOnly'/>
<!-- Generic events -->
<field name='active' type='SFBool' accessType='outputOnly'/>
<field name='timestamp' type='SFTime' accessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioID' type='SFInt32' accessType='outputOnly'/>
<!-- TransmitterPdu fields -->
<field name='antennaLocation' type='SFVec3f' accessType='outputOnly'/>
<field name='antennaPatternLength' type='SFInt32' accessType='outputOnly'/>
<field name='antennaPatternType' type='SFInt32' accessType='outputOnly'/>
<field name='cryptoKeyID' type='SFInt32' accessType='outputOnly'/>
<field name='cryptoSytem' type='SFInt32' accessType='outputOnly'/>
<field name='frequency' type='SFInt32' accessType='outputOnly'/>
<field name='inputSource' type='SFInt32' accessType='outputOnly'/>
<field name='lengthOfModulationParameters' type='SFInt32' accessType='outputOnly'/>
<field name='modulationTypeDetail' type='SFInt32' accessType='outputOnly'/>
<field name='modulationTypeMajor' type='SFInt32' accessType='outputOnly'/>
<field name='modulationTypeSpreadSpectrum' type='SFInt32' accessType='outputOnly'/>
<field name='modulationTypeSystem' type='SFInt32' accessType='outputOnly'/>
<field name='power' type='SFInt32' accessType='outputOnly'/>
<field name='radioEntityTypeCategory' type='SFInt32' accessType='outputOnly'/>
<field name='radioEntityTypeCountry' type='SFInt32' accessType='outputOnly'/>
<field name='radioEntityTypeDomain' type='SFInt32' accessType='outputOnly'/>
<field name='radioEntityTypeKind' type='SFInt32' accessType='outputOnly'/>
<field name='radioEntityTypeNomenclature' type='SFInt32' accessType='outputOnly'/>
<field name='radioEntityTypeNomenclatureVersion' type='SFInt32' accessType='outputOnly'/>
<field name='relativeAntennaLocation' type='SFVec3f' accessType='outputOnly'/>
<field name='transmitFrequencyBandwidth' type='SFInt32' accessType='outputOnly'/>
<field name='transmitState' type='SFInt32' accessType='outputOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
<Switch DEF='TransmitterPduGeometrySwitch' whichChoice='-1'>
<IS>
</IS>
<!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
<Group>
<Viewpoint description='Transmitter Pdu Observer' position='0 0 15'/>
<Group>
<Transform translation='0 6 0'>
<Shape>
<Text string='"Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console"'>
<FontStyle DEF='FONT3' justify='"MIDDLE" "BEGIN"' size='0.5'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.4 0.8'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 4.75 0'>
<Shape>
<Text string='"Transmitter PDU values"'>
<FontStyle USE='
FONT3'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.8 0.4'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 4 0'>
<Shape>
<FontStyle USE='
FONT3'/>
</Text>
<Appearance DEF='YellowAppearance3'>
<Material diffuseColor='0.8 0.8 0'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 -1 0'>
</Transform>
<Transform translation='0 -6 0'>
</Transform>
</Group>
<!-- surprising limit on MFString: 10 strings -->
<field name='messageResult' type='MFString' accessType='outputOnly'/>
<field name='active' type='SFBool' accessType='inputOnly'/>
<field name='timestamp' type='SFTime' accessType='inputOnly'/>
<field name='isRtpHeaderHeard' type='SFBool' accessType='inputOnly'/>
<field name='radioID' type='SFInt32' accessType='inputOnly'/>
<field name='antennaLocation' type='SFVec3f' accessType='inputOnly'/>
<field name='antennaPatternLength' type='SFInt32' accessType='inputOnly'/>
<field name='antennaPatternType' type='SFInt32' accessType='inputOnly'/>
<field name='cryptoKeyID' type='SFInt32' accessType='inputOnly'/>
<field name='cryptoSytem' type='SFInt32' accessType='inputOnly'/>
<field name='frequency' type='SFInt32' accessType='inputOnly'/>
<![CDATA[
ecmascript:
function initialize ()
{
value='awaiting PDU';
messageResult [0] = 'active=' + value;
messageResult [1] = 'timestamp=' + value;
messageResult [2] = 'isRtpHeaderHeard=' + value;
messageResult [3] = 'radioID=' + value;
messageResult [4] = 'antennaLocation=' + value;
messageResult [5] = 'antennaPatternLength=' + value;
messageResult [6] = 'antennaPatternType=' + value;
messageResult [7] = 'cryptoKeyID=' + value;
messageResult [8] = 'cryptoSytem=' + value;
messageResult [9] = 'frequency=' + value;
}
function active (value, ts) { messageResult [0] = 'active=' + value; }
function timestamp (value, ts) { messageResult [1] = 'timestamp=' + value; }
function isRtpHeaderHeard (value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }
function radioID (value, ts) { messageResult [3] = 'radioID=' + value; }
function antennaLocation (value, ts) { messageResult [4] = 'antennaLocation=' + value; }
function antennaPatternLength (value, ts) { messageResult [5] = 'antennaPatternLength=' + value; }
function antennaPatternType (value, ts) { messageResult [6] = 'antennaPatternType=' + value; }
function cryptoKeyID (value, ts) { messageResult [7] = 'cryptoKeyID=' + value; }
function cryptoSytem (value, ts) { messageResult [8] = 'cryptoSytem=' + value; }
function frequency (value, ts) { messageResult [9] = 'frequency=' + value; }
]]>
</Script>
<field name='messageResult' type='MFString' accessType='outputOnly'/>
<field name='inputSource' type='SFInt32' accessType='inputOnly'/>
<field name='lengthOfModulationParameters' type='SFInt32' accessType='inputOnly'/>
<field name='modulationTypeDetail' type='SFInt32' accessType='inputOnly'/>
<field name='modulationTypeMajor' type='SFInt32' accessType='inputOnly'/>
<field name='modulationTypeSpreadSpectrum' type='SFInt32' accessType='inputOnly'/>
<field name='modulationTypeSystem' type='SFInt32' accessType='inputOnly'/>
<field name='power' type='SFInt32' accessType='inputOnly'/>
<field name='radioEntityTypeCategory' type='SFInt32' accessType='inputOnly'/>
<field name='radioEntityTypeCountry' type='SFInt32' accessType='inputOnly'/>
<field name='radioEntityTypeDomain' type='SFInt32' accessType='inputOnly'/>
<![CDATA[
ecmascript:
function initialize ()
{
messageResult [0] = 'inputSource=' + value;
messageResult [1] = 'lengthOfModulationParameters=' + value;
messageResult [2] = 'modulationTypeDetail=' + value;
messageResult [3] = 'modulationTypeMajor=' + value;
messageResult [4] = 'modulationTypeSpreadSpectrum=' + value;
messageResult [5] = 'modulationTypeSystem=' + value;
messageResult [6] = 'power=' + value;
messageResult [7] = 'radioEntityTypeCategory=' + value;
messageResult [8] = 'radioEntityTypeCountry=' + value;
messageResult [9] = 'radioEntityTypeDomain=' + value;
}
function inputSource (value, ts) { messageResult [0] = 'inputSource=' + value; }
function lengthOfModulationParameters (value, ts) { messageResult [1] = 'lengthOfModulationParameters=' + value; }
function modulationTypeDetail (value, ts) { messageResult [2] = 'modulationTypeDetail=' + value; }
function modulationTypeMajor (value, ts) { messageResult [3] = 'modulationTypeMajor=' + value; }
function modulationTypeSpreadSpectrum (value, ts) { messageResult [4] = 'modulationTypeSpreadSpectrum=' + value; }
function modulationTypeSystem (value, ts) { messageResult [5] = 'modulationTypeSystem=' + value; }
function power (value, ts) { messageResult [6] = 'power=' + value; }
function radioEntityTypeCategory (value, ts) { messageResult [7] = 'radioEntityTypeCategory=' + value; }
function radioEntityTypeCountry (value, ts) { messageResult [8] = 'radioEntityTypeCountry=' + value; }
function radioEntityTypeDomain (value, ts) { messageResult [9] = 'radioEntityTypeDomain=' + value; }
]]>
</Script>
<field name='messageResult' type='MFString' accessType='outputOnly'/>
<field name='radioEntityTypeKind' type='SFInt32' accessType='inputOnly'/>
<field name='radioEntityTypeNomenclature' type='SFInt32' accessType='inputOnly'/>
<field name='radioEntityTypeNomenclatureVersion' type='SFInt32' accessType='inputOnly'/>
<field name='relativeAntennaLocation' type='SFVec3f' accessType='inputOnly'/>
<field name='transmitFrequencyBandwidth' type='SFInt32' accessType='inputOnly'/>
<field name='transmitState' type='SFInt32' accessType='inputOnly'/>
<![CDATA[
ecmascript:
function initialize ()
{
messageResult [0] = 'radioEntityTypeKind=' + value;
messageResult [1] = 'radioEntityTypeNomenclature=' + value;
messageResult [2] = 'radioEntityTypeNomenclatureVersion=' + value;
messageResult [3] = 'relativeAntennaLocation=' + value;
messageResult [4] = 'transmitFrequencyBandwidth=' + value;
messageResult [5] = 'transmitState=' + value;
}
function radioEntityTypeKind (value, ts) { messageResult [0] = 'radioEntityTypeKind=' + value; }
function radioEntityTypeNomenclature (value, ts) { messageResult [1] = 'radioEntityTypeNomenclature=' + value; }
function radioEntityTypeNomenclatureVersion (value, ts) { messageResult [2] = 'radioEntityTypeNomenclatureVersion=' + value; }
function relativeAntennaLocation (value, ts) { messageResult [3] = 'relativeAntennaLocation=' + value; }
function transmitFrequencyBandwidth (value, ts) { messageResult [4] = 'transmitFrequencyBandwidth=' + value; }
function transmitState (value, ts) { messageResult [5] = 'transmitState=' + value; }
]]>
</ProtoDeclare>
<!-- ============================================================ -->
<!-- Default content -->
<Group>
<Transform translation='-15 15 0'>
</Transform>
<Transform translation='-15 -15 0'>
<ReceiverPdu receivedPower='0.0' containerField='children'/>
</Transform>
<Transform translation='0 15 0'>
</Transform>
<Transform translation='0 -15 0'>
<SignalPdu containerField='children'/>
</Transform>
<Transform translation='15 15 0'>
</Transform>
<Transform translation='15 -15 0'>
<TransmitterPdu relativeAntennaLocation='0 0 0' transmitFrequencyBandwidth='0.0' containerField='children'/>
</Transform>
</Group>
</Scene>