#X3D V3.0 utf8
# X3D-to-ClassicVRML XSL translation autogenerated by X3dToVrml97.xslt
# https://www.web3d.org/x3d/content/X3dToVrml97.xslt
# Generated using XSLT processor: Saxonica
PROFILE Immersive
# [X3D] version=3.0
# [X3D] noNamespaceSchemaLocation=https://www.web3d.org/specifications/x3d-3.0.xsd
# [head]
COMPONENT DIS:1
META "title" "RadioCommunicationsPrototypes.x3d"
META "creator" "Don Brutzman and Dave Laflam"
META "created" "7 December 2000"
META "modified" "20 October 2019"
META "warning" "under development. Need to fix url values in X3dToVrml97.xslt translation signatures, and check Savage CommunicationsAndSensors DIS examples."
META "description" "Prototype definitions for ReceiverPdu SignalPdu and TransmitterPdu, all of which share share RadioCommunicationsPduScriptNode class"
META "reference" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPrototypes.x3d"
META "identifier" "https://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypes.x3d"
META "generator" "X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit"
META "license" "../license.html"
# [Scene] ========== ========== ==========
NavigationInfo { type [ "EXAMINE" "ANY" ] } ### Default X3D NavigationInfo
# ============================================================
WorldInfo {
title "RadioCommunicationsPrototypes.x3d"
}
PROTO ReceiverPdu [
inputOutput SFInt32 whichGeometry 0 # [appinfo] set whichGeometry to -1 for no geometry 0 for text trace 1 for default geometry
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
initializeOnly SFVec3f bboxCenter 0 0 0 # [appinfo] Bounding box center: position offset from origin of local coordinate system.
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
initializeOnly SFVec3f bboxSize -1 -1 -1 # [appinfo] Bounding box size: automatically calculated can be specified as an optimization or constraint.
# Initialization fields
initializeOnly SFTime readInterval 0.1
initializeOnly SFTime writeInterval 1.0
initializeOnly SFInt32 siteID 14
initializeOnly SFInt32 applicationID 17
initializeOnly SFInt32 entityID 9
initializeOnly SFString address "224.2.181.145"
initializeOnly SFInt32 port 62040
initializeOnly SFString multicastRelayHost "devo.cs.nps.navy.mil"
initializeOnly SFInt32 multicastRelayPort 8010
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
inputOutput SFString networkMode "standAlone" # [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)
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isStandAlone # [appinfo] Whether networkMode standAlone (ignore network but still respond to local events) is true/false
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isMaster # [appinfo] Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isRemote # [appinfo] Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false
initializeOnly SFBool rtpHeaderExpected FALSE
outputOnly SFBool isRtpHeaderHeard # [appinfo] whether RTP header was found prepended to DIS packet
initializeOnly SFBool trace FALSE
# Generic events
outputOnly SFBool active
outputOnly SFTime timestamp
# RadioCommunicationsFamily events
outputOnly SFInt32 radioID
# ReceiverPdu fields
outputOnly SFFloat receivedPower
outputOnly SFInt32 receiverState
outputOnly SFInt32 transmitterSiteID
outputOnly SFInt32 transmitterApplicationID
outputOnly SFInt32 transmitterEntityID
outputOnly SFInt32 transmitterRadioID
] {
DEF ReceiverPduGeometrySwitch Switch {
whichChoice -1
whichChoice IS whichGeometry
# whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry
children [
# whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry
Group {
children [
Viewpoint {
description "Receiver Pdu Observer"
position 0 0 15
}
### Warning: Viewpoint behavior not guaranteed as child (or descendant) of Switch node [Switch DEF='ReceiverPduGeometrySwitch']
Group {
children [
Transform {
translation 0 6 0
children [
Shape {
geometry Text {
string [ "Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console" ]
fontStyle DEF FONT1 FontStyle {
justify [ "MIDDLE" "BEGIN" ]
size 0.5
}
}
appearance Appearance {
material Material {
diffuseColor 0 0.4 0.8
}
}
}
]
}
Transform {
translation 0 4.75 0
children [
Shape {
geometry Text {
string [ "Receiver PDU values" ]
fontStyle USE FONT1
}
appearance Appearance {
material Material {
diffuseColor 0 0.8 0.4
}
}
}
]
}
Transform {
translation 0 4 0
children [
Shape {
geometry DEF ReceiverOutput1 Text {
string [ "Receiver output uninitialized" ]
fontStyle USE FONT1
}
appearance Appearance {
material Material {
diffuseColor 0.8 0.8 0
}
}
}
]
}
]
}
DEF ReceiverOutputAssembler1 Script {
# surprising limit on MFString: 10 strings
outputOnly MFString messageResult
inputOnly SFBool active
inputOnly SFTime timestamp
inputOnly SFBool isRtpHeaderHeard
inputOnly SFInt32 radioID
inputOnly SFFloat receivedPower
inputOnly SFInt32 receiverState
inputOnly SFInt32 transmitterSiteID
inputOnly SFInt32 transmitterApplicationID
inputOnly SFInt32 transmitterEntityID
inputOnly SFInt32 transmitterRadioID
# surprising limit on MFString: 10 strings
url [ "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; }
" ]
}
]
}
]
}
DEF ReceiverPduScriptNode Script {
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
initializeOnly SFString radioPduType "ReceiverPdu"
# Initialization fields
initializeOnly SFTime readInterval IS readInterval
initializeOnly SFTime writeInterval IS writeInterval
initializeOnly SFInt32 siteID IS siteID
initializeOnly SFInt32 applicationID IS applicationID
initializeOnly SFInt32 entityID IS entityID
initializeOnly SFString address IS address
initializeOnly SFInt32 port IS port
initializeOnly SFString multicastRelayHost IS multicastRelayHost
initializeOnly SFInt32 multicastRelayPort IS multicastRelayPort
initializeOnly SFBool rtpHeaderExpected IS rtpHeaderExpected
initializeOnly SFBool trace IS trace
# Generic events
inputOnly SFTime update # [appinfo] update is triggered by local TimeSensor clocks to allow regular read/write
outputOnly SFBool active IS active
outputOnly SFTime timestamp IS timestamp
outputOnly SFBool isRtpHeaderHeard IS isRtpHeaderHeard
# RadioCommunicationsFamily events
outputOnly SFInt32 radioID IS radioID
# SignalPdu fields
outputOnly SFFloat receivedPower IS receivedPower
outputOnly SFInt32 receiverState IS receiverState
outputOnly SFInt32 transmitterSiteID IS transmitterSiteID
outputOnly SFInt32 transmitterApplicationID IS transmitterApplicationID
outputOnly SFInt32 transmitterEntityID IS transmitterEntityID
outputOnly SFInt32 transmitterRadioID IS transmitterRadioID
mustEvaluate TRUE
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
# Initialization fields
# Generic events
# RadioCommunicationsFamily events
# SignalPdu fields
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
# Initialization fields
# Generic events
# RadioCommunicationsFamily events
# SignalPdu fields
url [ "RadioCommunicationsPduScriptNode.class" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class"
]
}
DEF ReceiverPduReadIntervalClock TimeSensor {
loop TRUE
}
DEF ReceiverPduWriteIntervalClock TimeSensor {
enabled FALSE
loop TRUE
}
ROUTE ReceiverPduReadIntervalClock.cycleTime TO ReceiverPduScriptNode.update
ROUTE ReceiverPduWriteIntervalClock.cycleTime TO ReceiverPduScriptNode.update
ROUTE ReceiverPduScriptNode.active TO ReceiverOutputAssembler1.active
ROUTE ReceiverPduScriptNode.timestamp TO ReceiverOutputAssembler1.timestamp
ROUTE ReceiverPduScriptNode.isRtpHeaderHeard TO ReceiverOutputAssembler1.isRtpHeaderHeard
ROUTE ReceiverPduScriptNode.radioID TO ReceiverOutputAssembler1.radioID
ROUTE ReceiverPduScriptNode.receivedPower TO ReceiverOutputAssembler1.receivedPower
ROUTE ReceiverPduScriptNode.receiverState TO ReceiverOutputAssembler1.receiverState
ROUTE ReceiverPduScriptNode.transmitterSiteID TO ReceiverOutputAssembler1.transmitterSiteID
ROUTE ReceiverPduScriptNode.transmitterApplicationID TO ReceiverOutputAssembler1.transmitterApplicationID
ROUTE ReceiverPduScriptNode.transmitterEntityID TO ReceiverOutputAssembler1.transmitterEntityID
ROUTE ReceiverPduScriptNode.transmitterRadioID TO ReceiverOutputAssembler1.transmitterRadioID
ROUTE ReceiverOutputAssembler1.messageResult TO ReceiverOutput1.string
}
# ============================================================
PROTO SignalPdu [
# set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry
inputOutput SFInt32 whichGeometry 0
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
initializeOnly SFVec3f bboxCenter 0 0 0 # [appinfo] Bounding box center: position offset from origin of local coordinate system.
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
initializeOnly SFVec3f bboxSize -1 -1 -1 # [appinfo] Bounding box size: automatically calculated can be specified as an optimization or constraint.
# Initialization fields
initializeOnly SFTime readInterval 0.1
initializeOnly SFTime writeInterval 1.0
initializeOnly SFInt32 siteID 14
initializeOnly SFInt32 applicationID 17
initializeOnly SFInt32 entityID 9
initializeOnly SFString address "224.2.181.145"
initializeOnly SFInt32 port 62040
initializeOnly SFString multicastRelayHost "devo.cs.nps.navy.mil"
initializeOnly SFInt32 multicastRelayPort 8010
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
inputOutput SFString networkMode "standAlone" # [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)
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isStandAlone # [appinfo] Whether networkMode standAlone (ignore network but still respond to local events) is true/false
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isMaster # [appinfo] Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isRemote # [appinfo] Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false
initializeOnly SFBool rtpHeaderExpected FALSE
outputOnly SFBool isRtpHeaderHeard # [appinfo] whether RTP header was found prepended to DIS packet
initializeOnly SFBool trace FALSE
# Generic events
outputOnly SFBool active
outputOnly SFTime timestamp
# RadioCommunicationsFamily events
outputOnly SFInt32 radioID
# SignalPdu fields
outputOnly SFInt32 encodingScheme
outputOnly SFInt32 tdlType
outputOnly SFInt32 sampleRate
outputOnly SFInt32 samples
outputOnly SFInt32 dataLength
outputOnly SFInt32 data00
outputOnly SFInt32 data01
outputOnly SFInt32 data02
outputOnly SFInt32 data03
outputOnly SFInt32 data04
outputOnly SFInt32 data05
outputOnly SFInt32 data06
outputOnly SFInt32 data07
outputOnly SFInt32 data08
outputOnly SFInt32 data09
outputOnly SFInt32 data10
] {
DEF SignalPduGeometrySwitch Switch {
whichChoice -1
whichChoice IS whichGeometry
# whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry
children [
# whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry
Group {
children [
Viewpoint {
description "Signal Pdu Observer"
position 0 0 15
}
### Warning: Viewpoint behavior not guaranteed as child (or descendant) of Switch node [Switch DEF='SignalPduGeometrySwitch']
Group {
children [
Transform {
translation 0 6 0
children [
Shape {
geometry Text {
string [ "Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console" ]
fontStyle DEF FONT2 FontStyle {
justify [ "MIDDLE" "BEGIN" ]
size 0.5
}
}
appearance Appearance {
material Material {
diffuseColor 0 0.4 0.8
}
}
}
]
}
Transform {
translation 0 4.75 0
children [
Shape {
geometry Text {
string [ "Signal PDU values" ]
fontStyle USE FONT2
}
appearance Appearance {
material Material {
diffuseColor 0 0.8 0.4
}
}
}
]
}
Transform {
translation 0 4 0
children [
Shape {
geometry DEF SignalOutput1 Text {
string [ "Signal Output1 unset" ]
fontStyle USE FONT2
}
appearance DEF YellowAppearance2 Appearance {
material Material {
diffuseColor 0.8 0.8 0
}
}
}
]
}
Transform {
translation 0 -1 0
children [
Shape {
geometry DEF SignalOutput2 Text {
string [ "Signal Output2 unset" ]
fontStyle USE FONT2
}
appearance USE YellowAppearance2
}
]
}
]
}
DEF SignalOutputAssembler1 Script {
# surprising limit on MFString: 10 strings
outputOnly MFString messageResult
inputOnly SFBool active
inputOnly SFTime timestamp
inputOnly SFBool isRtpHeaderHeard
inputOnly SFInt32 radioID
inputOnly SFInt32 encodingScheme
inputOnly SFInt32 tdlType
inputOnly SFInt32 sampleRate
inputOnly SFInt32 samples
inputOnly SFInt32 dataLength
inputOnly SFInt32 data00
# surprising limit on MFString: 10 strings
url [ "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; }
" ]
}
DEF SignalOutputAssembler2 Script {
outputOnly MFString messageResult
inputOnly SFInt32 data01
inputOnly SFInt32 data02
inputOnly SFInt32 data03
inputOnly SFInt32 data04
inputOnly SFInt32 data05
inputOnly SFInt32 data06
inputOnly SFInt32 data07
inputOnly SFInt32 data08
inputOnly SFInt32 data09
inputOnly SFInt32 data10
url [ "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; }
" ]
}
]
}
]
}
DEF SignalPduScriptNode Script {
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
initializeOnly SFString radioPduType "SignalPdu"
# Initialization fields
initializeOnly SFTime readInterval IS readInterval
initializeOnly SFTime writeInterval IS writeInterval
initializeOnly SFInt32 siteID IS siteID
initializeOnly SFInt32 applicationID IS applicationID
initializeOnly SFInt32 entityID IS entityID
initializeOnly SFString address IS address
initializeOnly SFInt32 port IS port
initializeOnly SFString multicastRelayHost IS multicastRelayHost
initializeOnly SFInt32 multicastRelayPort IS multicastRelayPort
initializeOnly SFBool rtpHeaderExpected IS rtpHeaderExpected
initializeOnly SFBool trace IS trace
# Generic events
inputOnly SFTime update # [appinfo] update is triggered by local TimeSensor clocks to allow regular read/write
outputOnly SFBool active IS active
outputOnly SFTime timestamp IS timestamp
outputOnly SFBool isRtpHeaderHeard IS isRtpHeaderHeard
# RadioCommunicationsFamily events
outputOnly SFInt32 radioID IS radioID
# SignalPdu fields
outputOnly SFInt32 encodingScheme IS encodingScheme
outputOnly SFInt32 tdlType IS tdlType
outputOnly SFInt32 sampleRate IS sampleRate
outputOnly SFInt32 samples IS samples
outputOnly SFInt32 dataLength IS dataLength
outputOnly SFInt32 data00 IS data00
outputOnly SFInt32 data01 IS data01
outputOnly SFInt32 data02 IS data02
outputOnly SFInt32 data03 IS data03
outputOnly SFInt32 data04 IS data04
outputOnly SFInt32 data05 IS data05
outputOnly SFInt32 data06 IS data06
outputOnly SFInt32 data07 IS data07
outputOnly SFInt32 data08 IS data08
outputOnly SFInt32 data09 IS data09
outputOnly SFInt32 data10 IS data10
mustEvaluate TRUE
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
# Initialization fields
# Generic events
# RadioCommunicationsFamily events
# SignalPdu fields
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
# Initialization fields
# Generic events
# RadioCommunicationsFamily events
# SignalPdu fields
url [ "RadioCommunicationsPduScriptNode.class" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class"
]
}
DEF SignalPduReadIntervalClock TimeSensor {
loop TRUE
}
DEF SignalPduWriteIntervalClock TimeSensor {
enabled FALSE
loop TRUE
}
ROUTE SignalPduReadIntervalClock.cycleTime TO SignalPduScriptNode.update
ROUTE SignalPduWriteIntervalClock.cycleTime TO SignalPduScriptNode.update
ROUTE SignalPduScriptNode.active TO SignalOutputAssembler1.active
ROUTE SignalPduScriptNode.timestamp TO SignalOutputAssembler1.timestamp
ROUTE SignalPduScriptNode.isRtpHeaderHeard TO SignalOutputAssembler1.isRtpHeaderHeard
ROUTE SignalPduScriptNode.radioID TO SignalOutputAssembler1.radioID
ROUTE SignalPduScriptNode.encodingScheme TO SignalOutputAssembler1.encodingScheme
ROUTE SignalPduScriptNode.tdlType TO SignalOutputAssembler1.tdlType
ROUTE SignalPduScriptNode.sampleRate TO SignalOutputAssembler1.sampleRate
ROUTE SignalPduScriptNode.samples TO SignalOutputAssembler1.samples
ROUTE SignalPduScriptNode.dataLength TO SignalOutputAssembler1.dataLength
ROUTE SignalPduScriptNode.data00 TO SignalOutputAssembler1.data00
ROUTE SignalPduScriptNode.data01 TO SignalOutputAssembler2.data01
ROUTE SignalPduScriptNode.data02 TO SignalOutputAssembler2.data02
ROUTE SignalPduScriptNode.data03 TO SignalOutputAssembler2.data03
ROUTE SignalPduScriptNode.data04 TO SignalOutputAssembler2.data04
ROUTE SignalPduScriptNode.data05 TO SignalOutputAssembler2.data05
ROUTE SignalPduScriptNode.data06 TO SignalOutputAssembler2.data06
ROUTE SignalPduScriptNode.data07 TO SignalOutputAssembler2.data07
ROUTE SignalPduScriptNode.data08 TO SignalOutputAssembler2.data08
ROUTE SignalPduScriptNode.data09 TO SignalOutputAssembler2.data09
ROUTE SignalPduScriptNode.data10 TO SignalOutputAssembler2.data10
ROUTE SignalOutputAssembler1.messageResult TO SignalOutput1.string
ROUTE SignalOutputAssembler2.messageResult TO SignalOutput2.string
}
# ============================================================
PROTO TransmitterPdu [
# set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry
inputOutput SFInt32 whichGeometry 0
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
initializeOnly SFVec3f bboxCenter 0 0 0 # [appinfo] Bounding box center: position offset from origin of local coordinate system.
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
initializeOnly SFVec3f bboxSize -1 -1 -1 # [appinfo] Bounding box size: automatically calculated can be specified as an optimization or constraint.
# Initialization fields
initializeOnly SFTime readInterval 0.1
initializeOnly SFTime writeInterval 1.0
initializeOnly SFInt32 siteID 14
initializeOnly SFInt32 applicationID 17
initializeOnly SFInt32 entityID 9
initializeOnly SFString address "224.2.181.145"
initializeOnly SFInt32 port 62040
initializeOnly SFString multicastRelayHost "devo.cs.nps.navy.mil"
initializeOnly SFInt32 multicastRelayPort 8010
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
inputOutput SFString networkMode "standAlone" # [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)
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isStandAlone # [appinfo] Whether networkMode standAlone (ignore network but still respond to local events) is true/false
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isMaster # [appinfo] Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false
### Warning: ProtoInterface is unreferenced in ProtoBody with no corresponding IS/connect/@protoField
outputOnly SFBool isRemote # [appinfo] Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false
initializeOnly SFBool rtpHeaderExpected FALSE
outputOnly SFBool isRtpHeaderHeard # [appinfo] whether RTP header was found prepended to DIS packet
initializeOnly SFBool trace FALSE
# Generic events
outputOnly SFBool active
outputOnly SFTime timestamp
# RadioCommunicationsFamily events
outputOnly SFInt32 radioID
# TransmitterPdu fields
outputOnly SFVec3f antennaLocation
outputOnly SFInt32 antennaPatternLength
outputOnly SFInt32 antennaPatternType
outputOnly SFInt32 cryptoKeyID
outputOnly SFInt32 cryptoSytem
outputOnly SFInt32 frequency
outputOnly SFInt32 inputSource
outputOnly SFInt32 lengthOfModulationParameters
outputOnly SFInt32 modulationTypeDetail
outputOnly SFInt32 modulationTypeMajor
outputOnly SFInt32 modulationTypeSpreadSpectrum
outputOnly SFInt32 modulationTypeSystem
outputOnly SFInt32 power
outputOnly SFInt32 radioEntityTypeCategory
outputOnly SFInt32 radioEntityTypeCountry
outputOnly SFInt32 radioEntityTypeDomain
outputOnly SFInt32 radioEntityTypeKind
outputOnly SFInt32 radioEntityTypeNomenclature
outputOnly SFInt32 radioEntityTypeNomenclatureVersion
outputOnly SFVec3f relativeAntennaLocation
outputOnly SFInt32 transmitFrequencyBandwidth
outputOnly SFInt32 transmitState
] {
DEF TransmitterPduGeometrySwitch Switch {
whichChoice -1
whichChoice IS whichGeometry
# whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry
children [
# whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry
Group {
children [
Viewpoint {
description "Transmitter Pdu Observer"
position 0 0 15
}
### Warning: Viewpoint behavior not guaranteed as child (or descendant) of Switch node [Switch DEF='TransmitterPduGeometrySwitch']
Group {
children [
Transform {
translation 0 6 0
children [
Shape {
geometry Text {
string [ "Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console" ]
fontStyle DEF FONT3 FontStyle {
justify [ "MIDDLE" "BEGIN" ]
size 0.5
}
}
appearance Appearance {
material Material {
diffuseColor 0 0.4 0.8
}
}
}
]
}
Transform {
translation 0 4.75 0
children [
Shape {
geometry Text {
string [ "Transmitter PDU values" ]
fontStyle USE FONT3
}
appearance Appearance {
material Material {
diffuseColor 0 0.8 0.4
}
}
}
]
}
Transform {
translation 0 4 0
children [
Shape {
geometry DEF TransmitterOutput1 Text {
string [ "Transmitter Output1 unset" ]
fontStyle USE FONT3
}
appearance DEF YellowAppearance3 Appearance {
material Material {
diffuseColor 0.8 0.8 0
}
}
}
]
}
Transform {
translation 0 -1 0
children [
Shape {
geometry DEF TransmitterOutput2 Text {
string [ "Transmitter Output2 unset" ]
fontStyle USE FONT3
}
appearance USE YellowAppearance3
}
]
}
Transform {
translation 0 -6 0
children [
Shape {
geometry DEF TransmitterOutput3 Text {
string [ "Transmitter Output2 unset" ]
fontStyle USE FONT3
}
appearance USE YellowAppearance3
}
]
}
]
}
DEF TransmitterOutputAssembler1 Script {
# surprising limit on MFString: 10 strings
outputOnly MFString messageResult
inputOnly SFBool active
inputOnly SFTime timestamp
inputOnly SFBool isRtpHeaderHeard
inputOnly SFInt32 radioID
inputOnly SFVec3f antennaLocation
inputOnly SFInt32 antennaPatternLength
inputOnly SFInt32 antennaPatternType
inputOnly SFInt32 cryptoKeyID
inputOnly SFInt32 cryptoSytem
inputOnly SFInt32 frequency
# surprising limit on MFString: 10 strings
url [ "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; }
" ]
}
DEF TransmitterOutputAssembler2 Script {
outputOnly MFString messageResult
inputOnly SFInt32 inputSource
inputOnly SFInt32 lengthOfModulationParameters
inputOnly SFInt32 modulationTypeDetail
inputOnly SFInt32 modulationTypeMajor
inputOnly SFInt32 modulationTypeSpreadSpectrum
inputOnly SFInt32 modulationTypeSystem
inputOnly SFInt32 power
inputOnly SFInt32 radioEntityTypeCategory
inputOnly SFInt32 radioEntityTypeCountry
inputOnly SFInt32 radioEntityTypeDomain
url [ "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; }
" ]
}
DEF TransmitterOutputAssembler3 Script {
outputOnly MFString messageResult
inputOnly SFInt32 radioEntityTypeKind
inputOnly SFInt32 radioEntityTypeNomenclature
inputOnly SFInt32 radioEntityTypeNomenclatureVersion
inputOnly SFVec3f relativeAntennaLocation
inputOnly SFInt32 transmitFrequencyBandwidth
inputOnly SFInt32 transmitState
url [ "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; }
" ]
}
]
}
]
}
DEF TransmitterPduScriptNode Script {
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
initializeOnly SFString radioPduType "TransmitterPdu"
# Initialization fields
initializeOnly SFTime readInterval IS readInterval
initializeOnly SFTime writeInterval IS writeInterval
initializeOnly SFInt32 siteID IS siteID
initializeOnly SFInt32 applicationID IS applicationID
initializeOnly SFInt32 entityID IS entityID
initializeOnly SFString address IS address
initializeOnly SFInt32 port IS port
initializeOnly SFString multicastRelayHost IS multicastRelayHost
initializeOnly SFInt32 multicastRelayPort IS multicastRelayPort
initializeOnly SFBool rtpHeaderExpected IS rtpHeaderExpected
outputOnly SFBool isRtpHeaderHeard IS isRtpHeaderHeard # [appinfo] whether RTP header was found prepended to DIS packet
initializeOnly SFBool trace IS trace
# Generic events
inputOnly SFTime update # [appinfo] update is triggered by local TimeSensor clocks to allow regular read/write
outputOnly SFBool active IS active
outputOnly SFTime timestamp IS timestamp
# RadioCommunicationsFamily events
outputOnly SFInt32 radioID IS radioID
# SignalPdu fields
outputOnly SFVec3f antennaLocation IS antennaLocation
outputOnly SFInt32 antennaPatternLength IS antennaPatternLength
outputOnly SFInt32 antennaPatternType IS antennaPatternType
outputOnly SFInt32 cryptoKeyID IS cryptoKeyID
outputOnly SFInt32 cryptoSytem IS cryptoSytem
outputOnly SFInt32 frequency IS frequency
outputOnly SFInt32 inputSource IS inputSource
outputOnly SFInt32 lengthOfModulationParameters IS lengthOfModulationParameters
outputOnly SFInt32 modulationTypeDetail IS modulationTypeDetail
outputOnly SFInt32 modulationTypeMajor IS modulationTypeMajor
outputOnly SFInt32 modulationTypeSpreadSpectrum IS modulationTypeSpreadSpectrum
outputOnly SFInt32 modulationTypeSystem IS modulationTypeSystem
outputOnly SFInt32 power IS power
outputOnly SFInt32 radioEntityTypeCategory IS radioEntityTypeCategory
outputOnly SFInt32 radioEntityTypeCountry IS radioEntityTypeCountry
outputOnly SFInt32 radioEntityTypeDomain IS radioEntityTypeDomain
outputOnly SFInt32 radioEntityTypeKind IS radioEntityTypeKind
outputOnly SFInt32 radioEntityTypeNomenclature IS radioEntityTypeNomenclature
outputOnly SFInt32 radioEntityTypeNomenclatureVersion IS radioEntityTypeNomenclatureVersion
outputOnly SFVec3f relativeAntennaLocation IS relativeAntennaLocation
outputOnly SFInt32 transmitFrequencyBandwidth IS transmitFrequencyBandwidth
outputOnly SFInt32 transmitState IS transmitState
mustEvaluate TRUE
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
# Initialization fields
# Generic events
# RadioCommunicationsFamily events
# SignalPdu fields
# Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu
# Initialization fields
# Generic events
# RadioCommunicationsFamily events
# SignalPdu fields
url [ "RadioCommunicationsPduScriptNode.class" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class"
]
}
DEF TransmitterPduReadIntervalClock TimeSensor {
loop TRUE
}
DEF TransmitterPduWriteIntervalClock TimeSensor {
enabled FALSE
loop TRUE
}
ROUTE TransmitterPduReadIntervalClock.cycleTime TO TransmitterPduScriptNode.update
ROUTE TransmitterPduWriteIntervalClock.cycleTime TO TransmitterPduScriptNode.update
ROUTE TransmitterPduScriptNode.active TO TransmitterOutputAssembler1.active
ROUTE TransmitterPduScriptNode.timestamp TO TransmitterOutputAssembler1.timestamp
ROUTE TransmitterPduScriptNode.isRtpHeaderHeard TO TransmitterOutputAssembler1.isRtpHeaderHeard
ROUTE TransmitterPduScriptNode.radioID TO TransmitterOutputAssembler1.radioID
ROUTE TransmitterPduScriptNode.antennaLocation TO TransmitterOutputAssembler1.antennaLocation
ROUTE TransmitterPduScriptNode.antennaPatternLength TO TransmitterOutputAssembler1.antennaPatternLength
ROUTE TransmitterPduScriptNode.antennaPatternType TO TransmitterOutputAssembler1.antennaPatternType
ROUTE TransmitterPduScriptNode.cryptoKeyID TO TransmitterOutputAssembler1.cryptoKeyID
ROUTE TransmitterPduScriptNode.cryptoSytem TO TransmitterOutputAssembler1.cryptoSytem
ROUTE TransmitterPduScriptNode.frequency TO TransmitterOutputAssembler1.frequency
ROUTE TransmitterPduScriptNode.inputSource TO TransmitterOutputAssembler2.inputSource
ROUTE TransmitterPduScriptNode.lengthOfModulationParameters TO TransmitterOutputAssembler2.lengthOfModulationParameters
ROUTE TransmitterPduScriptNode.modulationTypeDetail TO TransmitterOutputAssembler2.modulationTypeDetail
ROUTE TransmitterPduScriptNode.modulationTypeMajor TO TransmitterOutputAssembler2.modulationTypeMajor
ROUTE TransmitterPduScriptNode.modulationTypeSpreadSpectrum TO TransmitterOutputAssembler2.modulationTypeSpreadSpectrum
ROUTE TransmitterPduScriptNode.modulationTypeSystem TO TransmitterOutputAssembler2.modulationTypeSystem
ROUTE TransmitterPduScriptNode.power TO TransmitterOutputAssembler2.power
ROUTE TransmitterPduScriptNode.radioEntityTypeCategory TO TransmitterOutputAssembler2.radioEntityTypeCategory
ROUTE TransmitterPduScriptNode.radioEntityTypeCountry TO TransmitterOutputAssembler2.radioEntityTypeCountry
ROUTE TransmitterPduScriptNode.radioEntityTypeDomain TO TransmitterOutputAssembler2.radioEntityTypeDomain
ROUTE TransmitterPduScriptNode.radioEntityTypeKind TO TransmitterOutputAssembler3.radioEntityTypeKind
ROUTE TransmitterPduScriptNode.radioEntityTypeNomenclature TO TransmitterOutputAssembler3.radioEntityTypeNomenclature
ROUTE TransmitterPduScriptNode.radioEntityTypeNomenclatureVersion TO TransmitterOutputAssembler3.radioEntityTypeNomenclatureVersion
ROUTE TransmitterPduScriptNode.relativeAntennaLocation TO TransmitterOutputAssembler3.relativeAntennaLocation
ROUTE TransmitterPduScriptNode.transmitFrequencyBandwidth TO TransmitterOutputAssembler3.transmitFrequencyBandwidth
ROUTE TransmitterPduScriptNode.transmitState TO TransmitterOutputAssembler3.transmitState
ROUTE TransmitterOutputAssembler1.messageResult TO TransmitterOutput1.string
ROUTE TransmitterOutputAssembler2.messageResult TO TransmitterOutput2.string
ROUTE TransmitterOutputAssembler3.messageResult TO TransmitterOutput3.string
}
# ============================================================
# Default content
Group {
children [
Transform {
translation -15 15 0
children [
ReceiverPdu {
}
]
}
Transform {
translation -15 -15 0
children [
ReceiverPdu {
receivedPower 0.0
}
]
}
Transform {
translation 0 15 0
children [
SignalPdu {
}
]
}
Transform {
translation 0 -15 0
children [
SignalPdu {
}
]
}
Transform {
translation 15 15 0
children [
TransmitterPdu {
}
]
}
Transform {
translation 15 -15 0
children [
TransmitterPdu {
relativeAntennaLocation 0 0 0
transmitFrequencyBandwidth 0.0
}
]
}
]
}