#pdu #dis #simulation #protocols #interactive #distributed #lib

dis_lib

An implementation of the Distributed Interactive Simulation protocol in Rust

1 unstable release

0.1.0 Mar 31, 2022

#5 in #dis

MIT license

180KB
4K SLoC

DIS for Rust

dis-lib is an implementation of the Distributed Interactive Simulation (DIS) protocol for Rust. It provides functions to build PDUs in applications, send them out via a network and parse received byte streams into PDUs.

Constructing PDUs is done via builder pattern constructors.

Given a buffer, the lib can return multiple PDUs in multiple DIS versions present in the buffer.

Features

Here is an overview of the DIS features supported by dis-lib. 'Read' means reading a PDU from a byte stream. 'Write' means constructing a PDU in a struct and serializing it to a buffer.

PDU / function v6 read v6 write v7 read v7 write
PDU Header V V
EntityState PDU V V
FirePdu
DetonationPdu
CollisionPdu
ServiceRequestPdu
ResupplyOfferPdu
ResupplyReceivedPdu
ResupplyCancelPdu
RepairCompletePdu
RepairResponsePdu
CreateEntityPdu
RemoveEntityPdu
StartResumePdu
StopFreezePdu
AcknowledgePdu
ActionRequestPdu
ActionResponsePdu
DataQueryPdu
SetDataPdu
DataPdu
EventReportPdu
CommentPdu
ElectromagneticEmissionPdu
DesignatorPdu
TransmitterPdu
SignalPdu
ReceiverPdu
AnnounceObjectPdu
DeleteObjectPdu
DescribeApplicationPdu
DescribeEventPdu
DescribeObjectPdu
RequestEventPdu
RequestObjectPdu
TimeSpacePositionIndicatorFIPdu
AppearanceFIPdu
ArticulatedPartsFIPdu
FireFIPdu
DetonationFIPdu
PointObjectStatePdu
LinearObjectStatePdu
ArealObjectStatePdu
EnvironmentPdu
TransferControlRequestPdu
TransferControlPdu
TransferControlAcknowledgePdu
IntercomControlPdu
IntercomSignalPdu
AggregatePdu
'Other' PDU V V
Dead Reckoning Algos

Dependencies

~2.5MB
~53K SLoC