From e990d63ece22f08518239c56a0d7c66a7dc6f7ca Mon Sep 17 00:00:00 2001 From: brutzman <brutzman@nps.edu> Date: Tue, 11 Jan 2022 23:03:47 -0800 Subject: [PATCH] initializeSimulationEntities(), SimulationManager addition --- .../ExampleSimulationProgram.java | 104 +++++++++----- .../ExampleSimulationProgramLog.txt | 135 +++++++++--------- 2 files changed, 140 insertions(+), 99 deletions(-) diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java index 75446336ba..87da713991 100644 --- a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java +++ b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java @@ -12,6 +12,8 @@ import edu.nps.moves.dis7.pdus.*; import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface; import edu.nps.moves.dis7.utilities.PduFactory; import edu.nps.moves.dis7.utilities.stream.PduRecorder; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; @@ -29,6 +31,7 @@ public class ExampleSimulationProgram static final int NETWORK_PORT_DEFAULT = 3000; String networkAddress = NETWORK_ADDRESS_DEFAULT; int networkPort = NETWORK_PORT_DEFAULT; + String thisHostName = "localhost"; String DEFAULT_OUTPUT_DIRECTORY = "./pduLog"; /** seconds for real-time execution (not simulation time, which may or may not be the same) */ @@ -42,6 +45,57 @@ public class ExampleSimulationProgram * Output prefix to help with logging by identifying this class (overridden in subclass). */ protected static String TRACE_PREFIX; + + /* Declare DIS Protocol Data Unit (PDU) classes for simulation entities */ + + PduFactory.TimestampStyle timestampStyle = PduFactory.TimestampStyle.YEAR; + PduFactory pduFactory = new PduFactory(timestampStyle); + + protected EntityID entityID_1 = new EntityID(); + protected EntityID entityID_2 = new EntityID(); + protected EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu(); + protected EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu(); + protected FirePdu firePdu_1a = pduFactory.makeFirePdu(); // for entity 1 first weapon (if any) +// protected FirePdu firePdu_1b = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any) + protected MunitionDescriptor munitionDescriptor1 = new MunitionDescriptor(); + + SimulationManager simulationManager = new SimulationManager(); + + /** Get ready, get set... initialize simulation entities + */ + public void initializeSimulationEntities() + { + + // Your model setup: define participants. who's who in this zoo? + // Assuming you keep track of entity objects... here is some support for for Entity 1. + + // PDU objects are already created, now set their values. + entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; + + entityID_2.setSiteID(1).setApplicationID(2).setEntityID(4); // made-up example ID; + // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute? + + entityStatePdu_1.setEntityID(entityID_1); + entityStatePdu_1.setForceId(ForceID.FRIENDLY); + entityStatePdu_1.setEntityType(new _001Poseidon()); // note import statement above + entityStatePdu_1.setMarking("Entity #1"); + entityStatePdu_1.getMarkingString(); // check + + entityStatePdu_2.setEntityID(entityID_2); + entityStatePdu_2.setForceId(ForceID.OPPOSING); + entityStatePdu_2.setEntityType(new _002Triton()); // note import statement above + entityStatePdu_2.setMarking("Entity #2"); + + // TODO how should we customize this munition? what is it for your simulation? + munitionDescriptor1.setQuantity(1); + firePdu_1a.setDescriptor(munitionDescriptor1).setRange(1000.0f); + + // TODO simulation management PDUs for startup, planning to design special class support +// simulationManager.addEntity(); + simulationManager.setDescriptor("ExampleSimulationProgram"); + simulationManager.addHost(thisHostName); + simulationManager.setDisThreadedNetworkInterface(disNetworkInterface); + } /** * This runSimulationLoops() method is for you, a customizable programmer-modifiable @@ -69,35 +123,10 @@ public class ExampleSimulationProgram pduRecorder.setVerbose(true); - // Your model setup: define participants. who's who in this zoo? - // Assuming you keep track of entity objects... here is some support for for Entity 1. + initializeSimulationEntities(); - // create PDU objects and set their values. - EntityID entityID_1 = new EntityID(); - entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; - - EntityID entityID_2 = new EntityID(); - entityID_2.setSiteID(1).setApplicationID(2).setEntityID(4); // made-up example ID; - // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute? - - EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu(); - entityStatePdu_1.setEntityID(entityID_1); - entityStatePdu_1.setForceId(ForceID.FRIENDLY); - entityStatePdu_1.setEntityType(new _001Poseidon()); // note import statement above - entityStatePdu_1.setMarking("Entity #1"); - entityStatePdu_1.getMarkingString(); // check - - EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu(); - entityStatePdu_2.setEntityID(entityID_2); - entityStatePdu_2.setForceId(ForceID.OPPOSING); - entityStatePdu_2.setEntityType(new _002Triton()); // note import statement above - entityStatePdu_2.setMarking("Entity #2"); - - FirePdu firePdu_1a = pduFactory.makeFirePdu(); // for entity 1 first weapon (if any) -// FirePdu firePdu_1b = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any) - // should we customize this munition? what is it for your simulation? - - // TODO simulation management PDUs for startup, planning to design special class support + simulationManager.simulationJoin(); + simulationManager.simulationStart(); // =================================================================================================== // loop the simulation while allowed, programmer can set additional conditions to break out and finish @@ -162,7 +191,10 @@ public class ExampleSimulationProgram narrativeMessage2 = "runSimulation() completed successfully"; // all done sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3); System.out.println ("... [final CommentPdu successfully sent for simulation]"); + // TODO simulation management PDUs + simulationManager.simulationStop(); + simulationManager.simulationLeave(); } catch (InterruptedException iex) // handle any exception that your code might choose to provoke! { @@ -184,8 +216,6 @@ public class ExampleSimulationProgram VariableRecordType otherComment = VariableRecordType.OTHER; // class variables - PduFactory pduFactory = new PduFactory(); - PduFactory.TimestampStyle timestampStyle = PduFactory.TimestampStyle.YEAR; DisThreadedNetworkInterface disNetworkInterface; DisThreadedNetworkInterface.PduListener pduListener; Pdu receivedPdu; @@ -198,6 +228,16 @@ public class ExampleSimulationProgram public ExampleSimulationProgram() { pduFactory.setTimestampStyle(timestampStyle); + + try + { + thisHostName = InetAddress.getLocalHost().getHostName(); + System.out.println(TRACE_PREFIX + "thisHostName=" + thisHostName); + } + catch (UnknownHostException uhe) + { + System.out.println(TRACE_PREFIX + thisHostName + "not connected to network: " + uhe.getMessage()); + } } /** @@ -207,7 +247,7 @@ public class ExampleSimulationProgram */ public ExampleSimulationProgram(String address, int port) { - super(); // if code block is provided + super(); setNetworkAddress(address); @@ -388,7 +428,7 @@ public class ExampleSimulationProgram } /** - * Initial execution via main() method: handle args array of initialization arguments here + * Initial execution via main() method: handle args array of command-line initialization (CLI) arguments here * @param args command-line parameters: network address and port */ protected void handleArgs (String[] args) diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt index 1837e16790..53d62ff52f 100644 --- a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt +++ b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt @@ -7,14 +7,15 @@ Compiling 1 source file to C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\buil compile-single: run-single: [OpenDis7Examples.ExampleSimulationProgram] main() started... -[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz +[OpenDis7Examples.ExampleSimulationProgram] thisHostName=IT160907-UWALPP +[DisThreadedNetworkInterface] using network interface PANGP Virtual Ethernet Adapter [DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete. [DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true [DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true 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\PduCaptureLog4.dislog -[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz +Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog1.dislog +[DisThreadedNetworkInterface] using network interface PANGP Virtual Ethernet Adapter [DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete. [DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true [DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true @@ -22,92 +23,92 @@ Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\ ... My simulation just did something, no really... ... [Pausing for 1.0 seconds] sending PDUs for simulation step 1, monitor loopback to confirm sent -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 1] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 1] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 1] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 2] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 2] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 2] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 3] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 3] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 3] DisPduType 22 COMMENT, size 104 bytes) *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 1] -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 4] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 4] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 4] DisPduType 01 ENTITY_STATE Entity #2, 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 2, monitor loopback to confirm sent -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 5] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 5] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 5] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 6] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 6] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 6] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 7] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 7] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface 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] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 8] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 8] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 8] DisPduType 01 ENTITY_STATE Entity #2, 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] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 9] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 9] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 9] DisPduType 01 ENTITY_STATE Entity #1, 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 PduRecorder] [receipt 10] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 11] DisPduType 22 COMMENT, size 104 bytes) *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 3] -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 12] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] DisPduType 01 ENTITY_STATE Entity #2, 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 4, monitor loopback to confirm sent -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 13] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 14] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface 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] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 16] DisPduType 01 ENTITY_STATE Entity #2, 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 5, monitor loopback to confirm sent -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 17] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 17] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 17] DisPduType 01 ENTITY_STATE Entity #1, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 18] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 18] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 18] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 19] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 19] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 19] DisPduType 22 COMMENT, size 104 bytes) *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 5] -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 20] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 20] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 20] DisPduType 01 ENTITY_STATE Entity #2, size 144 bytes) ... [PDUs successfully sent for this loop] ... [loop termination condition met, simulationComplete=true] -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes) -[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes) -[DisThreadedNetworkInterface PduRecorder] [receipt 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 21] DisPduType 22 COMMENT, size 120 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 21] DisPduType 22 COMMENT, size 120 bytes) +[DisThreadedNetworkInterface PduRecorder] [receipt 21] DisPduType 22 COMMENT, size 120 bytes) *** [Narrative comment sent: COMPLETE_EVENT_REPORT] [MV3500 ExampleSimulationProgram, runSimulation() completed successfully] ... [final CommentPdu successfully sent for simulation] *** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=false receiveThread.isInterrupted()=true @@ -117,6 +118,6 @@ sending PDUs for simulation step 5, monitor loopback to confirm sent *** killThread() status: receiveThread.isAlive()=false receiveThread.isInterrupted()=true *** Thread close status: sendingThread.isAlive()=false receiveThread.isAlive()=false -PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog4.dislog +PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog1.dislog [OpenDis7Examples.ExampleSimulationProgram] complete. BUILD SUCCESSFUL (total time: 10 seconds) -- GitLab