Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
NetworkedGraphicsMV3500
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Savage
NetworkedGraphicsMV3500
Commits
f5eb765c
Commit
f5eb765c
authored
3 years ago
by
Brutzman, Don
Browse files
Options
Downloads
Patches
Plain Diff
multiple refinements to allow satisfactory subclassing
parent
c30e3060
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
examples/src/OpenDis7Examples/ExampleSimulationProgram.java
+33
-25
33 additions, 25 deletions
examples/src/OpenDis7Examples/ExampleSimulationProgram.java
examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
+8
-9
8 additions, 9 deletions
...ples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
with
41 additions
and
34 deletions
examples/src/OpenDis7Examples/ExampleSimulationProgram.java
+
33
−
25
View file @
f5eb765c
...
...
@@ -22,16 +22,29 @@ import java.util.logging.Logger;
*/
public
class
ExampleSimulationProgram
{
pr
ivate
boolean
verboseComments
=
true
;
pr
otected
boolean
verboseComments
=
true
;
static
final
String
NETWORK_ADDRESS_DEFAULT
=
"239.1.2.3"
;
static
final
int
NETWORK_PORT_DEFAULT
=
3000
;
static
String
networkAddress
=
NETWORK_ADDRESS_DEFAULT
;
static
int
networkPort
=
NETWORK_PORT_DEFAULT
;
String
networkAddress
=
NETWORK_ADDRESS_DEFAULT
;
int
networkPort
=
NETWORK_PORT_DEFAULT
;
String
DEFAULT_OUTPUT_DIRECTORY
=
"./pduLog"
;
/** seconds for real-time execution (not simulation time, which may or may not be the same) */
double
currentTimeStep
=
1.0
;
// seconds
/** initial simulation time */
double
initialTime
=
0.0
;
/** current simulation time */
double
simulationTime
;
/**
* Output prefix to identify this class (override in subclass), helps with logging
*/
private
final
static
String
TRACE_PREFIX
=
"["
+
ExampleSimulationProgram
.
class
.
getName
()
+
"] "
;
/**
* This runSimulationLoops() method is for you, a
* programmer-modifiable method for defining and running a new simulation of interest.
* This runSimulationLoops() method is for you, a programmer-modifiable code block
* for defining and running a new simulation of interest.
*
* Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that
* you can focus on your model entities and activities.
* Expandable support includes DIS EntityStatePdu, FirePdu and CommentPdu all available for
...
...
@@ -45,12 +58,10 @@ public class ExampleSimulationProgram
public
void
runSimulationLoops
()
{
try
{
/** seconds for real-time execution (not simulation time, which may or may not be the same) */
final
double
SIMULATION_LOOP_DURATION_SECONDS
=
1.0
;
final
int
SIMULATION_MAX_LOOP_COUNT
=
10
;
// be deliberate out out there! also avoid infinite loops.
{
final
int
SIMULATION_MAX_LOOP_COUNT
=
10
;
// be deliberate out there! also avoid infinite loops.
int
simulationLoopCount
=
0
;
// variable, initialized at 0
boolean
simulationComplete
=
false
;
// sentinel variable as termination condition,
,
are we done yet?
boolean
simulationComplete
=
false
;
// sentinel variable as termination condition, are we done yet?
// TODO reset clock to zero each time for consistent outputs
...
...
@@ -121,8 +132,8 @@ public class ExampleSimulationProgram
// staying synchronized with timestep: wait duration for elapsed time in this loop
// Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
Thread
.
sleep
((
long
)(
SIMULATION_LOOP_DURATION_SECONDS
*
1000
));
// seconds * (1000 msec/sec) = milliseconds
System
.
out
.
println
(
"... [Pausing for "
+
SIMULATION_LOOP_DURATION_SECONDS
+
" seconds]"
);
Thread
.
sleep
((
long
)(
currentTimeStep
*
1000
));
// seconds * (1000 msec/sec) = milliseconds
System
.
out
.
println
(
"... [Pausing for "
+
currentTimeStep
+
" seconds]"
);
// OK now send the status PDUs for this loop, and then continue
System
.
out
.
println
(
"sending PDUs for simulation step "
+
simulationLoopCount
+
", monitor loopback to confirm sent"
);
...
...
@@ -162,11 +173,6 @@ public class ExampleSimulationProgram
VariableRecordType
statusComment
=
VariableRecordType
.
APPLICATION_STATUS
;
VariableRecordType
timeStepComment
=
VariableRecordType
.
APPLICATION_TIMESTEP
;
VariableRecordType
otherComment
=
VariableRecordType
.
OTHER
;
/**
* Output prefix to identify this class, helps with logging
*/
private
final
static
String
TRACE_PREFIX
=
"["
+
ExampleSimulationProgram
.
class
.
getName
()
+
"] "
;
// class variables
PduFactory
pduFactory
=
new
PduFactory
();
...
...
@@ -191,6 +197,8 @@ public class ExampleSimulationProgram
*/
public
ExampleSimulationProgram
(
String
address
,
int
port
)
{
super
();
// if code block is provided
setNetworkAddress
(
address
);
setNetworkPort
(
port
);
...
...
@@ -209,7 +217,7 @@ public class ExampleSimulationProgram
*/
public
final
void
setNetworkAddress
(
String
newNetworkAddress
)
{
ExampleSimulationProgram
.
networkAddress
=
newNetworkAddress
;
this
.
networkAddress
=
newNetworkAddress
;
}
/**
...
...
@@ -225,7 +233,7 @@ public class ExampleSimulationProgram
*/
public
final
void
setNetworkPort
(
int
newNetworkPort
)
{
ExampleSimulationProgram
.
networkPort
=
newNetworkPort
;
this
.
networkPort
=
newNetworkPort
;
}
/**
...
...
@@ -255,7 +263,7 @@ public class ExampleSimulationProgram
pduRecorder
=
new
PduRecorder
(
outputDirectory
,
getNetworkAddress
(),
getNetworkPort
());
// assumes save
pduRecorder
.
setDescriptor
(
"ExampleSimulationProgram pduRecorder"
);
pduRecorder
.
setEncodingPduLog
(
PduRecorder
.
ENCODING_PLAINTEXT
);
pduRecorder
.
setVerbose
(
true
);
pduRecorder
.
setVerbose
(
true
);
// either sending, receiving or both
pduRecorder
.
start
();
// begin running
}
...
...
@@ -275,7 +283,7 @@ public class ExampleSimulationProgram
* Send a single Protocol Data Unit (PDU) of any type
* @param pdu the pdu to send
*/
pr
ivate
void
sendSinglePdu
(
Pdu
pdu
)
pr
otected
void
sendSinglePdu
(
Pdu
pdu
)
{
try
{
...
...
@@ -352,11 +360,11 @@ public class ExampleSimulationProgram
*/
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
TRACE_PREFIX
+
"started..."
);
System
.
out
.
println
(
TRACE_PREFIX
+
"
main()
started..."
);
ExampleSimulationProgram
thisProgram
=
new
ExampleSimulationProgram
();
// creates instance
ExampleSimulationProgram
thisProgram
=
new
ExampleSimulationProgram
();
// creates instance
within static main() method
// initial execution:
can
handle args array of initialization arguments here
// initial execution: handle args array of initialization arguments here
if
(
args
.
length
==
2
)
{
if
((
args
[
0
]
!=
null
)
&&
!
args
[
0
].
isEmpty
())
...
...
@@ -367,7 +375,7 @@ public class ExampleSimulationProgram
}
else
if
(
args
.
length
!=
0
)
{
System
.
err
.
println
(
"Usage: "
+
thisProgram
.
getClass
().
getName
()
+
" [address port]"
);
System
.
err
.
println
(
"Usage: "
+
thisProgram
.
getClass
().
get
Simple
Name
()
+
" [address port]"
);
System
.
exit
(-
1
);
}
// OK here we go...
...
...
This diff is collapsed.
Click to expand it.
examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
+
8
−
9
View file @
f5eb765c
...
...
@@ -6,12 +6,12 @@ Updating property file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\build\b
Compiling 1 source file to C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\build\classes
compile-single:
run-single:
[OpenDis7Examples.ExampleSimulationProgram] started...
[OpenDis7Examples.ExampleSimulationProgram]
main()
started...
[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
[DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete
Network confirmation: address=239.1.2.3 port=3000
Beginning pdu save to directory ./pduLog
Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog
Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog
29
.dislog
[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
[DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete
[PduRecorder ExampleSimulationProgram pduRecorder] listening to IP address 239.1.2.3 on port 3000
...
...
@@ -25,8 +25,8 @@ sending PDUs for simulation step 1, monitor loopback to confirm sent
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 2] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 2] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 3] DisPduType 22 COMMENT, size 104 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 3] DisPduType 22 COMMENT, size 104 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 3] DisPduType 22 COMMENT, size 104 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 3] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 1]
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 4] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes)
...
...
@@ -46,15 +46,15 @@ sending PDUs for simulation step 2, monitor loopback to confirm sent
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 7] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 2]
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 8] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 8] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 8] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 8] DisPduType 01 ENTITY_STATE, size 144 bytes)
... [PDUs successfully sent for this loop]
... My simulation just did something, no really...
... [Pausing for 1.0 seconds]
sending PDUs for simulation step 3, monitor loopback to confirm sent
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 9] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 9] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 9] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 9] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 10] DisPduType 02 FIRE, size 96 bytes)
...
...
@@ -76,8 +76,8 @@ sending PDUs for simulation step 4, monitor loopback to confirm sent
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] DisPduType 22 COMMENT, size 104 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 4]
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] DisPduType 01 ENTITY_STATE, size 144 bytes)
...
...
@@ -107,7 +107,6 @@ sending PDUs for simulation step 5, monitor loopback to confirm sent
*** [Narrative comment sent: COMPLETE_EVENT_REPORT] [MV3500 ExampleSimulationProgram, runSimulation() completed successfully]
... [final CommentPdu successfully sent for simulation]
Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog
[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] datagramSocket.leaveGroup address=239.1.2.3 port=3000 stop() complete
Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog29.dislog
[OpenDis7Examples.ExampleSimulationProgram] complete.
BUILD SUCCESSFUL (total time:
17
seconds)
BUILD SUCCESSFUL (total time:
9
seconds)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment