<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Immersive'  version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.0.xsd ' >
<head>
<component level='1name='DIS'/>
<meta name='titlecontent=' RadioCommunicationsPrototypes.x3d '/>
<meta name='creatorcontent='Don Brutzman and Dave Laflam'/>
<meta name='createdcontent='7 December 2000'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name=' warning content=' under development. Need to fix url values in X3dToVrml97.xslt translation signatures, and check Savage CommunicationsAndSensors DIS examples. '/>
<meta name='descriptioncontent='Prototype definitions for ReceiverPdu SignalPdu and TransmitterPdu, all of which share share RadioCommunicationsPduScriptNode class'/>
<meta name='referencecontent=' http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPrototypes.x3d '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypes.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<!-- ============================================================ -->
<WorldInfo title='RadioCommunicationsPrototypes.x3d'/>
<ProtoDeclare name='ReceiverPdu'>
<ProtoInterface>
<field name='whichGeometrytype='SFInt32value='0accessType='inputOutput'
 appinfo='set whichGeometry to -1 for no geometry 0 for text trace 1 for default geometry' />

<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'
 appinfo='Bounding box center: position offset from origin of local coordinate system.' />

<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'
 appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.' />

<!-- Initialization fields -->
<field name='readIntervaltype='SFTimevalue='0.1accessType='initializeOnly'/>
<field name='writeIntervaltype='SFTimevalue='1.0accessType='initializeOnly'/>
<field name='siteIDtype='SFInt32value='14accessType='initializeOnly'/>
<field name='applicationIDtype='SFInt32value='17accessType='initializeOnly'/>
<field name='entityIDtype='SFInt32value='9accessType='initializeOnly'/>
<field name='addresstype='SFStringvalue='224.2.181.145accessType='initializeOnly'/>
<field name='porttype='SFInt32value='62040accessType='initializeOnly'/>
<field name='multicastRelayHosttype='SFStringvalue='devo.cs.nps.navy.milaccessType='initializeOnly'/>
<field name='multicastRelayPorttype='SFInt32value='8010accessType='initializeOnly'/>
<field name='networkModetype='SFStringvalue='standAloneaccessType='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)' />

<field name='isStandAlonetype='SFBoolaccessType='outputOnly'
 appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false' />

<field name='isMastertype='SFBoolaccessType='outputOnly'
 appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false" />

<field name='isRemotetype='SFBoolaccessType='outputOnly'
 appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false" />

<field name='rtpHeaderExpectedtype='SFBoolvalue='falseaccessType='initializeOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
 appinfo='whether RTP header was found prepended to DIS packet' />

<field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'/>
<!-- Generic events -->
<field name='activetype='SFBoolaccessType='outputOnly'/>
<field name='timestamptype='SFTimeaccessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioIDtype='SFInt32accessType='outputOnly'/>
<!-- ReceiverPdu fields -->
<field name='receivedPowertype='SFFloataccessType='outputOnly'/>
<field name='receiverStatetype='SFInt32accessType='outputOnly'/>
<field name='transmitterSiteIDtype='SFInt32accessType='outputOnly'/>
<field name='transmitterApplicationIDtype='SFInt32accessType='outputOnly'/>
<field name='transmitterEntityIDtype='SFInt32accessType='outputOnly'/>
<field name='transmitterRadioIDtype='SFInt32accessType='outputOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
<Switch DEF='ReceiverPduGeometrySwitchwhichChoice='-1'>
<IS>
<connect nodeField='whichChoiceprotoField='whichGeometry'/>
</IS>
<!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
<Group>
<Viewpoint description='Receiver Pdu Observerposition='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='FONT1justify='"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>
<!-- ROUTE information for ReceiverOutput1 node:  [from ReceiverOutputAssembler1.messageResult to string ] -->
<Text DEF='ReceiverOutput1string='"Receiver output uninitialized"'>
<FontStyle USE=' FONT1'/>
</Text>
<Appearance>
<Material diffuseColor='0.8 0.8 0'/>
</Appearance>
</Shape>
</Transform>
</Group>
<!-- surprising limit on MFString: 10 strings -->
<field name='messageResulttype='MFStringaccessType='outputOnly'/>
<field name='activetype='SFBoolaccessType='inputOnly'/>
<field name='timestamptype='SFTimeaccessType='inputOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='inputOnly'/>
<field name='radioIDtype='SFInt32accessType='inputOnly'/>
<field name='receivedPowertype='SFFloataccessType='inputOnly'/>
<field name='receiverStatetype='SFInt32accessType='inputOnly'/>
<field name='transmitterSiteIDtype='SFInt32accessType='inputOnly'/>
<field name='transmitterApplicationIDtype='SFInt32accessType='inputOnly'/>
<field name='transmitterEntityIDtype='SFInt32accessType='inputOnly'/>
<field name='transmitterRadioIDtype='SFInt32accessType='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; }

            
]]>
</Script>
</Group>
</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='radioPduTypetype='SFStringvalue='ReceiverPduaccessType='initializeOnly'/>
<!-- Initialization fields -->
<field name='readIntervaltype='SFTimeaccessType='initializeOnly'/>
<field name='writeIntervaltype='SFTimeaccessType='initializeOnly'/>
<field name='siteIDtype='SFInt32accessType='initializeOnly'/>
<field name='applicationIDtype='SFInt32accessType='initializeOnly'/>
<field name='entityIDtype='SFInt32accessType='initializeOnly'/>
<field name='addresstype='SFStringaccessType='initializeOnly'/>
<field name='porttype='SFInt32accessType='initializeOnly'/>
<field name='multicastRelayHosttype='SFStringaccessType='initializeOnly'/>
<field name='multicastRelayPorttype='SFInt32accessType='initializeOnly'/>
<field name='rtpHeaderExpectedtype='SFBoolaccessType='initializeOnly'/>
<field name='tracetype='SFBoolaccessType='initializeOnly'/>
<!-- Generic events -->
<field name='updatetype='SFTimeaccessType='inputOnly'
 appinfo='update is triggered by local TimeSensor clocks to allow regular read/write' />

<field name='activetype='SFBoolaccessType='outputOnly'/>
<field name='timestamptype='SFTimeaccessType='outputOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioIDtype='SFInt32accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='receivedPowertype='SFFloataccessType='outputOnly'/>
<field name='receiverStatetype='SFInt32accessType='outputOnly'/>
<field name='transmitterSiteIDtype='SFInt32accessType='outputOnly'/>
<field name='transmitterApplicationIDtype='SFInt32accessType='outputOnly'/>
<field name='transmitterEntityIDtype='SFInt32accessType='outputOnly'/>
<field name='transmitterRadioIDtype='SFInt32accessType='outputOnly'/>
<IS>
<connect nodeField='readIntervalprotoField='readInterval'/>
<connect nodeField='writeIntervalprotoField='writeInterval'/>
<connect nodeField='siteIDprotoField='siteID'/>
<connect nodeField='applicationIDprotoField='applicationID'/>
<connect nodeField='entityIDprotoField='entityID'/>
<connect nodeField='addressprotoField='address'/>
<connect nodeField='portprotoField='port'/>
<connect nodeField='multicastRelayHostprotoField='multicastRelayHost'/>
<connect nodeField='multicastRelayPortprotoField='multicastRelayPort'/>
<connect nodeField='rtpHeaderExpectedprotoField='rtpHeaderExpected'/>
<connect nodeField='traceprotoField='trace'/>
<connect nodeField='activeprotoField='active'/>
<connect nodeField='timestampprotoField='timestamp'/>
<connect nodeField='isRtpHeaderHeardprotoField='isRtpHeaderHeard'/>
<connect nodeField='radioIDprotoField='radioID'/>
<connect nodeField='receivedPowerprotoField='receivedPower'/>
<connect nodeField='receiverStateprotoField='receiverState'/>
<connect nodeField='transmitterSiteIDprotoField='transmitterSiteID'/>
<connect nodeField='transmitterApplicationIDprotoField='transmitterApplicationID'/>
<connect nodeField='transmitterEntityIDprotoField='transmitterEntityID'/>
<connect nodeField='transmitterRadioIDprotoField='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 information for ReceiverPduReadIntervalClock node:  [from cycleTime to ReceiverPduScriptNode.update ] -->
<TimeSensor DEF='ReceiverPduReadIntervalClockloop='true'/>

<!-- ROUTE information for ReceiverPduWriteIntervalClock node:  [from cycleTime to ReceiverPduScriptNode.update ] -->
<TimeSensor DEF='ReceiverPduWriteIntervalClockenabled='falseloop='true'/>

< 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='whichGeometrytype='SFInt32value='0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'
 appinfo='Bounding box center: position offset from origin of local coordinate system.' />

<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'
 appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.' />

<!-- Initialization fields -->
<field name='readIntervaltype='SFTimevalue='0.1accessType='initializeOnly'/>
<field name='writeIntervaltype='SFTimevalue='1.0accessType='initializeOnly'/>
<field name='siteIDtype='SFInt32value='14accessType='initializeOnly'/>
<field name='applicationIDtype='SFInt32value='17accessType='initializeOnly'/>
<field name='entityIDtype='SFInt32value='9accessType='initializeOnly'/>
<field name='addresstype='SFStringvalue='224.2.181.145accessType='initializeOnly'/>
<field name='porttype='SFInt32value='62040accessType='initializeOnly'/>
<field name='multicastRelayHosttype='SFStringvalue='devo.cs.nps.navy.milaccessType='initializeOnly'/>
<field name='multicastRelayPorttype='SFInt32value='8010accessType='initializeOnly'/>
<field name='networkModetype='SFStringvalue='standAloneaccessType='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)' />

<field name='isStandAlonetype='SFBoolaccessType='outputOnly'
 appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false' />

<field name='isMastertype='SFBoolaccessType='outputOnly'
 appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false" />

<field name='isRemotetype='SFBoolaccessType='outputOnly'
 appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false" />

<field name='rtpHeaderExpectedtype='SFBoolvalue='falseaccessType='initializeOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
 appinfo='whether RTP header was found prepended to DIS packet' />

<field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'/>
<!-- Generic events -->
<field name='activetype='SFBoolaccessType='outputOnly'/>
<field name='timestamptype='SFTimeaccessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioIDtype='SFInt32accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='encodingSchemetype='SFInt32accessType='outputOnly'/>
<field name='tdlTypetype='SFInt32accessType='outputOnly'/>
<field name='sampleRatetype='SFInt32accessType='outputOnly'/>
<field name='samplestype='SFInt32accessType='outputOnly'/>
<field name='dataLengthtype='SFInt32accessType='outputOnly'/>
<field name='data00type='SFInt32accessType='outputOnly'/>
<field name='data01type='SFInt32accessType='outputOnly'/>
<field name='data02type='SFInt32accessType='outputOnly'/>
<field name='data03type='SFInt32accessType='outputOnly'/>
<field name='data04type='SFInt32accessType='outputOnly'/>
<field name='data05type='SFInt32accessType='outputOnly'/>
<field name='data06type='SFInt32accessType='outputOnly'/>
<field name='data07type='SFInt32accessType='outputOnly'/>
<field name='data08type='SFInt32accessType='outputOnly'/>
<field name='data09type='SFInt32accessType='outputOnly'/>
<field name='data10type='SFInt32accessType='outputOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
<Switch DEF='SignalPduGeometrySwitchwhichChoice='-1'>
<IS>
<connect nodeField='whichChoiceprotoField='whichGeometry'/>
</IS>
<!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
<Group>
<Viewpoint description='Signal Pdu Observerposition='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='FONT2justify='"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>
<!-- ROUTE information for SignalOutput1 node:  [from SignalOutputAssembler1.messageResult to string ] -->
<Text DEF='SignalOutput1string='"Signal Output1 unset"'>
<FontStyle USE=' FONT2'/>
</Text>
<Appearance DEF='YellowAppearance2'>
<Material diffuseColor='0.8 0.8 0'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 -1 0'>
<Shape>
<!-- ROUTE information for SignalOutput2 node:  [from SignalOutputAssembler2.messageResult to string ] -->
<Text DEF='SignalOutput2string='"Signal Output2 unset"'>
<FontStyle USE=' FONT2'/>
</Text>
<Appearance USE=' YellowAppearance2'/>
</Shape>
</Transform>
</Group>
<!-- surprising limit on MFString: 10 strings -->
<field name='messageResulttype='MFStringaccessType='outputOnly'/>
<field name='activetype='SFBoolaccessType='inputOnly'/>
<field name='timestamptype='SFTimeaccessType='inputOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='inputOnly'/>
<field name='radioIDtype='SFInt32accessType='inputOnly'/>
<field name='encodingSchemetype='SFInt32accessType='inputOnly'/>
<field name='tdlTypetype='SFInt32accessType='inputOnly'/>
<field name='sampleRatetype='SFInt32accessType='inputOnly'/>
<field name='samplestype='SFInt32accessType='inputOnly'/>
<field name='dataLengthtype='SFInt32accessType='inputOnly'/>
<field name='data00type='SFInt32accessType='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='messageResulttype='MFStringaccessType='outputOnly'/>
<field name='data01type='SFInt32accessType='inputOnly'/>
<field name='data02type='SFInt32accessType='inputOnly'/>
<field name='data03type='SFInt32accessType='inputOnly'/>
<field name='data04type='SFInt32accessType='inputOnly'/>
<field name='data05type='SFInt32accessType='inputOnly'/>
<field name='data06type='SFInt32accessType='inputOnly'/>
<field name='data07type='SFInt32accessType='inputOnly'/>
<field name='data08type='SFInt32accessType='inputOnly'/>
<field name='data09type='SFInt32accessType='inputOnly'/>
<field name='data10type='SFInt32accessType='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; }

            
]]>
</Script>
</Group>
</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='radioPduTypetype='SFStringvalue='SignalPduaccessType='initializeOnly'/>
<!-- Initialization fields -->
<field name='readIntervaltype='SFTimeaccessType='initializeOnly'/>
<field name='writeIntervaltype='SFTimeaccessType='initializeOnly'/>
<field name='siteIDtype='SFInt32accessType='initializeOnly'/>
<field name='applicationIDtype='SFInt32accessType='initializeOnly'/>
<field name='entityIDtype='SFInt32accessType='initializeOnly'/>
<field name='addresstype='SFStringaccessType='initializeOnly'/>
<field name='porttype='SFInt32accessType='initializeOnly'/>
<field name='multicastRelayHosttype='SFStringaccessType='initializeOnly'/>
<field name='multicastRelayPorttype='SFInt32accessType='initializeOnly'/>
<field name='rtpHeaderExpectedtype='SFBoolaccessType='initializeOnly'/>
<field name='tracetype='SFBoolaccessType='initializeOnly'/>
<!-- Generic events -->
<field name='updatetype='SFTimeaccessType='inputOnly'
 appinfo='update is triggered by local TimeSensor clocks to allow regular read/write' />

<field name='activetype='SFBoolaccessType='outputOnly'/>
<field name='timestamptype='SFTimeaccessType='outputOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioIDtype='SFInt32accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='encodingSchemetype='SFInt32accessType='outputOnly'/>
<field name='tdlTypetype='SFInt32accessType='outputOnly'/>
<field name='sampleRatetype='SFInt32accessType='outputOnly'/>
<field name='samplestype='SFInt32accessType='outputOnly'/>
<field name='dataLengthtype='SFInt32accessType='outputOnly'/>
<field name='data00type='SFInt32accessType='outputOnly'/>
<field name='data01type='SFInt32accessType='outputOnly'/>
<field name='data02type='SFInt32accessType='outputOnly'/>
<field name='data03type='SFInt32accessType='outputOnly'/>
<field name='data04type='SFInt32accessType='outputOnly'/>
<field name='data05type='SFInt32accessType='outputOnly'/>
<field name='data06type='SFInt32accessType='outputOnly'/>
<field name='data07type='SFInt32accessType='outputOnly'/>
<field name='data08type='SFInt32accessType='outputOnly'/>
<field name='data09type='SFInt32accessType='outputOnly'/>
<field name='data10type='SFInt32accessType='outputOnly'/>
<IS>
<connect nodeField='readIntervalprotoField='readInterval'/>
<connect nodeField='writeIntervalprotoField='writeInterval'/>
<connect nodeField='siteIDprotoField='siteID'/>
<connect nodeField='applicationIDprotoField='applicationID'/>
<connect nodeField='entityIDprotoField='entityID'/>
<connect nodeField='addressprotoField='address'/>
<connect nodeField='portprotoField='port'/>
<connect nodeField='multicastRelayHostprotoField='multicastRelayHost'/>
<connect nodeField='multicastRelayPortprotoField='multicastRelayPort'/>
<connect nodeField='rtpHeaderExpectedprotoField='rtpHeaderExpected'/>
<connect nodeField='traceprotoField='trace'/>
<connect nodeField='activeprotoField='active'/>
<connect nodeField='timestampprotoField='timestamp'/>
<connect nodeField='isRtpHeaderHeardprotoField='isRtpHeaderHeard'/>
<connect nodeField='radioIDprotoField='radioID'/>
<connect nodeField='encodingSchemeprotoField='encodingScheme'/>
<connect nodeField='tdlTypeprotoField='tdlType'/>
<connect nodeField='sampleRateprotoField='sampleRate'/>
<connect nodeField='samplesprotoField='samples'/>
<connect nodeField='dataLengthprotoField='dataLength'/>
<connect nodeField='data00protoField='data00'/>
<connect nodeField='data01protoField='data01'/>
<connect nodeField='data02protoField='data02'/>
<connect nodeField='data03protoField='data03'/>
<connect nodeField='data04protoField='data04'/>
<connect nodeField='data05protoField='data05'/>
<connect nodeField='data06protoField='data06'/>
<connect nodeField='data07protoField='data07'/>
<connect nodeField='data08protoField='data08'/>
<connect nodeField='data09protoField='data09'/>
<connect nodeField='data10protoField='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 information for SignalPduReadIntervalClock node:  [from cycleTime to SignalPduScriptNode.update ] -->
<TimeSensor DEF='SignalPduReadIntervalClockloop='true'/>

<!-- ROUTE information for SignalPduWriteIntervalClock node:  [from cycleTime to SignalPduScriptNode.update ] -->
<TimeSensor DEF='SignalPduWriteIntervalClockenabled='falseloop='true'/>

< 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='whichGeometrytype='SFInt32value='0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'
 appinfo='Bounding box center: position offset from origin of local coordinate system.' />

<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'
 appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.' />

<!-- Initialization fields -->
<field name='readIntervaltype='SFTimevalue='0.1accessType='initializeOnly'/>
<field name='writeIntervaltype='SFTimevalue='1.0accessType='initializeOnly'/>
<field name='siteIDtype='SFInt32value='14accessType='initializeOnly'/>
<field name='applicationIDtype='SFInt32value='17accessType='initializeOnly'/>
<field name='entityIDtype='SFInt32value='9accessType='initializeOnly'/>
<field name='addresstype='SFStringvalue='224.2.181.145accessType='initializeOnly'/>
<field name='porttype='SFInt32value='62040accessType='initializeOnly'/>
<field name='multicastRelayHosttype='SFStringvalue='devo.cs.nps.navy.milaccessType='initializeOnly'/>
<field name='multicastRelayPorttype='SFInt32value='8010accessType='initializeOnly'/>
<field name='networkModetype='SFStringvalue='standAloneaccessType='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)' />

<field name='isStandAlonetype='SFBoolaccessType='outputOnly'
 appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false' />

<field name='isMastertype='SFBoolaccessType='outputOnly'
 appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false" />

<field name='isRemotetype='SFBoolaccessType='outputOnly'
 appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false" />

<field name='rtpHeaderExpectedtype='SFBoolvalue='falseaccessType='initializeOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
 appinfo='whether RTP header was found prepended to DIS packet' />

<field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'/>
<!-- Generic events -->
<field name='activetype='SFBoolaccessType='outputOnly'/>
<field name='timestamptype='SFTimeaccessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioIDtype='SFInt32accessType='outputOnly'/>
<!-- TransmitterPdu fields -->
<field name='antennaLocationtype='SFVec3faccessType='outputOnly'/>
<field name='antennaPatternLengthtype='SFInt32accessType='outputOnly'/>
<field name='antennaPatternTypetype='SFInt32accessType='outputOnly'/>
<field name='cryptoKeyIDtype='SFInt32accessType='outputOnly'/>
<field name='cryptoSytemtype='SFInt32accessType='outputOnly'/>
<field name='frequencytype='SFInt32accessType='outputOnly'/>
<field name='inputSourcetype='SFInt32accessType='outputOnly'/>
<field name='lengthOfModulationParameterstype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeDetailtype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeMajortype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeSpreadSpectrumtype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeSystemtype='SFInt32accessType='outputOnly'/>
<field name='powertype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeCategorytype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeCountrytype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeDomaintype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeKindtype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeNomenclaturetype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeNomenclatureVersiontype='SFInt32accessType='outputOnly'/>
<field name='relativeAntennaLocationtype='SFVec3faccessType='outputOnly'/>
<field name='transmitFrequencyBandwidthtype='SFInt32accessType='outputOnly'/>
<field name='transmitStatetype='SFInt32accessType='outputOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
<Switch DEF='TransmitterPduGeometrySwitchwhichChoice='-1'>
<IS>
<connect nodeField='whichChoiceprotoField='whichGeometry'/>
</IS>
<!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
<Group>
<Viewpoint description='Transmitter Pdu Observerposition='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='FONT3justify='"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>
<!-- ROUTE information for TransmitterOutput1 node:  [from TransmitterOutputAssembler1.messageResult to string ] -->
<Text DEF='TransmitterOutput1string='"Transmitter Output1 unset"'>
<FontStyle USE=' FONT3'/>
</Text>
<Appearance DEF='YellowAppearance3'>
<Material diffuseColor='0.8 0.8 0'/>
</Appearance>
</Shape>
</Transform>
<Transform translation='0 -1 0'>
<Shape>
<!-- ROUTE information for TransmitterOutput2 node:  [from TransmitterOutputAssembler2.messageResult to string ] -->
<Text DEF='TransmitterOutput2string='"Transmitter Output2 unset"'>
<FontStyle USE=' FONT3'/>
</Text>
<Appearance USE=' YellowAppearance3'/>
</Shape>
</Transform>
<Transform translation='0 -6 0'>
<Shape>
<!-- ROUTE information for TransmitterOutput3 node:  [from TransmitterOutputAssembler3.messageResult to string ] -->
<Text DEF='TransmitterOutput3string='"Transmitter Output2 unset"'>
<FontStyle USE=' FONT3'/>
</Text>
<Appearance USE=' YellowAppearance3'/>
</Shape>
</Transform>
</Group>
<!-- surprising limit on MFString: 10 strings -->
<field name='messageResulttype='MFStringaccessType='outputOnly'/>
<field name='activetype='SFBoolaccessType='inputOnly'/>
<field name='timestamptype='SFTimeaccessType='inputOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='inputOnly'/>
<field name='radioIDtype='SFInt32accessType='inputOnly'/>
<field name='antennaLocationtype='SFVec3faccessType='inputOnly'/>
<field name='antennaPatternLengthtype='SFInt32accessType='inputOnly'/>
<field name='antennaPatternTypetype='SFInt32accessType='inputOnly'/>
<field name='cryptoKeyIDtype='SFInt32accessType='inputOnly'/>
<field name='cryptoSytemtype='SFInt32accessType='inputOnly'/>
<field name='frequencytype='SFInt32accessType='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='messageResulttype='MFStringaccessType='outputOnly'/>
<field name='inputSourcetype='SFInt32accessType='inputOnly'/>
<field name='lengthOfModulationParameterstype='SFInt32accessType='inputOnly'/>
<field name='modulationTypeDetailtype='SFInt32accessType='inputOnly'/>
<field name='modulationTypeMajortype='SFInt32accessType='inputOnly'/>
<field name='modulationTypeSpreadSpectrumtype='SFInt32accessType='inputOnly'/>
<field name='modulationTypeSystemtype='SFInt32accessType='inputOnly'/>
<field name='powertype='SFInt32accessType='inputOnly'/>
<field name='radioEntityTypeCategorytype='SFInt32accessType='inputOnly'/>
<field name='radioEntityTypeCountrytype='SFInt32accessType='inputOnly'/>
<field name='radioEntityTypeDomaintype='SFInt32accessType='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='messageResulttype='MFStringaccessType='outputOnly'/>
<field name='radioEntityTypeKindtype='SFInt32accessType='inputOnly'/>
<field name='radioEntityTypeNomenclaturetype='SFInt32accessType='inputOnly'/>
<field name='radioEntityTypeNomenclatureVersiontype='SFInt32accessType='inputOnly'/>
<field name='relativeAntennaLocationtype='SFVec3faccessType='inputOnly'/>
<field name='transmitFrequencyBandwidthtype='SFInt32accessType='inputOnly'/>
<field name='transmitStatetype='SFInt32accessType='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; }

            
]]>
</Script>
</Group>
</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) -->
<!-- ROUTE information for TransmitterPduScriptNode node:  [from TransmitterPduReadIntervalClock.cycleTime to update ] [from TransmitterPduWriteIntervalClock.cycleTime to update ] [from active to TransmitterOutputAssembler1.active ] [from timestamp to TransmitterOutputAssembler1.timestamp ] [from isRtpHeaderHeard to TransmitterOutputAssembler1.isRtpHeaderHeard ] [from radioID to TransmitterOutputAssembler1.radioID ] [from antennaLocation to TransmitterOutputAssembler1.antennaLocation ] [from antennaPatternLength to TransmitterOutputAssembler1.antennaPatternLength ] [from antennaPatternType to TransmitterOutputAssembler1.antennaPatternType ] [from cryptoKeyID to TransmitterOutputAssembler1.cryptoKeyID ] [from cryptoSytem to TransmitterOutputAssembler1.cryptoSytem ] [from frequency to TransmitterOutputAssembler1.frequency ] [from inputSource to TransmitterOutputAssembler2.inputSource ] [from lengthOfModulationParameters to TransmitterOutputAssembler2.lengthOfModulationParameters ] [from modulationTypeDetail to TransmitterOutputAssembler2.modulationTypeDetail ] [from modulationTypeMajor to TransmitterOutputAssembler2.modulationTypeMajor ] [from modulationTypeSpreadSpectrum to TransmitterOutputAssembler2.modulationTypeSpreadSpectrum ] [from modulationTypeSystem to TransmitterOutputAssembler2.modulationTypeSystem ] [from power to TransmitterOutputAssembler2.power ] [from radioEntityTypeCategory to TransmitterOutputAssembler2.radioEntityTypeCategory ] [from radioEntityTypeCountry to TransmitterOutputAssembler2.radioEntityTypeCountry ] [from radioEntityTypeDomain to TransmitterOutputAssembler2.radioEntityTypeDomain ] [from radioEntityTypeKind to TransmitterOutputAssembler3.radioEntityTypeKind ] [from radioEntityTypeNomenclature to TransmitterOutputAssembler3.radioEntityTypeNomenclature ] [from radioEntityTypeNomenclatureVersion to TransmitterOutputAssembler3.radioEntityTypeNomenclatureVersion ] [from relativeAntennaLocation to TransmitterOutputAssembler3.relativeAntennaLocation ] [from transmitFrequencyBandwidth to TransmitterOutputAssembler3.transmitFrequencyBandwidth ] [from transmitState to TransmitterOutputAssembler3.transmitState ] -->
<Script DEF='TransmitterPduScriptNodemustEvaluate='true'
  url=' "RadioCommunicationsPduScriptNode.class" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class" ' >
<!-- Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu -->
<field name='radioPduTypetype='SFStringvalue='TransmitterPduaccessType='initializeOnly'/>
<!-- Initialization fields -->
<field name='readIntervaltype='SFTimeaccessType='initializeOnly'/>
<field name='writeIntervaltype='SFTimeaccessType='initializeOnly'/>
<field name='siteIDtype='SFInt32accessType='initializeOnly'/>
<field name='applicationIDtype='SFInt32accessType='initializeOnly'/>
<field name='entityIDtype='SFInt32accessType='initializeOnly'/>
<field name='addresstype='SFStringaccessType='initializeOnly'/>
<field name='porttype='SFInt32accessType='initializeOnly'/>
<field name='multicastRelayHosttype='SFStringaccessType='initializeOnly'/>
<field name='multicastRelayPorttype='SFInt32accessType='initializeOnly'/>
<field name='rtpHeaderExpectedtype='SFBoolaccessType='initializeOnly'/>
<field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
 appinfo='whether RTP header was found prepended to DIS packet' />

<field name='tracetype='SFBoolaccessType='initializeOnly'/>
<!-- Generic events -->
<field name='updatetype='SFTimeaccessType='inputOnly'
 appinfo='update is triggered by local TimeSensor clocks to allow regular read/write' />

<field name='activetype='SFBoolaccessType='outputOnly'/>
<field name='timestamptype='SFTimeaccessType='outputOnly'/>
<!-- RadioCommunicationsFamily events -->
<field name='radioIDtype='SFInt32accessType='outputOnly'/>
<!-- SignalPdu fields -->
<field name='antennaLocationtype='SFVec3faccessType='outputOnly'/>
<field name='antennaPatternLengthtype='SFInt32accessType='outputOnly'/>
<field name='antennaPatternTypetype='SFInt32accessType='outputOnly'/>
<field name='cryptoKeyIDtype='SFInt32accessType='outputOnly'/>
<field name='cryptoSytemtype='SFInt32accessType='outputOnly'/>
<field name='frequencytype='SFInt32accessType='outputOnly'/>
<field name='inputSourcetype='SFInt32accessType='outputOnly'/>
<field name='lengthOfModulationParameterstype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeDetailtype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeMajortype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeSpreadSpectrumtype='SFInt32accessType='outputOnly'/>
<field name='modulationTypeSystemtype='SFInt32accessType='outputOnly'/>
<field name='powertype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeCategorytype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeCountrytype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeDomaintype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeKindtype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeNomenclaturetype='SFInt32accessType='outputOnly'/>
<field name='radioEntityTypeNomenclatureVersiontype='SFInt32accessType='outputOnly'/>
<field name='relativeAntennaLocationtype='SFVec3faccessType='outputOnly'/>
<field name='transmitFrequencyBandwidthtype='SFInt32accessType='outputOnly'/>
<field name='transmitStatetype='SFInt32accessType='outputOnly'/>
<IS>
<connect nodeField='readIntervalprotoField='readInterval'/>
<connect nodeField='writeIntervalprotoField='writeInterval'/>
<connect nodeField='siteIDprotoField='siteID'/>
<connect nodeField='applicationIDprotoField='applicationID'/>
<connect nodeField='entityIDprotoField='entityID'/>
<connect nodeField='addressprotoField='address'/>
<connect nodeField='portprotoField='port'/>
<connect nodeField='multicastRelayHostprotoField='multicastRelayHost'/>
<connect nodeField='multicastRelayPortprotoField='multicastRelayPort'/>
<connect nodeField='rtpHeaderExpectedprotoField='rtpHeaderExpected'/>
<connect nodeField='traceprotoField='trace'/>
<connect nodeField='activeprotoField='active'/>
<connect nodeField='timestampprotoField='timestamp'/>
<connect nodeField='isRtpHeaderHeardprotoField='isRtpHeaderHeard'/>
<connect nodeField='radioIDprotoField='radioID'/>
<connect nodeField='antennaLocationprotoField='antennaLocation'/>
<connect nodeField='antennaPatternLengthprotoField='antennaPatternLength'/>
<connect nodeField='antennaPatternTypeprotoField='antennaPatternType'/>
<connect nodeField='cryptoKeyIDprotoField='cryptoKeyID'/>
<connect nodeField='cryptoSytemprotoField='cryptoSytem'/>
<connect nodeField='frequencyprotoField='frequency'/>
<connect nodeField='inputSourceprotoField='inputSource'/>
<connect nodeField='lengthOfModulationParametersprotoField='lengthOfModulationParameters'/>
<connect nodeField='modulationTypeDetailprotoField='modulationTypeDetail'/>
<connect nodeField='modulationTypeMajorprotoField='modulationTypeMajor'/>
<connect nodeField='modulationTypeSpreadSpectrumprotoField='modulationTypeSpreadSpectrum'/>
<connect nodeField='modulationTypeSystemprotoField='modulationTypeSystem'/>
<connect nodeField='powerprotoField='power'/>
<connect nodeField='radioEntityTypeCategoryprotoField='radioEntityTypeCategory'/>
<connect nodeField='radioEntityTypeCountryprotoField='radioEntityTypeCountry'/>
<connect nodeField='radioEntityTypeDomainprotoField='radioEntityTypeDomain'/>
<connect nodeField='radioEntityTypeKindprotoField='radioEntityTypeKind'/>
<connect nodeField='radioEntityTypeNomenclatureprotoField='radioEntityTypeNomenclature'/>
<connect nodeField='radioEntityTypeNomenclatureVersionprotoField='radioEntityTypeNomenclatureVersion'/>
<connect nodeField='relativeAntennaLocationprotoField='relativeAntennaLocation'/>
<connect nodeField='transmitFrequencyBandwidthprotoField='transmitFrequencyBandwidth'/>
<connect nodeField='transmitStateprotoField='transmitState'/>
</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 information for TransmitterPduReadIntervalClock node:  [from cycleTime to TransmitterPduScriptNode.update ] -->
<TimeSensor DEF='TransmitterPduReadIntervalClockloop='true'/>

<!-- ROUTE information for TransmitterPduWriteIntervalClock node:  [from cycleTime to TransmitterPduScriptNode.update ] -->
<TimeSensor DEF='TransmitterPduWriteIntervalClockenabled='falseloop='true'/>

< ROUTE  fromNode=' TransmitterPduReadIntervalClock' fromField='cycleTime' toNode=' TransmitterPduScriptNode' toField='update'/>
< ROUTE  fromNode=' TransmitterPduWriteIntervalClock' fromField='cycleTime' toNode=' TransmitterPduScriptNode' toField='update'/>
<!-- These ROUTEs connect the PDU Script node to the geometryChoice=0 text output -->
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='active' toNode=' TransmitterOutputAssembler1' toField='active'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='timestamp' toNode=' TransmitterOutputAssembler1' toField='timestamp'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='isRtpHeaderHeard' toNode=' TransmitterOutputAssembler1' toField='isRtpHeaderHeard'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioID' toNode=' TransmitterOutputAssembler1' toField='radioID'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='antennaLocation' toNode=' TransmitterOutputAssembler1' toField='antennaLocation'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='antennaPatternLength' toNode=' TransmitterOutputAssembler1' toField='antennaPatternLength'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='antennaPatternType' toNode=' TransmitterOutputAssembler1' toField='antennaPatternType'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='cryptoKeyID' toNode=' TransmitterOutputAssembler1' toField='cryptoKeyID'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='cryptoSytem' toNode=' TransmitterOutputAssembler1' toField='cryptoSytem'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='frequency' toNode=' TransmitterOutputAssembler1' toField='frequency'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='inputSource' toNode=' TransmitterOutputAssembler2' toField='inputSource'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='lengthOfModulationParameters' toNode=' TransmitterOutputAssembler2' toField='lengthOfModulationParameters'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='modulationTypeDetail' toNode=' TransmitterOutputAssembler2' toField='modulationTypeDetail'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='modulationTypeMajor' toNode=' TransmitterOutputAssembler2' toField='modulationTypeMajor'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='modulationTypeSpreadSpectrum' toNode=' TransmitterOutputAssembler2' toField='modulationTypeSpreadSpectrum'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='modulationTypeSystem' toNode=' TransmitterOutputAssembler2' toField='modulationTypeSystem'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='power' toNode=' TransmitterOutputAssembler2' toField='power'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioEntityTypeCategory' toNode=' TransmitterOutputAssembler2' toField='radioEntityTypeCategory'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioEntityTypeCountry' toNode=' TransmitterOutputAssembler2' toField='radioEntityTypeCountry'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioEntityTypeDomain' toNode=' TransmitterOutputAssembler2' toField='radioEntityTypeDomain'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioEntityTypeKind' toNode=' TransmitterOutputAssembler3' toField='radioEntityTypeKind'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioEntityTypeNomenclature' toNode=' TransmitterOutputAssembler3' toField='radioEntityTypeNomenclature'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='radioEntityTypeNomenclatureVersion' toNode=' TransmitterOutputAssembler3' toField='radioEntityTypeNomenclatureVersion'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='relativeAntennaLocation' toNode=' TransmitterOutputAssembler3' toField='relativeAntennaLocation'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='transmitFrequencyBandwidth' toNode=' TransmitterOutputAssembler3' toField='transmitFrequencyBandwidth'/>
< ROUTE  fromNode=' TransmitterPduScriptNode' fromField='transmitState' toNode=' TransmitterOutputAssembler3' toField='transmitState'/>
< ROUTE  fromNode=' TransmitterOutputAssembler1' fromField='messageResult' toNode=' TransmitterOutput1' toField='string'/>
< ROUTE  fromNode=' TransmitterOutputAssembler2' fromField='messageResult' toNode=' TransmitterOutput2' toField='string'/>
< ROUTE  fromNode=' TransmitterOutputAssembler3' fromField='messageResult' toNode=' TransmitterOutput3' toField='string'/>
<!-- ROUTEs for further geometry representations go here -->
</ProtoBody>
</ProtoDeclare>
<!-- ============================================================ -->
<!-- Default content -->
<Group>
<Transform translation='-15 15 0'>
<ProtoInstance name='ReceiverPdu'/>
</Transform>
<Transform translation='-15 -15 0'>
<ReceiverPdu receivedPower='0.0containerField='children'/>
</Transform>
<Transform translation='0 15 0'>
<ProtoInstance name='SignalPdu'/>
</Transform>
<Transform translation='0 -15 0'>
<SignalPdu containerField='children'/>
</Transform>
<Transform translation='15 15 0'>
<ProtoInstance name='TransmitterPdu'/>
</Transform>
<Transform translation='15 -15 0'>
<TransmitterPdu relativeAntennaLocation='0 0 0transmitFrequencyBandwidth='0.0containerField='children'/>
</Transform>
</Group>
</Scene>
</X3D>
<!--

to top <!-- 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
-->

Event Graph ROUTE Table entries with 68 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

ReceiverPduReadIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
ReceiverPduScriptNode
Script
update
SFTime


ReceiverPduWriteIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
ReceiverPduScriptNode
Script
update
SFTime


SignalPduReadIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
SignalPduScriptNode
Script
update
SFTime


SignalPduWriteIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
SignalPduScriptNode
Script
update
SFTime


TransmitterPduReadIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
TransmitterPduScriptNode
Script
update
SFTime


TransmitterPduWriteIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
TransmitterPduScriptNode
Script
update
SFTime


      ReceiverOutputAssembler1
Script
messageResult
MFString

ROUTE
event to
(1)
ReceiverOutput1
Text
string
MFString


      SignalOutputAssembler1
Script
messageResult
MFString

ROUTE
event to
(1)
SignalOutput1
Text
string
MFString


      SignalOutputAssembler2
Script
messageResult
MFString

ROUTE
event to
(1)
SignalOutput2
Text
string
MFString


      TransmitterOutputAssembler1
Script
messageResult
MFString

ROUTE
event to
(1)
TransmitterOutput1
Text
string
MFString


      TransmitterOutputAssembler2
Script
messageResult
MFString

ROUTE
event to
(1)
TransmitterOutput2
Text
string
MFString


      TransmitterOutputAssembler3
Script
messageResult
MFString

ROUTE
event to
(1)
TransmitterOutput3
Text
string
MFString



ProtoInstance
ReceiverPdu
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 



ProtoInstance
SignalPdu
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 



ProtoInstance
TransmitterPdu
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypesIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypes.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoInstance name='ProtoName'> <field name='fieldName'/> </ProtoInstance> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->