open-dis / opendis7-java Goto Github PK
View Code? Open in Web Editor NEWProject to provide a complete type-safe Java implementation of the DIS Protocol version 7 (IEEE 1278.1-2012) and SISO-REF-010 Enumerations specifications.
License: Other
Project to provide a complete type-safe Java implementation of the DIS Protocol version 7 (IEEE 1278.1-2012) and SISO-REF-010 Enumerations specifications.
License: Other
Had difficulty troubleshooting loss of PDU receipts. Incorrectly suspected a threading problem - perhaps caused by Debug mode instead of Run mode - nope.
Actual problem: running NPS PaloAlto GlobalConnect VPN blocked receipts! Neither multicast nor loopback is mentioned in the documentation, so this is likely an unintended interaction with the network interface card. And so, originally opened this issue as "loss of PDU receipts caused by VPN?!"
Disconnecting VPN showed PDU receipt again. Used DisThreadedNetworkInterface to test. This problem only manifests under Windows, not MacOSX.
Rebooting/retesting 2 days later showed the receipt working again! Something tricky is going on... but it appears to be local to one machine, or possibly to side effects from NPS VPN reconfiguration (in progress). Thus NPS VPN problems per se are not an issue to solve.
However: there ought to be a way to create a general self-test diagnostic that checks for such pathologies when creating DisThreadedNetworkInterface.
Found an interesting problem in DisThreadedNetworkInterface.selfTest() method where ESPDU changes to marking values were getting clobbered during fast sends/updates. This was shown by print statements showing the same marking value in rapid progression (rather than marking 1, marking 2, etc.).
Avoided this problem (for now) by creating a new PDU each time. I think this anomaly indicates that the library isn't fully thread safe, e.g. an ESPDU instance might get modified while still being sent (or reported upon). Some more thought will be needed for making all PDU methods thread safe.
Log of test results found in DisThreadedNetworkInterfaceSelfTestLog.txt
Individual test programs all compile and run individually, but not as part of the project.
Likely needs adjustment or upgrade of old test code to match JUnit5.
Typical output:
Testsuite: edu.nps.moves.dis7.CreateAllObjectTypesTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.428 secTestcase: initializationError(edu.nps.moves.dis7.CreateAllObjectTypesTest): Caused an ERROR
No runnable methods
java.lang.Exception: No runnable methods
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
We need to document the source of the OpenDIS surfer logo to confirm that we have rights to publish openly.
Thanks to the inestimable Don McGregor for first posing this image as our cool logo.
Where is the entityjars
directory mentioned in the readme? Alternatively, how does one go about creating entityjars
and the jars that are supposed to populate it?
Some variables, i.e. variableDatumLength, aren't even instantiated until well down into the marshal process, there for a PDU's marshaled length is undetermined at ByteBuffer capacity creation time.
The (Ala Moana Hawaii) test scene from VR Forces is used to provide a test example for DIS to X3D interpolators. The goal is to show both Cartesian and geospatial coordinates.
Cartesian:
Geospatial:
Hello all, apologies for long time no post here!
Am maintaining open-dis7-java and open-dis7-source-generator distributions, have also gotten all of the current SISO enumerations building in Java and working compatibly. Built jars are posted on the course site along with numerous test programs.
Currently maintained primary links follow.
As it turns out I am at IITSEC this week giving the DIS 101 Tutorial
If anyone else is here, am happy to meet and discuss. We've been quietly working for quite a while but are hoping to get going with the group again. Looking forward to further progress together.
EmitterSystem supports EmitterName enums, but not EmitterNameAdditional enums which cover part of all the enums defined in the standard. This means that enums which are part of EmitterNameAdditional cannot be put into EmitterSystem. Also, during unmarshall of EmitterSystem with an enum that is in the range EmitterNameAdditional covers, a null value is set to the systems emitterName attribute.
Hi @brutzman,
According to this page, the RadioType should contain only 6 fields, but the resulting implementation contains 7. It starts off with field names that match - EntityKind, Domain, Country, and then Category, but after that the implementation has Subcategory, Specific, and Extra, which are not in the standard. There's no mention of the Nomenclature, or Nomenclature version fields. Essentially, the unmarshalling pulls out 9 bytes from the PDU instead of the 8 bytes that it should for this field.
I noticed activity has picked up on the repo recently. Any chance of this one being fixed soon?
In the toListeners method of DisThreadedNetworkInterface the first code block requires, that one has to register at least one untyped listener (i.e. listener without reference to DisPduType) to get the typed listeners to be informed. This is an unexpected behaviour and should be changed.
Have been thinking about long-term development efforts and how we might setup servlets on savage.nps.edu and create a DIS PDU playground for connecting different systems.
Given that a server can have its own protected internal network, we might try setting this up for PDU sharing among applications and across various kinds of bridges. While any NPS work would be internal, the principles seem repeatable enough. Java servlet motto: write once, serve anywhere...
At following link, please find some concept diagrams of what the corresponding HTML pages might look like to connecting individuals.
All feedback and insights welcome. Have fun with Open DIS!
Found during tutorial:
[loading /modules/java.base/java/lang/annotation/Documented.class]
C:\x-nps-gitlab\opendis7-java\test\edu\nps\moves\dis7\test\AllPduRoundTripTest.java:52: warning: no comment
public static void afterAllTests()
C:\x-nps-gitlab\opendis7-java\test\edu\nps\moves\dis7\test\AllPduRoundTripTest.java:46: warning: no comment
public static void beforeAllTests()
C:\x-nps-gitlab\opendis7-java\test\edu\nps\moves\dis7\test\AllPduRoundTripTest.java:261: warning: no comment
public static void main(String[] args)
C:\x-nps-gitlab\opendis7-java\test\edu\nps\moves\dis7\test\AllPduRoundTripTest.java:57: warning: no comment
public void setUp() {
C:\x-nps-gitlab\opendis7-java\test\edu\nps\moves\dis7\test\AllPduRoundTripTest.java:66: warning: no comment
public void tearDown()
C:\x-nps-gitlab\opendis7-java\test\edu\nps\moves\dis7\test\AllPduRoundTripTest.java:71: warning: no comment
public void testRoundTripAllPdus()
I can't compile the project with lots of errors like
C:\path\to\opendis7-java\src-generated\edu\nps\moves\dis7\entities\chn\platform\land\CSSC6HY3Sawhorselauncher.java:31:
error: class CSSC6HY3SawhorseLauncher is public, should be declared in a file named CSSC6HY3SawhorseLauncher.java
public final class CSSC6HY3SawhorseLauncher extends EntityType
The problem is the wrong case in the file name CSSC6HY3Sawhorselauncher.java
instead of CSSC6HY3SawhorseLauncher.java
(with capital L
in Launcher
).
I can fix this locally on my machine but I think the repo should be updated as well. It's difficult however to generate a pull-request, since I'm on Windows and Git on Windows doesn't understand the file name has changed if it's only different by case. Maybe someone on Linux has to do it.
There seems to be two similar versions of the following class: HQ16TrackingandGuidanceRADARVehicle
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:
'src-generated/edu/nps/moves/dis7/entities/chn/platform/land/HQ16TrackingandGuidanceRADARVehicle.java'
'src-generated/edu/nps/moves/dis7/entities/chn/platform/land/HQ16TrackingandGuidanceRadarVehicle.java'
Should we remove one of them?
Need several stream encoding improvements for PLAINTEXT recording:
Hi again Don @brutzman ,
According to this breakdown, the TransmitterPdu
needs to have a 16-bit padding field for marshalling / unmarshalling after the InputSource
field, but the implementation misses it. There's only the later 24-bit padding field handled as a byte and a short.
A "hyphen-ectomy" is planned, we are preparing to rename project from
This simplification with lead to more consistency in deliverables without reducing capabilities. This only applies to the "7" series of codebases using the XML program generator.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.