1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
mod common;
mod v6;
mod v7;
mod constants;

include!(concat!(env!("OUT_DIR"), "/enumerations.rs"));

pub use enumerations::*;

pub use common::parse;
pub use common::parse_v6 as parse_v6_pdus;
pub use common::parse_v7 as parse_v7_pdus;

// TODO review required exports for the final API that the lib exposes
pub use common::model::*;
pub use common::symbolic_names::*;
pub use common::errors::*;

pub use common::entity_state::*;
pub use common::entity_state::model::*;
pub use common::other::*;

/*
TODO:
V Revise writing pdu's based on version
V Finish model of entity_state PDU (with v6 and v7 capabilities)
V Add entity appearance v7 to entity state
V Parse v7 entity_state PDU
- Finalize way to handle builders (how to build for different protocol versions, various fields with different layout)
- Common function for calculating body length based on header data (pdu_length - header_length); now at several places
- Incorporate Symbolic names from the standard (v7 - table 25)
- Dead-reckoning algorithms
- Improve error handling (specific errors for parsing and writing pdus, with possible validation checks)

DOCUMENTATION:
- Document behaviour that PduBodies try to model V7 as much as possible (parse v6 into), and use compatibility conversions to serialize (impl From<V7> for V6).

TESTS:
- Build Other PDU
V Read Other PDU
- Build EntityState PDU
- Reading EntityState PDU
- DIS v7 header

FIXES / ERROR HANDLING CASES:
- Serialize OtherPdu: check for sufficient buffer size?

*/