dis_rs/v7/entity_state/
mod.rs1use crate::enumerations::{
2 AirPlatformCapabilities, CulturalFeatureCapabilities, EntityCapabilities, EntityKind,
3 EnvironmentalCapabilities, ExpendableCapabilities, LandPlatformCapabilities,
4 LifeFormsCapabilities, MunitionCapabilities, PlatformDomain, RadioCapabilities,
5 SensorEmitterCapabilities, SpacePlatformCapabilities, SubsurfacePlatformCapabilities,
6 SupplyCapabilities, SurfacePlatformCapabilities,
7};
8use crate::model::EntityType;
9
10pub(crate) mod parser;
11
12#[must_use]
15pub fn entity_capabilities_from_bytes(
16 capabilities: u32,
17 entity_type: &EntityType,
18) -> EntityCapabilities {
19 match (entity_type.kind, entity_type.domain) {
20 (EntityKind::Other, _) => EntityCapabilities::Unspecified(0u32),
21 (EntityKind::Platform, PlatformDomain::Land) => {
22 EntityCapabilities::LandPlatformEntityCapabilities(LandPlatformCapabilities::from(
23 capabilities,
24 ))
25 }
26 (EntityKind::Platform, PlatformDomain::Air) => {
27 EntityCapabilities::AirPlatformEntityCapabilities(AirPlatformCapabilities::from(
28 capabilities,
29 ))
30 }
31 (EntityKind::Platform, PlatformDomain::Surface) => {
32 EntityCapabilities::SurfacePlatformEntityCapabilities(
33 SurfacePlatformCapabilities::from(capabilities),
34 )
35 }
36 (EntityKind::Platform, PlatformDomain::Subsurface) => {
37 EntityCapabilities::SubsurfacePlatformEntityCapabilities(
38 SubsurfacePlatformCapabilities::from(capabilities),
39 )
40 }
41 (EntityKind::Platform, PlatformDomain::Space) => {
42 EntityCapabilities::SpacePlatformEntityCapabilities(SpacePlatformCapabilities::from(
43 capabilities,
44 ))
45 }
46 (EntityKind::Munition, _) => {
47 EntityCapabilities::MunitionEntityCapabilities(MunitionCapabilities::from(capabilities))
48 }
49 (EntityKind::LifeForm, _) => EntityCapabilities::LifeFormsEntityCapabilities(
50 LifeFormsCapabilities::from(capabilities),
51 ),
52 (EntityKind::Environmental, _) => EntityCapabilities::EnvironmentalEntityCapabilities(
53 EnvironmentalCapabilities::from(capabilities),
54 ),
55 (EntityKind::CulturalFeature, _) => EntityCapabilities::CulturalFeatureEntityCapabilities(
56 CulturalFeatureCapabilities::from(capabilities),
57 ),
58 (EntityKind::Supply, _) => {
59 EntityCapabilities::SupplyEntityCapabilities(SupplyCapabilities::from(capabilities))
60 }
61 (EntityKind::Radio, _) => {
62 EntityCapabilities::RadioEntityCapabilities(RadioCapabilities::from(capabilities))
63 }
64 (EntityKind::Expendable, _) => EntityCapabilities::ExpendableEntityCapabilities(
65 ExpendableCapabilities::from(capabilities),
66 ),
67 (EntityKind::SensorEmitter, _) => EntityCapabilities::SensorEmitterEntityCapabilities(
68 SensorEmitterCapabilities::from(capabilities),
69 ),
70 (_, _) => EntityCapabilities::Unspecified(capabilities),
71 }
72}