1#![allow(deprecated)]
8
9use bitflags::bitflags;
10use bytes::{Buf, BufMut, BytesMut};
11use modular_bitfield::Specifier;
12use num_derive::FromPrimitive;
13use num_traits::FromPrimitive;
14
15use crate::pdu_macro::{FieldDeserialize, FieldLen, FieldSerialize};
16
17#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
19#[allow(non_camel_case_types)]
20pub enum ProtocolVersion {
21 Other = 0,
22 DIS_PDUv1 = 1,
23 IEEE1278_1993 = 2,
24 DIS_PDUv2_Third_Draft = 3,
25 DIS_PDUv2_Fourth_Draft_Revised = 4,
26 IEEE1278_1_1995 = 5,
27 IEEE1278_1A_1998 = 6,
28 #[default]
29 IEEE1278_1_2012 = 7,
30}
31
32impl ProtocolVersion {
33 #[must_use]
34 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
35 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
36 }
37}
38
39#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
41pub enum PduType {
42 #[default]
43 Other = 0,
44 EntityState = 1,
45 Fire = 2,
46 Detonation = 3,
47 Collision = 4,
48 ServiceRequest = 5,
49 ResupplyOffer = 6,
50 ResupplyReceived = 7,
51 ResupplyCancel = 8,
52 RepairComplete = 9,
53 RepairResponse = 10,
54 CreateEntity = 11,
55 RemoveEntity = 12,
56 StartResume = 13,
57 StopFreeze = 14,
58 Acknowledge = 15,
59 ActionRequest = 16,
60 ActionResponse = 17,
61 DataQuery = 18,
62 SetData = 19,
63 Data = 20,
64 EventReport = 21,
65 Comment = 22,
66 ElectromagneticEmission = 23,
67 Designator = 24,
68 Transmitter = 25,
69 Signal = 26,
70 Receiver = 27,
71 IFF = 28,
72 UnderwaterAcoustic = 29,
73 SupplementalEmission = 30,
74 IntercomSignal = 31,
75 IntercomControl = 32,
76 AggregateState = 33,
77 IsGroupOf = 34,
78 TransferOwnership = 35,
79 IsPartOf = 36,
80 MinefieldState = 37,
81 MinefieldQuery = 38,
82 MinefieldData = 39,
83 MinefieldResponseNack = 40,
84 EnvironmentalProcess = 41,
85 GriddedData = 42,
86 PointObjectState = 43,
87 LinearObjectState = 44,
88 ArealObjectState = 45,
89 TimeSpacePositionInformation = 46,
90 Appearance = 47,
91 ArticulatedParts = 48,
92 LiveEntityFire = 49,
93 LiveEntityDetonation = 50,
94 CreateEntityReliable = 51,
95 RemoveEntityReliable = 52,
96 StartResumeReliable = 53,
97 StopFreezeReliable = 54,
98 AcknowledgeReliable = 55,
99 ActionRequestReliable = 56,
100 ActionResponseReliable = 57,
101 DataQueryReliable = 58,
102 SetDataReliable = 59,
103 DataReliable = 60,
104 EventReportReliable = 61,
105 CommentReliable = 62,
106 RecordReliable = 63,
107 SetRecordReliable = 64,
108 RecordQueryReliable = 65,
109 CollisionElastic = 66,
110 EntityStateUpdate = 67,
111 DirectedEnergyFire = 68,
112 EntityDamageStatus = 69,
113 InformationOperationsAction = 70,
114 InformationOperationsReport = 71,
115 Attribute = 72,
116}
117
118impl PduType {
119 #[must_use]
120 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
121 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
122 }
123}
124
125#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
127pub enum ProtocolFamily {
128 #[default]
129 Other = 0,
130 EntityInformation = 1,
131 Warfare = 2,
132 Logistics = 3,
133 RadioCommunications = 4,
134 SimulationManagement = 5,
135 DistributedEmissionRegeneration = 6,
136 EntityManagement = 7,
137 Minefield = 8,
138 SyntheticEnvironment = 9,
139 SimulationManagementWithReliability = 10,
140 LiveEntityInformationInteraction = 11,
141 NonRealTime = 12,
142 InformationOperations = 13,
143}
144
145impl ProtocolFamily {
146 #[must_use]
147 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
148 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
149 }
150}
151
152#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
154pub enum ForceId {
155 #[default]
156 Other = 0,
157 Friendly = 1,
158 Opposing = 2,
159 Neutral = 3,
160 Friendly2 = 4,
161 Opposing2 = 5,
162 Neutral2 = 6,
163 Friendly3 = 7,
164 Opposing3 = 8,
165 Neutral3 = 9,
166 Friendly4 = 10,
167 Opposing4 = 11,
168 Neutral4 = 12,
169 Friendly5 = 13,
170 Opposing5 = 14,
171 Neutral5 = 15,
172 Friendly6 = 16,
173 Opposing6 = 17,
174 Neutral6 = 18,
175 Friendly7 = 19,
176 Opposing7 = 20,
177 Neutral7 = 21,
178 Friendly8 = 22,
179 Opposing8 = 23,
180 Neutral8 = 24,
181 Friendly9 = 25,
182 Opposing9 = 26,
183 Neutral9 = 27,
184 Friendly10 = 28,
185 Opposing10 = 29,
186 Neutral10 = 30,
187}
188
189impl ForceId {
190 #[must_use]
191 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
192 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
193 }
194}
195
196impl FieldSerialize for ForceId {
197 fn serialize_field(&self, buf: &mut BytesMut) {
198 buf.put_u8(*self as u8);
199 }
200}
201
202impl FieldDeserialize for ForceId {
203 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
204 Self::deserialize(buf)
205 }
206}
207
208impl FieldLen for ForceId {
209 fn field_len(&self) -> usize {
210 1
211 }
212}
213
214#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
216pub enum EntityKind {
217 #[default]
218 Other = 0,
219 Platform = 1,
220 Munition = 2,
221 LifeForm = 3,
222 Environmental = 4,
223 CulturalFeature = 5,
224 Supply = 6,
225 Radio = 7,
226 Expendable = 8,
227 SensorEmitter = 9,
228}
229
230impl EntityKind {
231 #[must_use]
232 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
233 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
234 }
235}
236
237#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
239pub enum OtherKinds {
240 #[default]
241 Other = 0,
242 Land = 1,
243 Air = 2,
244 Surface = 3,
245 Subsurface = 4,
246 Space = 5,
247}
248
249impl OtherKinds {
250 #[must_use]
251 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
252 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
253 }
254}
255
256#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
258pub enum LandDomainCategories {
259 #[default]
260 Other = 0,
261 Tank = 1,
262 ArmoredFightingVehicle,
263 ArmoredUtilityVehicle,
264 SelfPropelledArtillery,
265 TowedArtillery,
266 SmallWheeledUtilityVehicle,
267 LargeWheeledUtilityVehicle,
268 SmallTrackedUtilityVehicle,
269 LargeTrackedUtilityVehicle,
270 Mortar,
271 MinePlow,
272 MineRake,
273 MineRoller,
274 CargoTrailer,
275 FuelTrailer,
276 GeneratorTrailer,
277 WaterTrailer,
278 EngineerEquipment,
279 HeavyEquipmentTransportTrailer,
280 MaintenanceEquipmentTrailer,
281 Limber,
282 ChemicalDecontaminationTrailer,
283 WarningSystem,
284 TrainEngine,
285 TrainCar,
286 TrainCaboose,
287 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
288 CivilianVehicle,
289 AirDefenseMissileDefenseUnitEquipment,
290 C3ISystem,
291 OperationsFacility,
292 IntelligenceFacility,
293 SurveillanceFacility,
294 CommunicationsFacility,
295 CommandFacility,
296 C4IFacility,
297 ControlFacility,
298 FireControlFacility,
299 MissileDefenseFacility,
300 FieldCommandPost,
301 ObservationPost,
302 MineFlail = 41,
303 Unmanned = 50,
304 Motorcycle = 80,
305 Car = 81,
306 Bus,
307 SingleUnitCargoTruck,
308 SingleUnitUtilityEmergencyTruck,
309 MultipleUnitCargoTruck,
310 MultipleUnitUtilityEmergencyTruck,
311 ConstructionSpecialtyVehicle,
312 FarmSpecialtyVehicle,
313 Trailer,
314 Recreational,
315 NonMotorized,
316 Trains,
317 UtilityEmergencyCar,
318}
319
320impl LandDomainCategories {
321 #[must_use]
322 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
323 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
324 }
325}
326
327#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
329pub enum AirDomainCategories {
330 #[default]
331 Other = 0,
332 FighterAirDefense = 1,
333 AttackStrike = 2,
334 Bomber = 3,
335 CargoTanker = 4,
336 ASWPatrolObservation = 5,
337 ElectronicWarfare = 6,
338 Reconnaissance = 7,
339 SurveillanceC2 = 8,
340 AirSeaRescue = 9,
341 AttackHelicopter = 20,
342 UtilityHelicopter = 21,
343 AntiSubmarineWarfarePatrolHelicopter = 22,
344 CargoHelicopter = 23,
345 ObservationHelicopter = 24,
346 SpecialOperationsHelicopter = 25,
347 TrainingHelicopter = 26,
348 Trainer = 40,
349 Unmanned = 50,
350 NonCombatantCommercialAircraft = 57,
351 CivilianUltralightAircraftNonrigidWing = 80,
352 CivilianUltralightAircraftRigidWing = 81,
353 CivilianFixedWingAircraftGlider = 83,
354 CivilianFixedWingAircraftLightSport = 84,
355 CivilianFixedWingAircraftSmall = 85,
356 CivilianFixedWingAircraftMedium = 86,
357 CivilianFixedWingAircraftLarge = 87,
358 CivilianFixedWingAircraftHeavy = 88,
359 CivilianHelicopterSmall = 90,
360 CivilianHelicopterMedium = 91,
361 CivilianHelicopterLarge = 92,
362 CivilianAutogyro = 93,
363 CivilianLighterthanAirBalloon = 100,
364 CivilianLighterthanAirAirship = 101,
365}
366
367impl AirDomainCategories {
368 #[must_use]
369 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
370 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
371 }
372}
373
374#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
376pub enum SurfaceDomainCategories {
377 #[default]
378 Other = 0,
379 Carrier = 1,
380 CommandShipCruiser = 2,
381 GuidedMissileCruiser = 3,
382 GuidedMissileDestroyer = 4,
383 Destroyer = 5,
384 GuidedMissileFrigate = 6,
385 LightPatrolCraft = 7,
386 MineCountermeasureShipCraft = 8,
387 DockLandingShip = 9,
388 TankLandingShip = 10,
389 LandingCraft = 11,
390 LightCarrier = 12,
391 CruiserHelicopterCarrier = 13,
392 Hydrofoil = 14,
393 AirCushionSurfaceEffect = 15,
394 Auxiliary = 16,
395 AuxiliaryMerchantMarine = 17,
396 Utility = 18,
397 UnmannedSurfaceVehicle = 19,
398 LittoralCombatShips = 20,
399 SurveillanceShip = 21,
400 Frigate = 50,
401 Battleship = 51,
402 HeavyCruiser = 52,
403 DestroyerTender = 53,
404 AmphibiousAssaultShip = 54,
405 AmphibiousCargoShip = 55,
406 AmphibiousTransportDock = 56,
407 AmmunitionShip = 57,
408 CombatStoresShip = 58,
409 SurveillanceTowedArraySonarSystem = 59,
410 FastCombatSupportShip = 60,
411 NonCombatantShip = 61,
412 CoastGuardCutters = 62,
413 CoastGuardBoats = 63,
414 FastAttackCraft = 64,
415 InflatableBoat = 65,
416 PassengerVessel = 80,
417 DryCargoShip = 81,
418 Tanker = 82,
419 OffshoreSupportVessel = 83,
420 PrivateMotorboat = 84,
421 PrivateSailboat = 85,
422 FishingVessel = 86,
423 OtherVessels = 87,
424 SearchandRescueVessels = 100,
425 LifeSavingEquipment = 101,
426}
427
428impl SurfaceDomainCategories {
429 #[must_use]
430 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
431 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
432 }
433}
434
435#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
437pub enum SubsurfaceDomainCategories {
438 #[default]
439 Other = 0,
440 SSBN = 1,
441 SSGN = 2,
442 SSN = 3,
443 SSG = 4,
444 SS = 5,
445 SSAN = 6,
446 SSA = 7,
447 UnmannedUnderwaterVehicle = 8,
448 SSB = 9,
449 SSC = 10,
450 SSP = 11,
451 SSM = 12,
452 SSNR = 13,
453 SST = 14,
454 AGSS = 15,
455 SemiSubmersibleBoats = 16,
456 CivilianSubmarines = 80,
457 CivilianSubmersibles = 81,
458 CivilianSemiSubmersibleBoats = 82,
459}
460
461impl SubsurfaceDomainCategories {
462 #[must_use]
463 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
464 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
465 }
466}
467
468#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
470pub enum SpaceDomainCategories {
471 #[default]
472 Other = 0,
473 MannedSpacecraft = 1,
474 Unmanned = 2,
475 Booster = 3,
476 Debris = 10,
477 SatelliteUnknownUnspecifiedMission = 11,
478 SatelliteCommunication = 12,
479 SatelliteNavigation = 13,
480 SatelliteScienceExperimentalDemonstration = 14,
481 SatelliteInert = 15,
482 SatelliteEarthObservation = 16,
483 SatelliteSpaceSurveillance = 17,
484 SatelliteAstronomy = 18,
485}
486
487impl SpaceDomainCategories {
488 #[must_use]
489 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
490 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
491 }
492}
493
494#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
496pub enum MunitionKind {
497 #[default]
498 Other = 0,
499 AntiAir = 1,
500 AntiArmor = 2,
501 AntiGuidedWeapon = 3,
502 AntiRadar = 4,
503 AntiSatellite = 5,
504 AntiShip = 6,
505 AntiSubmarine = 7,
506 AntiPersonnel = 8,
507 BattlefieldSupport = 9,
508 Strategic = 10,
509 Tactical = 11,
510 DirectedEnergyWeapon = 12,
511}
512
513impl MunitionKind {
514 #[must_use]
515 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
516 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
517 }
518}
519
520#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
522pub enum MunitionCategory {
523 #[default]
524 Other = 0,
525 Guided = 1,
526 Ballistic = 2,
527 Fixed = 3,
528}
529
530impl MunitionCategory {
531 #[must_use]
532 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
533 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
534 }
535}
536
537#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
539#[allow(non_camel_case_types)]
540pub enum USWeaponSubcategories {
541 #[default]
542 AssaultmachinepistolKFAMP = 1,
543 Automaticmodel1911A1_45 = 2,
544 CombatMasterMarkVI_45Detronics = 3,
545 DecockerKP90DC_45 = 4,
546 DecockerKP91DC_40 = 5,
547 GeneralofficersModel15_45 = 6,
548 Nova9mmLaFrance = 7,
549 PersonalDefenseWeaponMP5KPDW9mm = 8,
550 SilencedColt_45LaFrance = 9,
551 _5900series9mmSmithWessonSW = 10,
552 M9 = 11,
553 Model1911A1SpringfieldArmory = 12,
554 Model20009mm = 13,
555 P99mmSpringfieldArmory = 14,
556 P129mm = 15,
557 P85MarkII9mmRuger = 16,
558 AdvancedCombatRifle5_56mmAAI = 17,
559 CommandoassaultrifleModel7335_56mmColt = 18,
560 InfantryrifleMini1420GB5_56mmRuger = 19,
561 Mini145_56mmRuger = 20,
562 MiniThirty7_62mmRuger = 21,
563 Semiautomaticmodel82A2_50Barrett = 22,
564 SniperWeaponSystemM247_62mm = 23,
565 SnipingrifleM21SpringfieldArmory = 24,
566 SnipingrifleM40A17_62mm = 25,
567 SnipingrifleM6007_62mm = 26,
568 AR15M165_56mm = 27,
569 M1_30_1 = 28,
570 M147_62mmNATO = 29,
571 M14M1AM1A1A1SpringfieldArmory = 30,
572 M14KassaultrifleLaFrance = 31,
573 M16A2assaultrifle5_56mmColt = 32,
574 M217_62mmU_S_ = 33,
575 M77MarkII5_56mmRuger = 34,
576 M77V7_62mmRuger = 35,
577 S167_62x36mmGrendel = 36,
578 SAR87_62mm = 37,
579 SAR48007_62mm = 38,
580 AssaultcarbineM16KLaFrance = 39,
581 M1_30_2 = 40,
582 M4Model7205_56mmColt = 41,
583 M9009mmCalico = 42,
584 AC556F5_56mmRuger = 43,
585 M3_45 = 44,
586 M11Cobray = 45,
587 M9519mmCalico = 46,
588 MP51010mm = 47,
589 _9mmColt = 48,
590 Ingram = 49,
591 ExternallypoweredEPG7_62mmAres = 50,
592 GECAL50 = 51,
593 GeneralpurposeM607_62mm = 52,
594 HeavyM2HBQCB_50RAMO = 53,
595 LightassaultM60E3Enhanced7_62mm = 54,
596 LightM16A25_56mmColt = 55,
597 Light5_56mmAres = 56,
598 LightweightM2_50RAMO = 57,
599 LightweightassaultM60E37_62mm = 58,
600 MinigunM1347_62mmGeneralElectric = 59,
601 MGsystemMK19Mod340mm = 60,
602 MGsystemorkitM2HBQCB_50SacoDefense = 61,
603 M1919A4_30calBrowning = 62,
604 _50calBrowning = 63,
605 ColoredsmokehandgrenadeM18 = 64,
606 ColoredsmokegrenadesFederalLaboratories = 65,
607 InfraredsmokegrenadeM76 = 66,
608 SmokehandgrenadeANM8HC = 67,
609 DelayfragmentationhandgrenadeM61 = 68,
610 DelayfragmentationhandgrenadeM67 = 69,
611 ImpactfragmentationhandgrenadeM57 = 70,
612 ImpactfragmentationhandgrenadeM68 = 71,
613 IncendiaryhandgrenadeANM14TH3 = 72,
614 LauncherIM20340mm = 73,
615 LauncherM7940mm = 74,
616 MultiplegrenadelauncherMM140mm = 75,
617 MultishotportableflameweaponM202A266mm = 76,
618 PortableABCM97 = 77,
619 PortableM2A17 = 78,
620 PortableM9E17 = 79,
621 DragonmediumAntiArmormissileM47FGM77A = 80,
622 JavelinAAWSM = 81,
623 LightAntiTankWeaponM72LAWII = 82,
624 RedeyeFIM43GeneralDynamics = 83,
625 Saberdualpurposemissilesystem = 84,
626 StingerFIM92GeneralDynamics = 85,
627 TOWheavyAntiTankweapon = 86,
628 BearTrapAPdevicePancor = 87,
629 ChainGunautomaticweaponEX347_62mm = 88,
630 CloseAssaultWeaponSystemCAWSAAI = 89,
631 CAWSOlinHecklerandKoch = 90,
632 CrossfireSAMModel88 = 91,
633 DragonandM16 = 92,
634 FiringportweaponM2315_56mmColt = 93,
635 FoxholeDiggerExplosiveKitEXFODA = 94,
636 InfantrySupportWeaponASP30RM30mm = 95,
637 JackhammerMk3A2Pancor = 96,
638 LightAntiArmorweaponM136AT4 = 97,
639 M26A2 = 98,
640 MasterKeyS = 99,
641 Minigun5_56mm = 100,
642 MultipurposeIndividualMunitionMPIMMarquardt = 101,
643 MultipurposeweaponAT8 = 102,
644 RecoillessrifleM40M40A2andM40A4106mm = 103,
645 RecoillessrifleM6790mm = 104,
646 RevolverSP101 = 105,
647 RevolverSuperRedhawk_44magnumRuger = 106,
648 RAWrocket140mmBrunswick = 107,
649 RiflelauncherAntiArmorMunitionRAAMOlin = 108,
650 RocketlauncherM203_5in = 109,
651 RocketlauncherEnhancedM72EseriesHEAT66mm = 110,
652 SelectivefireweaponAC5565_56mmRuger = 111,
653 SelectivefireweaponAC556F5_56mmRuger = 112,
654 ShotgunM870Mk1U_S_MarineCorpsRemington = 113,
655 SMAWMk19383mmMcDonnellDouglas = 114,
656 SMAWDDisposableSMAW = 115,
657 SquadAutomaticWeaponSAWM2495_56mm = 116,
658 TacticalSupportWeapon5012_50calPeregrine = 117,
659 TelescopedAmmunitionRevolverGunTARG_50calAres = 118,
660 UltimateoverundercombinationCiener = 119,
661 M18A1Claymoremine = 120,
662 Mortar81mm = 121,
663 MachinegunM2407_62mm = 134,
664}
665
666impl USWeaponSubcategories {
667 #[must_use]
668 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
669 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
670 }
671}
672
673#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
675pub enum RussiaWeaponSubcategories {
676 #[default]
677 Automatic9mmStechkin = 201,
678 PSM5_45mm = 202,
679 Selfloading9mmMakarov = 203,
680 TT337_62mmTokarev = 204,
681 AssaultrifleAKandAKM7_62mm = 205,
682 AssaultrifleAK74andAKS745_45mm = 206,
683 Selfloadingrifle7_62mmSimonov = 207,
684 SniperrifleSVD7_62mmDragunov = 208,
685 AKSU745_45mm = 209,
686 PPS437_62mm = 210,
687 PPSh417_62mm = 211,
688 GeneralpurposePK7_62mm = 212,
689 HeavyDShK38andModel384612_7mmDegtyarev = 213,
690 HeavyNSV12_7mm = 214,
691 LightRPD7_62mm = 215,
692 LightRPK7_62mm = 216,
693 LightRPK745_45mm = 217,
694 HandgrenadeM75 = 218,
695 HandgrenadeRGD5 = 219,
696 APhandgrenadeF1 = 220,
697 AThandgrenadeRKG3 = 221,
698 AThandgrenadeRKG3M = 222,
699 AThandgrenadeRKG3T = 223,
700 FragmentationhandgrenadeRGN = 224,
701 FragmentationhandgrenadeRGO = 225,
702 SmokehandgrenadeRDG1 = 226,
703 Plamyalauncher30mmAGS17 = 227,
704 RiflemountedlauncherBG1540mm = 228,
705 LPO50 = 229,
706 ROKS3 = 230,
707 CartmountedTPO50 = 231,
708 GimletSA16 = 232,
709 GrailSA7 = 233,
710 GremlinSA14 = 234,
711 SaggerAT3 = 235,
712 SaxhornAT7 = 236,
713 SpigotABAT14 = 237,
714 SA18 = 238,
715 SA19 = 239,
716 Grad1Pmanportabletripodrocketlauncher122mm = 240,
717 LightAntiArmorweaponRPG18 = 241,
718 LightAntiTankweaponRPG22 = 242,
719 MGRPG = 243,
720 PortablerocketlauncherRPG16 = 244,
721 Recoillessgun73mmSPG9 = 245,
722 VATrocketlauncherRPG7 = 246,
723 Mon50AntiPersonnelmine = 248,
724 RPG29Vampir = 249,
725 LaserDesignator = 250,
726 AT4Spigot = 251,
727 SA24IglaS = 252,
728 Type69RPG = 253,
729}
730
731impl RussiaWeaponSubcategories {
732 #[must_use]
733 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
734 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
735 }
736}
737
738#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
740pub enum UKWeaponSubcategories {
741 #[default]
742 LAW80 = 1,
743 Blowpipe = 2,
744 Javelin = 3,
745 _51mmmortar = 4,
746 SLR7_62mmrifle = 5,
747 Sterling9mmsubmachinegun = 6,
748 L7A2generalpurposeMG = 7,
749 L6WombatRecoillessrifle = 8,
750 CarlGustav89mmrecoillessrifle = 9,
751 SA80Individuallightsupportweapon = 10,
752 Trigat = 11,
753 MilanATmissile = 12,
754}
755
756impl UKWeaponSubcategories {
757 #[must_use]
758 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
759 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
760 }
761}
762
763#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
765pub enum FrenchWeaponSubcategories {
766 #[default]
767 ACLSTRIM = 1,
768 Mistralmissile = 2,
769 MilanATmissile = 3,
770 LRACF189mmATrocketlauncher = 4,
771 FAMASrifle = 5,
772 AA52machinegun = 6,
773 _58mmriflegrenade = 7,
774 FRF1sniperrifle = 8,
775}
776
777impl FrenchWeaponSubcategories {
778 #[must_use]
779 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
780 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
781 }
782}
783
784#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
786pub enum LifeFormsSubcategoryGermanWeapons {
787 #[default]
788 G3rifle = 1,
789 G11rifle = 2,
790 P1pistol = 3,
791 MG3machinegun = 4,
792 Milanmissile = 5,
793 MP1Uzisubmachinegun = 6,
794 Panzerfaust3LightAntiTankWeapon = 7,
795 DM19handgrenade = 8,
796 DM29handgrenade = 9,
797}
798
799impl LifeFormsSubcategoryGermanWeapons {
800 #[must_use]
801 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
802 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
803 }
804}
805
806#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
808pub enum EnvironmentalSubcategory {
809 #[default]
810 Other = 0,
811 VerySmall = 20,
812 Small = 40,
813 Medium = 60,
814 Large = 80,
815 VeryLarge = 100,
816}
817
818impl EnvironmentalSubcategory {
819 #[must_use]
820 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
821 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
822 }
823}
824
825#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
827pub enum RadioCategory {
828 #[default]
829 Other = 0,
830 VoiceTransmissionReception = 1,
831 DataLinkTransmissionReception = 2,
832 VoiceandDataLinkTransmissionReception = 3,
833 InstrumentedLandingSystemGlideslopeTransmitter = 4,
834 InstrumentedLandingSystemLocalizerTransmitter = 5,
835 InstrumentedLandingSystemOuterMarkerBeacon = 6,
836 InstrumentedLandingSystemMiddleMarkerBeacon = 7,
837 InstrumentedLandingSystemInnerMarkerBeacon = 8,
838 InstrumentedLandingSystem = 9,
839 TacticalAirNavigationTACANTransmitter = 10,
840 TacticalAirNavigationTACANReceiver = 11,
841 TacticalAirNavigationTACANTransmitterReceiver = 12,
842 VariableOmniRangingVORTransmitter = 13,
843 VariableOmniRangingVORWithDistanceMeasuringEquipmentTransmitter = 14,
844 CombinedVORILSReceiver = 15,
845 CombinedVORTACANTransmitter = 16,
846 NonDirectionalBeaconTransmitter = 17,
847 NonDirectionalBeaconReceiver = 18,
848 NonDirectionalBeaconWithDistanceMeasuringEquipmentTransmitter = 19,
849 DistanceMeasuringEquipment = 20,
850 Link16Terminal = 21,
851 Link11Terminal = 22,
852 Link11BTerminal = 23,
853 EPLRSSADLTerminal = 24,
854 F22IntraFlightDataLink = 25,
855 F35MultifunctionAdvancedDataLink = 26,
856 SINCGARSTerminal = 27,
857 LBandSATCOMTerminal = 28,
858 IBSTerminal = 29,
859 GPS = 30,
860 TacticalVideo = 31,
861 AirtoAirMissileDatalink = 32,
862 Link16SurrogateforNonNATOTDLTerminal = 33,
863 MQ19CBandLOSDatalink = 34,
864 MQ19KuBandSATCOMDatalink = 35,
865 AirtoGroundWeaponDatalink = 36,
866 AutomaticIdentificationSystem = 37,
867 JPALSDataLink = 38,
868 CombatSearchandRescueRadio = 40,
869 CounterUnmannedAircraftSystemRadio = 41,
870 EmergencyPositionIndicatingRadioBeacons = 42,
871 ElectronicAttackSystems = 50,
872 TacticalTargetingNetworkTechnology = 51,
873}
874
875impl RadioCategory {
876 #[must_use]
877 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
878 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
879 }
880}
881
882#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
884pub enum RadioSubcategory {
885 #[default]
886 Other = 0,
887 JointElectronicsTypeDesignationSystemNonspecificSeries = 1,
888 ManufacturerDesignation = 2,
889 NationalDesignation = 3,
890 JETDSARCSet1 = 11,
891 JETDSARCSet2 = 12,
892 JETDSARCSet3 = 13,
893 JETDSARCSet4 = 14,
894 JETDSBRCSet1 = 15,
895 JETDSBRCSet2 = 16,
896 JETDSBRCSet3 = 17,
897 JETDSBRCSet4 = 18,
898 JETDSCRCSet1 = 19,
899 JETDSCRCSet2 = 20,
900 JETDSCRCSet3 = 21,
901 JETDSCRCSet4 = 22,
902 JETDSDRCSet1 = 23,
903 JETDSDRCSet2 = 24,
904 JETDSDRCSet3 = 25,
905 JETDSDRCSet4 = 26,
906 JETDSFRCSet1 = 27,
907 JETDSFRCSet2 = 28,
908 JETDSFRCSet3 = 29,
909 JETDSFRCSet4 = 30,
910 JETDSGRCSet1 = 31,
911 JETDSGRCSet2 = 32,
912 JETDSGRCSet3 = 33,
913 JETDSGRCSet4 = 34,
914 JETDSKRCSet1 = 35,
915 JETDSKRCSet2 = 36,
916 JETDSKRCSet3 = 37,
917 JETDSKRCSet4 = 38,
918 JETDSMRCSet1 = 39,
919 JETDSMRCSet2 = 40,
920 JETDSMRCSet3 = 41,
921 JETDSMRCSet4 = 42,
922 JETDSPRCSet1 = 43,
923 JETDSPRCSet2 = 44,
924 JETDSPRCSet3 = 45,
925 JETDSPRCSet4 = 46,
926 JETDSSRCSet1 = 47,
927 JETDSSRCSet2 = 48,
928 JETDSSRCSet3 = 49,
929 JETDSSRCSet4 = 50,
930 JETDSTRCSet1 = 51,
931 JETDSTRCSet2 = 52,
932 JETDSTRCSet3 = 53,
933 JETDSTRCSet4 = 54,
934 JETDSVRCSet1 = 55,
935 JETDSVRCSet2 = 56,
936 JETDSVRCSet3 = 57,
937 JETDSVRCSet4 = 58,
938 JETDSWRCSet1 = 59,
939 JETDSWRCSet2 = 60,
940 JETDSWRCSet3 = 61,
941 JETDSWRCSet4 = 62,
942 JETDSZRCSet1 = 63,
943 JETDSZRCSet2 = 64,
944 JETDSZRCSet3 = 65,
945 JETDSZRCSet4 = 66,
946}
947
948impl RadioSubcategory {
949 #[must_use]
950 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
951 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
952 }
953}
954
955#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
957pub enum ExpendableAirCategory {
958 #[default]
959 Other = 0,
960 Chaff = 1,
961 Flare = 2,
962 CombinedChaffandFlare = 3,
963 ActiveEmitter = 4,
964 PassiveDecoy = 5,
965 WingedDecoy = 6,
966 SignalIlluminationFlare = 7,
967 SmokeGenerator = 8,
968 CombinedFlareandSmokeGenerator = 12,
969 SARNightLight = 13,
970 SARBuoy = 14,
971}
972
973impl ExpendableAirCategory {
974 #[must_use]
975 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
976 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
977 }
978}
979
980#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
982pub enum ExpendableSurfaceCategory {
983 #[default]
984 Other = 0,
985 Flare = 2,
986 ActiveEmitter = 4,
987 PassiveDecoy = 5,
988 SmokeGenerator = 8,
989 CombinedFlareandSmokeGenerator = 12,
990 SARBuoy = 14,
991}
992
993impl ExpendableSurfaceCategory {
994 #[must_use]
995 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
996 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
997 }
998}
999
1000#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1002pub enum ExpendableSubsurfaceCategory {
1003 #[default]
1004 Other = 0,
1005 Activeemitter = 4,
1006 Passivedecoy = 5,
1007 Signal = 7,
1008 NoiseMakerDecoy = 9,
1009 BubbleMakerDecoy = 10,
1010 MultiModeDecoy = 11,
1011}
1012
1013impl ExpendableSubsurfaceCategory {
1014 #[must_use]
1015 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1016 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
1017 }
1018}
1019
1020#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1022pub enum SensorEmitterCategory {
1023 #[default]
1024 Other = 0,
1025 Multispectral = 1,
1026 RFActive = 2,
1027 RFPassive = 3,
1028 Optical = 4,
1029 ElectroOptical = 5,
1030 Seismic = 6,
1031 Chemicalpointdetector = 7,
1032 Chemicalstandoff = 8,
1033 Thermal = 9,
1034 AcousticActive = 10,
1035 AcousticPassive = 11,
1036 ContactPressure = 12,
1037 ElectroMagneticRadiation = 13,
1038 ParticleRadiation = 14,
1039 Magnetic = 15,
1040 Gravitational = 16,
1041}
1042
1043impl SensorEmitterCategory {
1044 #[must_use]
1045 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1046 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
1047 }
1048}
1049
1050#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1052pub enum Country {
1053 #[default]
1054 Other = 0,
1055 Afghanistan = 1,
1056 Albania = 2,
1057 Algeria = 3,
1058 AmericanSamoa = 4,
1059 Andorra = 5,
1060 Angola = 6,
1061 Anguilla = 7,
1062 Antarctica = 8,
1063 AntiguaandBarbuda = 9,
1064 Argentina = 10,
1065 Aruba = 11,
1066 AshmoreandCartierIslands = 12,
1067 Australia = 13,
1068 Austria = 14,
1069 Bahamas = 15,
1070 Bahrain = 16,
1071 BakerIsland = 17,
1072 Bangladesh = 18,
1073 Barbados = 19,
1074 BassasdaIndia = 20,
1075 Belgium = 21,
1076 Belize = 22,
1077 Benin = 23,
1078 Bermuda = 24,
1079 Bhutan = 25,
1080 Bolivia = 26,
1081 Botswana = 27,
1082 BouvetIsland = 28,
1083 Brazil = 29,
1084 BritishIndianOceanTerritory = 30,
1085 VirginIslandsBritish = 31,
1086 BruneiDarussalam = 32,
1087 Bulgaria = 33,
1088 BurkinaFaso = 34,
1089 Myanmar = 35,
1090 Burundi = 36,
1091 Cambodia = 37,
1092 Cameroon = 38,
1093 Canada = 39,
1094 CaboVerde = 40,
1095 CaymanIslands = 41,
1096 CentralAfricanRepublic = 42,
1097 Chad = 43,
1098 Chile = 44,
1099 ChinaPeoplesRepublicof = 45,
1100 ChristmasIsland = 46,
1101 Cocos = 47,
1102 Colombia = 48,
1103 Comoros = 49,
1104 Congo = 50,
1105 CookIslands = 51,
1106 CoralSeaIslands = 52,
1107 CostaRica = 53,
1108 Cuba = 54,
1109 Cyprus = 55,
1110 Czechoslovakia = 56,
1111 Denmark = 57,
1112 Djibouti = 58,
1113 Dominica = 59,
1114 DominicanRepublic = 60,
1115 Ecuador = 61,
1116 Egypt = 62,
1117 ElSalvador = 63,
1118 EquatorialGuinea = 64,
1119 Ethiopia = 65,
1120 EuropaIsland = 66,
1121 FalklandIslands = 67,
1122 FaroeIslands = 68,
1123 Fiji = 69,
1124 Finland = 70,
1125 France = 71,
1126 FrenchGuiana = 72,
1127 FrenchPolynesia = 73,
1128 FrenchSouthernTerritories = 74,
1129 Gabon = 75,
1130 GambiaThe = 76,
1131 GazaStrip = 77,
1132 Germany = 78,
1133 Ghana = 79,
1134 Gibraltar = 80,
1135 GloriosoIslands = 81,
1136 Greece = 82,
1137 Greenland = 83,
1138 Grenada = 84,
1139 Guadeloupe = 85,
1140 Guam = 86,
1141 Guatemala = 87,
1142 Guernsey = 88,
1143 Guinea = 89,
1144 GuineaBissau = 90,
1145 Guyana = 91,
1146 Haiti = 92,
1147 HeardIslandandMcDonaldIslands = 93,
1148 Honduras = 94,
1149 HongKong = 95,
1150 HowlandIsland = 96,
1151 Hungary = 97,
1152 Iceland = 98,
1153 India = 99,
1154 Indonesia = 100,
1155 Iran = 101,
1156 Iraq = 102,
1157 Ireland = 104,
1158 Israel = 105,
1159 Italy = 106,
1160 CotedIvoire = 107,
1161 Jamaica = 108,
1162 JanMayen = 109,
1163 Japan = 110,
1164 JarvisIsland = 111,
1165 Jersey = 112,
1166 JohnstonAtoll = 113,
1167 Jordan = 114,
1168 JuandeNovaIsland = 115,
1169 Kenya = 116,
1170 KingmanReef = 117,
1171 Kiribati = 118,
1172 KoreaDemocraticPeoplesRepublicOf = 119,
1173 KoreaRepublicOf = 120,
1174 Kuwait = 121,
1175 LaoPeoplesDemocraticRepublic = 122,
1176 Lebanon = 123,
1177 Lesotho = 124,
1178 Liberia = 125,
1179 Libya = 126,
1180 Liechtenstein = 127,
1181 Luxembourg = 128,
1182 Madagascar = 129,
1183 Macao = 130,
1184 Malawi = 131,
1185 Malaysia = 132,
1186 Maldives = 133,
1187 Mali = 134,
1188 Malta = 135,
1189 IsleofMan = 136,
1190 MarshallIslands = 137,
1191 Martinique = 138,
1192 Mauritania = 139,
1193 Mauritius = 140,
1194 Mayotte = 141,
1195 Mexico = 142,
1196 Micronesia = 143,
1197 Monaco = 144,
1198 Mongolia = 145,
1199 Montserrat = 146,
1200 Morocco = 147,
1201 Mozambique = 148,
1202 Namibia = 149,
1203 Nauru = 150,
1204 NavassaIsland = 151,
1205 Nepal = 152,
1206 Netherlands = 153,
1207 NetherlandsAntilles = 154,
1208 NewCaledonia = 155,
1209 NewZealand = 156,
1210 Nicaragua = 157,
1211 Niger = 158,
1212 Nigeria = 159,
1213 Niue = 160,
1214 NorfolkIsland = 161,
1215 NorthernMarianaIslands = 162,
1216 Norway = 163,
1217 Oman = 164,
1218 Pakistan = 165,
1219 PalmyraAtoll = 166,
1220 Panama = 168,
1221 PapuaNewGuinea = 169,
1222 ParacelIslands = 170,
1223 Paraguay = 171,
1224 Peru = 172,
1225 Philippines = 173,
1226 Pitcairn = 174,
1227 Poland = 175,
1228 Portugal = 176,
1229 PuertoRico = 177,
1230 Qatar = 178,
1231 Reunion = 179,
1232 Romania = 180,
1233 Rwanda = 181,
1234 SaintKittsandNevis = 182,
1235 SaintHelenaAscensionandTristandaCunha = 183,
1236 SaintLucia = 184,
1237 SaintPierreandMiquelon = 185,
1238 SaintVincentandtheGrenadines = 186,
1239 SanMarino = 187,
1240 SaoTomeandPrincipe = 188,
1241 SaudiArabia = 189,
1242 Senegal = 190,
1243 Seychelles = 191,
1244 SierraLeone = 192,
1245 Singapore = 193,
1246 SolomonIslands = 194,
1247 Somalia = 195,
1248 SouthGeorgiaandtheSouthSandwichIslands = 196,
1249 SouthAfrica = 197,
1250 Spain = 198,
1251 SpratlyIslands = 199,
1252 SriLanka = 200,
1253 Sudan = 201,
1254 Suriname = 202,
1255 Svalbard = 203,
1256 Eswatini = 204,
1257 Sweden = 205,
1258 Switzerland = 206,
1259 SyrianArabRepublic = 207,
1260 TaiwanProvinceofChina = 208,
1261 TanzaniaUnitedRepublicof = 209,
1262 Thailand = 210,
1263 Togo = 211,
1264 Tokelau = 212,
1265 Tonga = 213,
1266 TrinidadandTobago = 214,
1267 TromelinIsland = 215,
1268 Palau = 216,
1269 Tunisia = 217,
1270 Turkey = 218,
1271 TurksandCaicosIslands = 219,
1272 Tuvalu = 220,
1273 Uganda = 221,
1274 Russia = 222,
1275 UnitedArabEmirates = 223,
1276 UnitedKingdomofGreatBritainandNorthernIreland = 224,
1277 UnitedStatesofAmerica = 225,
1278 Uruguay = 226,
1279 Vanuatu = 227,
1280 HolySee = 228,
1281 Venezuela = 229,
1282 VietNam = 230,
1283 VirginIslandsUS = 231,
1284 WakeIsland = 232,
1285 WallisandFutuna = 233,
1286 WesternSahara = 234,
1287 WestBank = 235,
1288 Samoa = 236,
1289 Yemen = 237,
1290 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
1291 SerbiaandMontenegro_ = 240,
1292 Zaire = 241,
1293 Zambia = 242,
1294 Zimbabwe = 243,
1295 Armenia = 244,
1296 Azerbaijan = 245,
1297 Belarus = 246,
1298 BosniaandHerzegovina = 247,
1299 ClippertonIsland = 248,
1300 Croatia = 249,
1301 Estonia = 250,
1302 Georgia = 251,
1303 Kazakhstan = 252,
1304 Kyrgyzstan = 253,
1305 Latvia = 254,
1306 Lithuania = 255,
1307 NorthMacedonia = 256,
1308 MidwayIslands = 257,
1309 Moldova = 258,
1310 Montenegro = 259,
1311 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
1312 Russia_ = 260,
1313 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
1314 SerbiaAndMontenegro__ = 261,
1315 Slovenia = 262,
1316 Tajikistan = 263,
1317 Turkmenistan = 264,
1318 Ukraine = 265,
1319 Uzbekistan = 266,
1320 CzechRepublic = 267,
1321 Slovakia = 268,
1322 AalandIslands = 269,
1323 BonaireSintEustatiusandSaba = 270,
1324 CongoDemocraticRepublicOfThe = 271,
1325 Curacao = 272,
1326 Eritrea = 273,
1327 SaintBarthelemy = 274,
1328 SaintMartin = 275,
1329 Serbia = 276,
1330 SintMaarten = 277,
1331 SouthSudan = 278,
1332 SvalbardandJanMayen = 279,
1333 TimorLeste = 280,
1334 UnitedStatesMinorOutlyingIslands = 281,
1335 PalestineStateof = 282,
1336}
1337
1338impl Country {
1339 #[must_use]
1340 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1341 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
1342 }
1343}
1344
1345bitflags! {
1347 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
1348 pub struct LandPlatformAppearance: u32 {
1349 const PaintScheme = 1 << 0;
1350 const MobilityKilled = 1 << 1;
1351 const FirePowerKilled = 1 << 2;
1352 const Damage = 1 << 3;
1353 const IsSmokeEmanating = 1 << 5;
1354 const IsEngineEmittingSmoke = 1 << 6;
1355 const TrailingDustCloud = 1 << 7;
1356 const PrimaryHatch = 1 << 9;
1357 const HeadLightsOn = 1 << 12;
1358 const TailLightsOn = 1 << 13;
1359 const BrakeLightsOn = 1 << 14;
1360 const IsFlaming = 1 << 15;
1361 const LauncherOperational = 1 << 16;
1362 const CamouflageType = 1 << 17;
1363 const ConcealedPosition = 1 << 19;
1364 const IsFrozen = 1 << 21;
1365 const PowerPlantOn = 1 << 22;
1366 const State = 1 << 23;
1367 const TentExtended = 1 << 24;
1368 const RampExtended = 1 << 25;
1369 const BlackoutLightsOn = 1 << 26;
1370 const BlackoutBrakeLightsOn = 1 << 27;
1371 const SpotSearchLight1On = 1 << 28;
1372 const InteriorLightsOn = 1 << 29;
1373 const OccupantsSurrendered = 1 << 30;
1374 const MaskedCloaked = 1 << 31;
1375 }
1376}
1377
1378impl Default for LandPlatformAppearance {
1379 fn default() -> Self {
1380 Self::empty()
1381 }
1382}
1383
1384impl LandPlatformAppearance {
1385 #[must_use]
1386 pub const fn as_u32(&self) -> u32 {
1387 self.bits()
1388 }
1389
1390 #[must_use]
1391 pub const fn from_u32(bits: u32) -> Option<Self> {
1392 Self::from_bits(bits)
1393 }
1394}
1395
1396#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1400pub enum DeadReckoningAlgorithm {
1401 #[default]
1402 Other = 0,
1403 StaticNonmovingEntity = 1,
1404 DRMConstantVelocityLowAccelerationLinearMotionEntity = 2,
1405 DRMConstantVelocityLowAccelerationLinearMotionEntitywithExtrapolationofOrientation = 3,
1406 DRMHighSpeedorManeuveringEntitywithExtrapolationofOrientation = 4,
1407 DRMHighSpeedorManeuveringEntity = 5,
1408 DRMSimilartoFPWexceptinBodyCoordinates = 6,
1409 DRMSimilartoRPWexceptinBodyCoordinates = 7,
1410 DRMSimilartoRVWexceptinBodyCoordinates = 8,
1411 DRMSimilartoFVWexceptinBodyCoordinates = 9,
1412}
1413
1414impl DeadReckoningAlgorithm {
1415 #[must_use]
1416 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1417 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
1418 }
1419}
1420
1421impl FieldSerialize for DeadReckoningAlgorithm {
1422 fn serialize_field(&self, buf: &mut BytesMut) {
1423 buf.put_u8(*self as u8);
1424 }
1425}
1426
1427impl FieldDeserialize for DeadReckoningAlgorithm {
1428 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
1429 Self::deserialize(buf)
1430 }
1431}
1432
1433impl FieldLen for DeadReckoningAlgorithm {
1434 fn field_len(&self) -> usize {
1435 1
1436 }
1437}
1438
1439#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1441pub enum EntityMarkingCharacterSet {
1442 #[default]
1443 Unused = 0,
1444 ASCII = 1,
1445 USArmyMarking = 2,
1446 DigitChevron = 3,
1447}
1448
1449impl EntityMarkingCharacterSet {
1450 #[must_use]
1451 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1452 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
1453 }
1454}
1455
1456#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1458pub enum EntityCapabilities {
1459 #[default]
1460 LandPlatformEntityCapabilities = 0,
1461 AirPlatformEntityCapabilities = 1,
1462 SurfacePlatformEntityCapabilities = 2,
1463 SubsurfacePlatformEntityCapabilities = 3,
1464 SpacePlatformEntityCapabilities = 4,
1465 MunitionEntityCapabilities = 5,
1466 LifeFormsEntityCapabilities = 6,
1467 EnvironmentalEntityCapabilities = 7,
1468 CulturalFeatureEntityCapabilities = 8,
1469 SupplyEntityCapabilities = 9,
1470 RadioEntityCapabilities = 10,
1471 ExpendableEntityCapabilities = 11,
1472 SensorEmitterEntityCapabilities = 12,
1473}
1474
1475impl EntityCapabilities {
1476 #[must_use]
1477 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1478 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
1479 }
1480}
1481
1482impl FieldSerialize for EntityCapabilities {
1483 fn serialize_field(&self, buf: &mut BytesMut) {
1484 buf.put_u32(*self as u32);
1485 }
1486}
1487
1488impl FieldDeserialize for EntityCapabilities {
1489 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
1490 Self::deserialize(buf)
1491 }
1492}
1493
1494impl FieldLen for EntityCapabilities {
1495 fn field_len(&self) -> usize {
1496 4
1497 }
1498}
1499
1500#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1502pub enum VariableParameterRecordType {
1503 #[default]
1504 ArticulatedPart = 0,
1505 AttachedPart = 1,
1506 Separation = 2,
1507 EntityType = 3,
1508 EntityAssociation = 4,
1509}
1510
1511impl VariableParameterRecordType {
1512 #[must_use]
1513 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1514 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
1515 }
1516}
1517
1518#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1520pub enum AttachedParts {
1521 #[default]
1522 NothingEmpty = 0,
1523 SequentialIDsformodelspecificstations = 1,
1524 FuselageStations = 512,
1525 LeftwingStations = 640,
1526 RightwingStations = 768,
1527 M16A42rifle = 896,
1528 M249SAW = 897,
1529 M60Machinegun = 898,
1530 M203GrenadeLauncher = 899,
1531 M136AT4 = 900,
1532 M47Dragon = 901,
1533 AAWSMJavelin = 902,
1534 M18A1ClaymoreMine = 903,
1535 MK19GrenadeLauncher = 904,
1536 M2MachineGun = 905,
1537}
1538
1539impl AttachedParts {
1540 #[must_use]
1541 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1542 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
1543 }
1544}
1545
1546#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1548pub enum ArticulatedPartsTypeMetric {
1549 #[default]
1550 NotSpecified = 0,
1551 Position = 1,
1552 PositionRate = 2,
1553 Extension = 3,
1554 ExtensionRate = 4,
1555 X = 5,
1556 XRate = 6,
1557 Y = 7,
1558 YRate = 8,
1559 Z = 9,
1560 ZRate = 10,
1561 Azimuth = 11,
1562 AzimuthRate = 12,
1563 Elevation = 13,
1564 ElevationRate = 14,
1565 Rotation1 = 15,
1566 RotationRate = 16,
1567}
1568
1569impl ArticulatedPartsTypeMetric {
1570 #[must_use]
1571 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1572 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
1573 }
1574}
1575
1576#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1578pub enum ArticulatedPartsTypeClass {
1579 #[default]
1580 NotSpecified = 0,
1581 Rudder = 1024,
1582 LeftFlap = 1056,
1583 RightFlap = 1088,
1584 LeftAileron = 1120,
1585 RightAileron = 1152,
1586 HelicopterMainRotor = 1184,
1587 HelicopterTailRotor = 1216,
1588 OtherAircraftControlSurfacesDefinedasNeeded = 1248,
1589 PropellerNumber1 = 1280,
1590 PropellerNumber2 = 1312,
1591 PropellerNumber3 = 1344,
1592 PropellerNumber4 = 1376,
1593 LeftStabilator = 1408,
1594 RightStabilator = 1440,
1595 LeftRuddervator = 1472,
1596 RightRuddervator = 1504,
1597 LeftLeadingEdgeFlapSlat = 1536,
1598 RightLeadingEdgeFlapSlat = 1568,
1599 LeftElevator = 1600,
1600 RightElevator = 1632,
1601 CanardLeft = 1664,
1602 CanardRight = 1696,
1603 ElevonInnerLeft = 1728,
1604 ElevonInnerRight = 1760,
1605 ElevonMiddleLeft = 1792,
1606 ElevonMiddleRight = 1824,
1607 ElevonOuterLeft = 1856,
1608 ElevonOuterRight = 1888,
1609 Canopy = 1920,
1610 SpoilerLeft = 1952,
1611 SpoilerRight = 1984,
1612 Periscope = 2048,
1613 GenericAntenna = 2080,
1614 Snorkel = 2112,
1615 OtherExtendiblePartsDefinedasNeeded = 2144,
1616 DivePlaneSailLeft = 2176,
1617 DivePlaneSailRight = 2208,
1618 DivePlaneBowLeft = 2240,
1619 DivePlaneBowRight = 2272,
1620 DivePlaneSternLeft = 2304,
1621 DivePlaneSternRight = 2336,
1622 LandingGear = 3072,
1623 TailHook = 3104,
1624 SpeedBrake = 3136,
1625 LeftDoorofPrimaryWeaponBay = 3168,
1626 RightDoorofPrimaryWeaponBay = 3200,
1627 TankorAPCHatch = 3232,
1628 Wingsweep = 3264,
1629 BridgeLauncher = 3296,
1630 BridgeSection1 = 3328,
1631 BridgeSection2 = 3360,
1632 BridgeSection3 = 3392,
1633 PrimaryBlade1 = 3424,
1634 PrimaryBlade2 = 3456,
1635 PrimaryBoom = 3488,
1636 PrimaryLauncherArm = 3520,
1637 OtherFixedPositionPartsDefinedasNeeded = 3552,
1638 LandingGearNose = 3584,
1639 LandingGearLeftMain = 3616,
1640 LandingGearRightMain = 3648,
1641 DoorsofLeftSideWeaponBay = 3680,
1642 DoorsofRightSideWeaponBay = 3712,
1643 SpotSearchLight1 = 3744,
1644 SpotSearchLight2 = 3776,
1645 SpotSearchLight3 = 3808,
1646 SpotSearchLight4 = 3840,
1647 LandingLight = 3872,
1648 PrimaryTurretNumber1 = 4096,
1649 PrimaryTurretNumber2 = 4128,
1650 PrimaryTurretNumber3 = 4160,
1651 PrimaryTurretNumber4 = 4192,
1652 PrimaryTurretNumber5 = 4224,
1653 PrimaryTurretNumber6 = 4256,
1654 PrimaryTurretNumber7 = 4288,
1655 PrimaryTurretNumber8 = 4320,
1656 PrimaryTurretNumber9 = 4352,
1657 PrimaryTurretNumber10 = 4384,
1658 PrimaryGunNumber1 = 4416,
1659 PrimaryGunNumber2 = 4448,
1660 PrimaryGunNumber3 = 4480,
1661 PrimaryGunNumber4 = 4512,
1662 PrimaryGunNumber5 = 4544,
1663 PrimaryGunNumber6 = 4576,
1664 PrimaryGunNumber7 = 4608,
1665 PrimaryGunNumber8 = 4640,
1666 PrimaryGunNumber9 = 4672,
1667 PrimaryGunNumber10 = 4704,
1668 PrimaryLauncher1 = 4736,
1669 PrimaryLauncher2 = 4768,
1670 PrimaryLauncher3 = 4800,
1671 PrimaryLauncher4 = 4832,
1672 PrimaryLauncher5 = 4864,
1673 PrimaryLauncher6 = 4896,
1674 PrimaryLauncher7 = 4928,
1675 PrimaryLauncher8 = 4960,
1676 PrimaryLauncher9 = 4992,
1677 PrimaryLauncher10 = 5024,
1678 PrimaryDefenseSystems1 = 5056,
1679 PrimaryDefenseSystems2 = 5088,
1680 PrimaryDefenseSystems3 = 5120,
1681 PrimaryDefenseSystems4 = 5152,
1682 PrimaryDefenseSystems5 = 5184,
1683 PrimaryDefenseSystems6 = 5216,
1684 PrimaryDefenseSystems7 = 5248,
1685 PrimaryDefenseSystems8 = 5280,
1686 PrimaryDefenseSystems9 = 5312,
1687 PrimaryDefenseSystems10 = 5344,
1688 PrimaryRadar1 = 5376,
1689 PrimaryRadar2 = 5408,
1690 PrimaryRadar3 = 5440,
1691 PrimaryRadar4 = 5472,
1692 PrimaryRadar5 = 5504,
1693 PrimaryRadar6 = 5536,
1694 PrimaryRadar7 = 5568,
1695 PrimaryRadar8 = 5600,
1696 PrimaryRadar9 = 5632,
1697 PrimaryRadar10 = 5664,
1698 SecondaryTurretNumber1 = 5696,
1699 SecondaryTurretNumber2 = 5728,
1700 SecondaryTurretNumber3 = 5760,
1701 SecondaryTurretNumber4 = 5792,
1702 SecondaryTurretNumber5 = 5824,
1703 SecondaryTurretNumber6 = 5856,
1704 SecondaryTurretNumber7 = 5888,
1705 SecondaryTurretNumber8 = 5920,
1706 SecondaryTurretNumber9 = 5952,
1707 SecondaryTurretNumber10 = 5984,
1708 SecondaryGunNumber1 = 6016,
1709 SecondaryGunNumber2 = 6048,
1710 SecondaryGunNumber3 = 6080,
1711 SecondaryGunNumber4 = 6112,
1712 SecondaryGunNumber5 = 6144,
1713 SecondaryGunNumber6 = 6176,
1714 SecondaryGunNumber7 = 6208,
1715 SecondaryGunNumber8 = 6240,
1716 SecondaryGunNumber9 = 6272,
1717 SecondaryGunNumber10 = 6304,
1718 SecondaryLauncher1 = 6336,
1719 SecondaryLauncher2 = 6368,
1720 SecondaryLauncher3 = 6400,
1721 SecondaryLauncher4 = 6432,
1722 SecondaryLauncher5 = 6464,
1723 SecondaryLauncher6 = 6496,
1724 SecondaryLauncher7 = 6528,
1725 SecondaryLauncher8 = 6560,
1726 SecondaryLauncher9 = 6592,
1727 SecondaryLauncher10 = 6624,
1728 SecondaryDefenseSystems1 = 6656,
1729 SecondaryDefenseSystems2 = 6688,
1730 SecondaryDefenseSystems3 = 6720,
1731 SecondaryDefenseSystems4 = 6752,
1732 SecondaryDefenseSystems5 = 6784,
1733 SecondaryDefenseSystems6 = 6816,
1734 SecondaryDefenseSystems7 = 6848,
1735 SecondaryDefenseSystems8 = 6880,
1736 SecondaryDefenseSystems9 = 6912,
1737 SecondaryDefenseSystems10 = 6944,
1738 SecondaryRadar1 = 6976,
1739 SecondaryRadar2 = 7008,
1740 SecondaryRadar3 = 7040,
1741 SecondaryRadar4 = 7072,
1742 SecondaryRadar5 = 7104,
1743 SecondaryRadar6 = 7136,
1744 SecondaryRadar7 = 7168,
1745 SecondaryRadar8 = 7200,
1746 SecondaryRadar9 = 7232,
1747 SecondaryRadar10 = 7264,
1748 DeckElevator1 = 7296,
1749 DeckElevator2 = 7328,
1750 Catapult1 = 7360,
1751 Catapult2 = 7392,
1752 JetBlastDeflector1 = 7424,
1753 JetBlastDeflector2 = 7456,
1754 ArrestorWires1 = 7488,
1755 ArrestorWires2 = 7520,
1756 ArrestorWires3 = 7552,
1757 WingFold = 7584,
1758 FuselageFold = 7616,
1759 MainCargoDoor = 7648,
1760 CargoRamp = 7680,
1761 AirtoAirRefuelingBoom = 7712,
1762 PrimaryAerialRefuelingReceptacleDoor = 7744,
1763 SecondaryAerialRefuelingReceptacleDoor = 7776,
1764 AerialRefuelingReceptacleLatch = 7808,
1765 CargoDoor1 = 7840,
1766 CargoDoor2 = 7872,
1767 CargoDoor3 = 7904,
1768 CargoDoor4 = 7936,
1769 CargoDoor5 = 7968,
1770 CargoDoor6 = 8000,
1771 CargoDoor7 = 8032,
1772 CargoDoor8 = 8064,
1773 CargoDoor9 = 8096,
1774 CargoDoor10 = 8128,
1775 CentreRefuellingDrogue = 8160,
1776 PortRefuellingDrogue = 8192,
1777 StarboardRefuellingDrogue = 8224,
1778 SubmarineEngineExhaustMast = 8256,
1779 SubmarineMast1 = 8288,
1780 SubmarineMast2 = 8320,
1781 SubmarineMast3 = 8352,
1782 SubmarineMast4 = 8384,
1783 SubmarineMast5 = 8416,
1784 SubmarineMast6 = 8448,
1785 SubmarineMast7 = 8480,
1786 SubmarineMast8 = 8512,
1787 SubmarineMast9 = 8544,
1788 SubmarineMast10 = 8576,
1789 VectoredThrustNozzle = 8608,
1790 LeftDooroftheLeftWeaponBay = 8640,
1791 RightDooroftheLeftWeaponBay = 8672,
1792 LeftDooroftheRightWeaponBay = 8704,
1793 RightDooroftheRightWeaponBay = 8736,
1794 GunDoor = 8768,
1795 CountermeasureDoorLeft = 8800,
1796 CountermeasureDoorRight = 8832,
1797 HookDoorForward = 8864,
1798 HookDoorAft = 8896,
1799 LiftFanUpperDoor = 8928,
1800 LiftFanLowerDoorLeft = 8960,
1801 LiftFanLowerDoorRight = 8992,
1802 RefuelProbeDoor = 9024,
1803 LeftEngineNacelle = 9056,
1804 RightEngineNacelle = 9088,
1805 _1stLeftWheel = 9120,
1806 _1stRightWheel = 9152,
1807 _2ndLeftWheel = 9184,
1808 _2ndRightWheel = 9216,
1809 _3rdLeftWheel = 9248,
1810 _3rdRightWheel = 9280,
1811 _4thLeftWheel = 9312,
1812 _4thRightWheel = 9344,
1813 _5thLeftWheel = 9376,
1814 _5thRightWheel = 9408,
1815 _6thLeftWheel = 9440,
1816 _6thRightWheel = 9472,
1817 _7thLeftWheel = 9504,
1818 _7thRightWheel = 9536,
1819 _8thLeftWheel = 9568,
1820 _8thRightWheel = 9600,
1821 _9thLeftWheel = 9632,
1822 _9thRightWheel = 9664,
1823 _10thLeftWheel = 9696,
1824 _10thRightWheel = 9728,
1825 RefuelingProbe = 9760,
1826 SteeringWheel = 9792,
1827 CraneBody = 9824,
1828 CraneArm1 = 9856,
1829 CraneArm2 = 9888,
1830 CraneArm3 = 9920,
1831 CraneBoom = 9952,
1832 CraneHook = 9984,
1833 Trailer = 10016,
1834 RollerLeft = 10048,
1835 RollerRight = 10080,
1836 PrimaryGunRecoil = 10112,
1837 SecondaryGunRecoil = 10144,
1838}
1839
1840impl ArticulatedPartsTypeClass {
1841 #[must_use]
1842 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1843 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
1844 }
1845}
1846
1847#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1849pub enum MunitionDescriptorWarhead {
1850 #[default]
1851 Other = 0,
1852 Cargo = 10,
1853 FuelAirExplosive = 20,
1854 GlassBeads = 30,
1855 _1um = 31,
1856 _5um = 32,
1857 _10um = 33,
1858 HighExplosive = 1000,
1859 HEPlastic = 1100,
1860 HEIncendiary = 1200,
1861 HEFragmentation = 1300,
1862 HEAntiTank = 1400,
1863 HEBomblets = 1500,
1864 HEShapedCharge = 1600,
1865 HEContinuousRod = 1610,
1866 HETungstenBall = 1615,
1867 HEBlastFragmentation = 1620,
1868 HESteerableDartswithHE = 1625,
1869 HEDarts = 1630,
1870 HEFlechettes = 1635,
1871 HEDirectedFragmentation = 1640,
1872 HESemiArmorPiercing = 1645,
1873 HEShapedChargeFragmentation = 1650,
1874 HESemiArmorPiercingFragmentation = 1655,
1875 HEHollowCharge = 1660,
1876 HEDoubleHollowCharge = 1665,
1877 HEGeneralPurpose = 1670,
1878 HEBlastPenetrator = 1675,
1879 HERodPenetrator = 1680,
1880 HEAntiPersonnel = 1685,
1881 HEShapedChargeFragmentationIncendiary = 1690,
1882 HEPenetratorBlastFragmentation = 1695,
1883 Smoke = 2000,
1884 WP = 2005,
1885 FOGO = 2010,
1886 HC = 2015,
1887 Illumination = 3000,
1888 Practice = 4000,
1889 Blank = 4001,
1890 Dummy = 4002,
1891 Kinetic = 5000,
1892 Mines = 6000,
1893 Nuclear = 7000,
1894 NuclearIMT = 7010,
1895 NuclearVariousYields = 7011,
1896 ChemicalGeneral = 8000,
1897 ChemicalBlisterAgent = 8100,
1898 HD = 8110,
1899 ThickenedHD = 8115,
1900 DustyHD = 8120,
1901 L = 8125,
1902 HN3 = 8130,
1903 HL = 8135,
1904 CX = 8140,
1905 DMMP = 8145,
1906 DMHP = 8150,
1907 DMA = 8155,
1908 DEM = 8160,
1909 PX = 8165,
1910 ChemicalBloodAgent = 8200,
1911 AC = 8210,
1912 CK = 8215,
1913 CG = 8220,
1914 ChemicalNerveAgent = 8300,
1915 VX = 8310,
1916 ThickenedVX = 8315,
1917 DustyVX = 8320,
1918 GA = 8325,
1919 ThickenedGA = 8330,
1920 DustyGA = 8335,
1921 GB = 8340,
1922 ThickenedGB = 8345,
1923 DustyGB = 8350,
1924 GD = 8355,
1925 ThickenedGD = 8360,
1926 DustyGD = 8365,
1927 GF = 8370,
1928 ThickenedGF = 8375,
1929 DustyGF = 8380,
1930 SVX = 8385,
1931 BIS = 8410,
1932 TCP = 8415,
1933 MS = 8425,
1934 TEP = 8430,
1935 H2O = 8445,
1936 TO1 = 8450,
1937 TO2 = 8455,
1938 TO3 = 8460,
1939 SulfurHexafluoride = 8465,
1940 AA = 8470,
1941 HF = 8475,
1942 Biological = 9000,
1943 BiologicalVirus = 9100,
1944 BiologicalBacteria = 9200,
1945 BiologicalRickettsia = 9300,
1946 BiologicalGeneticallyModifiedMicroorganisms = 9400,
1947 BiologicalToxin = 9500,
1948}
1949
1950impl MunitionDescriptorWarhead {
1951 #[must_use]
1952 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
1953 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
1954 }
1955}
1956
1957#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
1959pub enum MunitionDescriptorFuse {
1960 #[default]
1961 Other = 0,
1962 IntelligentInfluence = 10,
1963 Sensor = 20,
1964 Selfdestruct = 30,
1965 UltraQuick = 40,
1966 Body = 50,
1967 DeepIntrusion = 60,
1968 Multifunction = 100,
1969 PointDetonation = 200,
1970 BaseDetonation = 300,
1971 Contact = 1000,
1972 ContactInstant = 1100,
1973 ContactDelayed = 1200,
1974 _10msDelay = 1201,
1975 _20msDelay = 1202,
1976 _50msDelay = 1205,
1977 _60msDelay = 1206,
1978 _100msDelay = 1210,
1979 _125msDelay = 1212,
1980 _250msDelay = 1225,
1981 _5msDelay = 1250,
1982 _15msDelay = 1251,
1983 _25msDelay = 1252,
1984 _30msDelay = 1253,
1985 _35msDelay = 1254,
1986 _40msDelay = 1255,
1987 _45msDelay = 1256,
1988 _90msDelay = 1257,
1989 _120msDelay = 1258,
1990 _180msDelay = 1259,
1991 _240msDelay = 1260,
1992 ContactElectronic = 1300,
1993 ContactGraze = 1400,
1994 ContactCrush = 1500,
1995 ContactHydrostatic = 1600,
1996 ContactMechanical = 1700,
1997 ContactChemical = 1800,
1998 ContactPiezoelectric = 1900,
1999 ContactPointInitiating = 1910,
2000 ContactPointInitiatingBaseDetonating = 1920,
2001 ContactBaseDetonating = 1930,
2002 ContactBallisticCapandBase = 1940,
2003 ContactBase = 1950,
2004 ContactNose = 1960,
2005 ContactFittedinStandoffProbe = 1970,
2006 ContactNonaligned = 1980,
2007 Timed = 2000,
2008 TimedProgrammable = 2100,
2009 TimedBurnout = 2200,
2010 TimedPyrotechnic = 2300,
2011 TimedElectronic = 2400,
2012 TimedBaseDelay = 2500,
2013 TimedReinforcedNoseImpactDelay = 2600,
2014 TimedShortDelayImpact = 2700,
2015 _10msDelay2 = 2701,
2016 _20msDelay2 = 2702,
2017 _50msDelay2 = 2705,
2018 _60msDelay2 = 2706,
2019 _100msDelay2 = 2710,
2020 _125msDelay2 = 2712,
2021 _250msDelay2 = 2725,
2022 TimedNoseMountedVariableDelay = 2800,
2023 TimedLongDelaySide = 2900,
2024 TimedSelectableDelay = 2910,
2025 TimedImpact = 2920,
2026 TimedSequence = 2930,
2027 Proximity = 3000,
2028 ProximityActiveLaser = 3100,
2029 ProximityMagnetic = 3200,
2030 ProximityActiveRadar = 3300,
2031 ProximityRadioFrequency = 3400,
2032 ProximityProgrammable = 3500,
2033 ProximityProgrammablePrefragmented = 3600,
2034 ProximityInfrared = 3700,
2035 Command = 4000,
2036 CommandElectronicRemotelySet = 4100,
2037 Altitude1 = 5000,
2038 AltitudeRadioAltimeter = 5100,
2039 AltitudeAirBurst = 5200,
2040 Depth = 6000,
2041 Acoustic = 7000,
2042 Pressure = 8000,
2043 PressureDelay = 8010,
2044 Inert = 8100,
2045 Dummy = 8110,
2046 Practice = 8120,
2047 PlugRepresenting = 8130,
2048 Training = 8150,
2049 Pyrotechnic = 9000,
2050 PyrotechnicDelay = 9010,
2051 Electrooptical = 9100,
2052 Electromechanical = 9110,
2053 ElectromechanicalNose = 9120,
2054 Strikerless = 9200,
2055 StrikerlessNoseImpact = 9210,
2056 StrikerlessCompressionIgnition = 9220,
2057 CompressionIgnition = 9300,
2058 CompressionIgnitionStrikerlessNoseImpact = 9310,
2059 Percussion = 9400,
2060 PercussionInstantaneous = 9410,
2061 Electronic = 9500,
2062 ElectronicInternallyMounted = 9510,
2063 ElectronicRangeSetting = 9520,
2064 ElectronicProgrammed = 9530,
2065 Mechanical = 9600,
2066 MechanicalNose = 9610,
2067 MechanicalTail = 9620,
2068}
2069
2070impl MunitionDescriptorFuse {
2071 #[must_use]
2072 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
2073 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
2074 }
2075}
2076
2077#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
2079pub enum DetonationResult {
2080 #[default]
2081 Other = 0,
2082 EntityImpact = 1,
2083 EntityProximateDetonation = 2,
2084 GroundImpact = 3,
2085 GroundProximateDetonation = 4,
2086 Detonation = 5,
2087 NoneorNoDetonation = 6,
2088 HEhitsmall = 7,
2089 HEhitmedium = 8,
2090 HEhitlarge = 9,
2091 Armorpiercinghit = 10,
2092 Dirtblastsmall = 11,
2093 Dirtblastmedium = 12,
2094 Dirtblastlarge = 13,
2095 Waterblastsmall = 14,
2096 Waterblastmedium = 15,
2097 Waterblastlarge = 16,
2098 Airhit = 17,
2099 Buildinghitsmall = 18,
2100 Buildinghitmedium = 19,
2101 Buildinghitlarge = 20,
2102 Mineclearinglinecharge = 21,
2103 Environmentobjectimpact = 22,
2104 Environmentobjectproximatedetonation = 23,
2105 WaterImpact = 24,
2106 AirBurst = 25,
2107 Killwithfragmenttype1 = 26,
2108 Killwithfragmenttype2 = 27,
2109 Killwithfragmenttype3 = 28,
2110 Killwithfragmenttype1afterflyoutfailure = 29,
2111 Killwithfragmenttype2afterflyoutfailure = 30,
2112 Missduetoflyoutfailure = 31,
2113 Missduetoendgamefailure = 32,
2114 Missduetoflyoutandendgamefailure = 33,
2115}
2116
2117impl DetonationResult {
2118 #[must_use]
2119 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
2120 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
2121 }
2122}
2123
2124impl FieldSerialize for DetonationResult {
2125 fn serialize_field(&self, buf: &mut BytesMut) {
2126 buf.put_u8(*self as u8);
2127 }
2128}
2129
2130impl FieldDeserialize for DetonationResult {
2131 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
2132 Self::deserialize(buf)
2133 }
2134}
2135
2136impl FieldLen for DetonationResult {
2137 fn field_len(&self) -> usize {
2138 1
2139 }
2140}
2141
2142#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
2144pub enum ServiceRequestServiceTypeRequested {
2145 #[default]
2146 Other = 0,
2147 Resupply = 1,
2148 Repair = 2,
2149 AerialRefuelingHighFidelity = 3,
2150 AerialRefuelingLowFidelity = 4,
2151}
2152
2153impl ServiceRequestServiceTypeRequested {
2154 #[must_use]
2155 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
2156 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
2157 }
2158}
2159
2160impl FieldSerialize for ServiceRequestServiceTypeRequested {
2161 fn serialize_field(&self, buf: &mut BytesMut) {
2162 buf.put_u8(*self as u8);
2163 }
2164}
2165
2166impl FieldDeserialize for ServiceRequestServiceTypeRequested {
2167 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
2168 Self::deserialize(buf)
2169 }
2170}
2171
2172impl FieldLen for ServiceRequestServiceTypeRequested {
2173 fn field_len(&self) -> usize {
2174 1
2175 }
2176}
2177
2178#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
2180pub enum RepairCompleteRepair {
2181 #[default]
2182 NoRepairsPerformed = 0,
2183 AllRequestedrepairSperformed = 1,
2184 MotorEngine = 10,
2185 Starter = 20,
2186 Alternator = 30,
2187 Generator = 40,
2188 Battery = 50,
2189 EngineCoolantLeak = 60,
2190 FuelFilter = 70,
2191 TransmissionOilLeak = 80,
2192 EngineOilLeak = 90,
2193 Pumps = 100,
2194 DriveTrainFilters = 110,
2195 Transmission = 120,
2196 Brakes = 130,
2197 SuspensionSystem = 140,
2198 OilFilter = 150,
2199 Hull = 1000,
2200 Airframe = 1010,
2201 TruckBody = 1020,
2202 TankBody = 1030,
2203 TrailerBody = 1040,
2204 Turret = 1050,
2205 Propeller = 1500,
2206 EnvironmentFilters = 1520,
2207 Wheels = 1540,
2208 Tire = 1550,
2209 Track = 1560,
2210 GunElevationDrive = 2000,
2211 GunStabilizationSystem = 2010,
2212 GunnersPrimarySight = 2020,
2213 CommandersExtensionToTheGPS = 2030,
2214 LoadingMechanism = 2040,
2215 GunnersAuxiliarySight = 2050,
2216 GunnersControlPanel = 2060,
2217 GunnersControlAssemblyHandle = 2070,
2218 CommandersControlHandlesAssembly = 2090,
2219 CommandersWeaponStation = 2100,
2220 CommandersIndependentThermalViewer = 2110,
2221 GeneralWeapons = 2120,
2222 FuelTransferPump = 4000,
2223 FuelLines = 4010,
2224 Gauges = 4020,
2225 GeneralFuelSystem = 4030,
2226 ElectronicWarfareSystems = 4500,
2227 DetectionSystems = 4600,
2228 DetectionSystemsRadioFrequency = 4610,
2229 DetectionSystemsMicrowave = 4620,
2230 DetectionSystemsInfrared = 4630,
2231 DetectionSystemsLaser = 4640,
2232 RangeFinders = 4700,
2233 RangeOnlyrAdar = 4710,
2234 LaserRangeFinder = 4720,
2235 ElectronicSystems = 4800,
2236 ElectronicsSystemsRadioFrequency = 4810,
2237 ElectronicsSystemsMicrowave = 4820,
2238 ElectronicsSystemsInfrared = 4830,
2239 ElectronicsSystemsLaser = 4840,
2240 Radios = 5000,
2241 CommunicationSystems = 5010,
2242 Intercoms = 5100,
2243 Encoders = 5200,
2244 EncryptionDevices = 5250,
2245 Decoders = 5300,
2246 DecryptionDevices = 5350,
2247 Computers = 5500,
2248 NavigationAndControlSystems = 6000,
2249 FireControlSystems = 6500,
2250 AirSupply = 8000,
2251 LifeSupportSystemsFilters = 8010,
2252 WaterSupply = 8020,
2253 RefrigerationSystem = 8030,
2254 ChemicalBiologicalAndRadiologicalProtection = 8040,
2255 WaterWashdownSystems = 8050,
2256 DecontaminationSystems = 8060,
2257 Watersupply = 9000,
2258 Coolingsystem = 9010,
2259 Winches = 9020,
2260 Catapults = 9030,
2261 Cranes = 9040,
2262 Launchers = 9050,
2263 Lifeboats = 10000,
2264 Landingcraft = 10010,
2265 Ejectionseats = 10020,
2266}
2267
2268impl RepairCompleteRepair {
2269 #[must_use]
2270 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
2271 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
2272 }
2273}
2274
2275impl FieldSerialize for RepairCompleteRepair {
2276 fn serialize_field(&self, buf: &mut BytesMut) {
2277 buf.put_u16(*self as u16);
2278 }
2279}
2280
2281impl FieldDeserialize for RepairCompleteRepair {
2282 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
2283 Self::deserialize(buf)
2284 }
2285}
2286
2287impl FieldLen for RepairCompleteRepair {
2288 fn field_len(&self) -> usize {
2289 2
2290 }
2291}
2292
2293#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
2295pub enum RepairResponseRepairResult {
2296 #[default]
2297 Other = 0,
2298 RepairEnded = 1,
2299 InvalidRepair = 2,
2300 RepairInterrupted = 3,
2301 ServiceCanceledByTheSupplier = 4,
2302}
2303
2304impl RepairResponseRepairResult {
2305 #[must_use]
2306 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
2307 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
2308 }
2309}
2310
2311impl FieldSerialize for RepairResponseRepairResult {
2312 fn serialize_field(&self, buf: &mut BytesMut) {
2313 buf.put_u8(*self as u8);
2314 }
2315}
2316
2317impl FieldDeserialize for RepairResponseRepairResult {
2318 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
2319 Self::deserialize(buf)
2320 }
2321}
2322
2323impl FieldLen for RepairResponseRepairResult {
2324 fn field_len(&self) -> usize {
2325 1
2326 }
2327}
2328
2329#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
2331pub enum VariableRecordTypes {
2332 #[default]
2333 EntityIDList = 1,
2334 DDCPJoinTransactionJoinRequestMessage = 1001,
2335 DDCPSetPlaybackWindowTransactionSetPlaybackWindowRequestMessage = 1002,
2336 DDCPLoadMissionRecordingTransactionLoadMissionRecordingRequestMessage = 1003,
2337 DDCPCueTransactionCueRequestMessage = 1004,
2338 DDCPPlayTransactionPlayRequestMessage = 1005,
2339 DDCPStopTransactionStopRequestMessage = 1006,
2340 DDCPPauseTransactionPauseRequestMessage = 1007,
2341 DDCPEndTransactionEndRequestMessage = 1009,
2342 DDCPJoinResponseMessage = 1051,
2343 DDCPRequestReceiptMessage = 1052,
2344 DDCPPlaybackWindowConfirmedMessage = 1053,
2345 DDCPMissionRecordingLoadedMessage = 1054,
2346 DDCPCueConfirmedMessage = 1055,
2347 DDCPTimetoCompleteMessage = 1056,
2348 DDCPPlayCommencedMessage = 1057,
2349 DDCPStopConfirmedMessage = 1058,
2350 DDCPPauseConfirmedMessage = 1059,
2351 DDCPEndResponseMessage = 1061,
2352 DDCPMasterAnnounceMessage = 1111,
2353 DDCPDeviceAnnounceMessage = 1112,
2354 DDCPDeviceExitMessage = 1114,
2355 DDCPDeviceHeartbeatMessage = 1115,
2356 DDCPMasterTimeSyncMessage = 1116,
2357 DDCPErrorMessage = 1118,
2358 DDCPMasterStopSyncMessage = 1119,
2359 DDCPMasterTransitionMessage = 1120,
2360 MissionTime = 1200,
2361 HighFidelityHAVEQUICKSATURNRadio = 3000,
2362 BlankingSectorattributerecord = 3500,
2363 AngleDeceptionattributerecord = 3501,
2364 FalseTargetsattributerecord = 3502,
2365 DEPrecisionAimpointrecord = 4000,
2366 DEAreaAimpointrecord = 4001,
2367 DirectedEnergyDamageDescriptionrecord = 4500,
2368 CryptoControl = 5000,
2369 Mode5STransponderLocation = 5001,
2370 Mode5STransponderLocationError = 5002,
2371 SquitterAirbornePositionReport = 5003,
2372 SquitterAirborneVelocityReport = 5004,
2373 SquitterSurfacePositionReport = 5005,
2374 SquitterIdentificationReport = 5006,
2375 GICB = 5007,
2376 SquitterEventDrivenReport = 5008,
2377 AntennaLocation = 5009,
2378 BasicInteractive = 5010,
2379 InteractiveMode4Reply = 5011,
2380 InteractiveMode5Reply = 5012,
2381 InteractiveBasicMode5 = 5013,
2382 InteractiveBasicModeS = 5014,
2383 IOEffect = 5500,
2384 IOCommunicationsNode = 5501,
2385 Identification1 = 10000,
2386 TrainerInitialConditionsFilename = 10010,
2387 Increment3_1MissionDataLoadName = 10020,
2388 Increment2MissionDataLoadName = 10030,
2389 SetMarkpointCommand = 10110,
2390 MarkpointID = 10115,
2391 ReactionLevel = 10140,
2392 WeaponReload = 10150,
2393 CESEntitySetClearStatus = 10157,
2394 ActivateEntity = 10160,
2395 DisengageReengage1 = 10170,
2396 FuelFreeze = 10190,
2397 FireLaunchDispense = 10250,
2398 TargetAssignment = 10254,
2399 CICEnable = 10256,
2400 ShootInhibit = 10258,
2401 Posture = 10259,
2402 JammerState = 10262,
2403 JammerType = 10263,
2404 DynamicTargeting = 10264,
2405 ManualJammingOnOverride = 10267,
2406 SOJAxis = 10268,
2407 EmitterOverride1 = 10280,
2408 Shields1 = 10290,
2409 CrashOverride = 10300,
2410 StopBuzzer = 10306,
2411 TargetLasingOnOff = 10307,
2412 TargetLasingLaserCode = 10308,
2413 PowerPlant = 10310,
2414 TacticalLightingOnOffControlLightControl = 10311,
2415 TacticalLightingBlinkerControlBlinkerValue = 10312,
2416 TacticalLightingOnOffControlLightControlType = 10313,
2417 ParkVehicle = 10314,
2418 SignalingOnOff = 10315,
2419 SignalingDevice = 10316,
2420 OwnshipID = 10400,
2421 StateChange = 10600,
2422 EntityType1 = 11000,
2423 Concatenated = 11100,
2424 Kind = 11110,
2425 Domain = 11120,
2426 Country = 11130,
2427 Category = 11140,
2428 Subcategory = 11150,
2429 Specific = 11160,
2430 Extra = 11170,
2431 ForceID1 = 11180,
2432 ForceID2 = 11200,
2433 Description = 11300,
2434 TankerBoomControl = 11500,
2435 AirportLights = 11501,
2436 WeatherPost = 11502,
2437 LocalizerandGlideSlope = 11503,
2438 TACANNavAids = 11504,
2439 AlternativeEntityType1 = 12000,
2440 Kind2 = 12110,
2441 Domain2 = 12120,
2442 Country2 = 12130,
2443 Category2 = 12140,
2444 Subcategory2 = 12150,
2445 Specific2 = 12160,
2446 Extra2 = 12170,
2447 Description2 = 12300,
2448 EntityMarking = 13000,
2449 EntityMarkingCharacters = 13100,
2450 CrewID = 13200,
2451 TaskOrganization = 14000,
2452 RegimentName = 14200,
2453 BattalionName = 14300,
2454 CompanyName = 14400,
2455 PlatoonName = 14500,
2456 SquadName = 14520,
2457 TeamName = 14540,
2458 BumperNumber = 14600,
2459 VehicleNumber = 14700,
2460 UnitNumber = 14800,
2461 DISIdentity = 15000,
2462 DISSiteID = 15100,
2463 DISHostID = 15200,
2464 DISEntityID = 15300,
2465 MountIntent = 15400,
2466 TetherUnthetherCommandID = 15500,
2467 TeleportEntityDataRecord = 15510,
2468 DISAggregateID = 15600,
2469 OwnershipStatus = 15800,
2470 Reconstitute = 19177,
2471 Loads = 20000,
2472 CrewMembers = 21000,
2473 CrewMemberID = 21100,
2474 Health = 21200,
2475 JobAssignment = 21300,
2476 Fuel = 23000,
2477 Quantity1 = 23100,
2478 Quantity2 = 23105,
2479 Ammunition = 24000,
2480 _120mmHEATquantity = 24001,
2481 _120mmSABOTquantity = 24002,
2482 _12_7mmM8quantity = 24003,
2483 _12_7mmM20quantity = 24004,
2484 _7_62mmM62quantity = 24005,
2485 M250UKL8A1quantity = 24006,
2486 M250UKL8A3quantity = 24007,
2487 _7_62mmM80quantity = 24008,
2488 _12_7mmquantity = 24009,
2489 _7_62mmquantity = 24010,
2490 Minesquantity = 24060,
2491 Type = 24100,
2492 Kind3 = 24110,
2493 Domain3 = 24120,
2494 Country3 = 24130,
2495 Category3 = 24140,
2496 Subcategory3 = 24150,
2497 Extra3 = 24160,
2498 Description3 = 24300,
2499 Cargo = 25000,
2500 VehicleMass = 26000,
2501 SupplyQuantity = 27000,
2502 Armament = 28000,
2503 Status = 30000,
2504 Activateentity = 30010,
2505 SubscriptionState = 30100,
2506 Roundtriptimedelay = 30300,
2507 TADILJmessagecountLabel0 = 30400,
2508 TADILJmessagecountLabel1 = 30401,
2509 TADILJmessagecountLabel2 = 30402,
2510 TADILJmessagecountLabel3 = 30403,
2511 TADILJmessagecountLabel4 = 30404,
2512 TADILJmessagecountLabel5 = 30405,
2513 TADILJmessagecountLabel6 = 30406,
2514 TADILJmessagecountLabel7 = 30407,
2515 TADILJmessagecountLabel8 = 30408,
2516 TADILJmessagecountLabel9 = 30409,
2517 TADILJmessagecountLabel10 = 30410,
2518 TADILJmessagecountLabel11 = 30411,
2519 TADILJmessagecountLabel12 = 30412,
2520 TADILJmessagecountLabel13 = 30413,
2521 TADILJmessagecountLabel14 = 30414,
2522 TADILJmessagecountLabel15 = 30415,
2523 TADILJmessagecountLabel16 = 30416,
2524 TADILJmessagecountLabel17 = 30417,
2525 TADILJmessagecountLabel18 = 30418,
2526 TADILJmessagecountLabel19 = 30419,
2527 TADILJmessagecountLabel20 = 30420,
2528 TADILJmessagecountLabel21 = 30421,
2529 TADILJmessagecountLabel22 = 30422,
2530 TADILJmessagecountLabel23 = 30423,
2531 TADILJmessagecountLabel24 = 30424,
2532 TADILJmessagecountLabel25 = 30425,
2533 TADILJmessagecountLabel26 = 30426,
2534 TADILJmessagecountLabel27 = 30427,
2535 TADILJmessagecountLabel28 = 30428,
2536 TADILJmessagecountLabel29 = 30429,
2537 TADILJmessagecountLabel30 = 30430,
2538 TADILJmessagecountLabel31 = 30431,
2539 Position = 31000,
2540 Routetype = 31010,
2541 MilGrid10 = 31100,
2542 GeocentricCoordinates = 31200,
2543 X = 31210,
2544 Y = 31220,
2545 Z = 31230,
2546 Latitude1 = 31300,
2547 Longitude1 = 31400,
2548 LineofSight = 31500,
2549 X1 = 31510,
2550 Y1 = 31520,
2551 Z1 = 31530,
2552 Altitude2 = 31600,
2553 DestinationLatitude = 31700,
2554 DestinationLongitude = 31800,
2555 DestinationAltitude = 31900,
2556 Orientation = 32000,
2557 HullHeadingAngle = 32100,
2558 HullPitchAngle = 32200,
2559 RollAngle = 32300,
2560 X2 = 32500,
2561 Y2 = 32600,
2562 Z2 = 32700,
2563 Appearance = 33000,
2564 AmbientLighting = 33100,
2565 Lights1 = 33101,
2566 PaintScheme = 33200,
2567 Smoke = 33300,
2568 TrailingEffects = 33400,
2569 Flaming = 33500,
2570 Marking = 33600,
2571 MinePlowsAttached = 33710,
2572 MineRollersAttached = 33720,
2573 TankTurretAzimuth = 33730,
2574 FailuresandMalfunctions = 34000,
2575 Age = 34100,
2576 Kilometers = 34110,
2577 Damage = 35000,
2578 Cause = 35050,
2579 MobilityKill1 = 35100,
2580 FirePowerKill = 35200,
2581 PersonnelCasualties = 35300,
2582 Velocity = 36000,
2583 Xvelocity = 36100,
2584 Yvelocity = 36200,
2585 Zvelocity = 36300,
2586 Speed1 = 36400,
2587 Acceleration = 37000,
2588 Xacceleration = 37100,
2589 Yacceleration = 37200,
2590 Zacceleration = 37300,
2591 EngineStatus = 38100,
2592 PrimaryTargetLine = 39000,
2593 Exercise = 40000,
2594 ExerciseState = 40010,
2595 RestartRefresh = 40015,
2596 AFATDSFileName = 40020,
2597 TerrainDatabase = 41000,
2598 Missions = 42000,
2599 MissionID = 42100,
2600 MissionType = 42200,
2601 MissionRequestTimeStamp = 42300,
2602 ExerciseDescription = 43000,
2603 Name = 43100,
2604 Entities = 43200,
2605 Version = 43300,
2606 GuiseMode = 43410,
2607 SimulationApplicationActiveStatus = 43420,
2608 SimulationApplicationRoleRecord = 43430,
2609 SimulationApplicationState = 43440,
2610 VisualOutputMode = 44000,
2611 SimulationManagerRole = 44100,
2612 SimulationManagerSiteID = 44110,
2613 SimulationManagerApplicID = 44120,
2614 SimulationManagerEntityID = 44130,
2615 SimulationManagerActiveStatus = 44140,
2616 AfterActiveReviewRole = 44200,
2617 AfterActiveReviewSiteID = 44210,
2618 AfterActiveApplicID = 44220,
2619 AfterActiveReviewEntityID = 44230,
2620 AfterActiveReviewActiveStatus = 44240,
2621 ExerciseLoggerRole = 44300,
2622 ExerciseLoggerSiteID = 44310,
2623 ExerciseLoggerApplicID = 44320,
2624 ExerciseEntityID = 44330,
2625 ExerciseLoggerActiveStatus = 44340,
2626 SyntheticEnvironmentManagerRole = 44400,
2627 SyntheticEnvironmentManagerSiteID = 44410,
2628 SyntheticEnvironmentManagerApplicID = 44420,
2629 SyntheticEnvironmentManagerEntityID = 44430,
2630 SyntheticEnvironmentManagerActiveStatus = 44440,
2631 SIMNETDISTranslatorRole = 44500,
2632 SIMNETDISTranslatorSiteID = 44510,
2633 SIMNETDISTranslatorApplicID = 44520,
2634 SIMNETDISTranslatorEntityID = 44530,
2635 SIMNETDISTranslatorActiveStatus = 44540,
2636 ApplicationRate = 45000,
2637 ApplicationTime = 45005,
2638 ApplicationTimestep = 45010,
2639 FeedbackTime = 45020,
2640 SimulationRate = 45030,
2641 SimulationTime = 45040,
2642 SimulationTimestep = 45050,
2643 TimeInterval = 45060,
2644 TimeLatency = 45070,
2645 TimeScheme = 45080,
2646 ExerciseElapsedTime = 46000,
2647 ElapsedTime = 46010,
2648 Environment = 50000,
2649 ScenarioDate = 50103,
2650 TimeDateValid = 50106,
2651 ScenarioTime = 50118,
2652 SnowEnableDisable = 50120,
2653 WeatherAttributesRequest = 50124,
2654 METHeartbeatMessage = 50126,
2655 ContrailsEnable = 50600,
2656 ContrailAltitudes = 50700,
2657 Weather1 = 51000,
2658 WeatherCondition = 51010,
2659 ThermalCondition = 51100,
2660 ThermalVisibility1 = 51110,
2661 ThermalVisibility2 = 51111,
2662 Time1 = 52000,
2663 Time2 = 52001,
2664 TimeofDayDiscrete = 52100,
2665 TimeofDayContinuous = 52200,
2666 TimeMode = 52300,
2667 TimeScene = 52305,
2668 CurrentHour = 52310,
2669 CurrentMinute = 52320,
2670 CurrentSecond = 52330,
2671 Azimuth1 = 52340,
2672 MaximumElevation = 52350,
2673 TimeZone = 52360,
2674 TimeRate = 52370,
2675 TheNumberOfSimulationSecondsSinceTheStartOfTheExercise = 52380,
2676 TimeSunriseEnabled = 52400,
2677 SunriseHour = 52410,
2678 SunriseMinute = 52420,
2679 SunriseSecond = 52430,
2680 SunriseAzimuth = 52440,
2681 TimeSunsetEnabled = 52500,
2682 SunsetHour1 = 52510,
2683 SunsetHour2 = 52511,
2684 SunsetMinute = 52520,
2685 SunsetSecond = 52530,
2686 Date1 = 52600,
2687 DateEuropean = 52601,
2688 DateUS = 52602,
2689 Month = 52610,
2690 Day = 52620,
2691 Year = 52630,
2692 Clouds = 53000,
2693 CloudLayerEnable = 53050,
2694 CloudLayerSelection = 53060,
2695 Visibility = 53100,
2696 BaseAltitude1 = 53200,
2697 BaseAltitude2 = 53250,
2698 Ceiling1 = 53300,
2699 Ceiling2 = 53350,
2700 Characteristics = 53400,
2701 ConcentrationLength = 53410,
2702 Transmittance = 53420,
2703 Radiance = 53430,
2704 Precipitation = 54000,
2705 Rain = 54100,
2706 Fog = 55000,
2707 Visibility1 = 55100,
2708 Visibility2 = 55101,
2709 Visibility3 = 55105,
2710 Density1 = 55200,
2711 Base = 55300,
2712 ViewLayerfromabove_ = 55401,
2713 TransitionRange = 55410,
2714 Bottom1 = 55420,
2715 Bottom2 = 55425,
2716 Ceiling3 = 55430,
2717 Ceiling4 = 55435,
2718 HeavenlyBodies = 56000,
2719 Sun = 56100,
2720 SunVisible = 56105,
2721 Position1 = 56110,
2722 SunPositionElevationDegrees = 56111,
2723 PositionAzimuth1 = 56120,
2724 SunPositionAzimuthDegrees = 56121,
2725 PositionElevation1 = 56130,
2726 PositionIntensity1 = 56140,
2727 Moon = 56200,
2728 MoonVisible = 56205,
2729 Position2 = 56210,
2730 PositionAzimuth2 = 56220,
2731 MoonPositionAzimuthDegrees = 56221,
2732 PositionElevation2 = 56230,
2733 MoonPositionElevationDegrees = 56231,
2734 PositionIntensity2 = 56240,
2735 Horizon = 56310,
2736 HorizonAzimuth = 56320,
2737 HorizonElevation = 56330,
2738 HorizonHeading = 56340,
2739 HorizonIntensity = 56350,
2740 Humidity = 57200,
2741 Visibility4 = 57300,
2742 Winds = 57400,
2743 Speed2 = 57410,
2744 WindSpeedKnots = 57411,
2745 WindDirection1 = 57420,
2746 WindDirectionDegrees = 57421,
2747 Rainsoak = 57500,
2748 TideSpeed = 57610,
2749 TideSpeedKnots = 57611,
2750 TideDirection = 57620,
2751 TideDirectionDegrees = 57621,
2752 Haze = 58000,
2753 Visibility5 = 58100,
2754 Visibility6 = 58105,
2755 Density2 = 58200,
2756 Ceiling5 = 58430,
2757 Ceiling6 = 58435,
2758 ContaminantsandObscurants = 59000,
2759 ContaminantObscurantType = 59100,
2760 Persistence = 59110,
2761 ChemicalDosage = 59115,
2762 ChemicalAirConcentration = 59120,
2763 ChemicalGroundDeposition = 59125,
2764 ChemicalMaximumGroundDeposition = 59130,
2765 ChemicalDosageThreshold = 59135,
2766 BiologicalDosage = 59140,
2767 BiologicalAirConcentration = 59145,
2768 BiologicalDosageThreshold = 59150,
2769 BiologicalBinnedParticleCount = 59155,
2770 RadiologicalDosage = 59160,
2771 Communications = 60000,
2772 FireBottleReload = 61005,
2773 ChannelType1 = 61100,
2774 ChannelType2 = 61101,
2775 ChannelIdentification = 61200,
2776 AlphaIdentification = 61300,
2777 RadioIdentification = 61400,
2778 LandLineIdentification = 61500,
2779 IntercomIdentification = 61600,
2780 GroupNetworkChannelNumber = 61700,
2781 RadioCommunicationsStatus = 62100,
2782 BoomInterphone = 62101,
2783 StationaryRadioTransmittersDefaultTime = 62200,
2784 MovingRadioTransmittersDefaultTime = 62300,
2785 StationaryRadioSignalsDefaultTime = 62400,
2786 MovingRadioSignalDefaultTime = 62500,
2787 RadioInitializationTransecSecurityKey = 63101,
2788 RadioInitializationInternalNoiseLevel = 63102,
2789 RadioInitializationSquelchThreshold = 63103,
2790 RadioInitializationAntennaLocation = 63104,
2791 RadioInitializationAntennaPatternType = 63105,
2792 RadioInitializationAntennaPatternLength = 63106,
2793 RadioInitializationBeamDefinition = 63107,
2794 RadioInitializationTransmitHeartbeatTime = 63108,
2795 RadioInitializationTransmitDistanceThresholdVariableRecord = 63109,
2796 RadioChannelInitializationLockoutID = 63110,
2797 RadioChannelInitializationHopsetID = 63111,
2798 RadioChannelInitializationPresetFrequency = 63112,
2799 RadioChannelInitializationFrequencySyncTime = 63113,
2800 RadioChannelInitializationComsecKey = 63114,
2801 RadioChannelInitializationAlpha = 63115,
2802 AlgorithmParameters = 70000,
2803 DeadReckoningAlgorithm1 = 71000,
2804 DRALocationThreshold = 71100,
2805 DRAOrientationThreshold = 71200,
2806 DRATimeThreshold = 71300,
2807 SimulationManagementParameters = 72000,
2808 CheckpointInterval = 72100,
2809 TransmitterTimeThreshold = 72600,
2810 ReceiverTimeThreshold = 72700,
2811 InteroperabilityMode = 73000,
2812 SIMNETDataCollection = 74000,
2813 EventID = 75000,
2814 SourceSiteID = 75100,
2815 SourceHostID = 75200,
2816 ArticulatedParts = 90000,
2817 PartID = 90050,
2818 Index = 90070,
2819 Position3 = 90100,
2820 PositionRate = 90200,
2821 Extension = 90300,
2822 ExtensionRate = 90400,
2823 X3 = 90500,
2824 Xrate = 90600,
2825 Y3 = 90700,
2826 Yrate = 90800,
2827 Z3 = 90900,
2828 Zrate = 91000,
2829 Azimuth2 = 91100,
2830 AzimuthRate = 91200,
2831 Elevation = 91300,
2832 ElevationRate = 91400,
2833 Rotation2 = 91500,
2834 RotationRate = 91600,
2835 DRAAngularXVelocity = 100_001,
2836 DRAAngularYVelocity = 100_002,
2837 DRAAngularZVelocity = 100_003,
2838 AppearanceTrailingEffects = 100_004,
2839 AppearanceHatch = 100_005,
2840 AppearanceCharacterSet = 100_008,
2841 CapabilityAmmunitionSupplier = 100_010,
2842 CapabilityMiscellaneousSupplier = 100_011,
2843 CapabilityRepairProvider = 100_012,
2844 ArticulationParameter = 100_014,
2845 ArticulationParameterType1 = 100_047,
2846 ArticulationParameterValue1 = 100_048,
2847 TimeofDayScene = 100_058,
2848 LatitudeNorth = 100_061,
2849 LongitudeEast = 100_063,
2850 TacticalDriverStatus = 100_068,
2851 SonarSystemStatus = 100_100,
2852 Accomplishedaccept = 100_160,
2853 Upperlatitude = 100_161,
2854 LatitudeSouth = 100_162,
2855 Westernlongitude = 100_163,
2856 LongitudeWest = 100_164,
2857 CDROMNumber = 100_165,
2858 DTEDdiskID = 100_166,
2859 Altitude3 = 100_167,
2860 TacticalSystemStatus = 100_169,
2861 JTIDSStatus = 100_170,
2862 TADILJStatus = 100_171,
2863 DSDDStatus = 100_172,
2864 WeaponSystemStatus = 100_200,
2865 Subsystemstatus = 100_205,
2866 Numberofinterceptorsfired = 100_206,
2867 Numberofinterceptordetonations = 100_207,
2868 Numberofmessagebuffersdropped = 100_208,
2869 Satellitesensorbackground1 = 100_213,
2870 Satellitesensorbackground2 = 100_214,
2871 ScriptNumber = 100_218,
2872 EntityTrackUpdateData = 100_300,
2873 LocalForceTraining = 100_400,
2874 EntityTrackIdentityData = 100_500,
2875 EntityforTrackEvent = 100_510,
2876 IFFstatus = 100_520,
2877 EngagementData = 100_600,
2878 TargetLatitude = 100_610,
2879 TargetLongitude = 100_620,
2880 AreaofInterestCenterLatitude = 100_631,
2881 AreaofInterestCenterLongitude = 100_632,
2882 AreaofInterestRadius = 100_633,
2883 AreaofInterestType = 100_634,
2884 TargetAggregateID = 100_640,
2885 GICIdentificationNumber = 100_650,
2886 EstimatedTimeofFlighttoTBMImpact = 100_660,
2887 EstimatedInterceptTime = 100_661,
2888 EstimatedTimeofFlighttoNextWaypoint = 100_662,
2889 EntityTrackEquipmentData = 100_700,
2890 EmissionEWData = 100_800,
2891 AppearanceData = 100_900,
2892 CommandOrderData = 101_000,
2893 EnvironmentalData = 101_100,
2894 SignificantEventData = 101_200,
2895 OperatorActionData = 101_300,
2896 ADAEngagementMode = 101_310,
2897 ADAShootingStatus = 101_320,
2898 ADAMode = 101_321,
2899 ADARadarStatus = 101_330,
2900 ShootCommand = 101_340,
2901 ADAWeaponStatus = 101_350,
2902 ADAFiringDisciple = 101_360,
2903 OrderStatus = 101_370,
2904 TimeSynchronization = 101_400,
2905 TomahawkData = 101_500,
2906 NumberofDetonations = 102_100,
2907 NumberofIntercepts = 102_200,
2908 OBTControlMT201 = 200_201,
2909 SensorDataMT202 = 200_202,
2910 EnvironmentalDataMT203 = 200_203,
2911 OwnshipDataMT204 = 200_204,
2912 AcousticContactDataMT205 = 200_205,
2913 SonobuoyDataMT207 = 200_207,
2914 SonobuoyContactDataMT210 = 200_210,
2915 HeloControlMT211 = 200_211,
2916 ESMControlData = 200_213,
2917 ESMContactDataMT214 = 200_214,
2918 ESMEmitterDataMT215 = 200_215,
2919 WeaponDefinitionDataMT217 = 200_216,
2920 WeaponPresetDataMT217 = 200_217,
2921 OBTControlMT301 = 200_301,
2922 SensorDataMT302 = 200_302,
2923 EnvironmentalDataMT303m = 200_303,
2924 OwnshipDataMT304 = 200_304,
2925 AcousticContactDataMT305 = 200_305,
2926 SonobuoyDataMT307 = 200_307,
2927 SonobuoyContactDataMT310 = 200_310,
2928 HeloScenarioEquipmentStatus = 200_311,
2929 ESMControlDataMT313 = 200_313,
2930 ESMContactDataMT314 = 200_314,
2931 ESMEmitterDataMT315 = 200_315,
2932 WeaponDefinitionDataMT316 = 200_316,
2933 WeaponPresetDataMT317 = 200_317,
2934 PairingAssociation = 200_400,
2935 Pointer = 200_401,
2936 ReportingResponsibility = 200_402,
2937 TrackNumber = 200_403,
2938 IDforLink11Reporting = 200_404,
2939 RemoteTrack = 200_405,
2940 Link11ErrorRate = 200_406,
2941 TrackQuality = 200_407,
2942 Gridlock = 200_408,
2943 Kill = 200_409,
2944 TrackIDChangeResolution = 200_410,
2945 WeaponsStatus = 200_411,
2946 Link11Operator = 200_412,
2947 ForceTrainingTransmit = 200_413,
2948 ForceTrainingReceive = 200_414,
2949 InterceptorAmplification1 = 200_415,
2950 Consumables1 = 200_416,
2951 Link11LocalTrackQuality = 200_417,
2952 DLRP = 200_418,
2953 ForceOrder = 200_419,
2954 WilcoCantco = 200_420,
2955 EMCBearing = 200_421,
2956 ChangeTrackEligibility = 200_422,
2957 LandMassReferencePoint = 200_423,
2958 SystemReferencePoint = 200_424,
2959 PUAmplification = 200_425,
2960 SetDrift = 200_426,
2961 BeginInitialization = 200_427,
2962 StatusandControl = 200_428,
2963 ScintillationChange = 200_429,
2964 Link11IDControl = 200_430,
2965 PUGuardList = 200_431,
2966 WindsAloft = 200_432,
2967 SurfaceWinds = 200_433,
2968 SeaState = 200_434,
2969 MagneticVariation = 200_435,
2970 TrackEligibility = 200_436,
2971 TrainingTrackNotification = 200_437,
2972 TacanData = 200_501,
2973 InterceptorAmplification2 = 200_502,
2974 TacanAssignment = 200_503,
2975 AutopilotStatus = 200_504,
2976 Consumables2 = 200_505,
2977 Downlink = 200_506,
2978 TINReport = 200_507,
2979 SpecialPointControl = 200_508,
2980 ControlDiscretes = 200_509,
2981 RequestTargetDiscretes = 200_510,
2982 TargetDiscretes = 200_511,
2983 ReplyDiscretes = 200_512,
2984 CommandManeuvers = 200_513,
2985 TargetData = 200_514,
2986 TargetPointer = 200_515,
2987 InterceptData = 200_516,
2988 DecrementMissileInventory = 200_517,
2989 Link4AAlert = 200_518,
2990 StrikeControl = 200_519,
2991 SpeedChange = 200_521,
2992 CourseChange = 200_522,
2993 AltitudeChange = 200_523,
2994 ACLSANSPN46Status = 200_524,
2995 ACLSAircraftReport = 200_525,
2996 SPS67RadarOperatorFunctions = 200_600,
2997 SPS55RadarOperatorFunctions = 200_601,
2998 SPQ9ARadarOperatorFunctions = 200_602,
2999 SPS49RadarOperatorFunctions = 200_603,
3000 MK23RadarOperatorFunctions = 200_604,
3001 SPS48RadarOperatorFunctions = 200_605,
3002 SPS40RadarOperatorFunctions = 200_606,
3003 MK95RadarOperatorFunctions = 200_607,
3004 KillNoKill = 200_608,
3005 CMTpc = 200_609,
3006 CMC4AirGlobalData = 200_610,
3007 CMC4GlobalData = 200_611,
3008 LINKSIMCOMMENTPDU = 200_612,
3009 NSSTOwnshipControl = 200_613,
3010 Other = 240_000,
3011 MassOfTheVehicle = 240_001,
3012 ForceID3 = 240_002,
3013 EntityTypeKind = 240_003,
3014 EntityTypeDomain = 240_004,
3015 EntityTypeCountry = 240_005,
3016 EntityTypeCategory = 240_006,
3017 EntityTypeSubCategory = 240_007,
3018 EntityTypeSpecific = 240_008,
3019 EntityTypeExtra = 240_009,
3020 AlternativeEntityTypeKind = 240_010,
3021 AlternativeEntityTypeDomain = 240_011,
3022 AlternativeEntityTypeCountry = 240_012,
3023 AlternativeEntityTypeCategory = 240_013,
3024 AlternativeEntityTypeSubCategory = 240_014,
3025 AlternativeEntityTypeSpecific = 240_015,
3026 AlternativeEntityTypeExtra = 240_016,
3027 EntityLocationX = 240_017,
3028 EntityLocationY = 240_018,
3029 EntityLocationZ = 240_019,
3030 EntityLinearVelocityX = 240_020,
3031 EntityLinearVelocityY = 240_021,
3032 EntityLinearVelocityZ = 240_022,
3033 EntityOrientationPsi = 240_023,
3034 EntityOrientationTheta = 240_024,
3035 EntityOrientationPhi = 240_025,
3036 DeadReckoningAlgorithm2 = 240_026,
3037 DeadReckoningLinearAccelerationX = 240_027,
3038 DeadReckoningLinearAccelerationY = 240_028,
3039 DeadReckoningLinearAccelerationZ = 240_029,
3040 DeadReckoningAngularVelocityX = 240_030,
3041 DeadReckoningAngularVelocityY = 240_031,
3042 DeadReckoningAngularVelocityZ = 240_032,
3043 EntityAppearance = 240_033,
3044 EntityMarkingCharacterSet = 240_034,
3045 EntityMarking11Bytes = 240_035,
3046 Capability = 240_036,
3047 NumberArticulationParameters = 240_037,
3048 ArticulationParameterID = 240_038,
3049 ArticulationParameterType2 = 240_039,
3050 ArticulationParameterValue2 = 240_040,
3051 TypeOfStores = 240_041,
3052 QuantityOfStores = 240_042,
3053 FuelQuantity = 240_043,
3054 RadarSystemStatus = 240_044,
3055 RadioCommunicationSystemStatus = 240_045,
3056 DefaultTimeForRadioTransmissionForStationaryTransmitters = 240_046,
3057 DefaultTimeForRadioTransmissionForMovingTransmitters = 240_047,
3058 BodyPartDamagedRatio = 240_048,
3059 NameOfTheTerrainDatabaseFile = 240_049,
3060 NameOfLocalFile = 240_050,
3061 AimpointBearing = 240_051,
3062 AimpointElevation = 240_052,
3063 AimpointRange = 240_053,
3064 AirSpeed = 240_054,
3065 Altitude = 240_055,
3066 ApplicationStatus = 240_056,
3067 AutoIff = 240_057,
3068 BeaconDelay = 240_058,
3069 BingoFuelSetting = 240_059,
3070 CloudBottom = 240_060,
3071 CloudTop = 240_061,
3072 Direction = 240_062,
3073 EndAction = 240_063,
3074 Frequency = 240_064,
3075 Freeze = 240_065,
3076 Heading = 240_066,
3077 Identification2 = 240_067,
3078 InitialPointData = 240_068,
3079 Latitude2 = 240_069,
3080 Lights2 = 240_070,
3081 Linear = 240_071,
3082 Longitude2 = 240_072,
3083 LowAltitude = 240_073,
3084 MfdFormats = 240_074,
3085 Nctr = 240_075,
3086 NumberProjectiles = 240_076,
3087 OperationCode = 240_077,
3088 Pitch = 240_078,
3089 Profiles = 240_079,
3090 Quantity3 = 240_080,
3091 RadarModes = 240_081,
3092 RadarSearchVolume = 240_082,
3093 Roll = 240_083,
3094 Rotation = 240_084,
3095 ScaleFactorX = 240_085,
3096 ScaleFactorY = 240_086,
3097 Shields2 = 240_087,
3098 Steerpoint = 240_088,
3099 Spare1 = 240_089,
3100 Spare2 = 240_090,
3101 Team = 240_091,
3102 Text = 240_092,
3103 TimeOfDay = 240_093,
3104 TrailFlag = 240_094,
3105 TrailSize = 240_095,
3106 TypeOfProjectile = 240_096,
3107 TypeOfTarget = 240_097,
3108 TypeOfThreat = 240_098,
3109 UhfFrequency = 240_099,
3110 UtmAltitude = 240_100,
3111 UtmLatitude = 240_101,
3112 UtmLongitude = 240_102,
3113 VhfFrequency = 240_103,
3114 VisibilityRange = 240_104,
3115 VoidAaaHit = 240_105,
3116 VoidCollision = 240_106,
3117 VoidEarthHit = 240_107,
3118 VoidFriendly = 240_108,
3119 VoidGunHit = 240_109,
3120 VoidRocketHit = 240_110,
3121 VoidSamHit = 240_111,
3122 WeaponData = 240_112,
3123 WeaponType = 240_113,
3124 Weather2 = 240_114,
3125 WindDirection2 = 240_115,
3126 WindSpeed = 240_116,
3127 WingStation = 240_117,
3128 Yaw = 240_118,
3129 MemoryOffset = 240_119,
3130 MemoryData = 240_120,
3131 VASI = 240_121,
3132 Beacon = 240_122,
3133 Strobe = 240_123,
3134 Culture = 240_124,
3135 Approach = 240_125,
3136 RunwayEnd = 240_126,
3137 Obstruction = 240_127,
3138 RunwayEdge = 240_128,
3139 RampTaxiway = 240_129,
3140 LaserBombCode = 240_130,
3141 RackType = 240_131,
3142 HUD = 240_132,
3143 RoleFileName = 240_133,
3144 PilotName = 240_134,
3145 PilotDesignation = 240_135,
3146 ModelType = 240_136,
3147 DISType = 240_137,
3148 Class = 240_138,
3149 Channel = 240_139,
3150 EntityType2 = 240_140,
3151 AlternativeEntityType2 = 240_141,
3152 EntityLocation = 240_142,
3153 EntityLinearVelocity = 240_143,
3154 EntityOrientation = 240_144,
3155 DeadReckoning = 240_145,
3156 FailureSymptom = 240_146,
3157 MaxFuel = 240_147,
3158 RefuelingBoomConnect = 240_148,
3159 AltitudeAGL = 240_149,
3160 CalibratedAirspeed = 240_150,
3161 TACANChannel1 = 240_151,
3162 TACANBand1 = 240_152,
3163 TACANMode1 = 240_153,
3164 FuelFlowRate = 270_115,
3165 FuelTemperature = 270_116,
3166 FuelPressure = 270_117,
3167 SKESlot = 270_150,
3168 SKELead = 270_151,
3169 SKEFrequency = 270_152,
3170 FCICmd = 270_153,
3171 FCINum = 270_154,
3172 SKEBitField = 270_155,
3173 FormationPosition = 270_156,
3174 FormationNumber = 270_157,
3175 FFSModeActive = 270_158,
3176 FFSRole = 270_159,
3177 FFSVCAS = 270_160,
3178 FFSBitField = 270_161,
3179 FFSCallSign = 270_162,
3180 FFSGuidanceData = 270_163,
3181 FFSTextData = 270_164,
3182 FFSAirdropRequestData = 270_165,
3183 FFSAirdropData = 270_166,
3184 HorizontalCircularErrorProbable = 300_000,
3185 HorizontalPositionError = 300_001,
3186 VerticalPositionError = 300_002,
3187 HorizontalVelocityError = 300_003,
3188 VerticalVelocityError = 300_004,
3189 _4thLowestJammertoSignalRatioforP1 = 300_005,
3190 _4thLowestJammertoSignalRatioforP2 = 300_006,
3191 GPSFigureofMerit = 300_007,
3192 WeaponTransferGPSState = 300_008,
3193 WeaponTransferHorizontalPositionError = 300_009,
3194 WeaponTransferVerticalPositionError1 = 300_010,
3195 WeaponTransferVerticalPositionError2 = 300_011,
3196 WeaponTransferHorizontalVelocityError = 300_012,
3197 TimeTransferError = 300_013,
3198 AgeofEphemeris = 300_014,
3199 NonFlyoutMunitionEntityRequestDISTypeEnumeration = 300_016,
3200 NonFlyoutMunitionEntityRequestLaunchPointX = 300_017,
3201 NonFlyoutMunitionEntityRequestLaunchPointY = 300_018,
3202 NonFlyoutMunitionEntityRequestLaunchPointZ = 300_019,
3203 NonFlyoutMunitionEntityRequestMaximumAltitude = 300_020,
3204 NonFlyoutMunitionEntityRequestFlightPath = 300_021,
3205 NonFlyoutMunitionEntityRequestImpactPointX = 300_022,
3206 NonFlyoutMunitionEntityRequestImpactPointY = 300_023,
3207 NonFlyoutMunitionEntityRequestImpactPointZ = 300_024,
3208 NonFlyoutMunitionEntityRequestElapsedFlightTime = 300_025,
3209 NonFlyoutMunitionEntityRequestLaunchTime = 300_026,
3210 TimeError = 300_027,
3211 Link16CommandVariety1 = 301_100,
3212 Push = 301_130,
3213 Rolex = 301_140,
3214 TerminateIntercept = 301_150,
3215 HealDamage = 301_151,
3216 Destroy = 301_152,
3217 TransferControlManagement = 301_160,
3218 Link16ControlsPPLIEnable = 301_170,
3219 Link16ControlsCommandControlEnable = 301_171,
3220 Link16ReferencePointMessageInitiation = 301_174,
3221 AssignExternalEntityLink16TrackNumber = 301_175,
3222 Link16IntelligenceInfo = 301_176,
3223 Link16TrackManagement = 301_177,
3224 Link16ControlsCESGlobalPPLIPublish = 301_178,
3225 Link16ControlsCESGlobalSurveillancePublish = 301_179,
3226 RequestGlobalLink16Configuration = 301_180,
3227 Link16ControlsSurveillanceEnable = 301_181,
3228 Link16Pointer = 301_182,
3229 Link16Vector = 301_183,
3230 Link16ControlUnitChange = 301_184,
3231 Link16Text = 301_185,
3232 RequestLink16Objects = 301_186,
3233 Link16RefObjectNameList = 301_187,
3234 TotalNumberofPDUsinLink16RefObjectsResponse = 301_189,
3235 PDUNumberinLink16RefObjectsResponse = 301_190,
3236 TotalNumberofLink16RefObjects = 301_191,
3237 Link16ControlsF2FAEnable = 301_197,
3238 Link16ControlsF2FBEnable = 301_198,
3239 STNofFormationLeader = 301_199,
3240 FormationName = 301_200,
3241 FormationRole = 301_201,
3242 SurveillanceContributorSensorBasedDetection = 301_202,
3243 F2FANPG = 301_220,
3244 Link16ControlsF2FANet = 301_221,
3245 F2FBNPG = 301_222,
3246 Link16ControlsF2FBNet = 301_223,
3247 SurveillanceEnabledNPB = 301_224,
3248 SurveillanceEnabledNet = 301_225,
3249 ControlUnitEnabled = 301_226,
3250 ControlUnitEnabledNPG = 301_227,
3251 ControlUnitEnabledNet = 301_228,
3252 VoiceFrequency = 301_229,
3253 Link16JTIDSVoiceCallsign = 301_234,
3254 EntityIDofControlUnit = 301_237,
3255 STNofControlUnit = 301_238,
3256 NTRParticipationLevel = 301_239,
3257 Link16ControlsCESGlobalPPLISubscribe = 301_240,
3258 Link16ControlsCESGlobalSurveillanceSubscribe = 301_241,
3259 NTRinMission = 301_242,
3260 NTRMarking = 301_243,
3261 NTRReceiptCompliance = 301_244,
3262 FormationF2FNPG = 301_255,
3263 FormationF2FChannel = 301_256,
3264 JLVCLogReport = 400_008,
3265 JLVCSupplyAdjust = 400_009,
3266 JLVCEntityControl = 400_010,
3267 JLVCHealthUpdate = 400_011,
3268 JLVCRepairComplete = 400_012,
3269 JLVCUnitActivation = 400_013,
3270 JLVCBattleDamageRepair = 400_014,
3271 JLVCMinefield = 400_015,
3272 JLVCWire = 400_016,
3273 JLVCAbatis = 400_017,
3274 JLVCCrater = 400_018,
3275 JLVCDitch = 400_019,
3276 JLVCLanes = 400_020,
3277 JLVCIED = 400_021,
3278 JLVCRubble = 400_022,
3279 JLVCSubmergedBarrier = 400_023,
3280 JLVCFloatingBarrier = 400_024,
3281 JLVCFoxhole = 400_025,
3282 JLVCVehicleHole = 400_026,
3283 JLVCVehicleFortification = 400_027,
3284 JLVCSandbag = 400_028,
3285 JLVCCheckpoint = 400_029,
3286 JLVCContamCloud2D = 400_030,
3287 JLVCPopulationEffect = 400_031,
3288 JLVCMine = 400_032,
3289 JLVCSeaMinefield = 400_033,
3290 Munition = 500_001,
3291 EngineFuel = 500_002,
3292 StorageFuel = 500_003,
3293 NotUsed = 500_004,
3294 Expendable = 500_005,
3295 TotalRecordSets = 500_006,
3296 LaunchedMunition = 500_007,
3297 Association = 500_008,
3298 Sensor = 500_009,
3299 MunitionReload = 500_010,
3300 EngineFuelReload = 500_011,
3301 StorageFuelReload = 500_012,
3302 ExpendableReload = 500_013,
3303 IFFChangeControlMode1Code = 500_014,
3304 IFFChangeControlMode2Code = 500_015,
3305 IFFChangeControlMode3Code = 500_016,
3306 IFFChangeControlMode4Code = 500_017,
3307 IFFChangeControlMode5Code = 500_018,
3308 IFFChangeControlMode6Code = 500_019,
3309 Link16Data = 500_021,
3310 ARMAlert = 500_022,
3311 IFFChangeControlModeOnOff = 500_023,
3312 WeaponStatusData = 500_024,
3313 ExpendableStatusData = 500_025,
3314 TacticStatusData = 500_026,
3315 EmitterSensorData = 500_027,
3316 IOSControlData = 500_028,
3317 StaticStatusData = 500_029,
3318 RequestInactiveEntities = 500_200,
3319 InactiveEntityQuantity = 500_201,
3320 InactiveEntityID = 500_202,
3321 InactiveEntityType = 500_203,
3322 ActivationTriggerType = 500_204,
3323 ActivationTriggerValue = 500_205,
3324 AirtoAirMissileQty = 551_001,
3325 AIM7MissileQty = 551_002,
3326 AIM9MissileQty = 551_003,
3327 AIM120MissileQty = 551_004,
3328 AirtoGroundMissileQty = 551_005,
3329 SurfacetoAirMissileQty = 551_006,
3330 BulletQty1 = 551_007,
3331 ChaffQty = 552_001,
3332 FlareQty = 552_002,
3333 FuelLevel = 553_001,
3334 RouteType = 553_002,
3335 ThreatMode = 553_003,
3336 TargetOccluded = 553_004,
3337 TerrainHeight = 553_005,
3338 EntityStatus = 553_006,
3339 MarshalStatus = 553_007,
3340 PowerPlantStatus = 553_008,
3341 NavLightStatus = 553_009,
3342 InteriorLightStatus = 553_010,
3343 LandingLightStatus = 553_011,
3344 FormationLightStatus = 553_012,
3345 AntiCollisionLightStatus = 553_013,
3346 NavFormationFlashRate = 553_014,
3347 AntiColOnDuration = 553_015,
3348 AntiColOffDuration = 553_016,
3349 InterceptStatus = 553_017,
3350 LifeFormSignalingDeviceType = 553_018,
3351 LifeFormMovementType = 553_019,
3352 LifeFormInVehicle = 553_020,
3353 MobilityKill2 = 553_021,
3354 FirepowerKill = 553_022,
3355 TankerEnabledDisabled = 553_028,
3356 ThreatStatusTacticOKtoShootDownWeapons = 553_029,
3357 TACANChannel2 = 554_001,
3358 TACANBand2 = 554_002,
3359 TACANMode2 = 554_003,
3360 RWRStatus = 554_004,
3361 UHFRadioFrequency = 554_005,
3362 EmitJammingStatus = 554_006,
3363 EmitJammingType = 554_007,
3364 ReceiveJammingStatus = 554_008,
3365 RADARMode = 554_009,
3366 AvailableRADARModes = 554_010,
3367 JammerPodEnumeration = 554_100,
3368 JammerPodBehavior = 554_101,
3369 JammerPodPrograms = 554_102,
3370 JammerPodReceiverSensitivity = 554_103,
3371 JammerPodReceiverFrequencyMinimum = 554_104,
3372 JammerPodReceiverFrequencyMaximum = 554_105,
3373 JammerPodPower = 554_106,
3374 JammerPodVariability = 554_107,
3375 JammerPodNumberofFalseTargets = 554_108,
3376 JammerPodJammerKnob = 554_109,
3377 JammerPodMissileJamming = 554_110,
3378 EmitterOverride2 = 555_001,
3379 JammerOverride = 555_002,
3380 DisengageReengage2 = 555_003,
3381 HeadingOverride = 555_004,
3382 AltitudeOverride = 555_005,
3383 SpeedOverride = 555_006,
3384 VerboseOverride = 555_007,
3385 OcclusionOverride = 555_008,
3386 CommitRange = 556_001,
3387 CurrentScenarioIFFMode4ACodeforThisThreatsAffiliation = 556_007,
3388 CurrentScenarioIFFMode4BCodeforThisThreatsAffiliation = 556_008,
3389 OktoEngageWaypointNumber = 556_016,
3390 MaxSpeedatSeaLevel = 556_017,
3391 MaxSpeed = 556_018,
3392 CurrentWaypointNumber = 556_019,
3393 RouteInformation = 556_020,
3394 ThreatStatusStaticMultiTargetTrack = 556_029,
3395 AirAirIRMissileQty = 557_001,
3396 AirAirRadarMissileQty = 557_002,
3397 AirGroundIRMissileQty = 557_003,
3398 AirGroundRadarMissileQty = 557_004,
3399 AirGroundAntiRadiationMissileQty = 557_005,
3400 AirGroundBombQty = 557_006,
3401 AirGroundRocketQty = 557_007,
3402 SurfaceAirIRMissileQty = 557_008,
3403 SurfaceAirRadarMissileQty = 557_009,
3404 BulletQty2 = 557_010,
3405 PPLIPublishEnabled = 559_001,
3406 SurveillancePublishEnabled = 559_002,
3407 NPG = 559_003,
3408 NPGChannel = 559_004,
3409 JTIDSTrackNumber = 559_005,
3410 Link16ControlsSurveillanceReportable = 559_006,
3411 Link16ControlsSurveillanceTrackQuality = 559_007,
3412 Link16ControlsTargetPositionQuality = 559_008,
3413 Link16ControlsQualityErrorType = 559_009,
3414 Link16ControlsAffiliationDeterminationRule = 559_010,
3415 Link16ControlsResetEntityAffiliation = 559_011,
3416 Link16ControlsResetAllAffiliation = 559_012,
3417 EndofMessages = 559_999,
3418 MalfunctionActivateDeactivateSet = 600_001,
3419 MalfunctionStatus = 600_002,
3420 RequestJTIDSTrackNumbers = 600_210,
3421 TrackNumbersvsEID = 600_212,
3422 TotalNumberofJTIDSTrackNumbers = 600_214,
3423 PDUNumberinJTIDSTrackNumberResponse = 600_215,
3424 TotalNumberofPDUsinJTIDSTrackNumberResponse = 600_216,
3425 AirtoAirRefuelerEntitiesRequest = 600_218,
3426 AirtoAirRefuelingCount = 600_219,
3427 AirToAirRefuelerEntity = 600_220,
3428 FormationLibraryRequest = 600_300,
3429 TotalNumberFormationLibraryPDUs1 = 600_301,
3430 PDUNumberinFormationLibraryResponse1 = 600_302,
3431 TotalNumberFormationLibraryItemsinPDU = 600_303,
3432 FormationLibraryVariable = 600_304,
3433 CreateRuntimeFormation = 600_305,
3434 FormationRequestHeader = 600_306,
3435 FormationPositionAbsolute = 600_307,
3436 FormationPositionRelative = 600_308,
3437 ExpendablesReload = 610_006,
3438 PositionFreeze = 610_007,
3439 ActivateOwnship = 610_008,
3440 Chocks = 610_009,
3441 WarmupCooldownOverride = 610_010,
3442 GroundPower = 610_011,
3443 ScrambleStart = 610_012,
3444 OwnshipasaThreat = 610_013,
3445 FuelExternal = 610_015,
3446 FuelInternal = 610_016,
3447 FuelTankTemp = 610_017,
3448 GrossWeight = 610_025,
3449 AngleOfAttack = 610_026,
3450 GLoad = 610_027,
3451 WeightOnWheels = 610_029,
3452 StoredEnergySystemReload = 610_032,
3453 KillOverride = 610_035,
3454 ExpendablesFreeze = 610_036,
3455 GPSSatellitesEnableDisable = 610_037,
3456 OwnshipMessageDisplay = 610_040,
3457 WeaponQuantityFreeze = 610_042,
3458 GlobalControlFreezeWeaponsQuantityOnAllOwnships = 610_043,
3459 GlobalControlFreezeFuelQuantityOnAllOwnships = 610_044,
3460 GlobalControlFreezeKillOverrideOnAllOwnships = 610_045,
3461 GlobalControlFreezeCrashOverrideOnAllOwnships = 610_046,
3462 OwnshipOFPBlockNumber = 610_047,
3463 WaypointInformationQuery = 610_048,
3464 WaypointInformation = 610_049,
3465 OwnshipSubsystemStatusData = 610_050,
3466 CockpitSwitchStatus = 613_002,
3467 IntegratedControlPanelMessages = 613_003,
3468 ThrottlePositions = 613_004,
3469 CurrentCriticalSwitchPosition = 613_005,
3470 CorrectCriticalSwitchPosition = 613_006,
3471 CurrentCriticalSwitchData = 613_007,
3472 CorrectCriticalSwitchData = 613_008,
3473 MissionInitialConditionsSet = 613_013,
3474 GlobalControlMalfunctionActiveonAllOwnships = 613_016,
3475 GlobalControlMalfunctionClearOnAllOwnships = 613_017,
3476 ValidatedCriticalSwitchReport = 613_020,
3477 SARMapPathname = 613_021,
3478 ValidatedCriticalSwitchOwnshipID = 613_022,
3479 LowerBoomEventReport = 613_027,
3480 RaiseBoomEventReport = 613_028,
3481 BreakawayEventReport = 613_029,
3482 CompleteEventReport = 613_030,
3483 AuxCommPanelFrequencyDisplay = 613_031,
3484 NetworkStationInformation = 615_000,
3485 GlobalControlSelectNetworkStation = 615_001,
3486 NetworkStationUnderGlobalControl = 615_002,
3487 GlobalControlStillControlling = 615_003,
3488 GlobalControlReleaseControlofNetworkStation = 615_004,
3489 GlobalControlFreezeWeaponQuantity = 615_005,
3490 GlobalControlFreezeFuelQuantity = 615_006,
3491 GlobalControlFreezeKillOverride = 615_007,
3492 GlobalControlFreezeCrashOverride = 615_008,
3493 GlobalControlMalfunctionActive = 615_009,
3494 GlobalControlMalfunctionClear = 615_010,
3495 GlobalControlStartDevices = 615_011,
3496 GlobalControlFreezeDevices = 615_012,
3497 GlobalControlJTIDSCommand = 615_013,
3498 NetworkStationICSetInformation = 615_015,
3499 GlobalControlResetICSet = 615_017,
3500 NumberofControllingUnits = 615_018,
3501 NetworkStationJTIDSControllingUnits = 615_019,
3502 NetworkStationJTIDSObjectiveTracks = 615_020,
3503 NumberofReferenceObjects = 615_021,
3504 NetworkStationJTIDSReferenceObjects = 615_022,
3505 NetworkedStationStillUnderControl = 615_023,
3506 GlobalControlDeleteThreatEntities = 615_024,
3507 NetworkStationOwnshipCallsigns = 615_025,
3508 GlobalControlRequestFormationLibraryData = 615_026,
3509 TotalNumberFormationLibraryPDUs2 = 615_027,
3510 PDUNumberinFormationLibraryResponse2 = 615_028,
3511 TotalNumberFormationLibraryItemsinPDUs = 615_029,
3512 NetworkStationFormationLibraryItem = 615_030,
3513 GlobalControlAddRelativeFormation = 615_031,
3514 NetworkStationTICFilename = 615_032,
3515 GlobalControlFreezeWarmupOverride = 615_033,
3516 GlobalControlReloadSES = 615_034,
3517 GlobalControlReloadWeapons = 615_035,
3518 GlobalControlReloadExpendables = 615_036,
3519 GlobalControlReloadFuel = 615_037,
3520 GlobalControlReloadFirebottle = 615_038,
3521 TestPattern = 700_000,
3522 AudioTest = 700_001,
3523 AudioTone = 700_002,
3524 CalibrateThrottles = 700_003,
3525 OperationalLimitsEventReport = 700_004,
3526 OperationalLimits = 700_005,
3527 EventMarkerMessage = 1_000_620,
3528 ReceiverAircraftAeroModelData = 2_000_000,
3529 TankerAircraftAeroModelData = 2_000_010,
3530 BoomAircraftAeroModelData = 2_000_020,
3531 AccesstoImageGeneratorData1 = 2_000_030,
3532 AccesstoImageGeneratorData2 = 2_000_031,
3533 AccesstoImageGeneratorData3 = 2_000_032,
3534 AccesstoImageGeneratorData4 = 2_000_033,
3535 AccesstoImageGeneratorData5 = 2_000_034,
3536 AccesstoImageGeneratorData6 = 2_000_035,
3537 AccesstoImageGeneratorData7 = 2_000_036,
3538 AccesstoImageGeneratorData8 = 2_000_037,
3539 AccesstoImageGeneratorData9 = 2_000_038,
3540 AccesstoImageGeneratorData10 = 2_000_039,
3541 AccesstoImageGeneratorData11 = 2_000_040,
3542 AccesstoImageGeneratorData12 = 2_000_041,
3543 AccesstoImageGeneratorData13 = 2_000_042,
3544 AccesstoImageGeneratorData14 = 2_000_043,
3545 AccesstoImageGeneratorData15 = 2_000_044,
3546 AccesstoImageGeneratorData16 = 2_000_045,
3547 HostLoadNumber = 2_000_050,
3548 ExtendedFireEventReports = 5_005_001,
3549 BattleDamageAssessmentEventReport = 5_005_002,
3550 ExtendedFireEventLauncher = 5_005_003,
3551 ExtendedFireEventMissile = 5_005_006,
3552 ExtendedFireEventMRMWeapon = 5_005_008,
3553 ExtendedFireEventGunFireControl = 5_005_009,
3554 ExtendedFireEventBomb = 5_005_010,
3555 ExtendedFireEventExpendable = 5_005_011,
3556 BattleDamageAssessment = 5_005_012,
3557 ExtendedFirePickleEvent = 5_005_014,
3558 RadarTrackReport = 5_005_055,
3559 JammerReport = 5_005_060,
3560 JammerFalseTargetsReport = 5_005_061,
3561 DetectEventReport = 5_005_063,
3562 MALDBeamReport = 5_005_070,
3563 TransmitterRadiationVolume = 5_005_080,
3564 TransmitterRadiationVolumev2 = 5_005_081,
3565 PhysicalNetworkDefinition = 5_007_010,
3566 NetworkChannelDefinition = 5_007_020,
3567 LogicalNetworkDefinition = 5_007_030,
3568 LogicalNetworkEntityDefinition = 5_007_040,
3569 PhysicalNetworkEntityDefinition = 5_007_050,
3570 C2Message = 5_008_010,
3571 CandidateObject = 5_008_020,
3572 SetofCandidateObjects = 5_008_030,
3573 BoundedRegion = 5_008_040,
3574 AngularRegion = 5_008_050,
3575 RoEObject = 5_008_060,
3576 TrackObject = 5_008_070,
3577 SetOfTrackObjects = 5_008_080,
3578 LogicalEntityDefinition = 5_009_010,
3579 LogicalEntityRelationshipDefinition = 5_009_020,
3580 IntentBasedEWMessage = 5_507_010,
3581}
3582
3583impl VariableRecordTypes {
3584 #[must_use]
3585 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3586 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
3587 }
3588}
3589
3590impl FieldSerialize for VariableRecordTypes {
3591 fn serialize_field(&self, buf: &mut BytesMut) {
3592 buf.put_u32(*self as u32);
3593 }
3594}
3595
3596impl FieldDeserialize for VariableRecordTypes {
3597 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3598 Self::deserialize(buf)
3599 }
3600}
3601
3602impl FieldLen for VariableRecordTypes {
3603 fn field_len(&self) -> usize {
3604 4
3605 }
3606}
3607
3608#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3610pub enum Reason {
3611 #[default]
3612 Other = 0,
3613 Recess = 1,
3614 Termination = 2,
3615 SystemFailure = 3,
3616 SecurityViolation = 4,
3617 EntityReconstitution = 5,
3618 StopForReset = 6,
3619 StopForRestart = 7,
3620 AbortTrainingReturnToTacticalOperations = 8,
3621}
3622
3623impl Reason {
3624 #[must_use]
3625 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3626 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
3627 }
3628}
3629
3630impl FieldSerialize for Reason {
3631 fn serialize_field(&self, buf: &mut BytesMut) {
3632 buf.put_u8(*self as u8);
3633 }
3634}
3635
3636impl FieldDeserialize for Reason {
3637 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3638 Self::deserialize(buf)
3639 }
3640}
3641
3642impl FieldLen for Reason {
3643 fn field_len(&self) -> usize {
3644 1
3645 }
3646}
3647
3648bitflags! {
3650 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
3651 pub struct FrozenBehavior: u8 {
3652 const RunSimulationClock = 1 << 0;
3653 const TransmitUpdates = 1 << 1;
3654 const ProcessUpdates = 1 << 2;
3655 }
3656}
3657
3658impl Default for FrozenBehavior {
3659 fn default() -> Self {
3660 Self::empty()
3661 }
3662}
3663
3664impl FrozenBehavior {
3665 #[must_use]
3666 pub const fn as_u8(&self) -> u8 {
3667 self.bits()
3668 }
3669
3670 #[must_use]
3671 pub const fn from_u8(bits: u8) -> Option<Self> {
3672 Self::from_bits(bits)
3673 }
3674}
3675
3676impl FieldSerialize for FrozenBehavior {
3677 fn serialize_field(&self, buf: &mut BytesMut) {
3678 buf.put_u8(self.as_u8());
3679 }
3680}
3681
3682impl FieldDeserialize for FrozenBehavior {
3683 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3684 let bits = buf.get_u8();
3685 Self::from_u8(bits).unwrap_or_default()
3686 }
3687}
3688
3689impl FieldLen for FrozenBehavior {
3690 fn field_len(&self) -> usize {
3691 1
3692 }
3693}
3694
3695#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3697pub enum AcknowledgeFlag {
3698 #[default]
3699 CreateEntity = 1,
3700 RemoveEntity = 2,
3701 StartResume = 3,
3702 StopFreeze = 4,
3703 TransferOwnership = 5,
3704}
3705
3706impl AcknowledgeFlag {
3707 #[must_use]
3708 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3709 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
3710 }
3711}
3712
3713impl FieldSerialize for AcknowledgeFlag {
3714 fn serialize_field(&self, buf: &mut BytesMut) {
3715 buf.put_u16(*self as u16);
3716 }
3717}
3718
3719impl FieldDeserialize for AcknowledgeFlag {
3720 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3721 Self::deserialize(buf)
3722 }
3723}
3724
3725impl FieldLen for AcknowledgeFlag {
3726 fn field_len(&self) -> usize {
3727 2
3728 }
3729}
3730
3731#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3733pub enum AcknowledgeResponseFlag {
3734 #[default]
3735 Other = 0,
3736 AbleToComply = 1,
3737 UnableToComply = 2,
3738 PendingOperatorAction = 3,
3739}
3740
3741impl AcknowledgeResponseFlag {
3742 #[must_use]
3743 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3744 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
3745 }
3746}
3747
3748impl FieldSerialize for AcknowledgeResponseFlag {
3749 fn serialize_field(&self, buf: &mut BytesMut) {
3750 buf.put_u16(*self as u16);
3751 }
3752}
3753
3754impl FieldDeserialize for AcknowledgeResponseFlag {
3755 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3756 Self::deserialize(buf)
3757 }
3758}
3759
3760impl FieldLen for AcknowledgeResponseFlag {
3761 fn field_len(&self) -> usize {
3762 2
3763 }
3764}
3765
3766#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3768pub enum ActionRequestActionID {
3769 #[default]
3770 Other = 0,
3771 Localstorageoftherequestedinformation = 1,
3772 InformSMofeventranoutofammunition = 2,
3773 InformSMofeventkilledinaction = 3,
3774 InformSMofeventdamage = 4,
3775 InformSMofeventmobilitydisabled = 5,
3776 InformSMofeventfiredisabled = 6,
3777 InformSMofeventranoutoffuel = 7,
3778 Recallcheckpointdata = 8,
3779 Recallinitialparameters = 9,
3780 Initiatetetherlead = 10,
3781 Initiatetetherfollow = 11,
3782 Unthether = 12,
3783 Initiateservicestationresupply = 13,
3784 Initiatetailgateresupply = 14,
3785 Initiatehitchlead = 15,
3786 Initiatehitchfollow = 16,
3787 Unhitch = 17,
3788 Mount = 18,
3789 Dismount = 19,
3790 StartDRC = 20,
3791 StopDRC = 21,
3792 DataQuery = 22,
3793 StatusRequest = 23,
3794 SendObjectStateData = 24,
3795 Reconstitute = 25,
3796 LockSiteConfiguration = 26,
3797 UnlockSiteConfiguration = 27,
3798 UpdateSiteConfiguration = 28,
3799 QuerySiteConfiguration = 29,
3800 TetheringInformation = 30,
3801 MountIntent = 31,
3802 AcceptSubscription = 33,
3803 Unsubscribe = 34,
3804 Teleportentity = 35,
3805 Changeaggregatestate = 36,
3806 RequestStartPDU = 37,
3807 Wakeupgetreadyforinitialization = 38,
3808 Initializeinternalparameters = 39,
3809 Sendplandata = 40,
3810 Synchronizeinternalclocks = 41,
3811 Run = 42,
3812 Saveinternalparameters = 43,
3813 Simulatemalfunction = 44,
3814 Joinexercise = 45,
3815 Resignexercise = 46,
3816 Timeadvance = 47,
3817 TACCSFLOSRequestType1 = 100,
3818 TACCSFLOSRequestType2 = 101,
3819 AirmountMountRequest = 4303,
3820 AirmountDismountRequest = 4304,
3821 AirmountInformationRequest = 4305,
3822}
3823
3824impl ActionRequestActionID {
3825 #[must_use]
3826 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3827 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
3828 }
3829}
3830
3831#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3833pub enum ActionResponseRequestStatus {
3834 #[default]
3835 Other = 0,
3836 Pending = 1,
3837 Executing = 2,
3838 PartiallyComplete = 3,
3839 Complete = 4,
3840 RequestRejected = 5,
3841 RetransmitRequestNow = 6,
3842 RetransmitRequestLater = 7,
3843 InvalidTimeParameters = 8,
3844 SimulationTimeExceeded = 9,
3845 RequestDone = 10,
3846 TACCSFLOSReplyTypeOne = 100,
3847 TACCSFLOSReplyTypeTwo = 101,
3848 JoinExerciseRequestRejected = 201,
3849}
3850
3851impl ActionResponseRequestStatus {
3852 #[must_use]
3853 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3854 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
3855 }
3856}
3857
3858impl FieldSerialize for ActionResponseRequestStatus {
3859 fn serialize_field(&self, buf: &mut BytesMut) {
3860 buf.put_u32(*self as u32);
3861 }
3862}
3863
3864impl FieldDeserialize for ActionResponseRequestStatus {
3865 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3866 Self::deserialize(buf)
3867 }
3868}
3869
3870impl FieldLen for ActionResponseRequestStatus {
3871 fn field_len(&self) -> usize {
3872 4
3873 }
3874}
3875
3876#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3878pub enum EventType {
3879 #[default]
3880 Other = 0,
3881 RanOutOfAmmunition = 2,
3882 KilledInAction = 3,
3883 Damage = 4,
3884 MobilityDisabled = 5,
3885 FireDisabled = 6,
3886 RanOutOfFuel = 7,
3887 EntityInitialization = 8,
3888 RequestForIndirectFireOrCASMission = 9,
3889 IndirectFireOrCASFire = 10,
3890 MinefieldEntry = 11,
3891 MinefieldDetonation = 12,
3892 VehicleMasterPowerOn = 13,
3893 VehicleMasterPowerOff = 14,
3894 AggregateStateChangeRequested = 15,
3895 PreventCollisionDetonation = 16,
3896 OwnershipReport = 17,
3897 RadarPerception = 18,
3898 Detect = 19,
3899}
3900
3901impl EventType {
3902 #[must_use]
3903 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3904 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
3905 }
3906}
3907
3908impl FieldSerialize for EventType {
3909 fn serialize_field(&self, buf: &mut BytesMut) {
3910 buf.put_u32(*self as u32);
3911 }
3912}
3913
3914impl FieldDeserialize for EventType {
3915 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3916 Self::deserialize(buf)
3917 }
3918}
3919
3920impl FieldLen for EventType {
3921 fn field_len(&self) -> usize {
3922 4
3923 }
3924}
3925
3926#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3928pub enum RequiredReliabilityService {
3929 #[default]
3930 Acknowledged = 0,
3931 Unacknowledged = 1,
3932}
3933
3934impl RequiredReliabilityService {
3935 #[must_use]
3936 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
3937 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
3938 }
3939}
3940
3941impl FieldSerialize for RequiredReliabilityService {
3942 fn serialize_field(&self, buf: &mut BytesMut) {
3943 buf.put_u8(*self as u8);
3944 }
3945}
3946
3947impl FieldDeserialize for RequiredReliabilityService {
3948 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
3949 Self::deserialize(buf)
3950 }
3951}
3952
3953impl FieldLen for RequiredReliabilityService {
3954 fn field_len(&self) -> usize {
3955 1
3956 }
3957}
3958
3959#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
3961#[allow(deprecated, non_camel_case_types)]
3962pub enum EmitterName {
3963 #[default]
3964 _12456X = 2,
3965 _1L117 = 3,
3966 _1L121E = 4,
3967 _1L250 = 5,
3968 _1L220U = 6,
3969 _1L1221E = 7,
3970 _1RL257 = 9,
3971 _1RL138 = 10,
3972 _1RL257Jammer = 11,
3973 _5N20 = 12,
3974 _5H62B = 13,
3975 _5P10 = 14,
3976 _5P10E = 15,
3977 _5P1001 = 16,
3978 _5P1001E = 17,
3979 _5P1002 = 18,
3980 _5P1002E = 19,
3981 _5P1003 = 20,
3982 _5P1003E = 21,
3983 _5P10EMOD = 22,
3984 _621A3 = 25,
3985 _860F1AL101 = 40,
3986 _9B1103M2 = 42,
3987 _1226DECCAMIL = 45,
3988 _9B1348 = 46,
3989 _3KM6 = 47,
3990 _9KR400 = 48,
3991 _50N6A = 49,
3992 _55G61 = 50,
3993 _59N6 = 55,
3994 _5N69 = 57,
3995 _67N6 = 60,
3996 _76T6 = 63,
3997 _77T6ABM = 64,
3998 _80K6 = 65,
3999 _91N6A = 66,
4000 _96L6E = 70,
4001 _96L6TsP = 75,
4002 _9C18M3 = 76,
4003 _9C36M = 77,
4004 _9GR400 = 80,
4005 _9GR400A = 81,
4006 _9GR600 = 90,
4007 _9GR606 = 91,
4008 _9LV100 = 125,
4009 _9LV200TA = 135,
4010 _9LV200TV = 180,
4011 _9LV200TT = 181,
4012 _9LV200MKIII = 183,
4013 _9LV326 = 185,
4014 _9M96E2Seeker = 190,
4015 _9S15M2 = 195,
4016 _9S19M2 = 196,
4017 _9S19ME = 197,
4018 _9S32M = 198,
4019 _9S32ME = 199,
4020 _9S36E = 200,
4021 _9S112 = 215,
4022 A310Z = 225,
4023 A325A = 270,
4024 A346Z = 315,
4025 A353B = 360,
4026 A372A = 405,
4027 A372B = 450,
4028 A372C = 495,
4029 A377A = 540,
4030 A377B = 585,
4031 A380Z = 630,
4032 A381Z = 675,
4033 A398Z = 720,
4034 A403Z = 765,
4035 A409A = 810,
4036 A418A = 855,
4037 A419Z = 900,
4038 A429Z = 945,
4039 A432Z = 990,
4040 A434Z = 1035,
4041 AA6CAcrid = 1070,
4042 AA7CApex = 1073,
4043 A401A = 1080,
4044 AA10A = 1081,
4045 AA10CAlamoC = 1082,
4046 AA13ArrowSeeker = 1085,
4047 AAM4BMH = 1090,
4048 AA300 = 1094,
4049 AA12Seeker = 1095,
4050 AD4A = 1096,
4051 ADES = 1097,
4052 ADS4LRSR = 1098,
4053 ACR430 = 1099,
4054 Agave = 1100,
4055 ACSOPRIE = 1101,
4056 ABD2000 = 1102,
4057 ADACMK1 = 1110,
4058 ADACMK2 = 1111,
4059 ADAR = 1113,
4060 ADOUR = 1115,
4061 AGAT9B1348 = 1117,
4062 AdrosKT01AV = 1118,
4063 Agat9E420 = 1120,
4064 AGM158JASSMSAR = 1122,
4065 AGM88HARMMMW = 1123,
4066 AGRION15 = 1125,
4067 AHV7 = 1130,
4068 AHV17 = 1150,
4069 AIMK23 = 1170,
4070 AIDAII = 1215,
4071 AIM120A = 1216,
4072 AIM7MSparrow = 1218,
4073 _1L271 = 1230,
4074 ALA51 = 1240,
4075 AlbatrosMK2 = 1260,
4076 ALT50 = 1263,
4077 ALTAIR = 1264,
4078 AMAPS717 = 1265,
4079 AMES13MK1 = 1268,
4080 WGU16B = 1270,
4081 _1L133BoxSpring = 1280,
4082 _1L133BoxSpringB = 1282,
4083 AMDR3D = 1288,
4084 ANASPS502 = 1305,
4085 Anemone = 1306,
4086 ANRITSUElectricAR30A = 1350,
4087 AntilopeV = 1395,
4088 ANAAQ24 = 1397,
4089 ANADM160 = 1398,
4090 AN_ALE50 = 1400,
4091 AN_ALQ76 = 1410,
4092 AN_ALQ99 = 1440,
4093 AN_ALQ99Band4 = 1441,
4094 AN_ALQ99LBT = 1442,
4095 AN_ALQ100 = 1485,
4096 AN_ALQ101 = 1530,
4097 AN_ALQ119 = 1575,
4098 AN_ALQ122 = 1585,
4099 AN_ALQ126A = 1620,
4100 AN_ALQ128 = 1621,
4101 AN_ALQ126B = 1622,
4102 AN_ALQ131 = 1626,
4103 AN_ALQ131BlkII = 1627,
4104 AN_ALQ135CD = 1628,
4105 AN_ALQ144A3 = 1630,
4106 AN_ALQ153 = 1632,
4107 AN_ALQ157Jammer = 1633,
4108 AN_ALQ155 = 1634,
4109 AN_ALQ156 = 1635,
4110 AN_ALQ161A = 1636,
4111 AN_ALQ161 = 1637,
4112 AN_ALQ162 = 1638,
4113 AN_ALQ164 = 1639,
4114 AN_ALQ165 = 1640,
4115 AN_ALQ187Jammer = 1641,
4116 AN_ALQ167 = 1642,
4117 AN_ALQ1721 = 1643,
4118 AN_ALQ1722 = 1644,
4119 AN_ALQ1723 = 1645,
4120 AN_ALQ176 = 1646,
4121 AN_ALQ178 = 1647,
4122 AN_ALQ184 = 1648,
4123 AN_ALQ1849 = 1649,
4124 AN_ALQ188 = 1650,
4125 AN_ALQ214 = 1651,
4126 AN_ALR56 = 1652,
4127 AN_ALQ221 = 1653,
4128 AN_ALR69 = 1654,
4129 AN_ALQ211 = 1655,
4130 AN_ALT16A = 1656,
4131 AN_ALQ173 = 1657,
4132 AN_ALT28 = 1658,
4133 AN_ALR66BJammer = 1659,
4134 AN_ALT32A = 1660,
4135 AN_ALQ196 = 1661,
4136 ALQ249NextGenerationJammer = 1662,
4137 AN_ALQ2401Jammer = 1663,
4138 AN_ALR66BJammer2 = 1664,
4139 AN_APD10 = 1665,
4140 AN_ALQ213 = 1670,
4141 ALQ214A45Jammer = 1672,
4142 AN_ALQ218 = 1680,
4143 ANAPG50 = 1700,
4144 ANAPG53 = 1710,
4145 ANAPG59 = 1755,
4146 ANAPG63 = 1800,
4147 ANAPG631 = 1805,
4148 ANAPG632 = 1807,
4149 ANAPG633 = 1809,
4150 ANAPG65 = 1845,
4151 ANAPG66 = 1870,
4152 ANAPG66V = 1871,
4153 ANAPG66V2 = 1872,
4154 ANAPG67 = 1880,
4155 ANAPG68 = 1890,
4156 ANAPG689 = 1895,
4157 ANAPG70 = 1935,
4158 ANAPG71 = 1940,
4159 ANAPG73 = 1945,
4160 ANAPG77 = 1960,
4161 ANAPG78 = 1970,
4162 ANAPG79 = 1971,
4163 ANAPG80 = 1972,
4164 ANAPG81 = 1974,
4165 ANAPG821 = 1975,
4166 ANAPG83 = 1976,
4167 ANAPG502 = 1980,
4168 ANAPN1 = 2025,
4169 ANAPN22 = 2070,
4170 ANAPN59 = 2115,
4171 ANAPN69 = 2160,
4172 ANAPN81 = 2205,
4173 ANAPN102 = 2220,
4174 ANAPN117 = 2250,
4175 ANAPN118 = 2295,
4176 ANAPN122 = 2320,
4177 ANAPN130 = 2340,
4178 ANAPN131 = 2385,
4179 ANAPN133 = 2430,
4180 ANAPN134 = 2475,
4181 ANAPN141 = 2476,
4182 ANAPN147 = 2520,
4183 ANAPN150 = 2565,
4184 ANAPN153 = 2610,
4185 ANAPN154 = 2655,
4186 ANAPN155 = 2700,
4187 ANAPN159 = 2745,
4188 ANAPN177 = 2746,
4189 ANAPN179 = 2747,
4190 ANAPN169 = 2748,
4191 ANAPN182 = 2790,
4192 ANAPN187 = 2835,
4193 ANAPN190 = 2880,
4194 ANAPN194 = 2925,
4195 ANAPN195 = 2970,
4196 ANAPN198 = 3015,
4197 ANAPN200 = 3060,
4198 ANAPN202 = 3105,
4199 ANAPN215 = 3106,
4200 ANAPN209 = 3120,
4201 ANAPN209D = 3121,
4202 ANAPN209A = 3122,
4203 ANAPN215_2 = 3148,
4204 ANAPN217 = 3150,
4205 ANAPN218 = 3152,
4206 ANAPN224 = 3153,
4207 ANAPN227 = 3154,
4208 ANAPN230 = 3155,
4209 ANAPN232 = 3156,
4210 ANAPN237A = 3157,
4211 ANAPN234 = 3158,
4212 ANAPN235 = 3159,
4213 ANAPN238 = 3160,
4214 ANAPN222 = 3161,
4215 ANAPN239 = 3162,
4216 ANAPN241 = 3164,
4217 ANAPN242 = 3166,
4218 ANAPN243 = 3170,
4219 ANAPN506 = 3195,
4220 ANAPQ72 = 3240,
4221 ANAPQ99 = 3285,
4222 ANAPQ100 = 3330,
4223 ANAPQ102 = 3375,
4224 ANAPQ107 = 3376,
4225 ANAPQ109 = 3420,
4226 ANAPQ113 = 3465,
4227 ANAPQ120 = 3510,
4228 ANAPQ122 = 3512,
4229 ANAPQ126 = 3555,
4230 ANAPQ128 = 3600,
4231 ANAPQ129 = 3645,
4232 ANAPQ148 = 3690,
4233 ANAPQ150A = 3700,
4234 ANAPQ153 = 3735,
4235 ANAPQ155 = 3770,
4236 ANAPQ159 = 3780,
4237 ANAPQ164 = 3785,
4238 ANAPQ166 = 3788,
4239 ANAPQ170 = 3790,
4240 ANAPQ174 = 3791,
4241 ANAPQ180 = 3794,
4242 ANAPQ181 = 3795,
4243 ANAPQ186 = 3800,
4244 ANAPS15J = 3810,
4245 ANAPS162 = 3813,
4246 ANAPS31 = 3820,
4247 ANAPS42 = 3825,
4248 ANAPS80 = 3870,
4249 ANAPS88 = 3915,
4250 ANAPS88A = 3916,
4251 ANAPS94 = 3920,
4252 ANAPS96 = 3922,
4253 ANAPS113 = 3958,
4254 ANAPS115 = 3960,
4255 ANAPS116 = 4005,
4256 ANAPS120 = 4050,
4257 ANAPS121 = 4095,
4258 ANAPS124 = 4140,
4259 ANAPS125 = 4185,
4260 ANAPS127 = 4190,
4261 ANAPS128 = 4230,
4262 ANAPS130 = 4275,
4263 ANAPS133 = 4320,
4264 ANAPS134 = 4365,
4265 ANAPS137 = 4410,
4266 ANAPS1375 = 4413,
4267 ANAPS137B = 4415,
4268 ANAPS137B5 = 4420,
4269 ANAPS137D5Elta = 4425,
4270 ANAPS138 = 4455,
4271 ANAPS139 = 4460,
4272 ANAPS143 = 4464,
4273 ANAPS1431 = 4465,
4274 ANAPS143B = 4466,
4275 ANAPS1433 = 4467,
4276 ANAPS143B3 = 4468,
4277 ANAPS153 = 4475,
4278 ANAPS154 = 4476,
4279 ANAPS150 = 4480,
4280 ANAPS145 = 4482,
4281 ANAPS147 = 4485,
4282 ANAPS149 = 4486,
4283 ANAPS503 = 4489,
4284 ANAPS504 = 4490,
4285 ANAPS705 = 4491,
4286 ANAPW22 = 4500,
4287 ANAPW23 = 4545,
4288 ANAPX6 = 4590,
4289 ANAPX7 = 4635,
4290 ANAPX39 = 4680,
4291 ANAPX64 = 4681,
4292 ANAPX72 = 4725,
4293 ANAPX76 = 4770,
4294 ANAPX78 = 4815,
4295 ANAPX100 = 4816,
4296 ANAPX101 = 4860,
4297 ANAPX113AIFF = 4870,
4298 ANAPY1 = 4900,
4299 ANAPY2 = 4905,
4300 ANAPY3 = 4950,
4301 ANAPY7 = 4952,
4302 ANAPY8 = 4953,
4303 ANAPY9 = 4954,
4304 ANAPY10 = 4955,
4305 ANARN21 = 4995,
4306 ANARN52 = 5040,
4307 ANARN84 = 5085,
4308 ANARN118 = 5130,
4309 ANARN153V = 5131,
4310 ANARN153 = 5165,
4311 ANARW73 = 5175,
4312 ANASB1 = 5220,
4313 ANASG21 = 5265,
4314 ANASN137 = 5266,
4315 ANASN128 = 5270,
4316 ANASQ108 = 5280,
4317 ANASQ239 = 5285,
4318 ANAST502 = 5290,
4319 ANAVQ55 = 5300,
4320 ANAWG9 = 5310,
4321 ANBRN1 = 5320,
4322 ANBPS5 = 5325,
4323 ANBPS9 = 5355,
4324 ANBPS15 = 5400,
4325 ANBPS15H = 5401,
4326 ANBPS15J = 5402,
4327 ANBPS16 = 5405,
4328 ANBPS162 = 5406,
4329 ANCPN4 = 5410,
4330 ANCPN18 = 5415,
4331 ANCRM30 = 5420,
4332 ANDPW23 = 5430,
4333 ANDSQ26PhoenixMH = 5445,
4334 ANDSQ28HarpoonMH = 5490,
4335 ANFPN1 = 5491,
4336 ANFPN28 = 5493,
4337 ANFPN33 = 5494,
4338 ANFPN40 = 5495,
4339 ANFPN62 = 5500,
4340 ANFPN66 = 5502,
4341 ANFPS8 = 5503,
4342 ANFPN67 = 5504,
4343 ANFPS16 = 5505,
4344 ANFPS5 = 5506,
4345 ANFPS18 = 5507,
4346 ANFPS89 = 5508,
4347 ANFPS49 = 5509,
4348 ANFPS117 = 5510,
4349 ANFPS85 = 5511,
4350 ANFPS88 = 5512,
4351 ANFPS113 = 5513,
4352 ANFPS115 = 5514,
4353 ANFPS20R = 5515,
4354 ANFPS132 = 5516,
4355 ANFPS77 = 5520,
4356 ANFPS41 = 5521,
4357 ANFPS100A = 5522,
4358 ANFPS103 = 5525,
4359 ANFPS108 = 5526,
4360 ANGPN12 = 5527,
4361 ANFPS124 = 5528,
4362 ANFPS129 = 5529,
4363 ANGPX6 = 5530,
4364 ANGPX8 = 5535,
4365 ANGRN12 = 5537,
4366 ANMPN14K = 5538,
4367 ANMPN14 = 5539,
4368 ANMPQ10 = 5540,
4369 ANMPN17 = 5541,
4370 ANMPQ3339465761ILL = 5545,
4371 ANMPQ34485562TA = 5550,
4372 ANMPQ49 = 5551,
4373 ANMPQ3550TA = 5555,
4374 ANMPQ50C = 5556,
4375 ANMPQ3751TT = 5560,
4376 ANMPQ43 = 5565,
4377 ANMPQ50 = 5567,
4378 ANMPQ53 = 5570,
4379 ANMPQ63 = 5571,
4380 ANMPQ64 = 5575,
4381 ANSLQ32 = 5576,
4382 ANMPQ65 = 5577,
4383 ANSLQ324 = 5578,
4384 ANSLQ32A = 5579,
4385 ANSPG34 = 5580,
4386 ANMSQ104 = 5582,
4387 ANMPS36 = 5583,
4388 ANSLQ503 = 5584,
4389 ANSPG48MK25MOD3 = 5620,
4390 ANSPG50 = 5625,
4391 ANSPG51 = 5670,
4392 ANPPQ2 = 5690,
4393 ANPPS15 = 5700,
4394 ANPPS5 = 5705,
4395 ANPPS5D = 5710,
4396 ANSPG51CWITI = 5715,
4397 ANSPG51FC = 5760,
4398 ANSPG51CD = 5761,
4399 ANSPG52 = 5805,
4400 ANSPG53 = 5850,
4401 ANSPG55B = 5895,
4402 ANSPG60 = 5940,
4403 ANSPG62 = 5985,
4404 ANSPG503 = 5995,
4405 ANSPN4 = 6015,
4406 ANSPN11 = 6025,
4407 ANSPN35 = 6030,
4408 ANSPN41 = 6050,
4409 ANSPN43 = 6075,
4410 ANSPN43A = 6076,
4411 ANSPN43C = 6078,
4412 ANSPN46 = 6085,
4413 ANSPQ2 = 6120,
4414 ANSPQ5A = 6155,
4415 ANSPQ9A = 6165,
4416 ANSPQ9B = 6166,
4417 ANSPQ34 = 6190,
4418 ANSPS4 = 6210,
4419 ANSPS5 = 6255,
4420 ANSPS5C = 6300,
4421 ANSPS6 = 6345,
4422 ANSPS10 = 6390,
4423 ANSPS21 = 6435,
4424 ANSPS28 = 6480,
4425 ANSPS37 = 6525,
4426 ANSPS39A = 6570,
4427 ANSPS40 = 6615,
4428 ANSPS41 = 6660,
4429 ANSPS48 = 6705,
4430 ANSPS48C = 6750,
4431 ANSPS48E = 6752,
4432 ANSPS49 = 6795,
4433 ANSPS491 = 6796,
4434 ANSPS492 = 6797,
4435 ANSPS493 = 6798,
4436 ANSPS494 = 6799,
4437 ANSPS495 = 6800,
4438 ANSPS496 = 6801,
4439 ANSPS497 = 6802,
4440 ANSPS498 = 6803,
4441 ANSPS49A1 = 6804,
4442 ANSPS52 = 6840,
4443 ANSPS53 = 6885,
4444 ANSPS55 = 6930,
4445 ANSPS52C = 6945,
4446 ANSPS55CS = 6970,
4447 ANSPS55SS = 6975,
4448 ANSPS58 = 7020,
4449 ANSPS58C = 7025,
4450 ANSPS59 = 7065,
4451 ANSPS64 = 7110,
4452 ANSPS649 = 7119,
4453 SPS6412 = 7120,
4454 ANSPS65 = 7155,
4455 ANSPS66 = 7175,
4456 ANSPS67 = 7200,
4457 ANSPS73_1 = 7201,
4458 ANSPS69 = 7210,
4459 ANSPS73_2 = 7215,
4460 ANSPS74 = 7216,
4461 ANSPS88 = 7225,
4462 ANSPS501 = 7226,
4463 ANSPS505 = 7230,
4464 ANSPY1 = 7245,
4465 ANSPY1A = 7250,
4466 ANSPY1B_1 = 7252,
4467 ANSPY1B_2 = 7253,
4468 ANSPY1D_1 = 7260,
4469 ANSPY1D_2 = 7261,
4470 ANSPY1F = 7265,
4471 ANSPY3 = 7266,
4472 ANTPN12 = 7267,
4473 ANSPY4 = 7268,
4474 ANTLQ32ARMDecoy = 7269,
4475 ANTPN17 = 7270,
4476 ANTPN8 = 7271,
4477 ANTPN22 = 7272,
4478 ANTLQ17A = 7273,
4479 ANTMS1 = 7274,
4480 ANTPN24 = 7275,
4481 ANTPN25 = 7276,
4482 ANTMS2 = 7277,
4483 ANTPN19 = 7278,
4484 ANTPN31 = 7279,
4485 ANTPQ18 = 7280,
4486 ANSPY6 = 7281,
4487 ANTPQ36 = 7295,
4488 ANTPQ37 = 7300,
4489 ANTPQ38 = 7301,
4490 ANTPQ39 = 7302,
4491 ANTPQ47 = 7303,
4492 ANTPS43 = 7305,
4493 ANTPS43E = 7310,
4494 ANTPQ48 = 7311,
4495 ANTPQ49 = 7312,
4496 ANTPQ46A = 7313,
4497 ANTPS34 = 7314,
4498 ANTPS59 = 7315,
4499 ANTPS44 = 7316,
4500 ANTPQ50 = 7317,
4501 ANTPS63 = 7320,
4502 ANTPS65 = 7321,
4503 ANTPS701 = 7322,
4504 ANTPS63SS = 7323,
4505 ANTPS73 = 7324,
4506 ANTPS75 = 7325,
4507 ANTPS77 = 7326,
4508 ANTPS78 = 7327,
4509 ANTPS79 = 7328,
4510 ANTPS703 = 7329,
4511 ANTPX467 = 7330,
4512 ANTPS80 = 7331,
4513 ANTPY2 = 7333,
4514 ANTSQ288 = 7334,
4515 ANULQ6A = 7335,
4516 ANULQ19 = 7340,
4517 ANULQ21 = 7345,
4518 ANUPN25 = 7380,
4519 ANUPS1 = 7425,
4520 ANUPS2 = 7426,
4521 ANUPS3 = 7427,
4522 ANUPX1 = 7470,
4523 ANUPX5 = 7515,
4524 ANUPX11 = 7560,
4525 ANUPX12 = 7605,
4526 ANUPX17 = 7650,
4527 ANUPX23 = 7695,
4528 ANUSQ1133 = 7700,
4529 ANVPS2 = 7740,
4530 ANPLM3 = 7750,
4531 ANPLM3A = 7751,
4532 ANPLM4 = 7752,
4533 ANZPY1 = 7753,
4534 ANZPY2MPRTIP = 7754,
4535 ANZPY3 = 7755,
4536 ANZPY8 = 7760,
4537 AORL1AS = 7761,
4538 AORL85KTKMTA = 7762,
4539 APAR = 7765,
4540 Aparna = 7770,
4541 APECSII = 7780,
4542 ApelcoAD77 = 7785,
4543 APG71 = 7830,
4544 APN148 = 7875,
4545 APN227 = 7920,
4546 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
4547 APQ113 = 7965,
4548 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
4549 APQ120 = 8010,
4550 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
4551 APQ148 = 8055,
4552 APS504V3 = 8100,
4553 AQUITAINEII = 8102,
4554 AR1 = 8103,
4555 AR3D = 8105,
4556 PlesseyAR5 = 8112,
4557 AR15 = 8113,
4558 AR152 = 8114,
4559 AR320 = 8115,
4560 AR325 = 8118,
4561 AR327 = 8120,
4562 Arbalet52 = 8121,
4563 ARBB31 = 8122,
4564 ARBB33 = 8123,
4565 ARIES = 8126,
4566 AriesNav = 8127,
4567 AriesCS = 8128,
4568 ARGS14E = 8134,
4569 ARGS31 = 8135,
4570 ARGUS = 8140,
4571 ARM31 = 8145,
4572 ARECIBO = 8150,
4573 ARED = 8160,
4574 ARI5954 = 8190,
4575 ARI5955 = 8235,
4576 ARI5979 = 8280,
4577 ARGSN31 = 8281,
4578 ARGOS10 = 8282,
4579 ARGOS800 = 8283,
4580 ARI5983 = 8284,
4581 ARI5991 = 8285,
4582 ARI5995 = 8290,
4583 ARINC564BNDXKINGRDR1E = 8325,
4584 ARINC700BNDXKINGRDR1E = 8370,
4585 ARK1 = 8375,
4586 ARLMMTI = 8378,
4587 ARMOR = 8379,
4588 ARSR3 = 8380,
4589 ARS400 = 8381,
4590 ARSR1 = 8382,
4591 ARSR4 = 8384,
4592 ARSR18 = 8390,
4593 ARTHUR = 8395,
4594 ARTHURMODB = 8400,
4595 ARTHURMODC = 8405,
4596 ARTISAN3D = 8410,
4597 AS2Kipper = 8415,
4598 AS2KipperMH = 8460,
4599 AS3YJ83KmmWMH = 8470,
4600 AS_34KormoranSeeker = 8480,
4601 AS4Kitchen = 8505,
4602 AS4KitchenMH = 8550,
4603 AS5KeltMH = 8595,
4604 AS6KingfishMH = 8640,
4605 AS7Kerry = 8685,
4606 AS7KerryMG = 8730,
4607 AS15KENTaltimeter = 8735,
4608 AS17AKryptonSeeker = 8736,
4609 AS17BKryptonSeeker = 8737,
4610 AS901 = 8750,
4611 AS901A = 8751,
4612 ASARS2 = 8755,
4613 ASDEKDD = 8756,
4614 ASLESHA = 8757,
4615 ASMGCS = 8758,
4616 ASMI18X = 8759,
4617 AspideAAMSAMILL = 8760,
4618 ASMI3 = 8761,
4619 AselsanMAR = 8762,
4620 ASR2000 = 8771,
4621 ASR4 = 8772,
4622 ASR4D = 8773,
4623 ASRO = 8775,
4624 ASR12_1 = 8776,
4625 ASR22AL = 8778,
4626 ASR3 = 8779,
4627 ASR5 = 8780,
4628 ASR7 = 8782,
4629 ASR8 = 8785,
4630 ASR9 = 8790,
4631 ASR9000 = 8791,
4632 ASTI = 8792,
4633 ASR11DASR = 8793,
4634 ASR12_2 = 8795,
4635 RaytheonASR10SS = 8812,
4636 ASR23SS = 8816,
4637 Arabel = 8818,
4638 ASTRE = 8819,
4639 AT2SwatterMG = 8820,
4640 _9K114ShturmMG = 8824,
4641 ASTOR = 8825,
4642 ASTRARCI = 8826,
4643 ATCR22 = 8830,
4644 ATCR22M = 8831,
4645 ATCR2T = 8832,
4646 ATCR33 = 8840,
4647 ATCR33KM = 8845,
4648 ATCR33S = 8846,
4649 ATCR3T = 8847,
4650 ATCR44 = 8848,
4651 ATCR44K = 8849,
4652 Argos73 = 8850,
4653 ATCR44MS = 8851,
4654 ATCR4T = 8852,
4655 AtlasElektronkTRSN = 8865,
4656 ATLAS8600X = 8866,
4657 Atlas9600M = 8867,
4658 ATLAS9600X = 8868,
4659 ATLAS9600S = 8869,
4660 ATLAS9740VTS = 8870,
4661 ATLASS = 8871,
4662 ATR500C = 8880,
4663 AVG65 = 8910,
4664 AVH7 = 8955,
4665 AVIACM = 8980,
4666 AVIAD = 8985,
4667 Aviaconversia = 8990,
4668 AviaconversiaII = 8993,
4669 AviaconversiaIII = 8995,
4670 AVQ20 = 9000,
4671 AVQ21 = 9005,
4672 AVQ30X = 9045,
4673 AVQ50 = 9075,
4674 AVQ70 = 9090,
4675 AWS5 = 9135,
4676 AWS6 = 9180,
4677 AWS6B300 = 9185,
4678 B597Z = 9200,
4679 B636Z = 9205,
4680 BackBoard = 9215,
4681 BackNetAB = 9225,
4682 BackTrap = 9270,
4683 BAESystemsRT1805APN = 9280,
4684 BAESDASS2000Jammer = 9281,
4685 BalanceBeam = 9285,
4686 BALTIKAB = 9300,
4687 BALTYK = 9310,
4688 BallEnd = 9315,
4689 BallGun = 9360,
4690 BALLPOINT = 9370,
4691 BandStand = 9405,
4692 BandStand3 = 9406,
4693 P3537 = 9450,
4694 BARAX = 9475,
4695 BASIR110D = 9485,
4696 BassTilt = 9495,
4697 Badger = 9505,
4698 BarracudaJammer = 9510,
4699 BaykalCountermeasuresSuite = 9530,
4700 Beacon = 9540,
4701 BeanSticks = 9585,
4702 BeeHind = 9630,
4703 BellNipJammer = 9638,
4704 BellPushJammer = 9639,
4705 BellCrownA = 9640,
4706 BellCrownB = 9642,
4707 BellSquat = 9643,
4708 BIGBACK = 9645,
4709 BigBirdABC = 9659,
4710 BigBirdD = 9660,
4711 BigBirdDMod = 9661,
4712 BigBirdE91N6E = 9662,
4713 BigBulge = 9675,
4714 BigBulgeA = 9720,
4715 BigBulgeB = 9765,
4716 BIGEYE = 9775,
4717 SNAR10 = 9780,
4718 BIGHEADB = 9781,
4719 BigMesh = 9810,
4720 BigNet = 9855,
4721 _9S15MT = 9885,
4722 BillFold = 9900,
4723 BLIGHTER400 = 9903,
4724 BlowpipeMG = 9905,
4725 BLR = 9920,
4726 BlueFox = 9930,
4727 BlueKestrel = 9933,
4728 BlueVixen = 9935,
4729 BlueSilk = 9945,
4730 BlueParrot = 9990,
4731 BlueOrchid = 10035,
4732 BMDJG8715 = 10057,
4733 BoatSail = 10080,
4734 BORA550 = 10090,
4735 BoforsElectronic9LV331 = 10125,
4736 BoforsEricssonSeaGiraffe50HC = 10170,
4737 BowlMesh = 10215,
4738 BoxBrick = 10260,
4739 BoxTrail = 10305,
4740 BMKG300GJammingPod = 10308,
4741 BMKG600JammingPod = 10310,
4742 BMKG800JammingPod = 10312,
4743 BMKG860186058606 = 10315,
4744 BPS11A = 10350,
4745 BPS14 = 10395,
4746 BPS15A = 10440,
4747 BR3440CAX57 = 10450,
4748 BR15TokyoKEIKI = 10485,
4749 BrahMos = 10500,
4750 BridgeMaster = 10510,
4751 BridgeMasterEEPA = 10511,
4752 BridgeMasterEATAandARPA = 10512,
4753 BridgeMasterEnaval = 10513,
4754 BrimstonemmWMH = 10520,
4755 BreadBin = 10530,
4756 Asr = 10540,
4757 BT271 = 10575,
4758 BU304 = 10595,
4759 BX732 = 10620,
4760 BUKMB = 10630,
4761 BuranD = 10642,
4762 BUREVISNYK1 = 10650,
4763 BuzzStand = 10665,
4764 C5AMultiModeRadar = 10710,
4765 C802AL = 10711,
4766 CAESAR = 10740,
4767 Caiman = 10755,
4768 CakeStand = 10800,
4769 CalypsoC61 = 10845,
4770 CalypsoC63 = 10846,
4771 CalypsoIi = 10890,
4772 CalypsoIII = 10891,
4773 CalypsoIV = 10892,
4774 CardionCoastal = 10895,
4775 CastorIi = 10935,
4776 Castor2JTT = 10940,
4777 CatHouse = 10980,
4778 CDR431 = 10985,
4779 CEAFAR = 10987,
4780 CEAMOUNT = 10988,
4781 CEAFAR2L = 10989,
4782 CEROS200 = 10990,
4783 CEROS200CWI = 10991,
4784 CEATAC = 10992,
4785 CEAOPS = 10993,
4786 CerberusIII = 10994,
4787 CHSSN6 = 10995,
4788 CerberusIV = 10996,
4789 ChairBlackTT = 11000,
4790 ChairBlackILL = 11010,
4791 LEMZ96L6 = 11020,
4792 CheeseBrick = 11025,
4793 CheeseCake = 11030,
4794 LeninetzObzorMS = 11070,
4795 Clamshell = 11115,
4796 CLC1 = 11117,
4797 CLC2 = 11118,
4798 CLC3 = 11119,
4799 CLR155 = 11120,
4800 COASTWATCHER100 = 11123,
4801 CoastalGiraffe = 11125,
4802 COBRA = 11130,
4803 CobraShoe = 11133,
4804 Colibri = 11137,
4805 CollinsWXR300 = 11155,
4806 CollinsWXR700X = 11160,
4807 CollinsTWR850 = 11165,
4808 CollinsDN101 = 11205,
4809 COMET1 = 11230,
4810 CONDORMK2 = 11235,
4811 ConsiliumSelesmarRTM25XIM = 11240,
4812 ContravesSeaHunterMK4 = 11250,
4813 CornCan = 11260,
4814 COSMOSKYMED1 = 11265,
4815 CR105RMCA = 11270,
4816 CREWDuke2 = 11280,
4817 CREWDuke3 = 11290,
4818 CrossBird = 11295,
4819 CrossDome = 11340,
4820 CrossLegs = 11385,
4821 CrossOut = 11430,
4822 CrossSlot = 11475,
4823 CrossSword = 11520,
4824 CrossUp = 11565,
4825 CrossSwordFC = 11610,
4826 CrotaleAcquisitionTA = 11655,
4827 CrotaleNGTA = 11660,
4828 CrotaleTT = 11665,
4829 CrotaleMGMissileSystem = 11700,
4830 CS10TA = 11715,
4831 CSFVaran = 11725,
4832 CSSN4MH = 11735,
4833 CSSC3CCAS1M1M2MH = 11745,
4834 HY2BMH = 11748,
4835 CSSC2BHY1AMH = 11790,
4836 CSSN4Sardine = 11800,
4837 CSSN8Saccade = 11810,
4838 CurlStoneB = 11825,
4839 CWS1 = 11830,
4840 CWS2 = 11835,
4841 CWS3 = 11840,
4842 Cygnus = 11860,
4843 CylinderHead = 11880,
4844 Cymbeline = 11902,
4845 CyranoII = 11925,
4846 CyranoIV = 11970,
4847 CyranoIVM = 11975,
4848 DA0100 = 12010,
4849 DA0500 = 12015,
4850 DA052 = 12016,
4851 DA_08 = 12018,
4852 Dawn = 12060,
4853 DCR = 12090,
4854 DeadDuck = 12105,
4855 DECCA20V909 = 12110,
4856 DECCA20V90S = 12111,
4857 DECCA45 = 12150,
4858 DECCA50 = 12195,
4859 DECCA71 = 12196,
4860 Decca72 = 12197,
4861 DECCA110 = 12240,
4862 DECCA170 = 12285,
4863 DECCAHF2 = 12292,
4864 DECCA202 = 12330,
4865 DECCAD202 = 12375,
4866 DECCA303 = 12420,
4867 DECCA535 = 12430,
4868 DECCA626 = 12465,
4869 DECCA629 = 12510,
4870 DECCA914 = 12555,
4871 DECCA916 = 12600,
4872 DECCA926 = 12610,
4873 DECCA1070A = 12615,
4874 Decca1008 = 12616,
4875 DECCA1226Commercial = 12645,
4876 DECCA1290 = 12655,
4877 DECCA1626 = 12690,
4878 DECCA2070 = 12691,
4879 Decca1630 = 12694,
4880 DECCA2459 = 12735,
4881 DECCAAWS1 = 12780,
4882 DECCAAWS2 = 12782,
4883 DECCAAWS4 = 12785,
4884 DECCAAWS42 = 12787,
4885 DECCAMAR = 12800,
4886 DECCARM326 = 12805,
4887 DECCARM416 = 12825,
4888 DECCARM970BT = 12850,
4889 DECCARM914 = 12870,
4890 DF21DSeeker = 12875,
4891 DECCARM1690 = 12915,
4892 DECCA1690 = 12916,
4893 DECCASuper101MK3 = 12960,
4894 DISS1 = 13005,
4895 DISS7 = 13006,
4896 DISS013 = 13007,
4897 DISS15D = 13015,
4898 DLD100A = 13020,
4899 RapierTTDN181 = 13050,
4900 Rapier2000TT = 13055,
4901 DogEar = 13095,
4902 DogHouse = 13140,
4903 DM3 = 13141,
4904 DM3B = 13142,
4905 DM5 = 13143,
4906 Don2 = 13185,
4907 DonAB2Kay = 13230,
4908 Donets = 13275,
4909 Doppler90Series = 13280,
4910 DownBeat = 13320,
4911 DR582 = 13360,
4912 DRAA2A = 13365,
4913 DRAA2B = 13410,
4914 DRAA9A = 13415,
4915 DRAA11A = 13420,
4916 DRAC37B = 13450,
4917 DRAC38 = 13452,
4918 DRAC39 = 13455,
4919 DRAC39A = 13456,
4920 DRAC43A = 13460,
4921 DRAC44A = 13465,
4922 DragonEye = 13477,
4923 DragonEye2 = 13480,
4924 DragonEye3 = 13481,
4925 DragonEye4 = 13485,
4926 DRBC30B = 13500,
4927 DRBC31A = 13545,
4928 DRBC31D = 13546,
4929 DRBC32 = 13585,
4930 DRBC32A = 13590,
4931 DRBC32D = 13635,
4932 DRBC33A = 13680,
4933 DRBI10 = 13725,
4934 DRBI23 = 13770,
4935 DRBJ11B = 13815,
4936 DRBN30 = 13860,
4937 DRBN32 = 13905,
4938 DRBN34 = 13915,
4939 DRBR51 = 13950,
4940 DRBV20A = 13994,
4941 DRBV20B = 13995,
4942 DRBV21Mars05 = 14020,
4943 DRBV22 = 14040,
4944 DRBV23 = 14041,
4945 DRBV26C = 14085,
4946 DRBV26D = 14086,
4947 DRBV30 = 14130,
4948 DRBV31 = 14131,
4949 DRBV50 = 14175,
4950 DRBV51 = 14220,
4951 DRBV51A = 14265,
4952 DRBV51B = 14310,
4953 DRBV51C = 14355,
4954 DropKick = 14400,
4955 DRUA31 = 14445,
4956 DrumTilt = 14490,
4957 DrumTiltA = 14535,
4958 DrumTiltB = 14545,
4959 DRUN30A = 14560,
4960 Dumbo = 14580,
4961 DWSR92 = 14583,
4962 DWSR93S = 14585,
4963 EAGLE = 14586,
4964 EAGLEMk1 = 14587,
4965 EAJPJammingPod = 14588,
4966 EKCOE390 = 14590,
4967 ECR90 = 14600,
4968 ECR90Jammer = 14601,
4969 EggCupAB = 14625,
4970 EISCAT = 14640,
4971 EKCOE120 = 14660,
4972 EKCO190 = 14670,
4973 Ekran1 = 14677,
4974 ELL8222 = 14710,
4975 ELL8240 = 14713,
4976 ELM2001B = 14715,
4977 ELM2022 = 14725,
4978 ELM2032 = 14726,
4979 ELM2052 = 14727,
4980 ELM2055 = 14728,
4981 ELM2060 = 14730,
4982 ELM2075 = 14735,
4983 ELM2022U3 = 14736,
4984 ELM2080 = 14737,
4985 ELM2080S = 14738,
4986 ELM2085 = 14739,
4987 ELM2106 = 14740,
4988 ELM2106NG = 14741,
4989 ELM2125 = 14742,
4990 ELM2129 = 14743,
4991 ELM2150 = 14744,
4992 ELM2083 = 14745,
4993 ELM2084 = 14746,
4994 ELM2160V1 = 14747,
4995 ELM2084MMR = 14748,
4996 ELM2112 = 14749,
4997 ELM2200 = 14750,
4998 ELM2133 = 14751,
4999 ELM2205 = 14755,
5000 ELM2207 = 14760,
5001 ELM2215 = 14765,
5002 ELM2216V = 14770,
5003 ELM2216XH = 14772,
5004 ELM2218S = 14775,
5005 ELT361 = 14776,
5006 ELM2258 = 14777,
5007 ELT553 = 14779,
5008 ELT558 = 14780,
5009 ELT572 = 14785,
5010 ELT715 = 14790,
5011 EltaELM2022A = 14800,
5012 ELTAELM2221GMSTGR = 14805,
5013 ELM2228S3D = 14806,
5014 ELM2705 = 14807,
5015 ELM2226 = 14808,
5016 ELM2228X = 14809,
5017 ELTASIS = 14810,
5018 ELM2238 = 14811,
5019 ELM2248 = 14815,
5020 ELM2288 = 14820,
5021 ELM2311 = 14821,
5022 ELM2026 = 14822,
5023 ELNA4007 = 14830,
5024 ELT318 = 14831,
5025 ELW2085 = 14832,
5026 ELT521 = 14833,
5027 ELW2090 = 14835,
5028 EnhancedMeteorDetectionRadarEMDR = 14845,
5029 EMD2900 = 14850,
5030 EMPAR = 14851,
5031 EndTray = 14895,
5032 EQ36 = 14896,
5033 EricssonSLAR = 14897,
5034 Erieye = 14898,
5035 ESR1 = 14900,
5036 ESR220 = 14901,
5037 ESR380 = 14902,
5038 ESTEREL = 14903,
5039 ET316 = 14905,
5040 ExocetType = 14935,
5041 ExocetAL = 14936,
5042 Exocet1 = 14940,
5043 Exocet1MH = 14985,
5044 Exocet2 = 15030,
5045 EyeBowl = 15075,
5046 EyeShield = 15120,
5047 F332Z = 15140,
5048 FalconClawTI = 15155,
5049 FalconClawTT = 15156,
5050 FALCON = 15160,
5051 FALCONG = 15161,
5052 FalconEye = 15163,
5053 FanSongA = 15165,
5054 FanSongBFTA = 15200,
5055 FanSongBFTT = 15210,
5056 FanSongCETA = 15220,
5057 FanSongCETT = 15230,
5058 FanSongCEMG = 15240,
5059 FanSongBFFMG = 15255,
5060 FanTail = 15300,
5061 FAR2117 = 15301,
5062 FAR2827 = 15302,
5063 FAR2837S = 15303,
5064 FAR3000 = 15304,
5065 FB7Radar = 15305,
5066 FCR1401 = 15310,
5067 FCS212E = 15312,
5068 FCS212G = 15313,
5069 FCS221A = 15315,
5070 FCS221C = 15317,
5071 FCS222 = 15318,
5072 FCS231 = 15319,
5073 FCS3 = 15320,
5074 FinCurve = 15345,
5075 FireCan = 15390,
5076 FireDish = 15435,
5077 FireDomeTA = 15470,
5078 FireDomeTT = 15475,
5079 FireDomeTI = 15480,
5080 FireIron = 15525,
5081 FireWheel = 15570,
5082 FishBowl = 15615,
5083 FK3 = 15620,
5084 FLAIR = 15650,
5085 FlapLid = 15660,
5086 _30N6E = 15661,
5087 FlapTruck = 15705,
5088 FlapWheel = 15750,
5089 FlashDance = 15795,
5090 FlashDanceM = 15800,
5091 P15 = 15840,
5092 _35N6 = 15842,
5093 FlatScreen = 15885,
5094 FlatSpin = 15930,
5095 FlatTrackJammer = 15970,
5096 FlatTwin = 15975,
5097 FL400 = 15980,
5098 FL1800 = 15985,
5099 FL1800U = 15990,
5100 FL1800S = 16000,
5101 Fledermaus = 16020,
5102 FLYCATCHER = 16030,
5103 FLYCATCHERMK2 = 16035,
5104 FlyScreen = 16065,
5105 FlyScreenAB = 16110,
5106 FlyTrapB = 16155,
5107 FM90 = 16160,
5108 FogLampMG = 16200,
5109 FogLampTT = 16245,
5110 FoilTwo = 16290,
5111 FootBall = 16300,
5112 FoxHunter = 16335,
5113 FoxFireAL = 16380,
5114 FoxFireILL = 16390,
5115 FR151A = 16400,
5116 FurunoFR1500FR1600 = 16405,
5117 FR1505DA = 16410,
5118 FR1510DS = 16412,
5119 FR2000 = 16420,
5120 Furuno2855W = 16421,
5121 FregatMAE = 16422,
5122 FregatN1 = 16423,
5123 FregatN2 = 16424,
5124 FrontDome = 16425,
5125 FregatMAE5 = 16426,
5126 FrontDoor = 16470,
5127 FrontPiece = 16515,
5128 FurbymmWMH = 16520,
5129 Furke = 16550,
5130 Furke2 = 16552,
5131 Furke4 = 16554,
5132 Furuno = 16560,
5133 Furuno1721 = 16561,
5134 Furuno1934C = 16564,
5135 Furuno1715 = 16565,
5136 Furuno1730 = 16580,
5137 Furuno1731Mark3 = 16581,
5138 Furuno1832 = 16585,
5139 Furuno1835 = 16587,
5140 Furuno1932 = 16590,
5141 Furuno1935 = 16596,
5142 Furuno701 = 16605,
5143 Furuno1940 = 16606,
5144 Furuno7112 = 16650,
5145 FurunoFR2130S = 16652,
5146 FurunoFAR2137S = 16654,
5147 FurunoFAR28X7 = 16655,
5148 FurunoFAR3230S = 16658,
5149 FR2110 = 16660,
5150 FR2115 = 16662,
5151 FR8062 = 16663,
5152 Furuno2125 = 16670,
5153 Furuno240 = 16690,
5154 Furuno2400 = 16695,
5155 FR801D = 16725,
5156 Furuno8051 = 16730,
5157 FurunoDRS2D = 16732,
5158 FurunoDRS4D = 16733,
5159 FurunoDRS4A = 16734,
5160 G030A = 16735,
5161 FurunoDRS6AXClass = 16736,
5162 DRS4W = 16737,
5163 GA0100 = 16740,
5164 Gabbiano = 16750,
5165 Gage = 16785,
5166 Gaofen3 = 16787,
5167 GAOFEN12 = 16789,
5168 GAPGATE = 16790,
5169 Gardenia = 16800,
5170 GarminGMR1224 = 16815,
5171 GarminFantom24 = 16820,
5172 GarminGWX68WeatherRadar = 16825,
5173 Garpin = 16830,
5174 GateGuard = 16833,
5175 GarpunBalE = 16835,
5176 GBS1 = 16840,
5177 GCA2000 = 16850,
5178 Furuno18321921Series = 16858,
5179 GEMINIDB = 16870,
5180 GEMOlympus = 16871,
5181 GEMSentinel = 16872,
5182 GEMBX132 = 16875,
5183 GEMSC2050X = 16876,
5184 GEMSeaEagle200N = 16877,
5185 GenericInternalJammer = 16879,
5186 MPDR12 = 16880,
5187 GENX = 16881,
5188 GepardTT = 16884,
5189 GERANF = 16888,
5190 GERFAUT = 16890,
5191 GFE1 = 16895,
5192 GIRAFFE = 16900,
5193 GIRAFFE1X = 16903,
5194 Giraffe40 = 16905,
5195 Giraffe50AT = 16908,
5196 Giraffe75 = 16912,
5197 GinSlingTA = 16915,
5198 GinSling = 16920,
5199 GinSlingMG = 16925,
5200 GoalKeeper = 16930,
5201 GoldenDome = 16935,
5202 GoldenHeart = 16940,
5203 GoldenRock = 16942,
5204 GPN22 = 16945,
5205 GPSJ10 = 16946,
5206 GPSJ25 = 16947,
5207 GPSJ40 = 16948,
5208 GPSJ50 = 16949,
5209 GRN9 = 16950,
5210 GRANK = 16951,
5211 GraveStone = 16960,
5212 GRAVES = 16963,
5213 GreenStain = 16965,
5214 GridBow = 17010,
5215 GrifoF = 17016,
5216 _9S32 = 17025,
5217 GRILLSCREEN = 17027,
5218 Grom2 = 17029,
5219 GROUNDMASTER400 = 17030,
5220 GT4 = 17031,
5221 GRS440 = 17032,
5222 GUARDIAN = 17050,
5223 Guardsman = 17055,
5224 RPK2 = 17070,
5225 HRJZ7264AJammer = 17075,
5226 H025 = 17079,
5227 HADR = 17080,
5228 HairNet = 17100,
5229 HalfPlateA = 17145,
5230 HalfPlateB = 17190,
5231 HARD = 17220,
5232 Harpoon = 17225,
5233 HatBox = 17230,
5234 HawkScreech = 17235,
5235 HayPole = 17250,
5236 HayRick = 17255,
5237 HeadLightA = 17280,
5238 HeadLights = 17325,
5239 HeadLightsC = 17370,
5240 HeadLightsMGA = 17415,
5241 HeadLightsMGB = 17460,
5242 HeadLightsTT = 17505,
5243 HeadNet = 17550,
5244 HeartAcheB = 17572,
5245 HellfiremmWMH = 17590,
5246 HenEgg = 17595,
5247 HenHouse = 17640,
5248 HenNest = 17685,
5249 HenRoost = 17730,
5250 Herakles = 17732,
5251 HF2MG = 17735,
5252 HGR105 = 17745,
5253 HighBrick = 17775,
5254 HighFix = 17820,
5255 HighGuard = 17842,
5256 HighLarkTI = 17865,
5257 HighLark1 = 17910,
5258 HighLark2 = 17955,
5259 HighLark4 = 18000,
5260 HighLune = 18045,
5261 HighPoleAB = 18090,
5262 HighScoop = 18135,
5263 _9S19MT = 18150,
5264 HighSieve = 18180,
5265 HillBlock = 18185,
5266 HimalayasCountermeasuresSuite = 18189,
5267 HG9550 = 18190,
5268 HJ6374 = 18193,
5269 HLDRADAR900 = 18194,
5270 HLJQ520 = 18195,
5271 HN503 = 18200,
5272 HNC03M = 18201,
5273 HomeTalk = 18225,
5274 HornSpoon = 18270,
5275 HotBrick = 18280,
5276 HotFlash = 18315,
5277 HotFlash2 = 18316,
5278 IHS6 = 18318,
5279 IRL144MHotShotTA = 18320,
5280 IRL144MHotShotTT = 18325,
5281 IRL144MHotShotMG = 18330,
5282 HPS106 = 18331,
5283 HPS104 = 18332,
5284 HQ9MH = 18339,
5285 HSR1128 = 18340,
5286 HT233 = 18348,
5287 HQ61 = 18350,
5288 HRJS = 18351,
5289 IDerbyER = 18352,
5290 IBIS80 = 18353,
5291 IBIS150 = 18355,
5292 IBIS200 = 18357,
5293 IFFMKXIIAIMSUPX29 = 18360,
5294 Janet = 18400,
5295 IFFMKXV = 18405,
5296 IFFINT = 18406,
5297 JackKnife = 18407,
5298 IFFTRSP = 18408,
5299 JMUSICElbitSystemsJammer = 18409,
5300 JavelinMG = 18410,
5301 JALQ8 = 18445,
5302 JFPS7 = 18449,
5303 JayBird = 18450,
5304 JFPS3 = 18451,
5305 JH10 = 18452,
5306 JMPQP7 = 18453,
5307 JL7 = 18454,
5308 JL10B = 18455,
5309 JMA1576 = 18456,
5310 JRCJMA92526CA = 18457,
5311 JLP40 = 18458,
5312 JRCJMR9200SeriesX = 18459,
5313 JRCNMD401 = 18460,
5314 JRCJRM310MK2 = 18461,
5315 JMA1596 = 18462,
5316 JMA7000 = 18464,
5317 JRCJMA7700 = 18465,
5318 JMA5320 = 18466,
5319 JRCJMR92106XC = 18467,
5320 JERS1 = 18468,
5321 JINDALEE = 18469,
5322 JRCJMA9900series = 18470,
5323 JLP40D = 18471,
5324 JRCJMA5300series = 18475,
5325 Jupiter = 18495,
5326 JupiterII = 18540,
5327 JY8 = 18550,
5328 JY8A = 18551,
5329 JY9 = 18555,
5330 JY9Modified = 18556,
5331 JY11EW = 18557,
5332 JY14 = 18560,
5333 JY14A = 18561,
5334 JY16 = 18565,
5335 JY24 = 18570,
5336 JAPG1 = 18571,
5337 JAPG2 = 18572,
5338 JY29 = 18575,
5339 JYL1 = 18578,
5340 JYL6 = 18580,
5341 JYL6A = 18582,
5342 JZQF612 = 18583,
5343 K376Z = 18585,
5344 K77M = 18586,
5345 Kaige = 18600,
5346 KALKAN = 18610,
5347 KBPAfganit = 18611,
5348 KALKANII = 18615,
5349 KelvinHughes2A = 18630,
5350 KelvinHughes149 = 18675,
5351 Karpaty = 18700,
5352 Kashtan3JammingSystem = 18710,
5353 KelvinHughestype1006 = 18720,
5354 KelvinHughestype1007 = 18765,
5355 KelvinHughesType1007FBand = 18766,
5356 KelvinHughes2007FBand = 18767,
5357 KelvinHughes2007IBand = 18768,
5358 KHNucleus5000 = 18770,
5359 KHMANTA = 18774,
5360 KHNUCLEUS26000 = 18775,
5361 KHNUCLEUS35000 = 18776,
5362 KHNUCLEUS36000A = 18777,
5363 KHFamily = 18780,
5364 KelvinHughes6000A = 18781,
5365 Kh38MAEMH = 18782,
5366 KG8605A = 18784,
5367 KH902M = 18785,
5368 KHOROMK = 18786,
5369 KHIBINY = 18787,
5370 KG300E = 18789,
5371 KHSharpEye = 18790,
5372 KHSharpEyeB = 18791,
5373 KHSharpEyeC = 18792,
5374 KH1700 = 18795,
5375 KingPin = 18797,
5376 KG300 = 18805,
5377 KiteScreech = 18810,
5378 KiteScreechA = 18855,
5379 KiteScreechB = 18900,
5380 KLC3B = 18930,
5381 KJ500NanjingRadar = 18944,
5382 Kivach = 18945,
5383 KJ500Jammer = 18946,
5384 KLC1 = 18947,
5385 KLJ1 = 18948,
5386 KLJ3 = 18950,
5387 KLJ4 = 18951,
5388 KLJ4B = 18952,
5389 KLJ5 = 18955,
5390 KLJ7 = 18960,
5391 KLJ7B = 18961,
5392 KLJ7A = 18962,
5393 KnifeRest = 18990,
5394 P10 = 19035,
5395 KNIFERESTC = 19037,
5396 KodenMD3730 = 19039,
5397 KJ2000 = 19040,
5398 KODENMDC900 = 19041,
5399 Koopol = 19042,
5400 KOPYOI = 19045,
5401 KR75 = 19050,
5402 KRONOS = 19051,
5403 KREDO1E = 19052,
5404 Krasukha2 = 19053,
5405 KRONOSGRANDNAVAL = 19054,
5406 KRM66E = 19060,
5407 KSASRN = 19080,
5408 KSATSR = 19125,
5409 KS1APHASEDARRAY = 19127,
5410 KS418 = 19129,
5411 KS418E = 19130,
5412 KZ100 = 19131,
5413 KZ900 = 19132,
5414 L175V = 19140,
5415 L3705PresidentSJammer = 19142,
5416 L415 = 19143,
5417 L88 = 19145,
5418 LAADS = 19150,
5419 LandFall = 19170,
5420 LandRollMG = 19215,
5421 LandRollTA = 19260,
5422 LandRollTT = 19305,
5423 LAZUR = 19306,
5424 Model791A = 19307,
5425 LAP3000 = 19309,
5426 LC150 = 19310,
5427 LEER3 = 19320,
5428 LegDrive = 19330,
5429 LeninetzV004 = 19340,
5430 Leningraf = 19350,
5431 LIANA = 19370,
5432 LightBulb = 19395,
5433 LIRAA10 = 19396,
5434 LIROD8 = 19397,
5435 LIRODMKII = 19398,
5436 LLX05K = 19399,
5437 LMTNRAI6A = 19400,
5438 LN55 = 19440,
5439 Ln66 = 19485,
5440 Liman = 19500,
5441 Liman2 = 19505,
5442 LockheedVigilance = 19520,
5443 LongBow = 19530,
5444 LongBrick = 19575,
5445 LongBull = 19620,
5446 LongEye = 19665,
5447 LongHead = 19710,
5448 LongTalk = 19755,
5449 LongTrack = 19800,
5450 LongTrough = 19845,
5451 LookTwo = 19890,
5452 LOPAR = 19920,
5453 LORAN = 19935,
5454 LowBlowTA = 19950,
5455 LowBlowTT = 19955,
5456 LowBlowMG = 19960,
5457 LowJackTT = 19970,
5458 LowJackMG = 19971,
5459 LowSieve = 19980,
5460 LowTrough = 20025,
5461 LR66 = 20029,
5462 LRA900 = 20030,
5463 TRS2050 = 20040,
5464 LW01 = 20060,
5465 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
5466 LW08 = 20070,
5467 M1983FCR = 20090,
5468 M2240 = 20115,
5469 M44 = 20160,
5470 M401Z = 20205,
5471 M585Z = 20250,
5472 M588Z = 20295,
5473 MA1IFFPortion = 20340,
5474 MADHACK = 20350,
5475 MARELD = 20360,
5476 MAType909 = 20385,
5477 MARCS152 = 20420,
5478 Marconi1810 = 20430,
5479 MarconiCanadaHC75 = 20475,
5480 MarconiS713 = 20495,
5481 MarconiS1802 = 20520,
5482 MarconiS247 = 20530,
5483 MarconiS810 = 20565,
5484 MarconiSA10 = 20585,
5485 MARCONIST801 = 20589,
5486 MarconiST805 = 20590,
5487 Marconitype967 = 20610,
5488 Marconitype968 = 20655,
5489 Marconitype992 = 20700,
5490 Marconisignaaltype1022 = 20745,
5491 Marconisignaaltype910 = 20790,
5492 Marconisignaaltype911 = 20835,
5493 Marconisignaaltype992R = 20880,
5494 MARTELLO743D = 20890,
5495 MARTELLOS723A = 20895,
5496 MASTERA = 20897,
5497 MBDAFLAADSMJammer = 20898,
5498 MELCO3 = 20915,
5499 MELODI = 20917,
5500 MERLIN = 20918,
5501 Meraj4 = 20919,
5502 NorthropGrummanMESA = 20920,
5503 MeshBrick = 20925,
5504 METEOR1500S = 20927,
5505 METEOR200 = 20929,
5506 METEOR50DX = 20930,
5507 METEOR300 = 20931,
5508 MeteorBVRAAM = 20933,
5509 MFR = 20935,
5510 MFSR210045 = 20940,
5511 MICAMH = 20942,
5512 MICARF = 20943,
5513 MineralME = 20945,
5514 MirageILL = 20950,
5515 MiysisJammer = 20955,
5516 MK15 = 20969,
5517 MK15CIWS = 20970,
5518 MK23 = 21015,
5519 MK23TAS = 21060,
5520 MK25 = 21105,
5521 Mk25Mod3 = 21110,
5522 Mk25Mod7 = 21130,
5523 MK35M2 = 21150,
5524 MK92 = 21195,
5525 MK92CAS = 21240,
5526 MK92STIR = 21285,
5527 MK95 = 21330,
5528 MKS818 = 21332,
5529 MLA1 = 21340,
5530 MMAPQ706 = 21359,
5531 MM950 = 21360,
5532 MMAPS705 = 21375,
5533 MMAPS784 = 21390,
5534 MMSPG73 = 21419,
5535 MMSPG74 = 21420,
5536 MMSPG75 = 21465,
5537 MMSPN703 = 21490,
5538 MMSPN730 = 21492,
5539 MMSPN753B = 21495,
5540 MMSPQ3 = 21500,
5541 MMSPS702 = 21510,
5542 MMSPS768 = 21555,
5543 MMSPS774 = 21600,
5544 MMSPS791 = 21610,
5545 MMSPS794 = 21615,
5546 MMSPS798 = 21620,
5547 MMSR = 21623,
5548 Model17C = 21625,
5549 Moon4 = 21645,
5550 MoonPie = 21646,
5551 MOONCONE = 21647,
5552 MoonRack = 21648,
5553 MOONFACE = 21649,
5554 MMRS = 21650,
5555 Model360 = 21655,
5556 Model378 = 21660,
5557 Model970 = 21661,
5558 Model974 = 21665,
5559 MONOLITB = 21672,
5560 Monument = 21675,
5561 Mouse = 21680,
5562 MP411ESM = 21682,
5563 MPDR18S = 21685,
5564 MPDR18X = 21690,
5565 MPDR45E = 21692,
5566 MR2311 = 21693,
5567 MPR = 21695,
5568 MR2314 = 21696,
5569 MPS1 = 21697,
5570 MR36B = 21698,
5571 MR231MOD = 21699,
5572 MR1600 = 21700,
5573 MRR = 21701,
5574 MR35 = 21702,
5575 MR36 = 21703,
5576 MRL1 = 21704,
5577 MRL4 = 21705,
5578 MRL5 = 21706,
5579 MSAM = 21707,
5580 MR36A = 21708,
5581 MSTAR = 21709,
5582 MT305X = 21710,
5583 MR10M1E = 21711,
5584 MR90 = 21712,
5585 MRK411 = 21715,
5586 MR320MTopazV = 21716,
5587 MSP418K = 21720,
5588 MuffCob = 21735,
5589 Mushroom = 21780,
5590 Mushroom1 = 21825,
5591 Mushroom2 = 21870,
5592 Mushroom3 = 21871,
5593 N23 = 21872,
5594 N011MBars = 21873,
5595 N011MBarsB = 21874,
5596 N011MBarsC = 21875,
5597 N011MBarsR = 21876,
5598 N035IrbisE = 21877,
5599 N036Byelka = 21878,
5600 N25 = 21879,
5601 N920Z = 21880,
5602 N001V = 21881,
5603 NACOSRADARPILOTPlatinum = 21884,
5604 NampoB = 21885,
5605 NAGIRA = 21886,
5606 NanjingB = 21890,
5607 NanjingC = 21895,
5608 Nayada = 21915,
5609 NAYADA5M = 21917,
5610 NAYADA5PV = 21918,
5611 NEBOM = 21919,
5612 NeboSVU = 21920,
5613 Neptun = 21960,
5614 Nettuno4100 = 21965,
5615 NIKEHERCULESMTR = 21970,
5616 NIKETT = 21980,
5617 NorthropGrummanMFEWJammer = 21981,
5618 NORINCO3D = 21982,
5619 NJ81E = 21983,
5620 Normandie = 21984,
5621 NRJ6A = 21985,
5622 NOSTRADAMUS = 21986,
5623 NPG1240 = 21987,
5624 NPG1460 = 21988,
5625 NPG434 = 21989,
5626 NPG630 = 21990,
5627 NPM510 = 21991,
5628 NutCan = 21992,
5629 NPVegaLiana = 21995,
5630 NovellaNV1_70 = 22000,
5631 NRBA50 = 22005,
5632 NRBA51 = 22050,
5633 NRBF20A = 22095,
5634 NRJ5 = 22110,
5635 NS9005 = 22115,
5636 NS100Series = 22125,
5637 NUR31 = 22127,
5638 NWS3 = 22130,
5639 NysaB = 22140,
5640 O524A = 22185,
5641 O580B = 22230,
5642 O625Z = 22275,
5643 O626Z = 22320,
5644 OceanMaster = 22335,
5645 OceanMaster400 = 22340,
5646 OddGroup = 22345,
5647 OddLot = 22365,
5648 OddPair = 22410,
5649 OddRods = 22411,
5650 Oka = 22455,
5651 OFOGH = 22460,
5652 OFOGH3 = 22463,
5653 OKEAN = 22500,
5654 OKEANA = 22505,
5655 OKINXE12C = 22545,
5656 OKO = 22560,
5657 OMEGA = 22590,
5658 OmeraORB32 = 22635,
5659 OMUL = 22640,
5660 OneEye = 22680,
5661 OP28 = 22690,
5662 OPRL4 = 22695,
5663 OPRM71 = 22696,
5664 OPS9 = 22697,
5665 OPS11BC = 22700,
5666 OPS12 = 22701,
5667 OPS14B = 22705,
5668 OPS14C = 22706,
5669 OPS16B = 22725,
5670 OPS18 = 22730,
5671 OPS19 = 22732,
5672 OPS20 = 22735,
5673 OPS22 = 22736,
5674 OPS24 = 22737,
5675 OPS28 = 22740,
5676 OPS28C = 22745,
5677 OPS39 = 22750,
5678 OPTIMA3_2 = 22760,
5679 OR2 = 22770,
5680 ORB31D = 22800,
5681 ORB31S = 22810,
5682 ORB32 = 22815,
5683 ORB42 = 22830,
5684 OrionRtn10X = 22860,
5685 SurfaceWave = 22890,
5686 OtomatMK1 = 22900,
5687 OtomatMKIITeseo = 22905,
5688 OtomatSeriesAL = 22906,
5689 OwlScreech = 22950,
5690 P360Z = 22955,
5691 P14 = 22956,
5692 P180U = 22957,
5693 P182 = 22959,
5694 PA1660 = 22960,
5695 P18M = 22961,
5696 P190U = 22962,
5697 P30 = 22963,
5698 P18MOD = 22964,
5699 P35M = 22965,
5700 PAGE = 22970,
5701 PaintBox = 22977,
5702 PalmFrond = 22995,
5703 ModifiedPaintBox = 22998,
5704 PalmFrondAB = 23040,
5705 Pandora = 23041,
5706 PALSAR2 = 23042,
5707 PantsirSMTAR = 23043,
5708 PAR2 = 23045,
5709 PAR2000 = 23050,
5710 PAR2090C = 23053,
5711 PAR80 = 23055,
5712 PatHandTT = 23085,
5713 PatHandMG = 23095,
5714 PATRIOT = 23100,
5715 PattyCake = 23130,
5716 PawnCake = 23175,
5717 PBR4Rubin = 23220,
5718 PCS514 = 23240,
5719 PeaSticks = 23265,
5720 PechoraSC = 23295,
5721 PeelCone = 23310,
5722 PeelGroup = 23355,
5723 PeelGroupA = 23400,
5724 PeelGroupB = 23445,
5725 PeelGroupMG = 23450,
5726 PeelPair = 23490,
5727 Pelena = 23500,
5728 PGZ07 = 23515,
5729 Phalanx = 23525,
5730 PhazotronGukol4 = 23529,
5731 PhazotronZhukAAE = 23530,
5732 Philips9LV200 = 23535,
5733 Philips9LV331 = 23580,
5734 PhilipsLV223 = 23625,
5735 PhilipsSeaGiraffe50HC = 23670,
5736 PhimatJammer = 23675,
5737 PICOSAR = 23680,
5738 PILOTMK2 = 23685,
5739 PinJib = 23690,
5740 PinTip = 23695,
5741 PL11 = 23700,
5742 PL12 = 23701,
5743 PL15 = 23704,
5744 PlankShad = 23710,
5745 PlankShave = 23715,
5746 PlankShaveA = 23760,
5747 PlankShaveB = 23805,
5748 PlateSteer = 23850,
5749 PlesseyAWS1 = 23895,
5750 PlesseyAWS2 = 23925,
5751 PlesseyAWS4 = 23940,
5752 PlesseyAWS6 = 23985,
5753 PlesseyRJ = 23990,
5754 PlesseyType904 = 24020,
5755 Plesseytype996 = 24030,
5756 PlesseyAWS9 = 24035,
5757 PlinthNet = 24075,
5758 Pluto = 24095,
5759 PNABRubinDownBeat = 24098,
5760 POHJANPALO = 24100,
5761 PolimentK = 24110,
5762 POLLUX = 24120,
5763 PotGroup = 24165,
5764 PotGroupMG = 24210,
5765 PotGroupTA = 24255,
5766 PotGroupTT = 24300,
5767 PorkFist = 24320,
5768 PorkTrough = 24345,
5769 PozitivME15P26 = 24385,
5770 PositiveME1_2 = 24386,
5771 PostBow = 24390,
5772 PostLamp = 24435,
5773 PotDrum = 24480,
5774 PotHead = 24525,
5775 PotShot = 24535,
5776 PraetorianCountermeasuresSuite = 24540,
5777 PRIMUS30A = 24569,
5778 PRIMUS40WXD = 24570,
5779 Primus400 = 24614,
5780 PRIMUS300SL = 24615,
5781 Primus500 = 24616,
5782 Primus650 = 24617,
5783 Primus700 = 24618,
5784 PRIMUS800 = 24619,
5785 Primus3000 = 24620,
5786 Primus870 = 24622,
5787 PRORA = 24630,
5788 PRS2 = 24631,
5789 PRS3Argon2 = 24633,
5790 PRORAPA1660 = 24635,
5791 PS15 = 24640,
5792 PS05A = 24650,
5793 PS46A = 24660,
5794 PS70R = 24705,
5795 PS171R = 24706,
5796 PS860 = 24707,
5797 PS870 = 24709,
5798 PS890 = 24710,
5799 PSM33 = 24720,
5800 PuffBall = 24750,
5801 QuadradarVI = 24755,
5802 QW1A = 24757,
5803 Phazotron1RS21E = 24758,
5804 PVS200 = 24760,
5805 PVS2000 = 24761,
5806 R330ZH = 24768,
5807 R045 = 24769,
5808 R76 = 24770,
5809 R934B = 24771,
5810 RA20 = 24772,
5811 RA723 = 24774,
5812 R41XXX = 24775,
5813 RAC3D = 24776,
5814 RAC30 = 24780,
5815 R423AM = 24781,
5816 Racal1229 = 24795,
5817 DECCA1230 = 24800,
5818 RacalAC2690BT = 24840,
5819 RacalDecca1216 = 24885,
5820 RacalDECCA20V909 = 24890,
5821 RacalDecca360 = 24930,
5822 RacalDeccaAC1290 = 24975,
5823 RacalDeccaTM1229 = 25020,
5824 RacalDeccaTM1626 = 25065,
5825 RacalDRBN34A = 25110,
5826 RADAMHR = 25150,
5827 Radar24 = 25155,
5828 RADARPILOT1000 = 25170,
5829 RADARPILOT1100 = 25171,
5830 RAJENDRA = 25180,
5831 RAN7S = 25200,
5832 RAN10S = 25205,
5833 RAN11LX = 25245,
5834 Rani = 25250,
5835 RAPHAELTH = 25259,
5836 RapierTA = 25260,
5837 Rapier2000TA = 25265,
5838 RapierMG = 25270,
5839 RASCAR3400C = 25273,
5840 Rashmi = 25275,
5841 Rasit = 25276,
5842 Rasit3190B = 25277,
5843 RAT31DLM = 25278,
5844 RAT31DL = 25279,
5845 RAT31S = 25280,
5846 RAT8S = 25281,
5847 RAT31SL = 25282,
5848 RavenES05 = 25283,
5849 RATAC = 25285,
5850 RAWL = 25286,
5851 Rattler = 25287,
5852 RAWS = 25288,
5853 RAWL02 = 25289,
5854 Raytheon1220 = 25290,
5855 RAWS03 = 25291,
5856 Raytheon1210xx = 25292,
5857 Raytheon1302 = 25300,
5858 Raytheon1500 = 25335,
5859 Raytheon1645 = 25380,
5860 Raytheon1650 = 25425,
5861 Raytheon1900 = 25470,
5862 Raytheon2502 = 25515,
5863 RaytheonAnschutzNautoScanNX = 25530,
5864 RaytheonR41 = 25540,
5865 RaytheonRM10256X = 25545,
5866 RaytheonSL72 = 25550,
5867 RaytheonTM16506X = 25560,
5868 RaytheonTM166012S = 25605,
5869 RAY1220XR = 25630,
5870 RAY1401 = 25635,
5871 Ray2900 = 25650,
5872 RaymarineRD218 = 25694,
5873 Raypath = 25695,
5874 RaytheonPathfinderSTmk2 = 25698,
5875 RBE2 = 25735,
5876 RBE2AA = 25736,
5877 RCT180 = 25739,
5878 RDM = 25740,
5879 RDM3 = 25745,
5880 RDI = 25750,
5881 RDY = 25760,
5882 RDY3 = 25762,
5883 RDS86 = 25770,
5884 RDN72 = 25785,
5885 RDR1A = 25830,
5886 RDR1E = 25835,
5887 RDR4A = 25840,
5888 RDR150 = 25845,
5889 RDR160XD = 25850,
5890 RDR230HP = 25853,
5891 RDR1100 = 25855,
5892 RDR1150 = 25860,
5893 RDR1200 = 25875,
5894 RDR1400 = 25885,
5895 RDR1400C = 25890,
5896 RDR4000_1 = 25891,
5897 RDR4000_2 = 25892,
5898 RDR1500 = 25895,
5899 RiceCake = 25896,
5900 RDR1600 = 25897,
5901 RDR2000 = 25898,
5902 RDR1700B = 25899,
5903 Remora = 25900,
5904 RiceField = 25901,
5905 REC1A = 25902,
5906 REC1B = 25903,
5907 REC1C = 25904,
5908 ResolveEAS = 25906,
5909 RiceCupC = 25907,
5910 REL6E = 25908,
5911 REC1 = 25909,
5912 RiceBowl = 25910,
5913 ImprovedReporter = 25911,
5914 RiceBug = 25912,
5915 RiceCup = 25915,
5916 RiceLamp = 25920,
5917 REVATHI = 25940,
5918 REZONANS = 25950,
5919 RGMUGM109B = 25955,
5920 RGMUGM109EHomingRadar = 25958,
5921 RicePad = 25965,
5922 RKL526 = 25966,
5923 RKZ764 = 25967,
5924 RKZ766 = 25968,
5925 RKL165 = 25969,
5926 RKL609 = 25970,
5927 RKL800 = 25971,
5928 RKZ761 = 25972,
5929 RKZ2000 = 25973,
5930 RIS4CA = 25974,
5931 RL2000 = 25975,
5932 RL41 = 25976,
5933 RIR778 = 25977,
5934 RISAT = 25978,
5935 RLMS = 25979,
5936 RimHatESMECMSuite = 25980,
5937 RiceScoop = 26008,
5938 RiceScreen = 26010,
5939 DECCATM1070A = 26011,
5940 RM370BT = 26015,
5941 RockwellCollinsFMR200X = 26020,
5942 RM2312 = 26040,
5943 RM23123 = 26041,
5944 RMT0100A = 26043,
5945 RN222 = 26045,
5946 ROLAND2 = 26053,
5947 ROLANDBN = 26055,
5948 ROLANDMG = 26100,
5949 ROLANDTA = 26145,
5950 ROLANDTT = 26190,
5951 ROTODOME = 26210,
5952 RoundBall = 26235,
5953 RP379DTiradaD = 26236,
5954 RP3 = 26237,
5955 RP4G = 26238,
5956 RoundHouse = 26280,
5957 RoundHouseB = 26325,
5958 RPR117 = 26326,
5959 RS0250 = 26327,
5960 RSR210N = 26328,
5961 RT0250 = 26330,
5962 RTA4100 = 26340,
5963 RTN1A = 26350,
5964 RTN25X = 26353,
5965 RTS6400 = 26354,
5966 RubyRake = 26355,
5967 RumSling = 26360,
5968 RumSlingRO = 26361,
5969 RumSlingTT = 26362,
5970 RV2 = 26370,
5971 RV3 = 26415,
5972 RV5 = 26460,
5973 RV10 = 26505,
5974 RV15M = 26506,
5975 RV17 = 26550,
5976 RV18 = 26595,
5977 RV21 = 26596,
5978 RV21B = 26597,
5979 RV25 = 26600,
5980 RV377 = 26610,
5981 RVUM = 26640,
5982 RWD8 = 26650,
5983 RXN260 = 26660,
5984 RyeHouse = 26665,
5985 S1810CD = 26670,
5986 Sahab = 26672,
5987 Salamandre = 26673,
5988 SamyungSMR7200 = 26674,
5989 S1850M = 26675,
5990 S511 = 26676,
5991 S512 = 26677,
5992 S600 = 26678,
5993 S604 = 26679,
5994 S763LANZA3D = 26680,
5995 S613 = 26681,
5996 S631 = 26682,
5997 S654 = 26683,
5998 S669 = 26684,
5999 SA2Guideline = 26685,
6000 S244 = 26686,
6001 S711 = 26687,
6002 SA3Goa = 26730,
6003 SA8GeckoDT = 26775,
6004 SA12TELARILL = 26795,
6005 SA23TELIlluminator = 26797,
6006 SABERM60 = 26799,
6007 Samovar = 26805,
6008 Sampson = 26810,
6009 SAN7GadflyTI = 26820,
6010 SAN11Cads1UN = 26865,
6011 SaccadeMH = 26900,
6012 SaltPotAB = 26910,
6013 SAP14 = 26920,
6014 SAP518 = 26925,
6015 SAP518M = 26926,
6016 SandBar = 26930,
6017 SAPechora2MTT = 26935,
6018 SAR = 26945,
6019 SATRAPE = 26950,
6020 SATURNEII = 26955,
6021 ScanCan = 27000,
6022 ScanFix = 27045,
6023 ScanOdd = 27090,
6024 SCANTER1002 = 27095,
6025 SCANTER2001 = 27100,
6026 SCANTER2002 = 27101,
6027 SCANTER2100 = 27102,
6028 SCANTER4002 = 27109,
6029 SCANTER4100 = 27110,
6030 SCANTER5102 = 27111,
6031 SCANTER5502 = 27113,
6032 SCANTER6000 = 27115,
6033 SCANTER6002 = 27116,
6034 ScanterMil009 = 27125,
6035 ScanThree = 27135,
6036 SCANTERMILS = 27137,
6037 ScanterSMR = 27139,
6038 SCANTER = 27140,
6039 SCORADS = 27141,
6040 Scimitar = 27142,
6041 STAR2000 = 27143,
6042 SCOREBOARD = 27150,
6043 ScoopPair = 27175,
6044 ScoupPlate = 27180,
6045 SCOUT = 27183,
6046 SCR584 = 27190,
6047 SeaArcher2 = 27225,
6048 SeaBasedXBand = 27230,
6049 SeaDragon = 27235,
6050 SeaEagle = 27239,
6051 SeaEagleSC = 27240,
6052 SEAFALCON = 27245,
6053 SeaGiraffeAMB = 27248,
6054 Seaguard = 27251,
6055 SeaHawkSHNX12 = 27260,
6056 SeaHunter4MG = 27270,
6057 SeaHunter4TA = 27315,
6058 SeaHunter4TT = 27360,
6059 SeaGull = 27405,
6060 SeaMaster400 = 27430,
6061 SeaNet = 27450,
6062 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6063 SeaSparrow = 27451,
6064 SeaSpray = 27495,
6065 SeaTiger = 27540,
6066 SeaTigerM = 27550,
6067 Seastar = 27560,
6068 Searchwater = 27570,
6069 Searchwater2000 = 27575,
6070 SEASONDE = 27580,
6071 SEASPRAY7000E = 27582,
6072 SeaVue = 27583,
6073 SeasprayMk3 = 27584,
6074 SeleniaOrion7 = 27585,
6075 Seleniatype912 = 27630,
6076 SelenniaRAN12LX = 27675,
6077 SeleniaRAN20S = 27680,
6078 SelenniaRTN10X = 27720,
6079 SeliniaARP1645 = 27765,
6080 SENTIRM20 = 27770,
6081 SERDAR = 27771,
6082 SERHAT = 27773,
6083 Series10CompactSubmarineRadarCSR = 27775,
6084 SERIES52 = 27780,
6085 SERIES320 = 27790,
6086 SG = 27800,
6087 SGJ02 = 27802,
6088 SGJ03 = 27803,
6089 SGR10200 = 27810,
6090 SGR10302 = 27855,
6091 SGR104 = 27870,
6092 Shahed129SAR = 27873,
6093 SHAHINE = 27875,
6094 SheetBend = 27900,
6095 SheetCurve = 27945,
6096 SHIKRA = 27980,
6097 ShipGlobe = 27990,
6098 ShipWheel = 28035,
6099 SGR114 = 28080,
6100 ShoreWalkA = 28125,
6101 ShortHorn = 28170,
6102 ShotDome = 28215,
6103 SideGlobeJN = 28260,
6104 PRV11 = 28280,
6105 SideWalkA = 28305,
6106 SignaalDA02 = 28350,
6107 SignaalDA05 = 28395,
6108 SignaalDA08 = 28440,
6109 SignaalDA082LS = 28445,
6110 SignaalLW04 = 28480,
6111 SignaalLW08 = 28485,
6112 SignaalLWOR = 28530,
6113 SignaalM45 = 28575,
6114 SignaalMW08 = 28620,
6115 SignaalSMART = 28665,
6116 SignaalSTING = 28710,
6117 SignaalSTIR = 28755,
6118 SignaalSTIR1_8M = 28760,
6119 SignaalSTIR24M = 28770,
6120 SignaalWM202 = 28800,
6121 SignaalWM25 = 28845,
6122 SignaalWM27 = 28890,
6123 SignaalWM28 = 28935,
6124 SignaalZW01 = 28980,
6125 SignaalZW06 = 29025,
6126 SignaalZW07 = 29030,
6127 SignaalZW0800 = 29035,
6128 SIMRAD3G = 29043,
6129 SIMRAD4G = 29045,
6130 SimradCA54 = 29050,
6131 SIMRADHalo6 = 29060,
6132 SkiPole = 29070,
6133 SkinHead = 29115,
6134 SkipSpin = 29160,
6135 SKYFENDER = 29172,
6136 SkyWave = 29175,
6137 SkyguardB = 29180,
6138 SKYGUARDTA = 29185,
6139 SKYGUARDTT = 29190,
6140 SkyguardLR = 29191,
6141 Skymaster = 29200,
6142 SkyWatch = 29205,
6143 SkyRanger = 29210,
6144 SKYSHADOW = 29215,
6145 SKYSHIELDTA = 29220,
6146 SL = 29250,
6147 SLALQ234 = 29270,
6148 SlapShot = 29295,
6149 SlapShotG = 29297,
6150 SLC2 = 29300,
6151 SLC2E = 29301,
6152 SLC4 = 29305,
6153 SlimNet = 29340,
6154 SlotBackA = 29385,
6155 SlotBackILL = 29400,
6156 SlotBackB = 29430,
6157 SlotBackIV = 29431,
6158 SlotBackBTopaz = 29432,
6159 SlotBackE = 29433,
6160 SlotBackG = 29434,
6161 SlotBackVI = 29435,
6162 SlotRest = 29440,
6163 SM674AUPM = 29450,
6164 SMA3RM = 29475,
6165 SMA3RM20 = 29520,
6166 SMA3RM20ASMG = 29565,
6167 SMABPS704 = 29610,
6168 SMASPIN749V2 = 29655,
6169 SMASPN703 = 29700,
6170 SMASPN751 = 29745,
6171 SMASPOS748 = 29790,
6172 SMASPQ2 = 29835,
6173 SMASPQ2D = 29880,
6174 SMASPQ701 = 29925,
6175 SMASPS702 = 29970,
6176 SMAST2OTOMATIIMH = 30015,
6177 SR47A = 30016,
6178 SMA718Beacon = 30060,
6179 SmallFred = 30065,
6180 SMARTS = 30068,
6181 SMARTSMk2 = 30069,
6182 SMARTL = 30070,
6183 SM932 = 30072,
6184 SmogLamp = 30075,
6185 SnapShot = 30080,
6186 SnoopDrift = 30105,
6187 SnoopHalf = 30140,
6188 SnoopHead = 30150,
6189 SnoopPair = 30195,
6190 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6191 SnoopPing1 = 30200,
6192 SnoopPlate = 30240,
6193 SnoopPing = 30255,
6194 SnoopSlab = 30285,
6195 SnoopTray = 30330,
6196 SnoopTray1 = 30375,
6197 SnoopTray2 = 30420,
6198 SNOOPTRAY3 = 30421,
6199 SnoopWatch = 30465,
6200 _9S18M1 = 30470,
6201 _9S18M1E = 30471,
6202 SPB7 = 30475,
6203 SnowDrop = 30480,
6204 SNW10 = 30490,
6205 SO1 = 30510,
6206 SO12 = 30520,
6207 SOACommunist = 30555,
6208 SO69 = 30580,
6209 SockEye = 30600,
6210 SOM64 = 30645,
6211 Sopka = 30650,
6212 Sorbsiya = 30660,
6213 SorbtsiyaL005 = 30661,
6214 SorbtsiyaL005S = 30662,
6215 SPADASIR = 30665,
6216 SPADATT = 30670,
6217 SparrowILL = 30690,
6218 SPERRYRASCAR = 30691,
6219 SPECTRA = 30692,
6220 SPEAR3MMW = 30696,
6221 SperryM3 = 30700,
6222 SPERRYVISIONMASTERFT = 30701,
6223 SPEXER2000 = 30710,
6224 SPG53F = 30735,
6225 SPG70 = 30780,
6226 SPG74 = 30825,
6227 SPG75 = 30870,
6228 SPG76 = 30915,
6229 SpinScanA = 30960,
6230 SpinScanB = 31005,
6231 SpinTrough = 31050,
6232 SPINODADDAWTR = 31070,
6233 SPJ40 = 31080,
6234 SplashDrop = 31095,
6235 SPN2 = 31096,
6236 SPN4 = 31097,
6237 SPN30 = 31100,
6238 SPN35A = 31140,
6239 SPN41 = 31185,
6240 SPN42 = 31230,
6241 SPN43A = 31275,
6242 SPN43B = 31320,
6243 SPN44 = 31365,
6244 SPN46 = 31410,
6245 SPN703 = 31455,
6246 SPN720 = 31475,
6247 SPN7281 = 31500,
6248 SPN748 = 31545,
6249 SPN750 = 31590,
6250 SPO8 = 31592,
6251 SPN753G = 31593,
6252 SpongeCake = 31635,
6253 P12 = 31680,
6254 P18SpoonRestA = 31681,
6255 P18SpoonRestB = 31682,
6256 P18SpoonRestC = 31684,
6257 P18MH2 = 31685,
6258 SporkRest = 31700,
6259 SPQ712 = 31725,
6260 SPR2 = 31730,
6261 SPR51 = 31740,
6262 SPS5FASOL = 31765,
6263 SPS6 = 31766,
6264 SPS6C = 31770,
6265 SPS10F = 31815,
6266 SPS12 = 31860,
6267 SPS22NBUKET = 31870,
6268 SPS33NBUKET = 31875,
6269 SPS44NBUKET = 31880,
6270 SPS55NBUKET = 31890,
6271 SPS58 = 31905,
6272 SPS62 = 31925,
6273 SPS100K = 31935,
6274 SPS64 = 31950,
6275 SPS141 = 31951,
6276 SPS142 = 31952,
6277 SPS143 = 31953,
6278 SPS151 = 31955,
6279 SPS152 = 31956,
6280 SPS153 = 31957,
6281 SPS160Geran = 31959,
6282 SPS161 = 31960,
6283 SPS95K = 31970,
6284 SPS171Jammer = 31971,
6285 SPS172Jammer = 31972,
6286 SPS768 = 31995,
6287 SPS540K = 32010,
6288 SPS550KMF = 32020,
6289 SPS774 = 32040,
6290 SPY790 = 32085,
6291 SquareHead = 32130,
6292 SquarePair = 32175,
6293 SquareSlot = 32220,
6294 SquareTie = 32265,
6295 Shmel = 32310,
6296 P15M = 32330,
6297 SquintEye = 32355,
6298 SQUIRE = 32365,
6299 SR2410C = 32373,
6300 SR47BG = 32375,
6301 SREM5 = 32385,
6302 SRN6 = 32400,
6303 SRN15 = 32445,
6304 SRN206 = 32455,
6305 SRN745 = 32490,
6306 SRO1 = 32535,
6307 SRO2 = 32580,
6308 SSC2BSamletMG = 32625,
6309 SSN2ABCSSC = 32670,
6310 SSN2ABCSSC2A3A2MH = 32715,
6311 SSN2CSeeker = 32760,
6312 SSN2CDStyx = 32805,
6313 SSN2CDStyxCDMH = 32850,
6314 SSN2CStyxAL = 32851,
6315 SSN2DStyxAL = 32852,
6316 SSN2SSCSSC18BN = 32895,
6317 SSN3BSepalAL = 32940,
6318 SSN3BSepalMH = 32985,
6319 SSN7Starbright = 33025,
6320 SSN9Siren = 33030,
6321 SSN9SirenAL = 33075,
6322 SSN9SirenMH = 33120,
6323 SSN10AFL10mmWMH = 33125,
6324 SSN11Nasr1mmWMH = 33140,
6325 SSN12SandboxAL = 33165,
6326 SSN12YJ83JmmWMH = 33166,
6327 SSN12SandboxMH = 33210,
6328 SSNX13Shredder = 33230,
6329 SSN14BSilexAL = 33231,
6330 SSN19Shipwreck = 33255,
6331 SSN19ShipwreckAL = 33300,
6332 SSN19ShipwreckMH = 33345,
6333 SSN21AL = 33390,
6334 SSN22Sunburn = 33435,
6335 SSN22SunburnMH = 33480,
6336 SSN22SunburnAL = 33481,
6337 SSN25SwitchbladeMH = 33483,
6338 SSN26StrobileMMWMH = 33484,
6339 SSN27SizzlerMH = 33485,
6340 SSN27ASizzlerAL = 33486,
6341 STINGEOMk2 = 33505,
6342 STIR1_2EOMk2 = 33510,
6343 STIR2_4HPMk2 = 33511,
6344 StoneCake = 33525,
6345 STR41 = 33570,
6346 ST858 = 33580,
6347 START1M = 33582,
6348 STENTOR = 33584,
6349 StormShadowAHR = 33585,
6350 STRAIGHTFLUSH = 33586,
6351 StraightFlushTA = 33590,
6352 StraightFlushTT = 33595,
6353 StraightFlushILL = 33600,
6354 StrikeOut = 33615,
6355 StrutCurve = 33660,
6356 StrutPair = 33705,
6357 StrutPair1 = 33750,
6358 StrutPair2 = 33795,
6359 SunVisor = 33840,
6360 SUPERDARN = 33850,
6361 Superfledermaus = 33860,
6362 Supersearcher = 33870,
6363 SwiftRod1 = 33885,
6364 SwiftRod2 = 33930,
6365 SYMPHONY = 33933,
6366 SYNAPSISMk2 = 33935,
6367 SY80 = 33950,
6368 T1166 = 33975,
6369 T1171 = 34020,
6370 T1202 = 34040,
6371 T6004 = 34065,
6372 T6031 = 34110,
6373 T8067 = 34155,
6374 T8068 = 34200,
6375 T8124 = 34245,
6376 T8408 = 34290,
6377 T8911 = 34335,
6378 T8937 = 34380,
6379 T8944 = 34425,
6380 T8987 = 34470,
6381 TA10K = 34480,
6382 JY11B = 34500,
6383 TACANSURF = 34505,
6384 P14_2 = 34515,
6385 TALLKINGB = 34516,
6386 TALLKINGC = 34517,
6387 TallMike = 34560,
6388 TallPath = 34605,
6389 TDR94 = 34607,
6390 TeaSpoon = 34610,
6391 TeamPlay = 34620,
6392 TALISMAN = 34624,
6393 TeamWork = 34625,
6394 T1135 = 34626,
6395 TANCANSURF = 34627,
6396 TECSAR = 34628,
6397 TERRASARX = 34629,
6398 TESAR = 34630,
6399 THAADGBR = 34640,
6400 ThalesRDY2 = 34644,
6401 ThalesNederlandSignaalAPAR = 34645,
6402 ThalesScorpionJammer = 34646,
6403 ThalesVariant = 34647,
6404 ThalesICMSJammer = 34648,
6405 ThalesIMEWSJammer = 34649,
6406 THD225 = 34650,
6407 THD1012 = 34655,
6408 THD1098 = 34660,
6409 THD1213 = 34665,
6410 THD1940 = 34670,
6411 THD1955Palmier = 34680,
6412 THD5500 = 34695,
6413 ThirdofKhordad = 34700,
6414 ThinPath = 34740,
6415 PRV9 = 34785,
6416 PRV16 = 34786,
6417 ThompsonCSFTA10 = 34795,
6418 ThompsonCSFTHD1040Neptune = 34830,
6419 ThompsonCSFCalypso = 34875,
6420 ThompsonCSFCASTOR = 34920,
6421 ThompsonCSFCastorII = 34965,
6422 ThomsonCSFDomino30 = 34966,
6423 ThompsonCSFDRBC32A = 35010,
6424 ThompsonCSFDRBJ11DE = 35055,
6425 ThompsonCSFDRBV15A = 35100,
6426 ThompsonCSFDRBV15C = 35145,
6427 ThompsonCSFDRBV22D = 35190,
6428 ThompsonCSFDRBV23B = 35235,
6429 ThompsonCSFDRUA33 = 35280,
6430 ThompsonCSFMarsDRVB21A = 35325,
6431 ThompsonCSFSeaTiger = 35370,
6432 ThompsonCSFTriton = 35415,
6433 ThompsonCSFVegawithDRBC32E = 35460,
6434 ThomsonENR = 35470,
6435 ThomsonRDI = 35475,
6436 TierIIPlus = 35477,
6437 TPS755 = 35478,
6438 TPS830K = 35479,
6439 TRS2105 = 35480,
6440 TR23K = 35481,
6441 TR23MR = 35482,
6442 TRAC2100 = 35483,
6443 TRAC2300 = 35484,
6444 HT223 = 35485,
6445 TRADEX = 35486,
6446 TRAILXI = 35487,
6447 TRD1211 = 35488,
6448 TRD1235 = 35489,
6449 TRS2100 = 35490,
6450 TRACNG = 35491,
6451 TieRods = 35505,
6452 _36D6 = 35550,
6453 TinTrap = 35570,
6454 TIRSPONDER = 35580,
6455 TK25E5 = 35583,
6456 TMKMk2 = 35585,
6457 TMXMk2 = 35586,
6458 ToadStool1 = 35595,
6459 ToadStool2 = 35640,
6460 ToadStool3 = 35685,
6461 ToadStool4 = 35730,
6462 ToadStool5 = 35775,
6463 TokenB = 35785,
6464 TombStone = 35800,
6465 Tonson = 35810,
6466 TopBow = 35820,
6467 TopDome = 35865,
6468 TopKnot = 35910,
6469 TopMesh = 35955,
6470 TopPair = 36000,
6471 TopPlate = 36045,
6472 TopPlateB = 36046,
6473 TopSail = 36090,
6474 TYPE208 = 36120,
6475 TopSteer = 36135,
6476 TopTrough = 36180,
6477 TornadoGMR = 36200,
6478 TornadoTFR = 36201,
6479 ScrumHalfTA = 36220,
6480 ScrumHalfTT = 36225,
6481 TORM2TER = 36226,
6482 ScrumHalfMG = 36230,
6483 TrackDish = 36270,
6484 TR47C = 36300,
6485 TORSOM = 36315,
6486 TQN2 = 36320,
6487 TrapDoor = 36360,
6488 TRD1500 = 36365,
6489 TrickShotTAR = 36370,
6490 TrickShotTER = 36371,
6491 TRISPONDE = 36380,
6492 TRML = 36381,
6493 TRS2215 = 36382,
6494 TRML3D = 36383,
6495 TRMS = 36384,
6496 TRS2056 = 36385,
6497 TRS3010 = 36386,
6498 TRS2060 = 36387,
6499 TRS2245 = 36388,
6500 TRS2310 = 36389,
6501 TritonG = 36390,
6502 TRS22XX = 36391,
6503 TRS3030 = 36400,
6504 TRS3033 = 36405,
6505 TRS3203 = 36417,
6506 TRS3405 = 36420,
6507 TRS3410 = 36425,
6508 TRS3415 = 36430,
6509 TRS3D = 36440,
6510 TRS3D16 = 36441,
6511 TRS3D16ES = 36442,
6512 TRS3D32 = 36443,
6513 TRS4D = 36446,
6514 TRSC = 36447,
6515 TRSN = 36450,
6516 TS4478A = 36460,
6517 TSE5000 = 36495,
6518 TSR333 = 36540,
6519 TSR793 = 36550,
6520 TubBrick = 36563,
6521 TubeArm = 36585,
6522 TW1374 = 36590,
6523 TW1378 = 36595,
6524 TW1446 = 36600,
6525 TwinEyes = 36630,
6526 TwinPill = 36675,
6527 TwinScan = 36720,
6528 TwinScanRo = 36765,
6529 TwoSpot = 36810,
6530 Type071LPD = 36821,
6531 Type212JA = 36827,
6532 Type221JA = 36830,
6533 Type223 = 36835,
6534 Type80ASM1 = 36836,
6535 Type120 = 36838,
6536 Type208 = 36840,
6537 Type222 = 36843,
6538 Type226 = 36846,
6539 Type232H = 36850,
6540 TYPE245 = 36853,
6541 TYPE262 = 36855,
6542 TYPE275 = 36900,
6543 TYPE278 = 36905,
6544 TYPE293 = 36945,
6545 Type341 = 36946,
6546 TYPE313 = 36947,
6547 Type305A = 36948,
6548 Type334 = 36960,
6549 Type342 = 36985,
6550 TYPE343SUNVISORB = 36990,
6551 Type344 = 36992,
6552 Type345 = 37010,
6553 Type346 = 37011,
6554 Type349A = 37033,
6555 TYPE347B = 37035,
6556 Type347G = 37038,
6557 Type359 = 37039,
6558 Type352 = 37040,
6559 Type360 = 37041,
6560 Type362ESR1SR47B = 37043,
6561 Type354 = 37045,
6562 Type366 = 37047,
6563 Type363 = 37048,
6564 Type364 = 37049,
6565 Type404A = 37050,
6566 Type405 = 37052,
6567 TYPE405J = 37053,
6568 Type408D = 37058,
6569 Type517B = 37059,
6570 Type518 = 37060,
6571 Type589 = 37070,
6572 TYPE651 = 37073,
6573 Type753_1 = 37075,
6574 Type702 = 37077,
6575 Type704 = 37078,
6576 Type753_2 = 37079,
6577 Type756 = 37080,
6578 TYPE713 = 37081,
6579 TYPE714 = 37082,
6580 TYPE702D = 37083,
6581 TYPE760 = 37084,
6582 Type760 = 37086,
6583 Type815 = 37090,
6584 Type793 = 37095,
6585 Type8A813 = 37100,
6586 TYPE901M = 37105,
6587 TYPE902 = 37110,
6588 Type902B = 37124,
6589 TYPE903 = 37125,
6590 TYPE909TI = 37170,
6591 TYPE909TT = 37215,
6592 TYPE910 = 37260,
6593 TYPE931 = 37265,
6594 TYPE965 = 37305,
6595 TYPE967 = 37350,
6596 TYPE968 = 37395,
6597 TYPE974 = 37440,
6598 TYPE975 = 37485,
6599 TYPE978 = 37530,
6600 Type981 = 37534,
6601 Type9813 = 37535,
6602 TYPE982 = 37540,
6603 Type984 = 37543,
6604 Type985 = 37544,
6605 TYPE992 = 37575,
6606 TYPE993 = 37620,
6607 TYPE994 = 37665,
6608 Type996 = 37670,
6609 Type997Artisan = 37675,
6610 TYPE1006_1 = 37710,
6611 TYPE1006_2 = 37755,
6612 TYPE1022 = 37800,
6613 Type1047 = 37810,
6614 Type1048 = 37815,
6615 Type1474 = 37825,
6616 Type1493 = 37828,
6617 ULTRA = 37840,
6618 UKMK10 = 37845,
6619 UPS220C = 37850,
6620 UPX110 = 37890,
6621 UPX27 = 37935,
6622 URN20 = 37980,
6623 UTESA = 37985,
6624 UTEST = 37990,
6625 URN25 = 38025,
6626 VIGILANT = 38035,
6627 VitebskL370Jammer = 38038,
6628 VOLEXIIIIV = 38045,
6629 VOLGA = 38046,
6630 VORONEZHDM = 38047,
6631 VOSTOK = 38048,
6632 VOSTOKE = 38049,
6633 VSR = 38050,
6634 VOSTOK3D = 38051,
6635 VSTARPT = 38055,
6636 W160 = 38058,
6637 W1028 = 38060,
6638 W8818 = 38070,
6639 W8838 = 38115,
6640 W8852 = 38120,
6641 WALLBOARD = 38140,
6642 WallRust = 38150,
6643 WAS74S = 38160,
6644 WaspHead = 38205,
6645 WATCHDOG = 38210,
6646 WatchGuard = 38250,
6647 Watchman = 38260,
6648 WAVESTORM = 38270,
6649 WATCHMANS = 38275,
6650 WATCHMANT = 38276,
6651 WEATHERSCOUT2 = 38280,
6652 WesternElectricMK10 = 38295,
6653 WestinghouseADR4LRSR = 38320,
6654 WestinghouseElectricSPG50 = 38340,
6655 WestinghouseElectricW120 = 38385,
6656 WestinghouseSPS29C = 38430,
6657 WestinghouseSPS37 = 38475,
6658 WetEye = 38520,
6659 WetEye2 = 38525,
6660 WetEyeMod = 38565,
6661 WF44S = 38568,
6662 WGU41B = 38570,
6663 WGU44B = 38572,
6664 Whiff = 38610,
6665 WhiffBrick = 38655,
6666 WhiffFire = 38700,
6667 WHITEHOUSE = 38715,
6668 WideMat = 38730,
6669 WineGlassJammer = 38735,
6670 WildCard = 38745,
6671 WILDCAT = 38748,
6672 WitchEight = 38790,
6673 WitchFive = 38835,
6674 WLR = 38840,
6675 WM2XSeries = 38880,
6676 WM2XSeriesCAS = 38925,
6677 WR10X = 38930,
6678 WR2100 = 38935,
6679 WSR74C = 38950,
6680 WSR74S = 38955,
6681 WSR81 = 38957,
6682 WXR700C = 38960,
6683 WXR2100 = 38965,
6684 WXR2100MSTT = 38966,
6685 WoodGage = 38970,
6686 XTAR25 = 38990,
6687 XTAR3D = 38995,
6688 YAOGAN3 = 39000,
6689 Yaogan29 = 39014,
6690 YardRake = 39015,
6691 YH96 = 39050,
6692 YewLoop = 39060,
6693 YITIANADS = 39061,
6694 YD3 = 39062,
6695 YJ12MH = 39063,
6696 YJ62MH = 39065,
6697 YJ82MH = 39066,
6698 YJ83MH = 39067,
6699 YLC2 = 39070,
6700 YLC2A = 39071,
6701 YLC4 = 39073,
6702 YLC6 = 39074,
6703 YLC6M = 39075,
6704 YLC8 = 39080,
6705 YLC8B = 39081,
6706 YLC18 = 39085,
6707 YoYo = 39105,
6708 ZaslonA = 39110,
6709 ZaslonMultipurpose = 39112,
6710 ZooPark1 = 39125,
6711 ZPS6 = 39126,
6712 ZOOPARK3 = 39127,
6713 ZD12 = 39131,
6714 ZW06 = 39150,
6715 ANALQ1361 = 39200,
6716 ANALQ1362 = 39201,
6717 ANALQ1363 = 39202,
6718 ANALQ1364 = 39203,
6719 ANALQ1365 = 39204,
6720 ANALQ1622 = 39210,
6721 ANALQ1623 = 39211,
6722 ANALQ1624 = 39212,
6723 ZhukM = 45300,
6724 ZHUKMAE = 45303,
6725 ZHUKME = 45304,
6726 ZHUKMME = 45305,
6727 ZhukMSE = 45307,
6728}
6729
6730impl EmitterName {
6731 #[must_use]
6732 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
6733 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
6734 }
6735}
6736
6737#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
6739pub enum EmitterSystemFunction {
6740 #[default]
6741 Other = 0,
6742 MultiFunction = 1,
6743 EarlyWarningSurveillance = 2,
6744 HeightFinder = 3,
6745 FireControl = 4,
6746 AcquisitionDetection = 5,
6747 Tracker = 6,
6748 GuidanceIllumination = 7,
6749 FiringPointLaunchPointLocation = 8,
6750 RangeOnly = 9,
6751 RadarAltimeter = 10,
6752 Imaging = 11,
6753 MotionDetection = 12,
6754 Navigation = 13,
6755 WeatherMeteorological = 14,
6756 Instrumentation = 15,
6757 IdentificationClassification = 16,
6758 AAAFireControl = 17,
6759 AirSearchBomb = 18,
6760 AirIntercept = 19,
6761 Altimeter = 20,
6762 AirMapping = 21,
6763 AirTrafficControl = 22,
6764 Beacon = 23,
6765 BattlefieldSurveillance = 24,
6766 GroundControlApproach = 25,
6767 GroundControlIntercept = 26,
6768 CoastalSurveillance = 27,
6769 DecoyMimic = 28,
6770 DataTransmission = 29,
6771 EarthSurveillance = 30,
6772 GunLayBeacon = 31,
6773 GroundMapping = 32,
6774 HarborSurveillance = 33,
6775 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6776 IFF = 34,
6777 InstrumentLandingSystem = 35,
6778 IonosphericSound = 36,
6779 Interrogator = 37,
6780 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6781 BarrageJamming = 38,
6782 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6783 ClickJamming = 39,
6784 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6785 DeceptiveJamming = 40,
6786 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6787 FrequencySweptJamming = 41,
6788 Jammer = 42,
6789 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6790 NoiseJamming = 43,
6791 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6792 PulsedJamming = 44,
6793 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6794 RepeaterJamming = 45,
6795 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6796 SpotNoiseJamming = 46,
6797 MissileAcquisition = 47,
6798 MissileDownlink = 48,
6799 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6800 Meteorological = 49,
6801 Space = 50,
6802 SurfaceSearch = 51,
6803 ShellTracking = 52,
6804 Television = 56,
6805 Unknown = 57,
6806 VideoRemoting = 58,
6807 ExperimentalOrTraining = 59,
6808 MissileGuidance = 60,
6809 MissileHoming = 61,
6810 MissileTracking = 62,
6811 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6812 JammingNoise = 64,
6813 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6814 JammingDeception = 65,
6815 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6816 Decoy = 66,
6817 NavigationDistanceMeasuringEquipment = 71,
6818 TerrainFollowing = 72,
6819 WeatherAvoidance = 73,
6820 ProximityFuse = 74,
6821 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
6822 Instrumentation_ = 75,
6823 Radiosonde = 76,
6824 Sonobuoy = 77,
6825 BathythermalSensor = 78,
6826 TowedCounterMeasure = 79,
6827 DippingSonar = 80,
6828 TowedAcousticSensor = 81,
6829 WeaponNonlethal = 96,
6830 WeaponLethal = 97,
6831 TestEquipment = 98,
6832 AcquisitionTrack = 99,
6833 TrackGuidance = 100,
6834 GuidanceIlluminationTrackAcquisition = 101,
6835 SearchAcquisition = 102,
6836 Dropsonde = 103,
6837}
6838
6839impl EmitterSystemFunction {
6840 #[must_use]
6841 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
6842 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
6843 }
6844}
6845
6846#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
6848pub enum ElectromagneticEmissionStateUpdateIndicator {
6849 #[default]
6850 HeartbeatUpdate = 0,
6851 ChangedDataUpdate = 1,
6852}
6853
6854impl ElectromagneticEmissionStateUpdateIndicator {
6855 #[must_use]
6856 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
6857 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
6858 }
6859}
6860
6861#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
6863pub enum ElectromagneticEmissionBeamFunction {
6864 #[default]
6865 Other = 0,
6866 Search = 1,
6867 HeightFinding = 2,
6868 Acquisition = 3,
6869 Tracking = 4,
6870 Acquisitionandtracking = 5,
6871 Commandguidance = 6,
6872 Illumination = 7,
6873 Ranging = 8,
6874 Missilebeacon = 9,
6875 MissileFusing = 10,
6876 Activeradarmissileseeker = 11,
6877 Jamming = 12,
6878 IFF = 13,
6879 NavigationWeather = 14,
6880 Meteorological = 15,
6881 Datatransmission = 16,
6882 Navigationaldirectionalbeacon = 17,
6883 TimeSharedSearch = 20,
6884 TimeSharedAcquisition = 21,
6885 TimeSharedTrack = 22,
6886 TimeSharedCommandGuidance = 23,
6887 TimeSharedIllumination = 24,
6888 TimeSharedJamming = 25,
6889}
6890
6891impl ElectromagneticEmissionBeamFunction {
6892 #[must_use]
6893 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
6894 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
6895 }
6896}
6897
6898#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
6900pub enum HighDensityTrackJam {
6901 #[default]
6902 NotSelected = 0,
6903 Selected = 1,
6904}
6905
6906impl HighDensityTrackJam {
6907 #[must_use]
6908 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
6909 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
6910 }
6911}
6912
6913#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
6915pub enum DesignatorSystemName {
6916 #[default]
6917 NotSpecified = 0,
6918 ANAAQ4 = 1000,
6919 ANAAQ7 = 1100,
6920 ANAAQ8 = 1200,
6921 ANAAQ14LANTIRN = 1300,
6922 ANAAQ19 = 1400,
6923 ANAAQ22ASAFIRE = 1500,
6924 ANAAQ22BSAFIRELP = 1600,
6925 ANAAQ22CStarSAFIREI = 1700,
6926 ANAAQ22DBRITEStar = 1800,
6927 ANAAQ24DIRCMNemesis = 1900,
6928 ANAAQ25LTS = 2000,
6929 ANAAQ28LITENINGII = 2100,
6930 ANAAQ30 = 2200,
6931 ANAAQ32 = 2300,
6932 ANAAQ33Sniper = 2400,
6933 ANAAQ37 = 2500,
6934 ANAAQ38 = 2600,
6935 ANAAQ40 = 2650,
6936 ANAAS32 = 2700,
6937 ANAAS35V = 2800,
6938 ANAAS37 = 2900,
6939 ANAAS38 = 3000,
6940 ANAAS44 = 3100,
6941 ANAAS46 = 3200,
6942 ANAAS49 = 3300,
6943 ANAAS51 = 3400,
6944 ANAAS52MTSA = 3500,
6945 ANALQ10 = 3600,
6946 ANASQ228 = 3700,
6947 ANAVQ25 = 4400,
6948 ANAVQ26 = 4500,
6949 ANGVS5 = 4600,
6950 ANPED1LLDR = 4700,
6951 TADSLRFD = 4800,
6952 MMSLRFD = 4900,
6953 AH1CNITE = 5000,
6954 MATES = 5100,
6955 TCV115 = 5200,
6956 TIM = 5300,
6957 TMS303 = 5400,
6958 TMY303 = 5500,
6959 ALRAD = 5600,
6960 RFTDL = 5700,
6961 VVLR = 5800,
6962 P0705HELL = 6000,
6963 P0708PULSE = 6100,
6964 HELD = 6200,
6965 TYPE105 = 6300,
6966 TYPE118 = 6400,
6967 TYPE121 = 6500,
6968 TYPE126 = 6600,
6969 TYPE629 = 6700,
6970 CLDS = 6800,
6971 TAV38 = 6900,
6972 TMV630 = 7000,
6973 ALTM1020 = 7100,
6974 ALATS = 7200,
6975 DarkStarLAMPS = 7300,
6976 GLTDII = 7400,
6977 MBTELRF = 7500,
6978 MarkVII = 7600,
6979 SIREV = 7700,
6980 ANAAQ16B = 7800,
6981 ANAAQ16DAESOP = 7900,
6982 ANAAQ21StarSAFIREIII = 8000,
6983 ANAAQ22EBRITEStar = 8100,
6984 ANAAQ36StarSAFIREII = 8200,
6985 ANAAS38ANiteHawk = 8300,
6986 ANAAS38BNiteHawk = 8400,
6987 ANAAS44C = 8500,
6988 ANAAS53CSP = 8600,
6989 ANASQ28ATFLIR = 8700,
6990 ANDAS1MTSB = 8800,
6991 ANPAQ1LTD = 8900,
6992 ANPAQ3MULE = 9000,
6993 ANPEQ1SOFLAM = 9090,
6994 ANPEQ3 = 9100,
6995 ANPEQ15ATPIAL = 9140,
6996 ANPEQ18IZLID1000P = 9150,
6997 ANTVQ2GVLLD = 9200,
6998 ANZSQ21EOS = 9300,
6999 ANZSQ22EOS = 9400,
7000 CIRCM = 9500,
7001 Guardian = 9600,
7002 IZLID200P = 9700,
7003 IZLID1000PW = 9800,
7004 MMS = 9900,
7005 MTADSPNVSArrowhead = 10000,
7006 RBS70 = 10100,
7007 RBS90 = 10200,
7008 TADSPNVS = 10300,
7009 COLIBRI = 10400,
7010 Damocles = 10500,
7011 I251Shkval = 10600,
7012 KPS53AVEOTS = 10700,
7013 StarSAFIRE380 = 10800,
7014 JANUSTEOS = 10900,
7015 LOTHAREOS = 11000,
7016 MK46MOD1EOS = 11100,
7017 MTK201MEEOS = 11200,
7018 ThalesMiradorMk2EOS = 11300,
7019 TPN1M4923EOS = 11400,
7020}
7021
7022impl DesignatorSystemName {
7023 #[must_use]
7024 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7025 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7026 }
7027}
7028
7029impl FieldSerialize for DesignatorSystemName {
7030 fn serialize_field(&self, buf: &mut BytesMut) {
7031 buf.put_u16(*self as u16);
7032 }
7033}
7034
7035impl FieldDeserialize for DesignatorSystemName {
7036 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
7037 Self::deserialize(buf)
7038 }
7039}
7040
7041impl FieldLen for DesignatorSystemName {
7042 fn field_len(&self) -> usize {
7043 2
7044 }
7045}
7046
7047#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7049#[deprecated(note = "Enumeration is deprecated and only serves an historical purpose")]
7050pub enum DesignatorCode {
7051 #[default]
7052 Other = 0,
7053}
7054
7055impl DesignatorCode {
7056 #[must_use]
7057 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7058 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7059 }
7060}
7061
7062impl FieldSerialize for DesignatorCode {
7063 fn serialize_field(&self, buf: &mut BytesMut) {
7064 buf.put_u16(*self as u16);
7065 }
7066}
7067
7068impl FieldDeserialize for DesignatorCode {
7069 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
7070 Self::deserialize(buf)
7071 }
7072}
7073
7074impl FieldLen for DesignatorCode {
7075 fn field_len(&self) -> usize {
7076 2
7077 }
7078}
7079
7080#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7082pub enum IFFSystemType {
7083 #[default]
7084 NotUsed = 0,
7085 MarkXXIIATCRBSTransponder = 1,
7086 MarkXXIIATCRBSInterrogator = 2,
7087 SovietTransponder = 3,
7088 SovietInterrogator = 4,
7089 RRBTransponder = 5,
7090 MarkXIIAInterrogator = 6,
7091 Mode5Interrogator = 7,
7092 ModeSInterrogator = 8,
7093 MarkXIIATransponder = 9,
7094 Mode5Transponder = 10,
7095 ModeSTransponder = 11,
7096 MarkXIIACombinedInterrogatorTransponder = 12,
7097 MarkXIICombinedInterrogatorTransponder = 13,
7098 TCASACASTransceiver = 14,
7099}
7100
7101impl IFFSystemType {
7102 #[must_use]
7103 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7104 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7105 }
7106}
7107
7108#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7110pub enum IFFSystemName {
7111 #[default]
7112 NotUsed = 0,
7113 GenericMarkX = 1,
7114 GenericMarkXII = 2,
7115 GenericATCRBS = 3,
7116 GenericSoviet = 4,
7117 GenericModeS = 5,
7118 GenericMarkXXIIATCRBS = 6,
7119 GenericMarkXXIIATCRBSModeS = 7,
7120 ARI5954 = 8,
7121 ARI5983 = 9,
7122 GenericRRB = 10,
7123 GenericMarkXIIA = 11,
7124 GenericMode5 = 12,
7125 GenericMarkXIIACombinedInterrogatorTransponder = 13,
7126 GenericMarkXIICombinedInterrogatorTransponder = 14,
7127 GenericTCASIACASITransceiver = 15,
7128 GenericTCASIIACASIITransceiver = 16,
7129 GenericMarkXA = 17,
7130 GenericMarkXSIF = 18,
7131}
7132
7133impl IFFSystemName {
7134 #[must_use]
7135 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7136 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7137 }
7138}
7139
7140#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7142pub enum IFFSystemMode {
7143 #[default]
7144 NoStatement = 0,
7145 Off = 1,
7146 Standby = 2,
7147 Normal = 3,
7148 Emergency = 4,
7149 LoworLowSensitivity = 5,
7150}
7151
7152impl IFFSystemMode {
7153 #[must_use]
7154 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7155 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7156 }
7157}
7158
7159#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7161pub enum IFFLayerSpecificInformation {
7162 #[default]
7163 NoLayerSpecificInformationIsPresent = 0,
7164}
7165
7166impl IFFLayerSpecificInformation {
7167 #[must_use]
7168 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7169 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7170 }
7171}
7172
7173#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7175pub enum IFFAlternateMode4ChallengeReply {
7176 #[default]
7177 NoStatement = 0,
7178 Valid = 1,
7179 Invalid = 2,
7180 Noresponse = 3,
7181 UnabletoVerify = 4,
7182}
7183
7184impl IFFAlternateMode4ChallengeReply {
7185 #[must_use]
7186 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7187 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7188 }
7189}
7190
7191#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7193pub enum IFFSystemType1OperationalParameter1 {
7194 #[default]
7195 NoOperationalParameter1Data = 0,
7196}
7197
7198impl IFFSystemType1OperationalParameter1 {
7199 #[must_use]
7200 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7201 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7202 }
7203}
7204
7205#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7207pub enum IFFSystemType1OperationalParameter2 {
7208 #[default]
7209 NoOperationalParameter2Data = 0,
7210}
7211
7212impl IFFSystemType1OperationalParameter2 {
7213 #[must_use]
7214 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7215 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7216 }
7217}
7218
7219#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7221pub enum SubcategoriesforLandCategory200Mammal {
7222 #[default]
7223 SmallDog = 1,
7224 Chihuahua = 2,
7225 MediumDog = 10,
7226 AustralianCattleDog = 11,
7227 LargeDog = 20,
7228 GermanShepherd = 21,
7229 VeryLargeDog = 30,
7230 GiantTurkishKangal = 31,
7231 Sheep = 40,
7232 Goat = 41,
7233 Pig = 50,
7234 Cow = 60,
7235 Ox = 61,
7236 OxWithCart = 70,
7237 Horse = 80,
7238 Donkey = 81,
7239 Mule = 82,
7240 HorseWithRider = 90,
7241 HorseWithCargo = 91,
7242 DonkeyWithRider = 92,
7243 DonkeyWithCargo = 93,
7244 MuleWithRider = 94,
7245 MuleWithCargo = 95,
7246 Camel = 100,
7247 DromedaryCamel = 101,
7248 BactrianCamel = 102,
7249 DromedaryCamelWithRider = 110,
7250 DromedaryCamelWithCargo = 111,
7251 Rat = 200,
7252}
7253
7254impl SubcategoriesforLandCategory200Mammal {
7255 #[must_use]
7256 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7257 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7258 }
7259}
7260
7261#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7263pub enum SubcategoriesforLandCategory201Reptile {
7264 #[default]
7265 NewZealandNorthernTuatara = 1,
7266 Monitor = 3,
7267 Gecko = 8,
7268 Iguana = 13,
7269 Chameleon = 17,
7270 NonVenomousSnake = 30,
7271 Boa = 31,
7272 Python = 35,
7273 Bullsnake = 39,
7274 Kingsnake = 43,
7275 VenomousSnake = 60,
7276 Rattlesnake = 61,
7277 Copperhead = 62,
7278 Cottonmouth = 63,
7279 Taipan = 64,
7280 Viper = 65,
7281 Cobra = 66,
7282 AustralianBrownSnake = 67,
7283 Tortoise = 90,
7284 Turtle = 100,
7285 AmericanAlligator = 120,
7286 Crocodile = 121,
7287 AustralianFreshwaterCrocodile = 122,
7288}
7289
7290impl SubcategoriesforLandCategory201Reptile {
7291 #[must_use]
7292 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7293 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7294 }
7295}
7296
7297#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7299pub enum SubcategoriesforLandCategory202Amphibian {
7300 #[default]
7301 Frog = 1,
7302 Toad = 2,
7303 Salamander = 170,
7304 Caecilian = 230,
7305}
7306
7307impl SubcategoriesforLandCategory202Amphibian {
7308 #[must_use]
7309 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7310 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7311 }
7312}
7313
7314#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7316pub enum SubcategoriesforLandCategory203Insect {
7317 #[default]
7318 Beetle = 1,
7319 Mantis = 60,
7320 Cockroach = 70,
7321 ArmyAnt = 80,
7322 FireAnt = 81,
7323 Grasshopper = 90,
7324 Centipede = 100,
7325}
7326
7327impl SubcategoriesforLandCategory203Insect {
7328 #[must_use]
7329 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7330 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7331 }
7332}
7333
7334#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7336pub enum SubcategoriesforLandCategory204Arachnid {
7337 #[default]
7338 Spider = 1,
7339 Tick = 20,
7340 Scorpion = 30,
7341 Harvestmen = 40,
7342 Mite = 50,
7343}
7344
7345impl SubcategoriesforLandCategory204Arachnid {
7346 #[must_use]
7347 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7348 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7349 }
7350}
7351
7352#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7354pub enum SubcategoriesforLandCategory205Mollusk {
7355 #[default]
7356 Snail = 1,
7357 Slug = 50,
7358}
7359
7360impl SubcategoriesforLandCategory205Mollusk {
7361 #[must_use]
7362 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7363 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7364 }
7365}
7366
7367#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7369pub enum SubcategoriesforLandCategory206Marsupial {
7370 #[default]
7371 BrownFourEyedOpossum = 1,
7372 BushyTailedOpossum = 2,
7373 TatesShrewOpossum = 90,
7374 GreaterBilby = 100,
7375 TasmanianDevil = 110,
7376 BrushTailedRockWallaby = 150,
7377 EasternWallaroo = 160,
7378 RedKangaroo = 170,
7379 QueenslandKoala = 200,
7380 SouthernHairyNosedWombat = 205,
7381 BrushtailPossum = 210,
7382 SugarGlider = 211,
7383}
7384
7385impl SubcategoriesforLandCategory206Marsupial {
7386 #[must_use]
7387 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7388 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7389 }
7390}
7391
7392#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7394pub enum SubcategoriesforAirCategory200Bird {
7395 #[default]
7396 Penguin = 1,
7397 Seagull = 2,
7398 Pelican = 3,
7399 Albatross = 4,
7400 Swan = 5,
7401 Cormorant = 6,
7402 Heron = 7,
7403 Crane = 8,
7404 Osprey = 9,
7405 Loon = 10,
7406 Stork = 11,
7407 Flamingo = 12,
7408 Duck = 13,
7409 Ostrich = 20,
7410 Emu = 21,
7411 Chicken = 22,
7412 BlackBird = 30,
7413 Starling = 31,
7414 Budgerigar = 32,
7415 CanadianGoose = 40,
7416 Crow = 41,
7417 Eagle = 50,
7418 Vulture = 55,
7419 Falcon = 60,
7420 Hawk = 65,
7421 Owl = 70,
7422 Kite = 80,
7423}
7424
7425impl SubcategoriesforAirCategory200Bird {
7426 #[must_use]
7427 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7428 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7429 }
7430}
7431
7432#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7434pub enum SubcategoriesforAirCategory201Insect {
7435 #[default]
7436 Moth = 1,
7437 Butterfly = 2,
7438 Fly = 20,
7439 Mosquito = 30,
7440 Wasp = 40,
7441 Bee = 50,
7442 Beetle = 60,
7443 Dragonfly = 70,
7444 Locust = 80,
7445}
7446
7447impl SubcategoriesforAirCategory201Insect {
7448 #[must_use]
7449 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7450 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7451 }
7452}
7453
7454#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7456pub enum SubcategoriesforAirCategory202Mammal {
7457 #[default]
7458 Bat = 1,
7459 FlyingSquirrel = 10,
7460 GlidingPossum = 20,
7461}
7462
7463impl SubcategoriesforAirCategory202Mammal {
7464 #[must_use]
7465 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7466 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7467 }
7468}
7469
7470#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7472pub enum SubcategoriesforSubsurfaceCategory200Fish {
7473 #[default]
7474 ForageFishSmallSchooling = 1,
7475 Herring = 2,
7476 Sardines = 3,
7477 Krill = 4,
7478 Squid = 5,
7479 MediumSchoolingFish = 30,
7480 Hake = 31,
7481 Cod = 32,
7482 Haddock = 33,
7483 Mackerel = 34,
7484 LargeSchoolingFish = 60,
7485 Tuna = 61,
7486 SmallShark = 90,
7487 DogfishShark = 91,
7488 MediumShark = 120,
7489 MakoShark = 121,
7490 HammerheadShark = 122,
7491 LargeShark = 150,
7492 GreatWhiteShark = 151,
7493 TigerShark = 152,
7494 BlueShark = 153,
7495 WhaleShark = 154,
7496 Skate = 180,
7497 Stingray = 181,
7498 Eel = 190,
7499 Marlin = 200,
7500 Swordfish = 201,
7501}
7502
7503impl SubcategoriesforSubsurfaceCategory200Fish {
7504 #[must_use]
7505 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7506 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7507 }
7508}
7509
7510#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7512pub enum SubcategoriesforSubsurfaceCategory201Mammal {
7513 #[default]
7514 Whale = 1,
7515 BeakedWhale = 2,
7516 BelugaWhale = 3,
7517 BlueWhale = 4,
7518 BottlenoseWhale = 5,
7519 NorthernBottlenoseWhale = 6,
7520 SouthernBottlenoseWhale = 7,
7521 BowheadWhale = 8,
7522 BrydesWhale = 9,
7523 DwarfSpermWhale = 10,
7524 FinbackWhale = 11,
7525 GrayWhale = 12,
7526 HumpbackWhale = 13,
7527 LongFinnedPilotWhale = 14,
7528 MinkeWhale = 15,
7529 NorthernMinkeWhale = 16,
7530 SouthernMinkeWhale = 17,
7531 NarwhalWhale = 18,
7532 OrcaWhale = 19,
7533 PygmySpermWhale = 20,
7534 RightWhale = 21,
7535 NorthAtlanticRightWhale = 22,
7536 NorthPacificRightWhale = 23,
7537 SouthernRightWhale = 24,
7538 SeiWhale = 25,
7539 ShortFinnedPilotWhale = 26,
7540 SpermWhale = 27,
7541 Dolphin = 50,
7542 BottlenoseDolphin = 51,
7543 BottlenoseIndoPacificDolphin = 52,
7544 BottlenoseBurrunanDolphin = 53,
7545 AtlanticSpottedDolphin = 54,
7546 AustralianSnubfinDolphin = 55,
7547 ChileanBlackDolphin = 56,
7548 ChineseWhiteDolphin = 57,
7549 ClymeneDolphin = 58,
7550 Porpoise = 100,
7551 HarbourPorpoise = 101,
7552 CalifornianPorpoise = 102,
7553 DallsPorpoise = 103,
7554 BurmeistersPorpoise = 104,
7555 Seal = 120,
7556 BeardedSeal = 121,
7557 HarborSeal = 122,
7558 FurSeal = 123,
7559 WeddellSeal = 124,
7560 ElephantSeal = 125,
7561 SeaLion = 130,
7562 AustralianSeaLion = 131,
7563 CaliforniaSeaLion = 132,
7564 Walrus = 140,
7565 AtlanticWalrus = 141,
7566 PacificWalrus = 142,
7567 Otter = 150,
7568 SeaOtter = 151,
7569 Manatee = 160,
7570 FloridaManatee = 161,
7571 Dugongs = 162,
7572 PolarBear = 200,
7573}
7574
7575impl SubcategoriesforSubsurfaceCategory201Mammal {
7576 #[must_use]
7577 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7578 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7579 }
7580}
7581
7582#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7584pub enum SubcategoriesforSubsurfaceCategory202Mollusk {
7585 #[default]
7586 Snail = 1,
7587 Slug = 10,
7588 Octopus = 20,
7589 Squid = 30,
7590 Cuttlefish = 40,
7591 Clam = 50,
7592 Muscle = 60,
7593 Oyster = 70,
7594 Scallop = 80,
7595}
7596
7597impl SubcategoriesforSubsurfaceCategory202Mollusk {
7598 #[must_use]
7599 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7600 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7601 }
7602}
7603
7604#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7606pub enum SubcategoriesforSubsurfaceCategory203Crustacean {
7607 #[default]
7608 Shrimp = 1,
7609 SnappingShrimp = 2,
7610 Crayfish = 10,
7611 Lobster = 20,
7612 Crab = 30,
7613}
7614
7615impl SubcategoriesforSubsurfaceCategory203Crustacean {
7616 #[must_use]
7617 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7618 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7619 }
7620}
7621
7622#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7624pub enum SubcategoriesforSubsurfaceCategory204Insect {
7625 #[default]
7626 SeaSkater = 1,
7627 WaterBeetle = 2,
7628}
7629
7630impl SubcategoriesforSubsurfaceCategory204Insect {
7631 #[must_use]
7632 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7633 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7634 }
7635}
7636
7637#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7639pub enum AnimalLifeformGroupSizeRangeEnumerationforallDomains {
7640 #[default]
7641 Numberofanimalsrangefrom201to249 = 201,
7642 Numberofanimalsrangefrom250to299 = 202,
7643 Numberofanimalsrangefrom300to399 = 203,
7644 Numberofanimalsrangefrom400to499 = 204,
7645 Numberofanimalsrangefrom500to999 = 205,
7646 Numberofanimalsrangefrom1000to1499 = 206,
7647 Numberofanimalsrangefrom1500to1999 = 207,
7648 Numberofanimalsrangefrom2000to2999 = 208,
7649 Numberofanimalsrangefrom3000to4999 = 210,
7650 Numberofanimalsrangefrom5000to6999 = 212,
7651 Numberofanimalsrangefrom7000to9999 = 214,
7652 Numberofanimalsrangefrom10000to19999 = 216,
7653 Numberofanimalsrangefrom20000to50000 = 218,
7654 Numberofanimalsrangegreaterthan50000 = 220,
7655}
7656
7657impl AnimalLifeformGroupSizeRangeEnumerationforallDomains {
7658 #[must_use]
7659 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7660 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7661 }
7662}
7663
7664#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7666pub enum SpecificDimensionEnumerationsforLandAreaSize {
7667 #[default]
7668 SmallArea = 222,
7669 SmallAreaDense = 223,
7670 MediumArea = 224,
7671 MediumAreaDense = 225,
7672 LargeArea = 226,
7673 LargeAreaDense = 227,
7674}
7675
7676impl SpecificDimensionEnumerationsforLandAreaSize {
7677 #[must_use]
7678 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7679 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7680 }
7681}
7682
7683#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7685pub enum SpecificDimensionEnumerationsforAirAreaSize {
7686 #[default]
7687 SmallFlockSwarm = 222,
7688 SmallFlockSwarmDense = 223,
7689 MediumFlockSwarm = 224,
7690 MediumFlockSwarmDense = 225,
7691 LargeFlockSwarm = 226,
7692 LargeFlockSwarmDense = 227,
7693}
7694
7695impl SpecificDimensionEnumerationsforAirAreaSize {
7696 #[must_use]
7697 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7698 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7699 }
7700}
7701
7702#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7704pub enum AddSpecificDimensionEnumerationsforSubsurfaceAreaSize {
7705 #[default]
7706 SmallSchool = 222,
7707 SmallSchoolDense = 223,
7708 MediumSchool = 224,
7709 MediumSchoolDense = 225,
7710 LargeSchool = 226,
7711 LargeSchoolDense = 227,
7712}
7713
7714impl AddSpecificDimensionEnumerationsforSubsurfaceAreaSize {
7715 #[must_use]
7716 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7717 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7718 }
7719}
7720
7721#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7723pub enum AddVariantsforLandCategory200Mammal {
7724 #[default]
7725 AnimalwithaMaleChildRider = 1,
7726 AnimalwithaFemaleChildRider = 2,
7727 AnimalwithanAdultMaleRider = 3,
7728 AnimalwithanAdultFemaleRider = 4,
7729 AnimalHarnessedtoaPlow = 5,
7730 AnimalHarnessedtoaCart = 6,
7731}
7732
7733impl AddVariantsforLandCategory200Mammal {
7734 #[must_use]
7735 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7736 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7737 }
7738}
7739
7740#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7742pub enum VariantsforLandCategoriesReptilesAmphibiansInsectsandArachnids {
7743 #[default]
7744 Black = 1,
7745 Green = 2,
7746 Spotted = 3,
7747 Red = 4,
7748 Brown = 5,
7749}
7750
7751impl VariantsforLandCategoriesReptilesAmphibiansInsectsandArachnids {
7752 #[must_use]
7753 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7754 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7755 }
7756}
7757
7758#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7760pub enum VariantsforAirCategory200Bird {
7761 #[default]
7762 BirdwithFish = 1,
7763 VPatternFlockShape = 2,
7764 CircularFlockShape = 3,
7765 IrregularFlockShape = 4,
7766}
7767
7768impl VariantsforAirCategory200Bird {
7769 #[must_use]
7770 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7771 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7772 }
7773}
7774
7775#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7777pub enum AddVariantsforAirCategory201Insect {
7778 #[default]
7779 VerticalShapedInsectSwarm = 1,
7780 CircularShapedInsectSwarm = 2,
7781 IrregularShapedInsectSwarm = 3,
7782}
7783
7784impl AddVariantsforAirCategory201Insect {
7785 #[must_use]
7786 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7787 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7788 }
7789}
7790
7791#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7793pub enum AddVariantsforSubsurfaceCategoriesFishMolluskCrustaceanandInsect {
7794 #[default]
7795 Black = 1,
7796 Green = 2,
7797 Spotted = 3,
7798 Red = 4,
7799 Brown = 5,
7800 Blue = 6,
7801 Silver = 7,
7802 Grey = 8,
7803}
7804
7805impl AddVariantsforSubsurfaceCategoriesFishMolluskCrustaceanandInsect {
7806 #[must_use]
7807 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7808 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7809 }
7810}
7811
7812#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7814pub enum VariantsforSubsurfaceCategory201Mammal {
7815 #[default]
7816 Singing = 1,
7817 Spouting = 2,
7818}
7819
7820impl VariantsforSubsurfaceCategory201Mammal {
7821 #[must_use]
7822 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7823 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7824 }
7825}
7826
7827#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7829pub enum UAStateChangeUpdateIndicator {
7830 #[default]
7831 StateUpdate = 0,
7832 ChangedDataUpdate = 1,
7833}
7834
7835impl UAStateChangeUpdateIndicator {
7836 #[must_use]
7837 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7838 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7839 }
7840}
7841
7842impl FieldSerialize for UAStateChangeUpdateIndicator {
7843 fn serialize_field(&self, buf: &mut BytesMut) {
7844 buf.put_u8(*self as u8);
7845 }
7846}
7847
7848impl FieldDeserialize for UAStateChangeUpdateIndicator {
7849 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
7850 Self::deserialize(buf)
7851 }
7852}
7853
7854impl FieldLen for UAStateChangeUpdateIndicator {
7855 fn field_len(&self) -> usize {
7856 1
7857 }
7858}
7859
7860#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7862pub enum UAAcousticSystemName {
7863 #[default]
7864 Other = 0,
7865 ANBQQ5 = 1,
7866 ANSSQ62 = 2,
7867 ANSQS23 = 3,
7868 ANSQS26 = 4,
7869 ANSQS53 = 5,
7870 ALFS = 6,
7871 LFA = 7,
7872 ANAQS901 = 8,
7873 ANAQS902 = 9,
7874}
7875
7876impl UAAcousticSystemName {
7877 #[must_use]
7878 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7879 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7880 }
7881}
7882
7883impl FieldSerialize for UAAcousticSystemName {
7884 fn serialize_field(&self, buf: &mut BytesMut) {
7885 buf.put_u16(*self as u16);
7886 }
7887}
7888
7889impl FieldDeserialize for UAAcousticSystemName {
7890 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
7891 Self::deserialize(buf)
7892 }
7893}
7894
7895impl FieldLen for UAAcousticSystemName {
7896 fn field_len(&self) -> usize {
7897 2
7898 }
7899}
7900
7901#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7903pub enum UAAcousticEmitterSystemFunction {
7904 #[default]
7905 Other = 0,
7906 Platformsearchdetecttrack = 1,
7907 Navigation = 2,
7908 Minehunting = 3,
7909 Weaponsearchdetecttrackdetect = 4,
7910}
7911
7912impl UAAcousticEmitterSystemFunction {
7913 #[must_use]
7914 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7915 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
7916 }
7917}
7918
7919impl FieldSerialize for UAAcousticEmitterSystemFunction {
7920 fn serialize_field(&self, buf: &mut BytesMut) {
7921 buf.put_u8(*self as u8);
7922 }
7923}
7924
7925impl FieldDeserialize for UAAcousticEmitterSystemFunction {
7926 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
7927 Self::deserialize(buf)
7928 }
7929}
7930
7931impl FieldLen for UAAcousticEmitterSystemFunction {
7932 fn field_len(&self) -> usize {
7933 1
7934 }
7935}
7936
7937#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7939pub enum UAActiveEmissionParameterIndex {
7940 #[default]
7941 Other = 0,
7942}
7943
7944impl UAActiveEmissionParameterIndex {
7945 #[must_use]
7946 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7947 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7948 }
7949}
7950
7951#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7953pub enum UAScanPattern {
7954 #[default]
7955 Scanpatternnotused = 0,
7956 Conical = 1,
7957 Helical = 2,
7958 Raster = 3,
7959 Sectorsearch = 4,
7960 Continuoussearch = 5,
7961}
7962
7963impl UAScanPattern {
7964 #[must_use]
7965 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7966 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7967 }
7968}
7969
7970#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
7972pub enum UAPassiveParameterIndex {
7973 #[default]
7974 Other = 0,
7975}
7976
7977impl UAPassiveParameterIndex {
7978 #[must_use]
7979 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
7980 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
7981 }
7982}
7983
7984impl FieldSerialize for UAPassiveParameterIndex {
7985 fn serialize_field(&self, buf: &mut BytesMut) {
7986 buf.put_u16(*self as u16);
7987 }
7988}
7989
7990impl FieldDeserialize for UAPassiveParameterIndex {
7991 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
7992 Self::deserialize(buf)
7993 }
7994}
7995
7996impl FieldLen for UAPassiveParameterIndex {
7997 fn field_len(&self) -> usize {
7998 2
7999 }
8000}
8001
8002#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8004pub enum UAAdditionalPassiveActivityParameterIndex {
8005 #[default]
8006 Other = 0,
8007}
8008
8009impl UAAdditionalPassiveActivityParameterIndex {
8010 #[must_use]
8011 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8012 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8013 }
8014}
8015
8016#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8018pub enum TransmitterMajorModulation {
8019 #[default]
8020 NoStatement = 0,
8021 Amplitude = 1,
8022 AmplitudeandAngle = 2,
8023 Angle = 3,
8024 Combination = 4,
8025 Pulse = 5,
8026 Unmodulated = 6,
8027 CarrierPhaseShiftModulation = 7,
8028 SATCOM = 8,
8029}
8030
8031impl TransmitterMajorModulation {
8032 #[must_use]
8033 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8034 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8035 }
8036}
8037
8038#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8040pub enum TransmitterDetailAmplitudeModulation {
8041 #[default]
8042 Other = 0,
8043 AFSK = 1,
8044 AM = 2,
8045 CW = 3,
8046 DSB = 4,
8047 ISB = 5,
8048 LSB = 6,
8049 SSBFull = 7,
8050 SSBReduc = 8,
8051 USB = 9,
8052 VSB = 10,
8053}
8054
8055impl TransmitterDetailAmplitudeModulation {
8056 #[must_use]
8057 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8058 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8059 }
8060}
8061
8062#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8064pub enum TransmitterDetailAmplitudeandAngleModulation {
8065 #[default]
8066 Other = 0,
8067 AmplitudeandAngle = 1,
8068}
8069
8070impl TransmitterDetailAmplitudeandAngleModulation {
8071 #[must_use]
8072 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8073 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8074 }
8075}
8076
8077#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8079pub enum TransmitterDetailAngleModulation {
8080 #[default]
8081 Other = 0,
8082 FM = 1,
8083 FSK = 2,
8084 PM = 3,
8085 MSK = 4,
8086}
8087
8088impl TransmitterDetailAngleModulation {
8089 #[must_use]
8090 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8091 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8092 }
8093}
8094
8095#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8097pub enum TransmitterDetailCombinationModulation {
8098 #[default]
8099 Other = 0,
8100 AmplitudeAnglePulse = 1,
8101}
8102
8103impl TransmitterDetailCombinationModulation {
8104 #[must_use]
8105 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8106 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8107 }
8108}
8109
8110#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8112pub enum TransmitterDetailPulseModulation {
8113 #[default]
8114 Other = 0,
8115 Pulse = 1,
8116 XBandTACANPulse = 2,
8117 YBandTACANPulse = 3,
8118}
8119
8120impl TransmitterDetailPulseModulation {
8121 #[must_use]
8122 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8123 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8124 }
8125}
8126
8127#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8129pub enum TransmitterDetailUnmodulatedModulation {
8130 #[default]
8131 Other = 0,
8132 ContinuousWaveemissionofanunmodulatedcarrier = 1,
8133}
8134
8135impl TransmitterDetailUnmodulatedModulation {
8136 #[must_use]
8137 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8138 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8139 }
8140}
8141
8142#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8144pub enum TransmitterDetailCarrierPhaseShiftModulation {
8145 #[default]
8146 Other = 0,
8147}
8148
8149impl TransmitterDetailCarrierPhaseShiftModulation {
8150 #[must_use]
8151 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8152 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8153 }
8154}
8155
8156#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8158pub enum TransmitterModulationTypeSystem {
8159 #[default]
8160 Other = 0,
8161 GenericRadioorSimpleIntercom = 1,
8162 HAVEQUICKI = 2,
8163 HAVEQUICKII = 3,
8164 SATURN = 4,
8165 SINCGARS = 5,
8166 CCTTSINCGARS = 6,
8167 EPLRS = 7,
8168 JTIDSMIDS = 8,
8169 Link11 = 9,
8170 Link11B = 10,
8171 LBandSATCOM = 11,
8172 EnhancedSINCGARS7_3 = 12,
8173 NavigationAid = 13,
8174}
8175
8176impl TransmitterModulationTypeSystem {
8177 #[must_use]
8178 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8179 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8180 }
8181}
8182
8183#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8185pub enum TransmitterTransmitState {
8186 #[default]
8187 Off = 0,
8188 Onbutnottransmitting = 1,
8189 Onandtransmitting = 2,
8190}
8191
8192impl TransmitterTransmitState {
8193 #[must_use]
8194 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8195 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8196 }
8197}
8198
8199impl FieldSerialize for TransmitterTransmitState {
8200 fn serialize_field(&self, buf: &mut BytesMut) {
8201 buf.put_u8(*self as u8);
8202 }
8203}
8204
8205impl FieldDeserialize for TransmitterTransmitState {
8206 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8207 Self::deserialize(buf)
8208 }
8209}
8210
8211impl FieldLen for TransmitterTransmitState {
8212 fn field_len(&self) -> usize {
8213 1
8214 }
8215}
8216
8217#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8219pub enum TransmitterInputSource {
8220 #[default]
8221 Other = 0,
8222 Pilot = 1,
8223 Copilot = 2,
8224 FirstOfficer = 3,
8225 Driver = 4,
8226 Loader = 5,
8227 Gunner = 6,
8228 Commander = 7,
8229 DigitalDataDevice = 8,
8230 Intercom = 9,
8231 AudioJammer = 10,
8232 DataJammer = 11,
8233 GPSJammer = 12,
8234 GPSMeaconer = 13,
8235 SATCOMUplinkJammer = 14,
8236}
8237
8238impl TransmitterInputSource {
8239 #[must_use]
8240 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8241 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8242 }
8243}
8244
8245impl FieldSerialize for TransmitterInputSource {
8246 fn serialize_field(&self, buf: &mut BytesMut) {
8247 buf.put_u8(*self as u8);
8248 }
8249}
8250
8251impl FieldDeserialize for TransmitterInputSource {
8252 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8253 Self::deserialize(buf)
8254 }
8255}
8256
8257impl FieldLen for TransmitterInputSource {
8258 fn field_len(&self) -> usize {
8259 1
8260 }
8261}
8262
8263#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8265pub enum TransmitterCryptoSystem {
8266 #[default]
8267 NoEncryptionDevice = 0,
8268 KY28 = 1,
8269 KY58 = 2,
8270 NarrowSpectrumSecureVoice = 3,
8271 WideSpectrumSecureVoice = 4,
8272 SINCGARSICOM = 5,
8273 KY75 = 6,
8274 KY100 = 7,
8275 KY57 = 8,
8276 KYV5 = 9,
8277 Link11KG40AP = 10,
8278 Link11BKG40AS = 11,
8279 Link11KG40AR = 12,
8280 KGV135A = 13,
8281 TacticalSecureVoice = 14,
8282}
8283
8284impl TransmitterCryptoSystem {
8285 #[must_use]
8286 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8287 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8288 }
8289}
8290
8291impl FieldSerialize for TransmitterCryptoSystem {
8292 fn serialize_field(&self, buf: &mut BytesMut) {
8293 buf.put_u16(*self as u16);
8294 }
8295}
8296
8297impl FieldDeserialize for TransmitterCryptoSystem {
8298 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8299 Self::deserialize(buf)
8300 }
8301}
8302
8303impl FieldLen for TransmitterCryptoSystem {
8304 fn field_len(&self) -> usize {
8305 2
8306 }
8307}
8308
8309#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8311pub enum TransmitterAntennaPatternType {
8312 #[default]
8313 Isotropic = 0,
8314 Beam = 1,
8315 Sphericalharmonic = 2,
8316 TransmitterRadiationVolume = 4,
8317 BeamandTransmitterRadiationVolume = 5,
8318 Omnidirectional = 6,
8319}
8320
8321impl TransmitterAntennaPatternType {
8322 #[must_use]
8323 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8324 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8325 }
8326}
8327
8328impl FieldSerialize for TransmitterAntennaPatternType {
8329 fn serialize_field(&self, buf: &mut BytesMut) {
8330 buf.put_u16(*self as u16);
8331 }
8332}
8333
8334impl FieldDeserialize for TransmitterAntennaPatternType {
8335 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8336 Self::deserialize(buf)
8337 }
8338}
8339
8340impl FieldLen for TransmitterAntennaPatternType {
8341 fn field_len(&self) -> usize {
8342 2
8343 }
8344}
8345
8346#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8348pub enum TransmitterAntennaPatternReferenceSystem {
8349 #[default]
8350 WorldCoordinates = 1,
8351 EntityCoordinates = 2,
8352}
8353
8354impl TransmitterAntennaPatternReferenceSystem {
8355 #[must_use]
8356 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8357 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8358 }
8359}
8360
8361impl FieldSerialize for TransmitterAntennaPatternReferenceSystem {
8362 fn serialize_field(&self, buf: &mut BytesMut) {
8363 buf.put_u8(*self as u8);
8364 }
8365}
8366
8367impl FieldDeserialize for TransmitterAntennaPatternReferenceSystem {
8368 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8369 Self::deserialize(buf)
8370 }
8371}
8372
8373impl FieldLen for TransmitterAntennaPatternReferenceSystem {
8374 fn field_len(&self) -> usize {
8375 1
8376 }
8377}
8378
8379#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8381pub enum CCTTSINCGARSStartofMessage {
8382 #[default]
8383 Notstartofmessage = 0,
8384 StartofMessage = 1,
8385}
8386
8387impl CCTTSINCGARSStartofMessage {
8388 #[must_use]
8389 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8390 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8391 }
8392}
8393
8394#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8396pub enum CCTTSINCGARSClearChannel {
8397 #[default]
8398 Notclearchannel = 0,
8399 Clearchannel = 1,
8400}
8401
8402impl CCTTSINCGARSClearChannel {
8403 #[must_use]
8404 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8405 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8406 }
8407}
8408
8409#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8411pub enum TimeSlotAllocationLevel {
8412 #[default]
8413 LowFidelityLevel0 = 0,
8414 LowFidelityLevel1 = 1,
8415 MediumFidelityLevel2 = 2,
8416 MediumFidelityLevel3 = 3,
8417 HighFidelityLevel4 = 4,
8418}
8419
8420impl TimeSlotAllocationLevel {
8421 #[must_use]
8422 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8423 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8424 }
8425}
8426
8427#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8429pub enum JTIDSMIDSModulationParametersTransmittingTerminalPrimaryMode {
8430 #[default]
8431 NTR = 1,
8432 JTIDSUnitParticipant = 2,
8433}
8434
8435impl JTIDSMIDSModulationParametersTransmittingTerminalPrimaryMode {
8436 #[must_use]
8437 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8438 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8439 }
8440}
8441
8442#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8444pub enum JTIDSMIDSModulationParametersTransmittingTerminalSecondaryMode {
8445 #[default]
8446 None = 0,
8447 NetPositionReference = 1,
8448 PrimaryNavigationController = 2,
8449 SecondaryNavigationController = 3,
8450}
8451
8452impl JTIDSMIDSModulationParametersTransmittingTerminalSecondaryMode {
8453 #[must_use]
8454 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8455 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8456 }
8457}
8458
8459#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8461pub enum JTIDSMIDSModulationParametersSynchronizationState {
8462 #[default]
8463 NoStatement = 0,
8464 InitialNetEntry = 1,
8465 CoarseSynchronization = 2,
8466 FineSynchronization = 3,
8467 SynchronizationMaintenance = 4,
8468}
8469
8470impl JTIDSMIDSModulationParametersSynchronizationState {
8471 #[must_use]
8472 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8473 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8474 }
8475}
8476
8477#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8479pub enum MessageTypeIdentifier {
8480 #[default]
8481 JTIDSHeaderMessages = 0,
8482 RTTAB = 1,
8483 RTTReply = 2,
8484 JTIDSVoiceCVSD = 3,
8485 JTIDSVoiceLPC10 = 4,
8486 JTIDSVoiceLPC12 = 5,
8487 JTIDSLET = 6,
8488 VMF = 7,
8489}
8490
8491impl MessageTypeIdentifier {
8492 #[must_use]
8493 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8494 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8495 }
8496}
8497
8498#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8500pub enum SignalUserProtocolIdentificationNumber {
8501 #[default]
8502 CCSIL = 1,
8503 A2ATDSINCGARSERF = 5,
8504 A2ATDCAC2 = 6,
8505 BattleCommand = 20,
8506 AFIWCIADSTrackReport = 30,
8507 AFIWCIADSCommC2Message = 31,
8508 AFIWCIADSGroundControlInterceptorCommand = 32,
8509 AFIWCVoiceTextMessage = 35,
8510 ModSAFTextRadio = 177,
8511 CCTTSINCGARSERFLOCKOUT = 200,
8512 CCTTSINCGARSERFHOPSET = 201,
8513 CCTTSINCGARSOTAR = 202,
8514 CCTTSINCGARSDATA = 203,
8515 ModSAFFWAForwardAirController = 546,
8516 ModSAFThreatADAC3 = 832,
8517 F16MTCAFAPDProtocol = 1000,
8518 F16MTCIDLProtocol = 1100,
8519 AutomaticIdentificationSystem = 1371,
8520 ModSAFArtilleryFireControl = 4570,
8521 AGTS = 5361,
8522 GC3 = 6000,
8523 WNCPdata = 6010,
8524 Spokentextmessage = 6020,
8525 LongbowIDMmessage = 6661,
8526 ComancheIDMmessage = 6662,
8527 LongbowAirborneTACFIREMessage = 6663,
8528 LongbowGroundTACFIREMessage = 6664,
8529 LongbowAFAPDMessage = 6665,
8530 LongbowERFmessage = 6666,
8531 VMFIDM = 7000,
8532 CSARRadioSurvivorMessage = 7010,
8533 CSARRadioInterrogatorMessage = 7020,
8534 ImageFileTransferMessage = 7030,
8535 GeotagDataMessage = 7040,
8536 TacticalVideoRegenerationData = 7050,
8537}
8538
8539impl SignalUserProtocolIdentificationNumber {
8540 #[must_use]
8541 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8542 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
8543 }
8544}
8545
8546#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8548pub enum SignalTDLType {
8549 #[default]
8550 Other = 0,
8551 PADIL = 1,
8552 NATOLink1 = 2,
8553 ATDL1 = 3,
8554 Link11B = 4,
8555 SituationalAwarenessDataLink = 5,
8556 Link16LegacyFormatJTIDSTADILJ = 6,
8557 Link16LegacyFormatJTIDSFDLTADILJ = 7,
8558 Link11 = 8,
8559 IJMS = 9,
8560 Link4A = 10,
8561 Link4C = 11,
8562 TIBS = 12,
8563 ATL = 13,
8564 ConstantSource = 14,
8565 AbbreviatedCommandandControl = 15,
8566 MILSTAR = 16,
8567 ATHS = 17,
8568 OTHGOLD = 18,
8569 TACELINT = 19,
8570 WeaponsDataLink = 20,
8571 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
8572 AbbreviatedCommandandControl_ = 21,
8573 EnhancedPositionLocationReportingSystem = 22,
8574 PositionLocationReportingSystem = 23,
8575 SINCGARS = 24,
8576 HAVEQUICKI = 25,
8577 HAVEQUICKII = 26,
8578 SATURN = 27,
8579 IntraFlightDataLink1 = 28,
8580 IntraFlightDataLink2 = 29,
8581 ImprovedDataModem = 30,
8582 AirForceApplicationProgramDevelopment = 31,
8583 CooperativeEngagementCapability = 32,
8584 ForwardAreaAirDefense = 33,
8585 GroundBasedDataLink = 34,
8586 IntraVehicularInfoSystem = 35,
8587 MarineTacticalSystem = 36,
8588 TacticalFireDirectionSystem = 37,
8589 IntegratedBroadcastService = 38,
8590 AirborneInformationTransfer = 39,
8591 AdvancedTacticalAirborneReconnaissanceSystemDataLink = 40,
8592 BattleGroupPassiveHorizonExtensionSystemDataLink = 41,
8593 CommonHighBandwidthDataLink = 42,
8594 GuardrailInteroperableDataLink = 43,
8595 GuardrailCommonSensorSystemOneDataLink = 44,
8596 GuardrailCommonSensorSystemTwoDataLink = 45,
8597 GuardrailCSS2MultiRoleDataLink = 46,
8598 GuardrailCSS2DirectAirtoSatelliteRelayDataLink = 47,
8599 LineofSight = 48,
8600 LightweightCDL = 49,
8601 L52M = 50,
8602 RivetReachRivetOwlDataLink = 51,
8603 SeniorSpan = 52,
8604 SeniorSpur = 53,
8605 SeniorStretch_ = 54,
8606 SeniorYearInteroperableDataLink = 55,
8607 SpaceCDL = 56,
8608 TR1modeMISTAirborneDataLink = 57,
8609 KubandSATCOMDataLinkImplementation = 58,
8610 MissionEquipmentControlDatalink = 59,
8611 RadarDataTransmittingSetDataLink = 60,
8612 SurveillanceandControlDataLink = 61,
8613 TacticalUAVVideo = 62,
8614 UHFSATCOMDataLinkImplementation = 63,
8615 TacticalCommonDataLink = 64,
8616 LowLevelAirPictureInterface = 65,
8617 WeaponsDataLinkAGM130 = 66,
8618 AutomaticIdentificationSystemAIS = 67,
8619 WeaponsDataLinkAIM120 = 68,
8620 WeaponsDataLinkAIM9 = 69,
8621 WeaponsDataLinkCAMM = 70,
8622 GC3 = 99,
8623 Link16StandardizedFormat = 100,
8624 Link16EnhancedDataRate = 101,
8625 JTIDSMIDSNetDataLoad = 102,
8626 Link22 = 103,
8627 AFIWCIADSCommunicationsLinks = 104,
8628 F22IntraFlightDataLink = 105,
8629 LBandSATCOM = 106,
8630 TSAFCommunicationsLink = 107,
8631 EnhancedSINCGARS7_3 = 108,
8632 F35MultifunctionAdvancedDataLink = 109,
8633 CursoronTarget = 110,
8634 AllPurposeStructuredEurocontrolSurveillanceInformationExchange = 111,
8635 VariableMessageFormat = 112,
8636 Link16SurrogateforNonNATOTDL = 113,
8637 MQ19CBandLOSUplink = 114,
8638 MQ19CBandLOSDownlink = 115,
8639 MQ19KuBandSATCOMUplink = 116,
8640 MQ19KuBandSATCOMDownlink = 117,
8641 WeaponsDatalinkSDBII = 118,
8642 JTACSAUplink = 119,
8643 CommonInteractiveBroadcast = 120,
8644 JointRangeExtensionApplicationProtocolA = 121,
8645 JPALSDataLink = 125,
8646 OneSAFIADSCommunicationsLink = 126,
8647 TacticalTargetingNetworkTechnologyApplication = 127,
8648}
8649
8650impl SignalTDLType {
8651 #[must_use]
8652 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8653 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8654 }
8655}
8656
8657impl FieldSerialize for SignalTDLType {
8658 fn serialize_field(&self, buf: &mut BytesMut) {
8659 buf.put_u16(*self as u16);
8660 }
8661}
8662
8663impl FieldDeserialize for SignalTDLType {
8664 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8665 Self::deserialize(buf)
8666 }
8667}
8668
8669impl FieldLen for SignalTDLType {
8670 fn field_len(&self) -> usize {
8671 2
8672 }
8673}
8674
8675#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8677pub enum ReceiverReceiverState {
8678 #[default]
8679 Off = 0,
8680 Onbutnotreceiving = 1,
8681 Onandreceiving = 2,
8682}
8683
8684impl ReceiverReceiverState {
8685 #[must_use]
8686 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8687 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8688 }
8689}
8690
8691impl FieldSerialize for ReceiverReceiverState {
8692 fn serialize_field(&self, buf: &mut BytesMut) {
8693 buf.put_u16(*self as u16);
8694 }
8695}
8696
8697impl FieldDeserialize for ReceiverReceiverState {
8698 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8699 Self::deserialize(buf)
8700 }
8701}
8702
8703impl FieldLen for ReceiverReceiverState {
8704 fn field_len(&self) -> usize {
8705 2
8706 }
8707}
8708
8709#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8711pub enum IntercomControlControlType {
8712 #[default]
8713 Reserved = 0,
8714 Status = 1,
8715 RequestAcknowledgeRequired = 2,
8716 RequestNoAcknowledge = 3,
8717 AckRequestGranted = 4,
8718 NackRequestDenied = 5,
8719}
8720
8721impl IntercomControlControlType {
8722 #[must_use]
8723 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8724 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8725 }
8726}
8727
8728impl FieldSerialize for IntercomControlControlType {
8729 fn serialize_field(&self, buf: &mut BytesMut) {
8730 buf.put_u8(*self as u8);
8731 }
8732}
8733
8734impl FieldDeserialize for IntercomControlControlType {
8735 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8736 Self::deserialize(buf)
8737 }
8738}
8739
8740impl FieldLen for IntercomControlControlType {
8741 fn field_len(&self) -> usize {
8742 1
8743 }
8744}
8745
8746#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8748pub enum IntercomControlCommunicationsType {
8749 #[default]
8750 Reserved = 0,
8751 ConnectionFDX = 1,
8752 ConnectionHDXDestinationisReceiveOnly = 2,
8753 ConnectionHDXDestinationisTransmitOnly = 3,
8754 ConnectionHDX = 4,
8755}
8756
8757impl IntercomControlCommunicationsType {
8758 #[must_use]
8759 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8760 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8761 }
8762}
8763
8764#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8766pub enum IntercomControlCommand {
8767 #[default]
8768 NoCommand = 0,
8769 Status = 1,
8770 Connect = 2,
8771 Disconnect = 3,
8772 Reset = 4,
8773 On = 5,
8774 Off = 6,
8775}
8776
8777impl IntercomControlCommand {
8778 #[must_use]
8779 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8780 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8781 }
8782}
8783
8784impl FieldSerialize for IntercomControlCommand {
8785 fn serialize_field(&self, buf: &mut BytesMut) {
8786 buf.put_u8(*self as u8);
8787 }
8788}
8789
8790impl FieldDeserialize for IntercomControlCommand {
8791 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8792 Self::deserialize(buf)
8793 }
8794}
8795
8796impl FieldLen for IntercomControlCommand {
8797 fn field_len(&self) -> usize {
8798 1
8799 }
8800}
8801
8802#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8804pub enum IntercomControlTransmitLineState {
8805 #[default]
8806 TransmitLineStatenotapplicable = 0,
8807 NotTransmitting = 1,
8808 Transmitting = 2,
8809}
8810
8811impl IntercomControlTransmitLineState {
8812 #[must_use]
8813 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8814 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8815 }
8816}
8817
8818impl FieldSerialize for IntercomControlTransmitLineState {
8819 fn serialize_field(&self, buf: &mut BytesMut) {
8820 buf.put_u8(*self as u8);
8821 }
8822}
8823
8824impl FieldDeserialize for IntercomControlTransmitLineState {
8825 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8826 Self::deserialize(buf)
8827 }
8828}
8829
8830impl FieldLen for IntercomControlTransmitLineState {
8831 fn field_len(&self) -> usize {
8832 1
8833 }
8834}
8835
8836#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8838pub enum IntercomControlDestinationLineStateCommand {
8839 #[default]
8840 None = 0,
8841 SetLineStateTransmitting = 1,
8842 SetLineStateNotTransmitting = 2,
8843 ReturntoLocalLineStateControl = 3,
8844}
8845
8846impl IntercomControlDestinationLineStateCommand {
8847 #[must_use]
8848 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8849 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8850 }
8851}
8852
8853#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8855pub enum IntercomControlRecordType {
8856 #[default]
8857 SpecificDestinationrecord = 1,
8858 GroupDestinationrecord = 2,
8859 GroupAssignmentrecord = 3,
8860}
8861
8862impl IntercomControlRecordType {
8863 #[must_use]
8864 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8865 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8866 }
8867}
8868
8869#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8871pub enum CollisionType {
8872 #[default]
8873 Inelastic = 0,
8874 Elastic = 1,
8875 BoomNozzleHasClearedTheReceiversRefuelingReceptacle = 55,
8876}
8877
8878impl CollisionType {
8879 #[must_use]
8880 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8881 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8882 }
8883}
8884
8885#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8887pub enum MinefieldSensorTypes {
8888 #[default]
8889 Other = 0,
8890 Optical = 1,
8891 FLIR = 2,
8892 RADAR = 3,
8893 Magnetic = 4,
8894 Laser = 5,
8895 SONAR = 6,
8896 Physical = 7,
8897 Multispectral = 8,
8898}
8899
8900impl MinefieldSensorTypes {
8901 #[must_use]
8902 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8903 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
8904 }
8905}
8906
8907impl FieldSerialize for MinefieldSensorTypes {
8908 fn serialize_field(&self, buf: &mut BytesMut) {
8909 buf.put_u8(*self as u8);
8910 }
8911}
8912
8913impl FieldDeserialize for MinefieldSensorTypes {
8914 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
8915 Self::deserialize(buf)
8916 }
8917}
8918
8919impl FieldLen for MinefieldSensorTypes {
8920 fn field_len(&self) -> usize {
8921 1
8922 }
8923}
8924
8925#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8927pub enum MinefieldSensorTypesOptical {
8928 #[default]
8929 UnaidedEyeActivelySearching = 0,
8930 UnaidedEyeNotActivelySearching = 1,
8931 Binoculars = 2,
8932 ImageIntensifier = 3,
8933 HMMWVoccupantActivelySearching = 4,
8934 HMMWVoccupantNotActivelySearching = 5,
8935 TruckoccupantActivelySearching = 6,
8936 TruckoccupantNotActivelySearching = 7,
8937 TrackedvehicleoccupantclosedhatchActivelySearching = 8,
8938 TrackedvehicleoccupantclosedhatchNotActivelySearching = 9,
8939 TrackedvehicleoccupantopenhatchActivelySearching = 10,
8940 TrackedvehicleoccupantopenhatchNotActivelySearching = 11,
8941}
8942
8943impl MinefieldSensorTypesOptical {
8944 #[must_use]
8945 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8946 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8947 }
8948}
8949
8950#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8952pub enum MinefieldSensorTypesFLIR {
8953 #[default]
8954 Generic35 = 0,
8955 Generic812 = 1,
8956 ASTAMIDSI = 2,
8957 ASTAMIDSII = 3,
8958 GSTAMIDS35 = 4,
8959 GSTAMIDS812 = 5,
8960 HSTAMIDS35 = 6,
8961 HSTAMIDS812 = 7,
8962 COBRA35 = 8,
8963 COBRA812 = 9,
8964}
8965
8966impl MinefieldSensorTypesFLIR {
8967 #[must_use]
8968 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8969 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8970 }
8971}
8972
8973#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8975pub enum MinefieldSensorTypesRADAR {
8976 #[default]
8977 Generic = 0,
8978 GenericGPR = 1,
8979 GSTAMIDSI = 2,
8980 GSTAMIDSII = 3,
8981 HSTAMIDSI = 4,
8982 HSTAMIDSII = 5,
8983}
8984
8985impl MinefieldSensorTypesRADAR {
8986 #[must_use]
8987 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
8988 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
8989 }
8990}
8991
8992#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
8994pub enum MinefieldSensorTypesMagnetic {
8995 #[default]
8996 Generic = 0,
8997 ANPSS11 = 1,
8998 ANPSS12 = 2,
8999 GSTAMIDS = 3,
9000}
9001
9002impl MinefieldSensorTypesMagnetic {
9003 #[must_use]
9004 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9005 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9006 }
9007}
9008
9009#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9011pub enum MinefieldSensorTypesLaser {
9012 #[default]
9013 Generic = 0,
9014 ASTAMIDS = 1,
9015}
9016
9017impl MinefieldSensorTypesLaser {
9018 #[must_use]
9019 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9020 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9021 }
9022}
9023
9024#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9026pub enum MinefieldSensorTypesSONAR {
9027 #[default]
9028 Generic = 0,
9029}
9030
9031impl MinefieldSensorTypesSONAR {
9032 #[must_use]
9033 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9034 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9035 }
9036}
9037
9038#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9040pub enum MinefieldSensorTypesPhysical {
9041 #[default]
9042 GenericProbe = 0,
9043 ProbeMetalContent = 1,
9044 ProbeNoMetalContent = 2,
9045}
9046
9047impl MinefieldSensorTypesPhysical {
9048 #[must_use]
9049 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9050 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9051 }
9052}
9053
9054#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9056pub enum MinefieldSensorTypesMultispectral {
9057 #[default]
9058 Generic = 0,
9059}
9060
9061impl MinefieldSensorTypesMultispectral {
9062 #[must_use]
9063 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9064 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9065 }
9066}
9067
9068#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9070pub enum AggregateStateAggregateState {
9071 #[default]
9072 Other = 0,
9073 Aggregated = 1,
9074 Disaggregated = 2,
9075 Fullydisaggregated = 3,
9076 Pseudodisaggregated = 4,
9077 Partiallydisaggregated = 5,
9078}
9079
9080impl AggregateStateAggregateState {
9081 #[must_use]
9082 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9083 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9084 }
9085}
9086
9087impl FieldSerialize for AggregateStateAggregateState {
9088 fn serialize_field(&self, buf: &mut BytesMut) {
9089 buf.put_u8(*self as u8);
9090 }
9091}
9092
9093impl FieldDeserialize for AggregateStateAggregateState {
9094 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9095 Self::deserialize(buf)
9096 }
9097}
9098
9099impl FieldLen for AggregateStateAggregateState {
9100 fn field_len(&self) -> usize {
9101 1
9102 }
9103}
9104
9105#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9107pub enum AggregateStateFormation {
9108 #[default]
9109 Other = 0,
9110 Assembly = 1,
9111 Vee = 2,
9112 Wedge = 3,
9113 Line = 4,
9114 Column = 5,
9115}
9116
9117impl AggregateStateFormation {
9118 #[must_use]
9119 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9120 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
9121 }
9122}
9123
9124impl FieldSerialize for AggregateStateFormation {
9125 fn serialize_field(&self, buf: &mut BytesMut) {
9126 buf.put_u32(*self as u32);
9127 }
9128}
9129
9130impl FieldDeserialize for AggregateStateFormation {
9131 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9132 Self::deserialize(buf)
9133 }
9134}
9135
9136impl FieldLen for AggregateStateFormation {
9137 fn field_len(&self) -> usize {
9138 4
9139 }
9140}
9141
9142#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9144pub enum AggregateStateAggregateKind {
9145 #[default]
9146 Other = 0,
9147 MilitaryHierarchy = 1,
9148 CommonType = 2,
9149 CommonMission = 3,
9150 SimilarCapabilities = 4,
9151 CommonLocation = 5,
9152}
9153
9154impl AggregateStateAggregateKind {
9155 #[must_use]
9156 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9157 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9158 }
9159}
9160
9161#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9163pub enum AggregateStateSubcategory {
9164 #[default]
9165 Other = 0,
9166 CavalryTroop = 1,
9167 Armor = 2,
9168 Infantry = 3,
9169 MechanizedInfantry = 4,
9170 Cavalry = 5,
9171 ArmoredCavalry = 6,
9172 Artillery = 7,
9173 SelfPropelledArtillery = 8,
9174 CloseAirSupport = 9,
9175 Engineer = 10,
9176 AirDefenseArtillery = 11,
9177 AntiTank = 12,
9178 ArmyAviationFixedwing = 13,
9179 ArmyAviationRotarywing = 14,
9180 ArmyAttackHelicopter = 15,
9181 AirCavalry = 16,
9182 ArmorHeavyTaskForce = 17,
9183 MotorizedRifle = 18,
9184 MechanizedHeavyTaskForce = 19,
9185 CommandPost = 20,
9186 CEWI = 21,
9187 Tankonly = 22,
9188}
9189
9190impl AggregateStateSubcategory {
9191 #[must_use]
9192 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9193 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9194 }
9195}
9196
9197#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9199pub enum AggregateStateSpecific {
9200 #[default]
9201 Noheadquarters = 0,
9202 Yesaggregateunitcontainsaheadquarters = 1,
9203}
9204
9205impl AggregateStateSpecific {
9206 #[must_use]
9207 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9208 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9209 }
9210}
9211
9212#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9214pub enum IsPartOfNature {
9215 #[default]
9216 Other = 0,
9217 Hostfireablemunition = 1,
9218 Munitioncarriedascargo = 2,
9219 Fuelcarriedascargo = 3,
9220 Gunmountattachedtohost = 4,
9221 Computergeneratedforcescarriedascargo = 5,
9222 Vehiclecarriedascargo = 6,
9223 Emittermountedonhost = 7,
9224 Mobilecommandandcontrolentitycarriedaboardhost = 8,
9225 Entitystationedatpositionwithrespecttohost = 9,
9226 Teammemberinformationwith = 10,
9227}
9228
9229impl IsPartOfNature {
9230 #[must_use]
9231 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9232 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9233 }
9234}
9235
9236#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9238pub enum IsPartOfPosition {
9239 #[default]
9240 Other = 0,
9241 Ontopof = 1,
9242 Insideof = 2,
9243}
9244
9245impl IsPartOfPosition {
9246 #[must_use]
9247 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9248 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9249 }
9250}
9251
9252#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9254pub enum IsPartOfStationName {
9255 #[default]
9256 Other = 0,
9257 AircraftWingstation = 1,
9258 ShipsForwardGunmountStarboard = 2,
9259 ShipsForwardGunmountPort = 3,
9260 ShipsForwardGunmountCenterline = 4,
9261 ShipsAftGunmountStarboard = 5,
9262 ShipsAftGunmountPort = 6,
9263 ShipsAftGunmountCenterline = 7,
9264 ForwardTorpedoTube = 8,
9265 AftTorpedoTube = 9,
9266 BombBay = 10,
9267 CargoBay = 11,
9268 TruckBed = 12,
9269 TrailerBed = 13,
9270 WellDeck = 14,
9271 OnStationRangeandBearing = 15,
9272 OnStationxyz = 16,
9273 AirtoAirRefuelingBoom = 17,
9274 AerialRefuelingReceptacle = 18,
9275 PortSideRefuelingDrogue = 19,
9276 StarboardSideRefuelingDrogue = 20,
9277 CenterRefuelingDrogue = 21,
9278 AirRefuelingProbe = 22,
9279}
9280
9281impl IsPartOfStationName {
9282 #[must_use]
9283 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9284 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9285 }
9286}
9287
9288#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9290pub enum IsGroupOfGroupedEntityCategory {
9291 #[default]
9292 Undefined = 0,
9293 BasicGroundCombatVehicle = 1,
9294 EnhancedGroundCombatVehicle = 2,
9295 BasicGroundCombatSoldier = 3,
9296 EnhancedGroundCombatSoldier = 4,
9297 BasicRotorWingAircraft = 5,
9298 EnhancedRotorWingAircraft = 6,
9299 BasicFixedWingAircraft = 7,
9300 EnhancedFixedWingAircraft = 8,
9301 GroundLogisticsVehicle = 9,
9302}
9303
9304impl IsGroupOfGroupedEntityCategory {
9305 #[must_use]
9306 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9307 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9308 }
9309}
9310
9311impl FieldSerialize for IsGroupOfGroupedEntityCategory {
9312 fn serialize_field(&self, buf: &mut BytesMut) {
9313 buf.put_u8(*self as u8);
9314 }
9315}
9316
9317impl FieldDeserialize for IsGroupOfGroupedEntityCategory {
9318 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9319 Self::deserialize(buf)
9320 }
9321}
9322
9323impl FieldLen for IsGroupOfGroupedEntityCategory {
9324 fn field_len(&self) -> usize {
9325 1
9326 }
9327}
9328
9329#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9331pub enum IsGroupOfRestStatus {
9332 #[default]
9333 Notrested = 0,
9334 Hassleptanaverageof1hourperdayinthelastthreedays_ = 1,
9335 Hassleptanaverageof2hoursperdayinthelastthreedays_ = 2,
9336 Hassleptanaverageof3hoursperdayinthelastthreedays_ = 3,
9337 Hassleptanaverageof4hoursperdayinthelastthreedays_ = 4,
9338 Hassleptanaverageof5hoursperdayinthelastthreedays_ = 5,
9339 Hassleptanaverageof6hoursperdayinthelastthreedays_ = 6,
9340 Hassleptanaverageof7hoursperdayinthelastthreedays_ = 7,
9341 Fullyrested = 8,
9342}
9343
9344impl IsGroupOfRestStatus {
9345 #[must_use]
9346 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9347 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9348 }
9349}
9350
9351#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9353pub enum TransferControlTransferType {
9354 #[default]
9355 Other = 0,
9356 PushTransferEntity = 1,
9357 AutomaticPullTransferEntity = 2,
9358 PushTransferEnvironmentalProcess = 4,
9359 AutomaticPullTransferEnvironmentalProcess = 5,
9360 CancelTransfer = 7,
9361 ManualPullTransferEntity = 8,
9362 ManualPullTransferEnvironmentalProcess = 9,
9363 RemoveEntity = 10,
9364}
9365
9366impl TransferControlTransferType {
9367 #[must_use]
9368 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9369 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9370 }
9371}
9372
9373impl FieldSerialize for TransferControlTransferType {
9374 fn serialize_field(&self, buf: &mut BytesMut) {
9375 buf.put_u8(*self as u8);
9376 }
9377}
9378
9379impl FieldDeserialize for TransferControlTransferType {
9380 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9381 Self::deserialize(buf)
9382 }
9383}
9384
9385impl FieldLen for TransferControlTransferType {
9386 fn field_len(&self) -> usize {
9387 1
9388 }
9389}
9390
9391#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9393pub enum ObjectKind {
9394 #[default]
9395 Other = 0,
9396 Obstacle = 1,
9397 PreparedPosition = 2,
9398 CulturalFeature = 3,
9399 Passageway = 4,
9400 TacticalSmoke = 5,
9401 ObstacleMarker = 6,
9402 ObstacleBreach = 7,
9403 EnvironmentalObject = 8,
9404}
9405
9406impl ObjectKind {
9407 #[must_use]
9408 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9409 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9410 }
9411}
9412
9413bitflags! {
9415 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
9416 pub struct ObjectStateAppearanceGeneral: u16 {
9417 const PercentComplete = 1 << 0;
9418 const Damage = 1 << 8;
9419 const Predistributed = 1 << 10;
9420 const State = 1 << 11;
9421 const IsSmoking = 1 << 12;
9422 const IsFlaming = 1 << 13;
9423 const IEDPresent = 1 << 14;
9424 }
9425}
9426
9427impl Default for ObjectStateAppearanceGeneral {
9428 fn default() -> Self {
9429 Self::empty()
9430 }
9431}
9432
9433impl ObjectStateAppearanceGeneral {
9434 #[must_use]
9435 pub const fn as_u16(&self) -> u16 {
9436 self.bits()
9437 }
9438
9439 #[must_use]
9440 pub const fn from_u16(bits: u16) -> Option<Self> {
9441 Self::from_bits(bits)
9442 }
9443}
9444
9445impl FieldSerialize for ObjectStateAppearanceGeneral {
9446 fn serialize_field(&self, buf: &mut BytesMut) {
9447 buf.put_u16(self.as_u16());
9448 }
9449}
9450
9451impl FieldDeserialize for ObjectStateAppearanceGeneral {
9452 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9453 let bits = buf.get_u16();
9454 Self::from_bits(bits).unwrap_or_default()
9455 }
9456}
9457
9458impl FieldLen for ObjectStateAppearanceGeneral {
9459 fn field_len(&self) -> usize {
9460 2
9461 }
9462}
9463
9464#[derive(Copy, Clone, Debug, FromPrimitive, PartialEq, Eq)]
9466pub enum GriddedDataFieldNumber {}
9467
9468impl GriddedDataFieldNumber {
9469 #[must_use]
9470 pub fn deserialize(_buf: &mut BytesMut) -> Self {
9471 unimplemented!()
9472 }
9473}
9474
9475#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9477pub enum GriddedDataCoordinateSystem {
9478 #[default]
9479 RightHandedCartesian = 0,
9480 LeftHandedCartesian = 1,
9481 LatitudeLongitudeHeight = 2,
9482 LatitudeLongitudeDepth = 3,
9483}
9484
9485impl GriddedDataCoordinateSystem {
9486 #[must_use]
9487 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9488 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9489 }
9490}
9491
9492impl FieldSerialize for GriddedDataCoordinateSystem {
9493 fn serialize_field(&self, buf: &mut BytesMut) {
9494 buf.put_u16(*self as u16);
9495 }
9496}
9497
9498impl FieldDeserialize for GriddedDataCoordinateSystem {
9499 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9500 Self::deserialize(buf)
9501 }
9502}
9503
9504impl FieldLen for GriddedDataCoordinateSystem {
9505 fn field_len(&self) -> usize {
9506 2
9507 }
9508}
9509
9510#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9512pub enum GriddedDataConstantGrid {
9513 #[default]
9514 Constantgrid = 0,
9515 Updatedgrid = 1,
9516}
9517
9518impl GriddedDataConstantGrid {
9519 #[must_use]
9520 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9521 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9522 }
9523}
9524
9525impl FieldSerialize for GriddedDataConstantGrid {
9526 fn serialize_field(&self, buf: &mut BytesMut) {
9527 buf.put_u8(*self as u8);
9528 }
9529}
9530
9531impl FieldDeserialize for GriddedDataConstantGrid {
9532 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9533 Self::deserialize(buf)
9534 }
9535}
9536
9537impl FieldLen for GriddedDataConstantGrid {
9538 fn field_len(&self) -> usize {
9539 1
9540 }
9541}
9542
9543#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9545pub enum GriddedDataSampleType {
9546 #[default]
9547 NotSpecified = 0,
9548}
9549
9550impl GriddedDataSampleType {
9551 #[must_use]
9552 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9553 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9554 }
9555}
9556
9557impl FieldSerialize for GriddedDataSampleType {
9558 fn serialize_field(&self, buf: &mut BytesMut) {
9559 buf.put_u8(*self as u8);
9560 }
9561}
9562
9563impl FieldDeserialize for GriddedDataSampleType {
9564 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9565 Self::deserialize(buf)
9566 }
9567}
9568
9569impl FieldLen for GriddedDataSampleType {
9570 fn field_len(&self) -> usize {
9571 1
9572 }
9573}
9574
9575#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9577pub enum GriddedDataDataRepresentation {
9578 #[default]
9579 Type0 = 0,
9580 Type1 = 1,
9581 Type2 = 2,
9582}
9583
9584impl GriddedDataDataRepresentation {
9585 #[must_use]
9586 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9587 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9588 }
9589}
9590
9591impl FieldSerialize for GriddedDataDataRepresentation {
9592 fn serialize_field(&self, buf: &mut BytesMut) {
9593 buf.put_u8(*self as u8);
9594 }
9595}
9596
9597impl FieldDeserialize for GriddedDataDataRepresentation {
9598 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9599 Self::deserialize(buf)
9600 }
9601}
9602
9603impl FieldLen for GriddedDataDataRepresentation {
9604 fn field_len(&self) -> usize {
9605 1
9606 }
9607}
9608
9609#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9611pub enum EnvironmentalProcessModelType {
9612 #[default]
9613 NoStatement = 0,
9614}
9615
9616impl EnvironmentalProcessModelType {
9617 #[must_use]
9618 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9619 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9620 }
9621}
9622
9623#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9625pub enum EnvironmentalProcessRecordType {
9626 #[default]
9627 COMBICState = 256,
9628 FlareState = 259,
9629 BoundingSphereRecord = 65536,
9630 UniformGeometryRecord = 327_680,
9631 PointRecord1 = 655_360,
9632 LineRecord1 = 786_432,
9633 SphereRecord1 = 851_968,
9634 EllipsoidRecord1 = 1_048_576,
9635 ConeRecord1 = 3_145_728,
9636 RectangularVolumeRecord1 = 5_242_880,
9637 RectangularVolumeRecord3 = 83_886_080,
9638 PointRecord2 = 167_772_160,
9639 LineRecord2 = 201_326_592,
9640 SphereRecord2 = 218_103_808,
9641 EllipsoidRecord2 = 268_435_456,
9642 ConeRecord2 = 805_306_368,
9643 RectangularVolumeRecord2 = 1_342_177_280,
9644 GaussianPlumeRecord = 1_610_612_736,
9645 GaussianPuffRecord = 1_879_048_192,
9646}
9647
9648impl EnvironmentalProcessRecordType {
9649 #[must_use]
9650 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9651 Self::from_u32(buf.get_u32()).unwrap_or_else(Self::default)
9652 }
9653}
9654
9655#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9657pub enum SignalEncodingClass {
9658 #[default]
9659 Encodedaudio = 0,
9660 RawBinaryData = 1,
9661 ApplicationSpecificData = 2,
9662 Databaseindex = 3,
9663}
9664
9665impl SignalEncodingClass {
9666 #[must_use]
9667 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9668 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9669 }
9670}
9671
9672#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9674pub enum SignalEncodingType {
9675 #[default]
9676 _8bitmulaw = 1,
9677 CVSD = 2,
9678 ADPCM = 3,
9679 _16bitLinearPCM2sComplementBigEndian = 4,
9680 _8bitLinearPCMUnsigned = 5,
9681 #[deprecated(note = "Deprecated in SISO-REF-010-2023")]
9682 VQ = 6,
9683 GSMFullRate = 8,
9684 GSMHalfRate = 9,
9685 SpeexNarrowBand = 10,
9686 Opus = 11,
9687 LPC10 = 12,
9688 _16bitLinearPCM2sComplementLittleEndian = 100,
9689}
9690
9691impl SignalEncodingType {
9692 #[must_use]
9693 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9694 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9695 }
9696}
9697
9698#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9700pub enum RepairGroups {
9701 #[default]
9702 GeneralRepairCodes = 0,
9703 DriveTrain = 1,
9704 HullAirframeBody = 2,
9705 InterfacesWithEnvironment = 3,
9706 Weapons = 4,
9707 FuelSystems = 5,
9708 Electronics = 6,
9709 LifeSupportSystems = 7,
9710 HydraulicSystemsAndActuators = 8,
9711 AuxiliaryCraft = 9,
9712}
9713
9714impl RepairGroups {
9715 #[must_use]
9716 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9717 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9718 }
9719}
9720
9721impl FieldSerialize for RepairGroups {
9722 fn serialize_field(&self, buf: &mut BytesMut) {
9723 buf.put_u8(*self as u8);
9724 }
9725}
9726
9727impl FieldDeserialize for RepairGroups {
9728 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9729 Self::deserialize(buf)
9730 }
9731}
9732
9733impl FieldLen for RepairGroups {
9734 fn field_len(&self) -> usize {
9735 1
9736 }
9737}
9738
9739#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9741pub enum EnvironmentRecordTypeGroups {
9742 #[default]
9743 State = 0,
9744 Geometry = 1,
9745}
9746
9747impl EnvironmentRecordTypeGroups {
9748 #[must_use]
9749 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9750 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9751 }
9752}
9753
9754#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9756pub enum PlatformAirCivilianUltralightNonrigidWingAircraftSubcategories {
9757 #[default]
9758 HangGliderUnpowered = 1,
9759 HangGliderPowered = 2,
9760 ParagliderUnpowered = 3,
9761 ParagliderPowered = 4,
9762 PoweredParachute = 5,
9763}
9764
9765impl PlatformAirCivilianUltralightNonrigidWingAircraftSubcategories {
9766 #[must_use]
9767 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9768 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9769 }
9770}
9771
9772#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9774pub enum PlatformAirCivilianUltralightRigidWingAircraftSubcategories {
9775 #[default]
9776 Weightshiftcontrol = 1,
9777 Controlsurfacecontrol = 2,
9778}
9779
9780impl PlatformAirCivilianUltralightRigidWingAircraftSubcategories {
9781 #[must_use]
9782 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9783 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9784 }
9785}
9786
9787#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9789pub enum PlatformAirCivilianGliderSubcategories {
9790 #[default]
9791 SailPlane = 1,
9792 MotorGlider = 2,
9793}
9794
9795impl PlatformAirCivilianGliderSubcategories {
9796 #[must_use]
9797 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9798 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9799 }
9800}
9801
9802#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9804pub enum PlatformAirCivilianFixedWingAircraftSubcategories {
9805 #[default]
9806 SinglePistonEngine = 11,
9807 TwinPistonEngine = 12,
9808 SingleEngineTurboprop = 21,
9809 TwinEngineTurboprop = 22,
9810 FourEngineTurboprop = 24,
9811 TwinJet = 32,
9812 TriJet = 33,
9813 FourEngineJet = 34,
9814}
9815
9816impl PlatformAirCivilianFixedWingAircraftSubcategories {
9817 #[must_use]
9818 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9819 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9820 }
9821}
9822
9823#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9825pub enum PlatformAirCivilianHelicopterSubcategories {
9826 #[default]
9827 SingleRotorPistonEngine = 11,
9828 SingleRotorTurboshaftEngineConventionalTailRotor = 12,
9829 SingleRotorTurboshaftEngineShroudedTailRotor = 13,
9830 SingleRotorTurboshaftEngineNoTailRotor = 14,
9831 TandemRotor = 21,
9832 CoaxialRotor = 22,
9833 IntermeshingRotor = 23,
9834}
9835
9836impl PlatformAirCivilianHelicopterSubcategories {
9837 #[must_use]
9838 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9839 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9840 }
9841}
9842
9843#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9845pub enum PlatformAirCivilianLighterthanAirBalloonSubcategories {
9846 #[default]
9847 Gasfilledfree = 1,
9848 Gasfilledtethered = 2,
9849 HotAir = 3,
9850 RoziereBalloon = 4,
9851 Helikite = 5,
9852}
9853
9854impl PlatformAirCivilianLighterthanAirBalloonSubcategories {
9855 #[must_use]
9856 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9857 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9858 }
9859}
9860
9861#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9863pub enum PlatformAirCivilianLighterthanAirAirshipSubcategories {
9864 #[default]
9865 Nonrigid = 1,
9866 Semirigid = 2,
9867 Rigid = 3,
9868 Hybrid = 4,
9869}
9870
9871impl PlatformAirCivilianLighterthanAirAirshipSubcategories {
9872 #[must_use]
9873 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9874 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9875 }
9876}
9877
9878#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9880pub enum APAParameterIndexAPAStatus {
9881 #[default]
9882 DeselectedOff = 0,
9883 APAValueChangeOnly = 1,
9884 StateChange = 2,
9885 RecordActivation = 3,
9886}
9887
9888impl APAParameterIndexAPAStatus {
9889 #[must_use]
9890 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9891 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9892 }
9893}
9894
9895#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9897pub enum SeparationVPReasonforSeparation {
9898 #[default]
9899 NoStatement = 0,
9900 AttachedPartSeparation = 1,
9901 SubmunitionSeparation = 2,
9902}
9903
9904impl SeparationVPReasonforSeparation {
9905 #[must_use]
9906 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9907 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9908 }
9909}
9910
9911#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9913pub enum SeparationVPPreEntityIndicator {
9914 #[default]
9915 NoStatement = 0,
9916 EntityIDExistedPriortoSeparationwithoutEntityStatePDU = 1,
9917 EntityIDExistedPriortoSeparationwithEntityStatePDUIssued = 2,
9918 EntityInitiallyCreatedAtSeparationEvent = 3,
9919}
9920
9921impl SeparationVPPreEntityIndicator {
9922 #[must_use]
9923 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9924 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
9925 }
9926}
9927
9928#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9930pub enum IOActionIOWarfareType {
9931 #[default]
9932 NoStatement = 0,
9933 ElectronicWarfare = 1,
9934 ComputerNetworkOperations = 2,
9935 PsychologicalOperations = 3,
9936 MilitaryDeception = 4,
9937 OperationsSecurity = 5,
9938 PhysicalAttack = 6,
9939}
9940
9941impl IOActionIOWarfareType {
9942 #[must_use]
9943 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9944 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9945 }
9946}
9947
9948impl FieldSerialize for IOActionIOWarfareType {
9949 fn serialize_field(&self, buf: &mut BytesMut) {
9950 buf.put_u16(*self as u16);
9951 }
9952}
9953
9954impl FieldDeserialize for IOActionIOWarfareType {
9955 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9956 Self::deserialize(buf)
9957 }
9958}
9959
9960impl FieldLen for IOActionIOWarfareType {
9961 fn field_len(&self) -> usize {
9962 2
9963 }
9964}
9965
9966#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
9968pub enum IOActionIOSimulationSource {
9969 #[default]
9970 NoStatement = 0,
9971}
9972
9973impl IOActionIOSimulationSource {
9974 #[must_use]
9975 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
9976 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
9977 }
9978}
9979
9980impl FieldSerialize for IOActionIOSimulationSource {
9981 fn serialize_field(&self, buf: &mut BytesMut) {
9982 buf.put_u16(*self as u16);
9983 }
9984}
9985
9986impl FieldDeserialize for IOActionIOSimulationSource {
9987 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
9988 Self::deserialize(buf)
9989 }
9990}
9991
9992impl FieldLen for IOActionIOSimulationSource {
9993 fn field_len(&self) -> usize {
9994 2
9995 }
9996}
9997
9998#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10000pub enum IOActionIOActionType {
10001 #[default]
10002 NoStatement = 0,
10003 IOAttackProfileData = 1,
10004 IOAttackComputedEffects = 2,
10005 IntentBasedEW = 3,
10006 IntentBasedEWComputedEffects = 4,
10007}
10008
10009impl IOActionIOActionType {
10010 #[must_use]
10011 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10012 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
10013 }
10014}
10015
10016impl FieldSerialize for IOActionIOActionType {
10017 fn serialize_field(&self, buf: &mut BytesMut) {
10018 buf.put_u16(*self as u16);
10019 }
10020}
10021
10022impl FieldDeserialize for IOActionIOActionType {
10023 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10024 Self::deserialize(buf)
10025 }
10026}
10027
10028impl FieldLen for IOActionIOActionType {
10029 fn field_len(&self) -> usize {
10030 2
10031 }
10032}
10033
10034#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10036pub enum IOActionIOActionPhase {
10037 #[default]
10038 NoStatement = 0,
10039 StartAttackProfile = 1,
10040 EndAttackProfile = 2,
10041 ContinueAttackProfilewithChanges = 3,
10042 StartAttackEffects = 4,
10043 EndAttackedEffects = 5,
10044 ContinueAttackEffectswithChanges = 6,
10045}
10046
10047impl IOActionIOActionPhase {
10048 #[must_use]
10049 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10050 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
10051 }
10052}
10053
10054impl FieldSerialize for IOActionIOActionPhase {
10055 fn serialize_field(&self, buf: &mut BytesMut) {
10056 buf.put_u16(*self as u16);
10057 }
10058}
10059
10060impl FieldDeserialize for IOActionIOActionPhase {
10061 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10062 Self::deserialize(buf)
10063 }
10064}
10065
10066impl FieldLen for IOActionIOActionPhase {
10067 fn field_len(&self) -> usize {
10068 2
10069 }
10070}
10071
10072#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10074pub enum IOReportIOReportType {
10075 #[default]
10076 NoStatement = 0,
10077 InitialReport = 1,
10078 UpdateReport = 2,
10079 FinalReport = 3,
10080}
10081
10082impl IOReportIOReportType {
10083 #[must_use]
10084 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10085 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10086 }
10087}
10088
10089impl FieldSerialize for IOReportIOReportType {
10090 fn serialize_field(&self, buf: &mut BytesMut) {
10091 buf.put_u8(*self as u8);
10092 }
10093}
10094
10095impl FieldDeserialize for IOReportIOReportType {
10096 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10097 Self::deserialize(buf)
10098 }
10099}
10100
10101impl FieldLen for IOReportIOReportType {
10102 fn field_len(&self) -> usize {
10103 1
10104 }
10105}
10106
10107#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10109pub enum IOEffectsRecordIOStatus {
10110 #[default]
10111 NoStatement = 0,
10112 EffectonSender = 1,
10113 EffectonReceiver = 2,
10114 EffectonSenderandReceiver = 3,
10115 EffectonMessage = 4,
10116 EffectonSenderandMessage = 5,
10117 EffectonReceiverandMessage = 6,
10118 EffectonSenderReceiverandMessage = 7,
10119}
10120
10121impl IOEffectsRecordIOStatus {
10122 #[must_use]
10123 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10124 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10125 }
10126}
10127
10128#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10130pub enum IOEffectsRecordIOLinkType {
10131 #[default]
10132 NoStatement = 0,
10133 LogicalLink = 1,
10134 PhysicalNode = 2,
10135 PhysicalLink = 3,
10136}
10137
10138impl IOEffectsRecordIOLinkType {
10139 #[must_use]
10140 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10141 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10142 }
10143}
10144
10145#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10147pub enum IOEffectsRecordIOEffect {
10148 #[default]
10149 NoStatement = 0,
10150 Denial = 1,
10151 Degradation = 2,
10152 Disruption = 3,
10153 TerminateEffect = 255,
10154}
10155
10156impl IOEffectsRecordIOEffect {
10157 #[must_use]
10158 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10159 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10160 }
10161}
10162
10163#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10165pub enum IOEffectsRecordIOProcess {
10166 #[default]
10167 NoStatement = 0,
10168}
10169
10170impl IOEffectsRecordIOProcess {
10171 #[must_use]
10172 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10173 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10174 }
10175}
10176
10177#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10179pub enum IOCommsNodeRecordCommsNodeType {
10180 #[default]
10181 NoStatement = 0,
10182 SenderNodeID = 1,
10183 ReceiverNodeID = 2,
10184 SenderReceiverNodeID = 3,
10185}
10186
10187impl IOCommsNodeRecordCommsNodeType {
10188 #[must_use]
10189 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10190 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10191 }
10192}
10193
10194#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10196pub enum DISAttributeActionCode {
10197 #[default]
10198 NoStatement = 0,
10199}
10200
10201impl DISAttributeActionCode {
10202 #[must_use]
10203 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10204 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10205 }
10206}
10207
10208impl FieldSerialize for DISAttributeActionCode {
10209 fn serialize_field(&self, buf: &mut BytesMut) {
10210 buf.put_u8(*self as u8);
10211 }
10212}
10213
10214impl FieldDeserialize for DISAttributeActionCode {
10215 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10216 Self::deserialize(buf)
10217 }
10218}
10219
10220impl FieldLen for DISAttributeActionCode {
10221 fn field_len(&self) -> usize {
10222 1
10223 }
10224}
10225
10226#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10228pub enum DRParametersType {
10229 #[default]
10230 None = 0,
10231 LocalEulerAngles = 1,
10232 WorldOrientationQuaternion = 2,
10233}
10234
10235impl DRParametersType {
10236 #[must_use]
10237 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10238 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10239 }
10240}
10241
10242#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10244pub enum HighFidelityHAVEQUICKTODTransmitIndicator {
10245 #[default]
10246 NoTODIsBeingTransmitted = 0,
10247 TODTransmissioninProgress = 1,
10248}
10249
10250impl HighFidelityHAVEQUICKTODTransmitIndicator {
10251 #[must_use]
10252 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10253 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10254 }
10255}
10256
10257#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10259pub enum NETIDRecordMode {
10260 #[default]
10261 AHAVEQUICKIorHAVEQUICKIICOMBAT = 1,
10262 BSATURNCOMBAT = 2,
10263 TTRAINING = 3,
10264}
10265
10266impl NETIDRecordMode {
10267 #[must_use]
10268 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10269 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10270 }
10271}
10272
10273#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10275pub enum NETIDRecordFrequencyTable {
10276 #[default]
10277 HQIOperations = 0,
10278 HQIINATOEuropeAreaOperations = 1,
10279 HQIINonNATOEuropeAreaOperations = 2,
10280 SATURNOperations = 3,
10281}
10282
10283impl NETIDRecordFrequencyTable {
10284 #[must_use]
10285 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10286 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10287 }
10288}
10289
10290#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10292pub enum EEAttributeStateIndicator {
10293 #[default]
10294 HeartbeatUpdate = 0,
10295 ChangedData = 1,
10296 HasCeased = 2,
10297}
10298
10299impl EEAttributeStateIndicator {
10300 #[must_use]
10301 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10302 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10303 }
10304}
10305
10306impl FieldSerialize for EEAttributeStateIndicator {
10307 fn serialize_field(&self, buf: &mut BytesMut) {
10308 buf.put_u8(*self as u8);
10309 }
10310}
10311
10312impl FieldDeserialize for EEAttributeStateIndicator {
10313 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10314 Self::deserialize(buf)
10315 }
10316}
10317
10318impl FieldLen for EEAttributeStateIndicator {
10319 fn field_len(&self) -> usize {
10320 1
10321 }
10322}
10323
10324#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10326#[bits = 1]
10327pub enum TransferredEntityIndicator {
10328 #[default]
10329 NoDifference = 0,
10330 Difference = 1,
10331}
10332
10333impl TransferredEntityIndicator {
10334 #[must_use]
10335 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10336 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10337 }
10338}
10339
10340#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10342#[bits = 2]
10343pub enum LVCIndicator {
10344 #[default]
10345 NoStatement = 0,
10346 Live = 1,
10347 Virtual = 2,
10348 Constructive = 3,
10349}
10350
10351impl LVCIndicator {
10352 #[must_use]
10353 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10354 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10355 }
10356}
10357
10358#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10360#[bits = 1]
10361pub enum CoupledExtensionIndicator {
10362 #[default]
10363 NotCoupled = 0,
10364 Coupled = 1,
10365}
10366
10367impl CoupledExtensionIndicator {
10368 #[must_use]
10369 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10370 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10371 }
10372}
10373
10374#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10376#[bits = 1]
10377pub enum FireTypeIndicator {
10378 #[default]
10379 Munition = 0,
10380 Expendable = 1,
10381}
10382
10383impl FireTypeIndicator {
10384 #[must_use]
10385 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10386 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10387 }
10388}
10389
10390#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10392#[bits = 2]
10393pub enum DetonationTypeIndicator {
10394 #[default]
10395 Munition = 0,
10396 Expendable = 1,
10397 NonMunitionExplosion = 2,
10398}
10399
10400impl From<u8> for DetonationTypeIndicator {
10401 fn from(value: u8) -> Self {
10402 match value & 0b11 {
10403 1 => Self::Expendable,
10404 2 => Self::NonMunitionExplosion,
10405 _ => Self::Munition,
10406 }
10407 }
10408}
10409
10410impl From<DetonationTypeIndicator> for u8 {
10411 fn from(value: DetonationTypeIndicator) -> Self {
10412 value as Self
10413 }
10414}
10415
10416impl DetonationTypeIndicator {
10417 #[must_use]
10418 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10419 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10420 }
10421}
10422
10423#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10425#[bits = 2]
10426pub enum RadioAttachedIndicator {
10427 #[default]
10428 NoStatement = 0,
10429 Unattached = 1,
10430 Attached = 2,
10431}
10432
10433impl From<u8> for RadioAttachedIndicator {
10434 fn from(value: u8) -> Self {
10435 match value & 0b11 {
10436 1 => Self::Unattached,
10437 2 => Self::Attached,
10438 _ => Self::NoStatement,
10439 }
10440 }
10441}
10442
10443impl From<RadioAttachedIndicator> for u8 {
10444 fn from(value: RadioAttachedIndicator) -> Self {
10445 value as Self
10446 }
10447}
10448
10449impl RadioAttachedIndicator {
10450 #[must_use]
10451 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10452 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10453 }
10454}
10455
10456#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10458#[bits = 2]
10459pub enum IntercomAttachedIndicator {
10460 #[default]
10461 NoStatement = 0,
10462 Unattached = 1,
10463 Attached = 2,
10464}
10465
10466impl From<u8> for IntercomAttachedIndicator {
10467 fn from(value: u8) -> Self {
10468 match value & 0b11 {
10469 1 => Self::Unattached,
10470 2 => Self::Attached,
10471 _ => Self::NoStatement,
10472 }
10473 }
10474}
10475
10476impl From<IntercomAttachedIndicator> for u8 {
10477 fn from(value: IntercomAttachedIndicator) -> Self {
10478 value as Self
10479 }
10480}
10481
10482impl IntercomAttachedIndicator {
10483 #[must_use]
10484 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10485 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10486 }
10487}
10488
10489#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10491#[bits = 1]
10492pub enum PduStatusIFFSimulationMode {
10493 #[default]
10494 Regeneration = 0,
10495 Interactive = 1,
10496}
10497
10498impl PduStatusIFFSimulationMode {
10499 #[must_use]
10500 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10501 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10502 }
10503}
10504
10505#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10507pub enum ExplosiveMaterialGroups {
10508 #[default]
10509 General = 0,
10510 LiquidAviationMissileFuels = 1,
10511 LiquidOtherFuels = 2,
10512 LiquidExplosiveMaterial = 3,
10513 Solid = 4,
10514 Gaseous = 5,
10515 DustMaterial = 6,
10516}
10517
10518impl ExplosiveMaterialGroups {
10519 #[must_use]
10520 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10521 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10522 }
10523}
10524
10525#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10527pub enum ExplosiveMaterialCategories {
10528 #[default]
10529 NoStatement = 0,
10530 AVGAS = 10,
10531 JetFuel = 11,
10532 JP4 = 12,
10533 JP5 = 13,
10534 JP7 = 14,
10535 JP8 = 15,
10536 JP10MissileFuel = 16,
10537 JPTS = 17,
10538 JetA = 18,
10539 JetA1 = 19,
10540 JetB = 20,
10541 JetBiofuel = 21,
10542 GasolinePetrolUnspecifiedOctane = 151,
10543 DieselFuelUnspecifiedGrade = 152,
10544 Ethanol = 153,
10545 E85Ethanol = 154,
10546 FuelOil = 155,
10547 Kerosene = 156,
10548 CrudeOil = 157,
10549 LightCrudeOil = 158,
10550 LiquidPetroleumGas = 159,
10551 RP1RocketFuel = 160,
10552 LH2RocketFuel = 161,
10553 LOXRocketFuel = 162,
10554 Alcohol = 164,
10555 HydrogenLiquid = 166,
10556 Nitroglycerin = 301,
10557 ANFO = 302,
10558 Dynamite = 451,
10559 TNT = 452,
10560 RDX = 453,
10561 PETN = 454,
10562 HMX = 455,
10563 C4 = 456,
10564 CompositionC4 = 457,
10565 NaturalGas = 601,
10566 Butane = 602,
10567 Propane = 603,
10568 Helium = 604,
10569 HydrogenGaseous = 605,
10570 DustUnspecifiedType = 801,
10571 GrainDust = 802,
10572 FlourDust = 803,
10573 SugarDust = 804,
10574}
10575
10576impl ExplosiveMaterialCategories {
10577 #[must_use]
10578 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10579 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
10580 }
10581}
10582
10583#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10585pub enum DEPrecisionAimpointBeamSpotType {
10586 #[default]
10587 Other = 0,
10588 Gaussian = 1,
10589 TopHat = 2,
10590}
10591
10592impl DEPrecisionAimpointBeamSpotType {
10593 #[must_use]
10594 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10595 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10596 }
10597}
10598
10599#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10601pub enum DEFirePulseShape {
10602 #[default]
10603 Other = 0,
10604 SquareWave = 1,
10605 ContinuousWave = 2,
10606 Gaussian = 3,
10607}
10608
10609impl DEFirePulseShape {
10610 #[must_use]
10611 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10612 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10613 }
10614}
10615
10616impl FieldSerialize for DEFirePulseShape {
10617 fn serialize_field(&self, buf: &mut BytesMut) {
10618 buf.put_u8(*self as u8);
10619 }
10620}
10621
10622impl FieldDeserialize for DEFirePulseShape {
10623 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10624 Self::deserialize(buf)
10625 }
10626}
10627
10628impl FieldLen for DEFirePulseShape {
10629 fn field_len(&self) -> usize {
10630 1
10631 }
10632}
10633
10634#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10636pub enum ComponentIdentification {
10637 #[default]
10638 EntityCenter = 0,
10639 EntityStructure = 1,
10640 ControlSystem = 2,
10641 ControlSurface = 3,
10642 EnginePropulsionSystem = 4,
10643 CrewMember = 5,
10644 Fuse = 6,
10645 AcquisitionSensor = 7,
10646 TrackingSensor = 8,
10647 FuelTankSolidRocketMotor = 9,
10648}
10649
10650impl ComponentIdentification {
10651 #[must_use]
10652 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10653 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10654 }
10655}
10656
10657impl FieldSerialize for ComponentIdentification {
10658 fn serialize_field(&self, buf: &mut BytesMut) {
10659 buf.put_u8(*self as u8);
10660 }
10661}
10662
10663impl FieldDeserialize for ComponentIdentification {
10664 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10665 Self::deserialize(buf)
10666 }
10667}
10668
10669impl FieldLen for ComponentIdentification {
10670 fn field_len(&self) -> usize {
10671 1
10672 }
10673}
10674
10675#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10677pub enum ComponentDamageStatus {
10678 #[default]
10679 NoDamage = 0,
10680 MinorDamage = 1,
10681 MediumDamage = 2,
10682 MajorDamage = 3,
10683 Destroyed = 4,
10684}
10685
10686impl ComponentDamageStatus {
10687 #[must_use]
10688 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10689 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10690 }
10691}
10692
10693impl FieldSerialize for ComponentDamageStatus {
10694 fn serialize_field(&self, buf: &mut BytesMut) {
10695 buf.put_u8(*self as u8);
10696 }
10697}
10698
10699impl FieldDeserialize for ComponentDamageStatus {
10700 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10701 Self::deserialize(buf)
10702 }
10703}
10704
10705impl FieldLen for ComponentDamageStatus {
10706 fn field_len(&self) -> usize {
10707 1
10708 }
10709}
10710
10711#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10713pub enum ComponentVisualSmokeColor {
10714 #[default]
10715 NoSmoke = 0,
10716 White = 1,
10717 Gray = 2,
10718 Black = 3,
10719}
10720
10721impl ComponentVisualSmokeColor {
10722 #[must_use]
10723 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10724 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10725 }
10726}
10727
10728impl FieldSerialize for ComponentVisualSmokeColor {
10729 fn serialize_field(&self, buf: &mut BytesMut) {
10730 buf.put_u8(*self as u8);
10731 }
10732}
10733
10734impl FieldDeserialize for ComponentVisualSmokeColor {
10735 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
10736 Self::deserialize(buf)
10737 }
10738}
10739
10740impl FieldLen for ComponentVisualSmokeColor {
10741 fn field_len(&self) -> usize {
10742 1
10743 }
10744}
10745
10746#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10748pub enum BeamStatusBeamState {
10749 #[default]
10750 Active = 0,
10751 Deactivated = 1,
10752}
10753
10754impl BeamStatusBeamState {
10755 #[must_use]
10756 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10757 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10758 }
10759}
10760
10761#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10763pub enum EntityAssociationAssociationStatus {
10764 #[default]
10765 NotSpecified = 0,
10766 PhysicalAssociationGeneralObject1 = 1,
10767 FunctionalAssociationGeneral = 2,
10768 AssociationBroken = 3,
10769 PhysicalAssociationObject2 = 4,
10770 FunctionalAssociationObject1 = 5,
10771 FunctionalAssociationObject2 = 6,
10772}
10773
10774impl EntityAssociationAssociationStatus {
10775 #[must_use]
10776 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10777 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10778 }
10779}
10780
10781#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10783pub enum EntityVPRecordChangeIndicator {
10784 #[default]
10785 InitialReportorNoChangeSinceLastIssuance = 0,
10786 ChangeSinceLastIssuance = 1,
10787}
10788
10789impl EntityVPRecordChangeIndicator {
10790 #[must_use]
10791 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10792 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10793 }
10794}
10795
10796#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10798pub enum EntityAssociationGroupMemberType {
10799 #[default]
10800 NotPartofaGroup = 0,
10801 GroupLeader = 1,
10802 GroupMember = 2,
10803 FormationLeader = 3,
10804 FormationMember = 4,
10805 ConvoyLeader = 5,
10806 ConvoyMember = 6,
10807}
10808
10809impl EntityAssociationGroupMemberType {
10810 #[must_use]
10811 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10812 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10813 }
10814}
10815
10816#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10818pub enum PhysicalAssociationTypeGroups {
10819 #[default]
10820 NotSpecified = 0,
10821 TowedMountedSlingLoad = 1,
10822 Restrained = 2,
10823 Mission = 3,
10824 OtherConnections = 4,
10825}
10826
10827impl PhysicalAssociationTypeGroups {
10828 #[must_use]
10829 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10830 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10831 }
10832}
10833
10834#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10836pub enum EntityAssociationPhysicalAssociationType {
10837 #[default]
10838 NotSpecified = 0,
10839 TowedinAir = 1,
10840 TowedonLand = 2,
10841 TowedonWaterSurface = 3,
10842 TowedUnderwater = 4,
10843 MountedAttached = 5,
10844 MountedUnattachedandUnsupported = 6,
10845 MountedUnattachedandSupported = 7,
10846 TowedinAirCenterHook = 8,
10847 TowedinAirForwardHook = 9,
10848 TowedinAirAftHook = 10,
10849 TowedinAirTandemHookForeAndAft = 11,
10850 TowedinAirMismanagedTandemForeAndCenter = 12,
10851 TowedinAirMismanagedTandemCenterAndAft = 13,
10852 TowedinAirAllHooks = 14,
10853 Hoisted = 15,
10854 RestrainedtoaLifeform = 30,
10855 RestrainedtoaPlatform = 31,
10856 RestrainedtoanObject = 32,
10857 RefuelingOperation = 61,
10858 SearchandRescueBasket = 62,
10859 SearchandRescueRescueCollar = 63,
10860 EngagementObject2isBeingEngaged = 64,
10861 ReturnToBaseObject2istheDestinationObject = 65,
10862 LinebetweenCommunicationTowers = 90,
10863 LineBetweenPowerTowers = 91,
10864 Indoors = 92,
10865 TopSurface = 93,
10866}
10867
10868impl EntityAssociationPhysicalAssociationType {
10869 #[must_use]
10870 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10871 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10872 }
10873}
10874
10875#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10877pub enum EntityAssociationPhysicalConnectionType {
10878 #[default]
10879 NotSpecified = 0,
10880 AttachedDirectlytoSurface = 1,
10881 CableWire = 2,
10882 Rope = 3,
10883 Chain = 4,
10884 PowerLine = 5,
10885 TelephoneLine = 6,
10886 CableLine = 7,
10887 RefuelingDrogue = 8,
10888 RefuelingBoom = 9,
10889 Handcuffs = 10,
10890 InContactWith = 11,
10891 FastRope = 12,
10892}
10893
10894impl EntityAssociationPhysicalConnectionType {
10895 #[must_use]
10896 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10897 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10898 }
10899}
10900
10901#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10903pub enum SensorRecordSensorTypeOtherActiveSensors {
10904 #[default]
10905 Undefined = 0,
10906}
10907
10908impl SensorRecordSensorTypeOtherActiveSensors {
10909 #[must_use]
10910 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10911 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
10912 }
10913}
10914
10915#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
10917#[allow(non_camel_case_types)]
10918pub enum SensorRecordSensorTypePassiveSensors {
10919 #[default]
10920 ALR400 = 60000,
10921 ANAAR47 = 60001,
10922 ANAAR50 = 60002,
10923 ANAAR54 = 60003,
10924 ANAAR56 = 60004,
10925 ANAAR57 = 60005,
10926 ANALQ142 = 60006,
10927 ANALR45 = 60007,
10928 ANALR46 = 60008,
10929 ANALR56 = 60009,
10930 ANALR59 = 60010,
10931 ANALR64 = 60011,
10932 ANALR66 = 60012,
10933 ANALR67 = 60013,
10934 ANALR69 = 60014,
10935 ANALR73 = 60015,
10936 ANALR76 = 60016,
10937 ANALR91 = 60017,
10938 ANALR93 = 60018,
10939 ANALR94 = 60019,
10940 ANALR801 = 60020,
10941 ANAPR39 = 60021,
10942 ANAYR2 = 60022,
10943 ARI18223 = 60023,
10944 BOW21 = 60024,
10945 ChaparralIRST = 60025,
10946 FlankerIRST = 60026,
10947 FoxbatIRST = 60027,
10948 FoxhoundIRST = 60028,
10949 FulcrumIRST = 60029,
10950 HavocIRST = 60030,
10951 HindIRST = 60031,
10952 KJ200 = 60032,
10953 KJ8602 = 60033,
10954 L150Pastel = 60034,
10955 Serval = 60035,
10956 Sherloc = 60036,
10957 Sherlocvf = 60037,
10958 Sirena2 = 60038,
10959 Sirena3 = 60039,
10960 Sirena3M = 60040,
10961 SkyGuardian = 60041,
10962 SPO15 = 60042,
10963 SPS200 = 60043,
10964 Tarang = 60044,
10965 ANAAQ29A = 60045,
10966 _101KSUMAW = 60046,
10967 Abrams2GFFLIR = 60047,
10968 Abrams3GFFLIR = 60048,
10969 ANAAQ13LANTIRNFLIR = 60049,
10970 AN_ALR74 = 60050,
10971 AN_ALR90 = 60051,
10972 ANAPR48 = 60052,
10973 ELT156X = 60053,
10974 _101KSV = 60054,
10975 TP23ML = 60055,
10976 GenericFLIR = 60056,
10977 GenericIRST = 60057,
10978 GenericMAWS = 60058,
10979 GenericRWR = 60059,
10980 L136Mak = 60060,
10981 LeonardoSASSIRST = 60061,
10982 OSFIRST = 60062,
10983 PirateIRST = 60063,
10984 RECCELITE = 60064,
10985 ThalesNederlandSiriusIRST = 60065,
10986 TornadoRWR = 60066,
10987 TOES521FLIR = 60067,
10988 SafranVampir_MB = 60068,
10989}
10990
10991impl SensorRecordSensorTypePassiveSensors {
10992 #[must_use]
10993 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
10994 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
10995 }
10996}
10997
10998#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11000pub enum MunitionExpendableStatus {
11001 #[default]
11002 Other = 0,
11003 Ready = 1,
11004 Inventory = 2,
11005}
11006
11007impl MunitionExpendableStatus {
11008 #[must_use]
11009 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11010 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11011 }
11012}
11013
11014#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11016pub enum FuelMeasurementUnits {
11017 #[default]
11018 Other = 0,
11019 Liter = 1,
11020 Kilogram = 2,
11021}
11022
11023impl FuelMeasurementUnits {
11024 #[must_use]
11025 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11026 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11027 }
11028}
11029
11030#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11032pub enum FuelLocation {
11033 #[default]
11034 Other = 0,
11035}
11036
11037impl FuelLocation {
11038 #[must_use]
11039 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11040 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11041 }
11042}
11043
11044#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11046pub enum EntityAssociationAssociationType {
11047 #[default]
11048 Other = 0,
11049 TargetEntity = 1,
11050 TargetLocation = 2,
11051 HomeBaseLocation = 3,
11052 CAPPointLocation = 4,
11053 FlightLeader = 5,
11054 FlightMember = 6,
11055 IPPoint = 7,
11056 RendezvousPoint = 8,
11057 OnStationLocation = 9,
11058 LandingZoneLocation = 10,
11059 DownedPilot = 11,
11060 TankerEntitythatIsCurrentlyRefuelingtheTransferredEntity = 12,
11061 TankerEntitytheTransferredEntityIsHeadedtowardstoRefuel = 13,
11062 EntityHeadedtowardstoJoinUpWith = 14,
11063}
11064
11065impl EntityAssociationAssociationType {
11066 #[must_use]
11067 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11068 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11069 }
11070}
11071
11072#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11074pub enum SensorOnOffStatus {
11075 #[default]
11076 Off = 0,
11077 On = 1,
11078}
11079
11080impl SensorOnOffStatus {
11081 #[must_use]
11082 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11083 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11084 }
11085}
11086
11087#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11089pub enum OwnershipStatus {
11090 #[default]
11091 Other = 0,
11092 NewOwner = 1,
11093 OwnershipQueryResponse = 2,
11094 OwnershipConflict = 3,
11095 LocalEntityCancelledAutoResolveConflict = 4,
11096 LocalEntityCancelledManualResolveConflict = 5,
11097 LocalEntityCancelledRemoveEntityTCRReceived = 6,
11098}
11099
11100impl OwnershipStatus {
11101 #[must_use]
11102 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11103 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11104 }
11105}
11106
11107#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11109pub enum RecordREventType {
11110 #[default]
11111 Other = 0,
11112}
11113
11114impl RecordREventType {
11115 #[must_use]
11116 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11117 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11118 }
11119}
11120
11121#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11123pub enum RecordQueryREventType {
11124 #[default]
11125 Periodic = 0,
11126 InternalEntityStateData = 1,
11127}
11128
11129impl RecordQueryREventType {
11130 #[must_use]
11131 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11132 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
11133 }
11134}
11135
11136impl FieldSerialize for RecordQueryREventType {
11137 fn serialize_field(&self, buf: &mut BytesMut) {
11138 buf.put_u16(*self as u16);
11139 }
11140}
11141
11142impl FieldDeserialize for RecordQueryREventType {
11143 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
11144 Self::deserialize(buf)
11145 }
11146}
11147
11148impl FieldLen for RecordQueryREventType {
11149 fn field_len(&self) -> usize {
11150 2
11151 }
11152}
11153
11154#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11156pub enum UAPropulsionPlantConfigurationConfiguration {
11157 #[default]
11158 Other = 0,
11159 DieselElectric = 1,
11160 Diesel = 2,
11161 Battery = 3,
11162 TurbineReduction = 4,
11163 Steam = 6,
11164 GasTurbine = 7,
11165}
11166
11167impl UAPropulsionPlantConfigurationConfiguration {
11168 #[must_use]
11169 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11170 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11171 }
11172}
11173
11174#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11176pub enum MinefieldStateProtocolMode {
11177 #[default]
11178 HeartbeatMode = 0,
11179 QRPMode = 1,
11180}
11181
11182impl MinefieldStateProtocolMode {
11183 #[must_use]
11184 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11185 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
11186 }
11187}
11188
11189impl FieldSerialize for MinefieldStateProtocolMode {
11190 fn serialize_field(&self, buf: &mut BytesMut) {
11191 buf.put_u16(*self as u16);
11192 }
11193}
11194
11195impl FieldDeserialize for MinefieldStateProtocolMode {
11196 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
11197 Self::deserialize(buf)
11198 }
11199}
11200
11201impl FieldLen for MinefieldStateProtocolMode {
11202 fn field_len(&self) -> usize {
11203 2
11204 }
11205}
11206
11207#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11209pub enum TransponderInterrogatorIndicator {
11210 #[default]
11211 Transponder = 0,
11212 Interrogator = 1,
11213}
11214
11215impl TransponderInterrogatorIndicator {
11216 #[must_use]
11217 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11218 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11219 }
11220}
11221
11222#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11224pub enum IFFSimulationMode {
11225 #[default]
11226 Regeneration = 0,
11227 Interactive = 1,
11228}
11229
11230impl IFFSimulationMode {
11231 #[must_use]
11232 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11233 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11234 }
11235}
11236
11237#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11239pub enum IFFApplicableModes {
11240 #[default]
11241 NoApplicableModesData = 0,
11242 AllModes = 1,
11243}
11244
11245impl IFFApplicableModes {
11246 #[must_use]
11247 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11248 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11249 }
11250}
11251
11252#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11254pub enum ModeCAltitudeIndicator {
11255 #[default]
11256 PositiveAltitudeAboveMSL = 0,
11257 NegativeAltitudeBelowMSLUseAlternateModeCAltitude = 1,
11258}
11259
11260impl ModeCAltitudeIndicator {
11261 #[must_use]
11262 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11263 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11264 }
11265}
11266
11267#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11269pub enum TCASACASBasicAdvancedIndicator {
11270 #[default]
11271 Basic = 0,
11272 Advanced = 1,
11273}
11274
11275impl TCASACASBasicAdvancedIndicator {
11276 #[must_use]
11277 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11278 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11279 }
11280}
11281
11282#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11284pub enum TCASACASIndicator {
11285 #[default]
11286 TCAS = 0,
11287 ACAS = 1,
11288}
11289
11290impl TCASACASIndicator {
11291 #[must_use]
11292 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11293 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11294 }
11295}
11296
11297#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11299pub enum TCASACASSoftwareVersion {
11300 #[default]
11301 NoStatement = 0,
11302 _6_0_2 = 1,
11303 _7_0 = 2,
11304}
11305
11306impl TCASACASSoftwareVersion {
11307 #[must_use]
11308 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11309 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11310 }
11311}
11312
11313#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11315pub enum TCASACASType {
11316 #[default]
11317 NoStatement = 0,
11318 ACASI = 1,
11319 ACASII = 2,
11320}
11321
11322impl TCASACASType {
11323 #[must_use]
11324 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11325 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11326 }
11327}
11328
11329#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11331pub enum TCASIIIType {
11332 #[default]
11333 TCASI = 0,
11334 TCASII = 1,
11335}
11336
11337impl TCASIIIType {
11338 #[must_use]
11339 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11340 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11341 }
11342}
11343
11344#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11346pub enum Mode5IFFMission {
11347 #[default]
11348 NoStatement = 0,
11349 SurveillanceSHORAD = 1,
11350 SHORADassociatedwithaWeaponsSystem = 2,
11351 WeaponSystem = 3,
11352 AirborneandSurfaceSurveillancePlatforms = 4,
11353 AirborneandSurfaceWeaponsPlatforms = 5,
11354 GroundtoGround = 6,
11355}
11356
11357impl Mode5IFFMission {
11358 #[must_use]
11359 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11360 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11361 }
11362}
11363
11364#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11366pub enum ModeSInterrogatorStatusTransmitState {
11367 #[default]
11368 NoStatement = 0,
11369 RollCall = 1,
11370 AllCall = 2,
11371 LockoutOverride = 3,
11372 TemporaryLockout = 4,
11373 IntermittentLockout = 5,
11374}
11375
11376impl ModeSInterrogatorStatusTransmitState {
11377 #[must_use]
11378 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11379 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11380 }
11381}
11382
11383#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11385pub enum ModeSInterrogatorIdentifierICType {
11386 #[default]
11387 II = 0,
11388 SI = 1,
11389}
11390
11391impl ModeSInterrogatorIdentifierICType {
11392 #[must_use]
11393 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11394 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11395 }
11396}
11397
11398#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11400pub enum ISLSAntennaType {
11401 #[default]
11402 NoStatement = 0,
11403 MonopulseAntenna = 1,
11404}
11405
11406impl ISLSAntennaType {
11407 #[must_use]
11408 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11409 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11410 }
11411}
11412
11413#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11415pub enum Mode5Reply {
11416 #[default]
11417 NoResponse = 0,
11418 Valid = 1,
11419 Invalid = 2,
11420 UnabletoVerify = 3,
11421}
11422
11423impl Mode5Reply {
11424 #[must_use]
11425 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11426 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11427 }
11428}
11429
11430#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11432pub enum AntennaSelection {
11433 #[default]
11434 NoStatement = 0,
11435 Top = 1,
11436 Bottom = 2,
11437 Diversity = 3,
11438}
11439
11440impl AntennaSelection {
11441 #[must_use]
11442 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11443 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11444 }
11445}
11446
11447#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11449pub enum Mode5SquitterType {
11450 #[default]
11451 NotCapable = 0,
11452 Short = 1,
11453 Extended = 2,
11454}
11455
11456impl Mode5SquitterType {
11457 #[must_use]
11458 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11459 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11460 }
11461}
11462
11463#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11465pub enum Level2SquitterStatus {
11466 #[default]
11467 Disabled = 0,
11468 Enabled = 1,
11469}
11470
11471impl Level2SquitterStatus {
11472 #[must_use]
11473 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11474 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11475 }
11476}
11477
11478#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11480pub enum ModeSSquitterType {
11481 #[default]
11482 NotCapable = 0,
11483 Acquisition = 1,
11484 Extended = 2,
11485 Short = 3,
11486}
11487
11488impl ModeSSquitterType {
11489 #[must_use]
11490 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11491 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11492 }
11493}
11494
11495#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11497pub enum ModeSSquitterRecordSource {
11498 #[default]
11499 Layer4IFFDataRecords = 0,
11500 Layer5GICBIFFDataRecords = 1,
11501}
11502
11503impl ModeSSquitterRecordSource {
11504 #[must_use]
11505 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11506 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11507 }
11508}
11509
11510#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11512pub enum AircraftPresentDomain {
11513 #[default]
11514 NoStatement = 0,
11515 Airborne = 1,
11516 OnGroundSurface = 2,
11517}
11518
11519impl AircraftPresentDomain {
11520 #[must_use]
11521 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11522 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11523 }
11524}
11525
11526#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11528pub enum AircraftIdentificationType {
11529 #[default]
11530 NoStatement = 0,
11531 FlightNumber = 1,
11532 TailNumber = 2,
11533}
11534
11535impl AircraftIdentificationType {
11536 #[must_use]
11537 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11538 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11539 }
11540}
11541
11542#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11544pub enum CapabilityReport {
11545 #[default]
11546 NoCommunicationsCapability = 0,
11547 SignifiesatLeastCommAandCommBCapabilityandAbilitytoSetCACode7andontheGround = 4,
11548 SignifiesatLeastCommAandCommBcapabilityandAbilitytoSetCACode7andAirborne = 5,
11549 SignifiesatLeastCommAandCommBcapabilityandAbilitytoSetCACode7andEitherAirborneorontheGround = 6,
11550 SignifiestheDownlinkRequestFieldEquals234or5andEitherAirborneorontheGround = 7,
11551 NoStatement = 255,
11552}
11553
11554impl CapabilityReport {
11555 #[must_use]
11556 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11557 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11558 }
11559}
11560
11561#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11563pub enum NavigationSource {
11564 #[default]
11565 NoStatement = 0,
11566 GPS = 1,
11567 INS = 2,
11568 INSGPS = 3,
11569}
11570
11571impl NavigationSource {
11572 #[must_use]
11573 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11574 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11575 }
11576}
11577
11578#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11580pub enum IFFDataRecordAvailable {
11581 #[default]
11582 ComputeLocally = 0,
11583 IFFDataRecordAvailable = 1,
11584}
11585
11586impl IFFDataRecordAvailable {
11587 #[must_use]
11588 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11589 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11590 }
11591}
11592
11593#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11595pub enum Mode5SAltitudeResolution {
11596 #[default]
11597 _100foot = 0,
11598 _25foot = 1,
11599}
11600
11601impl Mode5SAltitudeResolution {
11602 #[must_use]
11603 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11604 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11605 }
11606}
11607
11608#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11610pub enum DeltaMode5SAltitudePositiveNegativeIndicator {
11611 #[default]
11612 Positive = 0,
11613 Negative = 1,
11614}
11615
11616impl DeltaMode5SAltitudePositiveNegativeIndicator {
11617 #[must_use]
11618 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11619 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11620 }
11621}
11622
11623#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11625pub enum FormatType {
11626 #[default]
11627 NoData = 0,
11628 IdentityFormat = 4,
11629 SurfaceFormat5meterRNP = 5,
11630 SurfaceFormat100meterRNP = 6,
11631 AirborneFormat5meterRNP25footBarometricAltitude = 7,
11632 AirborneFormat100meterRNP25footBarometricAltitude = 8,
11633 AirborneFormat0_25nmiRNP25footBarometricAltitude = 9,
11634 AirborneFormat1_0nmiRNP25footBarometricAltitude = 10,
11635 AirborneFormat5meterRNP100footBarometricAltitude = 11,
11636 AirborneFormat100meterRNP100footBarometricAltitude = 12,
11637 AirborneFormat0_25nmiRNP100footBarometricAltitude = 13,
11638 AirborneFormat1_0nmiRNP100footBarometricAltitude = 14,
11639 AirborneFormat5meterRNPGPSHeight = 15,
11640 AirborneFormat100meterRNPGPSHeight = 16,
11641}
11642
11643impl FormatType {
11644 #[must_use]
11645 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11646 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11647 }
11648}
11649
11650#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11652pub enum AircraftAddressSource {
11653 #[default]
11654 ModeSAircraftAddressFieldValue = 0,
11655 GICBIFFDataRecordAvailable = 1,
11656}
11657
11658impl AircraftAddressSource {
11659 #[must_use]
11660 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11661 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11662 }
11663}
11664
11665#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11667pub enum SurveillanceStatus {
11668 #[default]
11669 NoInformation = 0,
11670 EmergencyLossofCommunications = 1,
11671 SPI = 2,
11672 ATCRBSCodeChange = 3,
11673}
11674
11675impl SurveillanceStatus {
11676 #[must_use]
11677 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11678 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11679 }
11680}
11681
11682#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11684pub enum TurnRateSource {
11685 #[default]
11686 ComputeLocally = 0,
11687 LessThan1DegreeTurnorNotTurning = 1,
11688 _1DegreeorGreaterTurnRate = 2,
11689}
11690
11691impl TurnRateSource {
11692 #[must_use]
11693 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11694 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11695 }
11696}
11697
11698#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11700pub enum TimeTypeSource {
11701 #[default]
11702 ComputeLocally = 0,
11703 EvenSecond = 1,
11704 OddSecond = 2,
11705}
11706
11707impl TimeTypeSource {
11708 #[must_use]
11709 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11710 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11711 }
11712}
11713
11714#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11716pub enum AircraftTypeWake {
11717 #[default]
11718 NoStatement = 0,
11719}
11720
11721impl AircraftTypeWake {
11722 #[must_use]
11723 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11724 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11725 }
11726}
11727
11728#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11730pub enum DataCategory {
11731 #[default]
11732 NoStatement = 0,
11733 FunctionalData = 1,
11734 TransponderInterrogatorDataLinkMessages = 2,
11735}
11736
11737impl DataCategory {
11738 #[must_use]
11739 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11740 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11741 }
11742}
11743
11744#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11746pub enum TILinkType {
11747 #[default]
11748 NotUsed = 0,
11749 GroundInitiatedCommunicationsB = 1,
11750 AutomaticDependentSurveillance = 2,
11751 GlobalNavigationSatelliteSystem = 3,
11752 DataLinkInitiationCapability = 4,
11753 AircraftCommunicationsAddressingandReportingSystem = 5,
11754 ATCCommunicationsManagement = 6,
11755 VHFDigitalLink = 7,
11756 AeronauticalTelecommunicationNetwork = 8,
11757 ModeSelect = 9,
11758 AirborneCollisionAvoidanceSystems = 10,
11759 TrafficCollisionAvoidanceSystems = 11,
11760 AutomaticDependentSurveillanceB = 12,
11761}
11762
11763impl TILinkType {
11764 #[must_use]
11765 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11766 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11767 }
11768}
11769
11770#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11772pub enum AntennaStatus {
11773 #[default]
11774 NoStatement = 0,
11775 NotAbletoEmit = 1,
11776 AbletoEmit = 2,
11777}
11778
11779impl AntennaStatus {
11780 #[must_use]
11781 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11782 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11783 }
11784}
11785
11786#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11788pub enum TransmissionIndicator {
11789 #[default]
11790 NoStatement = 0,
11791 OriginalInterrogation = 1,
11792 InterrogationReply = 2,
11793 SquitterTransmission = 3,
11794}
11795
11796impl TransmissionIndicator {
11797 #[must_use]
11798 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11799 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11800 }
11801}
11802
11803#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11805pub enum ReplyAmplification {
11806 #[default]
11807 NoStatement = 0,
11808 Complete = 1,
11809 Limted = 2,
11810 UnabletoRespond = 3,
11811}
11812
11813impl ReplyAmplification {
11814 #[must_use]
11815 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11816 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11817 }
11818}
11819
11820#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11822pub enum DEFireFlagsStateUpdateFlag {
11823 #[default]
11824 UpdateDuetoHeartbeatTimer = 0,
11825 StateChange = 1,
11826}
11827
11828impl DEFireFlagsStateUpdateFlag {
11829 #[must_use]
11830 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11831 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11832 }
11833}
11834
11835#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11837pub enum ComponentVisualDamageStatusSmoke {
11838 #[default]
11839 NoSmoke = 0,
11840 LightSmoke = 1,
11841 ModerateSmoke = 2,
11842 HeavySmoke = 3,
11843}
11844
11845impl ComponentVisualDamageStatusSmoke {
11846 #[must_use]
11847 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11848 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11849 }
11850}
11851
11852#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11854pub enum ComponentVisualDamageStatusSurfaceDamage {
11855 #[default]
11856 NormalAppearance = 0,
11857 LightCharring = 1,
11858 HeavyCharring = 2,
11859 OneorMoreHolesBurnedCompletelythroughSurface = 3,
11860}
11861
11862impl ComponentVisualDamageStatusSurfaceDamage {
11863 #[must_use]
11864 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11865 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11866 }
11867}
11868
11869#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11871pub enum GridAxisDescriptorAxisType {
11872 #[default]
11873 RegularAxis = 0,
11874 IrregularAxis = 1,
11875}
11876
11877impl GridAxisDescriptorAxisType {
11878 #[must_use]
11879 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11880 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11881 }
11882}
11883
11884impl FieldSerialize for GridAxisDescriptorAxisType {
11885 fn serialize_field(&self, buf: &mut BytesMut) {
11886 buf.put_u8(*self as u8);
11887 }
11888}
11889
11890impl FieldDeserialize for GridAxisDescriptorAxisType {
11891 fn deserialize_field<B: Buf>(buf: &mut B) -> Self {
11892 Self::deserialize(buf)
11893 }
11894}
11895
11896impl FieldLen for GridAxisDescriptorAxisType {
11897 fn field_len(&self) -> usize {
11898 1
11899 }
11900}
11901
11902#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11904pub enum AppearancePaintScheme {
11905 #[default]
11906 UniformColor = 0,
11907 Camouflage = 1,
11908}
11909
11910impl AppearancePaintScheme {
11911 #[must_use]
11912 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11913 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11914 }
11915}
11916
11917#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11919pub enum AppearanceDamage {
11920 #[default]
11921 NoDamage = 0,
11922 SlightDamage = 1,
11923 ModerateDamage = 2,
11924 Destroyed = 3,
11925}
11926
11927impl AppearanceDamage {
11928 #[must_use]
11929 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11930 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11931 }
11932}
11933
11934#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11936pub enum Mode5MessageFormatsStatus {
11937 #[default]
11938 Capability = 0,
11939 ActiveInterrogation = 1,
11940}
11941
11942impl Mode5MessageFormatsStatus {
11943 #[must_use]
11944 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11945 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11946 }
11947}
11948
11949#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11951pub enum AppearanceTrailingEffects {
11952 #[default]
11953 None = 0,
11954 Small = 1,
11955 Medium = 2,
11956 Large = 3,
11957}
11958
11959impl AppearanceTrailingEffects {
11960 #[must_use]
11961 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11962 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11963 }
11964}
11965
11966#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11968pub enum AppearanceHatch {
11969 #[default]
11970 NotApplicable = 0,
11971 Closed = 1,
11972 Popped = 2,
11973 PoppedandPersonIsVisible = 3,
11974 Open = 4,
11975 OpenandPersonIsVisible = 5,
11976}
11977
11978impl AppearanceHatch {
11979 #[must_use]
11980 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11981 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11982 }
11983}
11984
11985#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
11987pub enum AppearanceLauncherOperational {
11988 #[default]
11989 NotRaisedNotOperational = 0,
11990 RaisedOperational = 1,
11991}
11992
11993impl AppearanceLauncherOperational {
11994 #[must_use]
11995 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
11996 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
11997 }
11998}
11999
12000#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12002pub enum AppearanceCamouflageType {
12003 #[default]
12004 DesertCamouflage = 0,
12005 WinterCamouflage = 1,
12006 ForestCamouflage = 2,
12007 Other = 3,
12008}
12009
12010impl AppearanceCamouflageType {
12011 #[must_use]
12012 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12013 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12014 }
12015}
12016
12017#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12019pub enum AppearanceConcealedPosition {
12020 #[default]
12021 NotConcealed = 0,
12022 PreparedConcealedPosition = 1,
12023}
12024
12025impl AppearanceConcealedPosition {
12026 #[must_use]
12027 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12028 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12029 }
12030}
12031
12032#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12034pub enum AppearanceEntityorObjectState {
12035 #[default]
12036 Active = 0,
12037 Deactivated = 1,
12038}
12039
12040impl AppearanceEntityorObjectState {
12041 #[must_use]
12042 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12043 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12044 }
12045}
12046
12047#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12049pub enum AppearanceCanopy {
12050 #[default]
12051 NotApplicable = 0,
12052 SingleCanopySingleTroopDoorClosed = 1,
12053 FrontandRearCanopyLeftandRightTroopDoorClosed = 2,
12054 FrontCanopyLeftTroopDoorOpen = 3,
12055 SingleCanopySingleTroopDoorOpen = 4,
12056 RearCanopyRightTroopDoorOpen = 5,
12057 FrontandRearCanopyLeftandRightTroopDoorOpen = 6,
12058}
12059
12060impl AppearanceCanopy {
12061 #[must_use]
12062 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12063 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12064 }
12065}
12066
12067#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12069pub enum AppearanceSubsurfaceHatch {
12070 #[default]
12071 NotApplicable = 0,
12072 HatchIsClosed = 1,
12073 HatchIsOpen = 4,
12074}
12075
12076impl AppearanceSubsurfaceHatch {
12077 #[must_use]
12078 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12079 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12080 }
12081}
12082
12083#[derive(Specifier, Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12085#[bits = 1]
12086pub enum ActiveInterrogationIndicator {
12087 #[default]
12088 NotActive = 0,
12089 Active = 1,
12090}
12091
12092impl ActiveInterrogationIndicator {
12093 #[must_use]
12094 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12095 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12096 }
12097}
12098
12099#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12101pub enum AppearanceLifeformHealth {
12102 #[default]
12103 NoInjury = 0,
12104 SlightInjury = 1,
12105 ModerateInjury = 2,
12106 FatalInjury = 3,
12107}
12108
12109impl AppearanceLifeformHealth {
12110 #[must_use]
12111 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12112 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12113 }
12114}
12115
12116#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12118pub enum AppearanceLifeFormComplianceStatus {
12119 #[default]
12120 NotSpecified = 0,
12121 Detained = 1,
12122 Surrender = 2,
12123 UsingFists = 3,
12124 VerbalAbuseLevel1 = 4,
12125 VerbalAbuseLevel2 = 5,
12126 VerbalAbuseLevel3 = 6,
12127 PassiveResistanceLevel1 = 7,
12128 PassiveResistanceLevel2 = 8,
12129 PassiveResistanceLevel3 = 9,
12130 UsingNonLethalWeapon1 = 10,
12131 UsingNonLethalWeapon2 = 11,
12132 UsingNonLethalWeapon3 = 12,
12133 UsingNonLethalWeapon4 = 13,
12134 UsingNonLethalWeapon5 = 14,
12135 UsingNonLethalWeapon6 = 15,
12136}
12137
12138impl AppearanceLifeFormComplianceStatus {
12139 #[must_use]
12140 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12141 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12142 }
12143}
12144
12145#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12147pub enum AppearanceLifeFormPosture {
12148 #[default]
12149 NotSpecified = 0,
12150 UprightStandingStill = 1,
12151 UprightWalking = 2,
12152 UprightRunning = 3,
12153 Kneeling = 4,
12154 Prone = 5,
12155 Crawling = 6,
12156 Swimming = 7,
12157 Parachuting = 8,
12158 Jumping = 9,
12159 Sitting = 10,
12160 Squatting = 11,
12161 Crouching = 12,
12162 Wading = 13,
12163 Surrender = 14,
12164 Detained = 15,
12165}
12166
12167impl AppearanceLifeFormPosture {
12168 #[must_use]
12169 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12170 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12171 }
12172}
12173
12174#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12176pub enum AppearanceLifeFormWeaponImplement {
12177 #[default]
12178 NotPresent = 0,
12179 Stowed = 1,
12180 DeployedActive = 2,
12181 FiringPositionInUse = 3,
12182}
12183
12184impl AppearanceLifeFormWeaponImplement {
12185 #[must_use]
12186 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12187 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12188 }
12189}
12190
12191#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12193pub enum AppearanceConcealedMovement {
12194 #[default]
12195 OpenMovement = 0,
12196 RushesBetweenCoveredPositions = 1,
12197}
12198
12199impl AppearanceConcealedMovement {
12200 #[must_use]
12201 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12202 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12203 }
12204}
12205
12206#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12208pub enum AppearanceEnvironmentalDensity {
12209 #[default]
12210 Clear = 0,
12211 Hazy = 1,
12212 Dense = 2,
12213 VeryDense = 3,
12214 Opaque = 4,
12215}
12216
12217impl AppearanceEnvironmentalDensity {
12218 #[must_use]
12219 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12220 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12221 }
12222}
12223
12224#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12226pub enum Mode5PlatformType {
12227 #[default]
12228 GroundVehicle = 0,
12229 AirVehicle = 1,
12230}
12231
12232impl Mode5PlatformType {
12233 #[must_use]
12234 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12235 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12236 }
12237}
12238
12239#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12241pub enum AppearanceAntiCollisionDayNight {
12242 #[default]
12243 Day = 0,
12244 Night = 1,
12245}
12246
12247impl AppearanceAntiCollisionDayNight {
12248 #[must_use]
12249 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12250 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12251 }
12252}
12253
12254#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12256pub enum AppearanceNavigationPositionBrightness {
12257 #[default]
12258 Dim = 0,
12259 Bright = 1,
12260}
12261
12262impl AppearanceNavigationPositionBrightness {
12263 #[must_use]
12264 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12265 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12266 }
12267}
12268
12269#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12271pub enum AppearanceSupplyDeployed {
12272 #[default]
12273 NotApplicable = 0,
12274 Stowed = 1,
12275 Deployed = 2,
12276 DeployedandActive = 3,
12277}
12278
12279impl AppearanceSupplyDeployed {
12280 #[must_use]
12281 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12282 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12283 }
12284}
12285
12286#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12288pub enum AppearanceNVGMode {
12289 #[default]
12290 OvertLighting = 0,
12291 CovertLighting = 1,
12292}
12293
12294impl AppearanceNVGMode {
12295 #[must_use]
12296 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12297 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12298 }
12299}
12300
12301#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12303pub enum Parachute {
12304 #[default]
12305 None = 0,
12306 Deployed = 1,
12307 Collapsed = 2,
12308 MalfunctionStreamer = 3,
12309}
12310
12311impl Parachute {
12312 #[must_use]
12313 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12314 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12315 }
12316}
12317
12318#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12320pub enum FlareSmokeColor {
12321 #[default]
12322 White = 0,
12323 Red = 1,
12324 Green = 2,
12325 IR = 3,
12326}
12327
12328impl FlareSmokeColor {
12329 #[must_use]
12330 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12331 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12332 }
12333}
12334
12335#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12337pub enum FlareSmokeStatus {
12338 #[default]
12339 NotIgnited = 0,
12340 Burning = 1,
12341 BurnedOut = 2,
12342}
12343
12344impl FlareSmokeStatus {
12345 #[must_use]
12346 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12347 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12348 }
12349}
12350
12351#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12353pub enum SpotChaffStatus {
12354 #[default]
12355 None = 0,
12356 Deployed = 1,
12357 Malfunction = 2,
12358}
12359
12360impl SpotChaffStatus {
12361 #[must_use]
12362 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12363 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12364 }
12365}
12366
12367#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12369pub enum AppearanceObjectGeneralDamage {
12370 #[default]
12371 NoDamage = 0,
12372 Damaged = 1,
12373 Destroyed = 2,
12374}
12375
12376impl AppearanceObjectGeneralDamage {
12377 #[must_use]
12378 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12379 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12380 }
12381}
12382
12383#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12385pub enum AppearanceObjectGeneralPredistributed {
12386 #[default]
12387 ObjectCreatedDuringtheExercise = 0,
12388 ObjectPredistributedPriortoExerciseStart = 1,
12389}
12390
12391impl AppearanceObjectGeneralPredistributed {
12392 #[must_use]
12393 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12394 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12395 }
12396}
12397
12398#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12400pub enum AppearanceObjectSpecificBreachState {
12401 #[default]
12402 NoBreaching = 0,
12403 Breached = 1,
12404 Cleared = 2,
12405}
12406
12407impl AppearanceObjectSpecificBreachState {
12408 #[must_use]
12409 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12410 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12411 }
12412}
12413
12414#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12416pub enum AppearanceObjectSpecificChemicalType {
12417 #[default]
12418 Other = 0,
12419 Hydrochloric = 1,
12420 WhitePhosphorous = 2,
12421 RedPhosphorous = 3,
12422}
12423
12424impl AppearanceObjectSpecificChemicalType {
12425 #[must_use]
12426 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12427 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12428 }
12429}
12430
12431#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12433pub enum AppearanceLinearObjectTankDitchBreach {
12434 #[default]
12435 NoBreaching = 0,
12436 SlightBreaching = 1,
12437 ModerateBreached = 2,
12438 Cleared = 3,
12439}
12440
12441impl AppearanceLinearObjectTankDitchBreach {
12442 #[must_use]
12443 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12444 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12445 }
12446}
12447
12448#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12450pub enum AppearanceLinearObjectLaneMarkerVisible {
12451 #[default]
12452 LeftSideIsVisible = 0,
12453 RightSideIsVisible = 1,
12454 BothSidesAreVisible = 2,
12455}
12456
12457impl AppearanceLinearObjectLaneMarkerVisible {
12458 #[must_use]
12459 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12460 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12461 }
12462}
12463
12464#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12466pub enum AppearanceObjectGeneralIEDPresent {
12467 #[default]
12468 None = 0,
12469 Visible = 1,
12470 PartiallyHidden = 2,
12471 CompletelyHidden = 3,
12472}
12473
12474impl AppearanceObjectGeneralIEDPresent {
12475 #[must_use]
12476 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12477 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12478 }
12479}
12480
12481#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12483pub enum Mode5LevelSelection {
12484 #[default]
12485 Mode5Level1 = 0,
12486 Mode5Level2 = 1,
12487}
12488
12489impl Mode5LevelSelection {
12490 #[must_use]
12491 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12492 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12493 }
12494}
12495
12496#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12498pub enum SupplyFuelType {
12499 #[default]
12500 Other = 0,
12501 Gasoline = 1,
12502 DieselFuel = 2,
12503 JP4 = 3,
12504 FuelOil = 4,
12505 JP8 = 5,
12506 FogOil = 6,
12507 MultiSpectralFogOil = 7,
12508 JP5 = 8,
12509 JPTS = 9,
12510 TS1 = 10,
12511}
12512
12513impl SupplyFuelType {
12514 #[must_use]
12515 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12516 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12517 }
12518}
12519
12520#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12522pub enum SensorTypeSource {
12523 #[default]
12524 OtherActiveSensors = 0,
12525 Electromagnetic = 1,
12526 PassiveSensors = 2,
12527 MinefieldSensors = 3,
12528 UnderwaterAcoustics = 4,
12529 Lasers = 5,
12530}
12531
12532impl SensorTypeSource {
12533 #[must_use]
12534 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12535 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12536 }
12537}
12538
12539#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12541pub enum AttachedPartDetachedIndicator {
12542 #[default]
12543 Attached = 0,
12544 Detached = 1,
12545}
12546
12547impl AttachedPartDetachedIndicator {
12548 #[must_use]
12549 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12550 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12551 }
12552}
12553
12554#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12556pub enum IntercomControlCommunicationsClass {
12557 #[default]
12558 SimulatedCommunicationsChannel = 0,
12559 SimulationSupportCommunicationsChannel = 1,
12560}
12561
12562impl IntercomControlCommunicationsClass {
12563 #[must_use]
12564 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12565 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12566 }
12567}
12568
12569#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12571pub enum DISLiveEntitySubprotocolNumber {
12572 #[default]
12573 NoSubprotocol = 0,
12574}
12575
12576impl DISLiveEntitySubprotocolNumber {
12577 #[must_use]
12578 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12579 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12580 }
12581}
12582
12583#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12585pub enum MinefieldAppearanceMinefieldType {
12586 #[default]
12587 MixedAntiPersonnelandAntiTankMinefield = 0,
12588 PureAntiPersonnelMinefield = 1,
12589 PureAntiTankMinefield = 2,
12590}
12591
12592impl MinefieldAppearanceMinefieldType {
12593 #[must_use]
12594 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12595 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12596 }
12597}
12598
12599#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12601pub enum MinefieldAppearanceActiveStatus {
12602 #[default]
12603 Active = 0,
12604 Inactive = 1,
12605}
12606
12607impl MinefieldAppearanceActiveStatus {
12608 #[must_use]
12609 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12610 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12611 }
12612}
12613
12614#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12616pub enum MinefieldAppearanceLane {
12617 #[default]
12618 MinefieldHasActiveLane = 0,
12619 MinefieldHasanInactiveLane = 1,
12620}
12621
12622impl MinefieldAppearanceLane {
12623 #[must_use]
12624 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12625 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12626 }
12627}
12628
12629#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12631pub enum MinefieldAppearanceState {
12632 #[default]
12633 Active = 0,
12634 Deactivated = 1,
12635}
12636
12637impl MinefieldAppearanceState {
12638 #[must_use]
12639 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12640 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12641 }
12642}
12643
12644#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12646pub enum MinefieldFusingFuseType {
12647 #[default]
12648 NoFuse = 0,
12649 Other = 1,
12650 Pressure = 2,
12651 Magnetic = 3,
12652 TiltRod = 4,
12653 Command = 5,
12654 TripWire = 6,
12655}
12656
12657impl MinefieldFusingFuseType {
12658 #[must_use]
12659 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12660 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12661 }
12662}
12663
12664#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12666pub enum Mode5LocationErrors {
12667 #[default]
12668 NoLocationErrors = 0,
12669 IFFDataRecordPresent = 1,
12670}
12671
12672impl Mode5LocationErrors {
12673 #[must_use]
12674 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12675 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12676 }
12677}
12678
12679#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12681pub enum MinefieldPaintSchemeAlgae {
12682 #[default]
12683 None = 0,
12684 Light = 1,
12685 Moderate = 2,
12686 Heavy = 3,
12687}
12688
12689impl MinefieldPaintSchemeAlgae {
12690 #[must_use]
12691 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12692 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12693 }
12694}
12695
12696#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12698pub enum MinefieldPaintSchemePaintScheme {
12699 #[default]
12700 Other = 0,
12701 Standard = 1,
12702 CamouflageDesert = 2,
12703 CamouflageJungle = 3,
12704 CamouflageSnow = 4,
12705 CamouflageGravel = 5,
12706 CamouflagePavement = 6,
12707 CamouflageSand = 7,
12708 NaturalWood = 8,
12709 Clear = 9,
12710 Red = 10,
12711 Blue = 11,
12712 Green = 12,
12713 Olive = 13,
12714 White = 14,
12715 Tan = 15,
12716 Black = 16,
12717 Yellow = 17,
12718 Brown = 18,
12719}
12720
12721impl MinefieldPaintSchemePaintScheme {
12722 #[must_use]
12723 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12724 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12725 }
12726}
12727
12728#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12730pub enum CoverShroudStatus {
12731 #[default]
12732 Closed = 0,
12733 Opening = 1,
12734 CoverShroudBlownDetached = 2,
12735 OpenAttached = 3,
12736}
12737
12738impl CoverShroudStatus {
12739 #[must_use]
12740 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12741 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12742 }
12743}
12744
12745#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12747pub enum PlatformLandMotorcycleSubcategories {
12748 #[default]
12749 Other = 0,
12750 Scooter = 1,
12751 SportStreet = 2,
12752 Cruiser = 3,
12753 DirtBike = 4,
12754 Standard = 5,
12755 Touring = 6,
12756 DualPurpose = 7,
12757}
12758
12759impl PlatformLandMotorcycleSubcategories {
12760 #[must_use]
12761 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12762 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12763 }
12764}
12765
12766#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12770pub enum PlatformLandCarSubcategories {
12771 #[default]
12772 Other = 0,
12773 Generic = 10,
12774 GenericMiniMicrocar = 11,
12775 GenericEconomyCompact = 12,
12776 GenericIntermediateStandard = 13,
12777 GenericFullPremiumLuxury = 14,
12778 GenericOversize = 15,
12779 _2DoorCoupe = 20,
12780 _2DoorCoupeMiniMicrocar = 21,
12781 _2DoorCoupeEconomyCompact = 22,
12782 _2DoorCoupeIntermediateStandard = 23,
12783 _3DoorHatchback = 30,
12784 _3DoorHatchbackMiniMicrocar = 31,
12785 _3DoorHatchbackEconomyCompact = 32,
12786 _4DoorSedan = 40,
12787 _4DoorSedanMiniMicrocar = 41,
12788 _4DoorSedanEconomyCompact = 42,
12789 _4DoorSedanIntermediateStandard = 43,
12790 _4DoorSedanFullPremiumLuxury = 44,
12791 _4DoorSedanOversize = 45,
12792 _5DoorHatchback = 50,
12793 _5DoorHatchbackMiniMicrocar = 51,
12794 _5DoorHatchbackEconomyCompact = 52,
12795 _5DoorHatchbackIntermediateStandard = 53,
12796 _5DoorHatchbackFullPremiumLuxury = 54,
12797 Wagon = 60,
12798 WagonEconomyCompact = 62,
12799 WagonIntermediateStandard = 63,
12800 WagonFullPremiumLuxury = 64,
12801 Minivan = 70,
12802 Limousine = 80,
12803 LimousineFullPremiumLuxury = 84,
12804 LimousineOversize = 85,
12805 Sports = 90,
12806 Convertible = 100,
12807 ConvertibleMiniMicrocar = 101,
12808 ConvertibleEconomyCompact = 102,
12809 ConvertibleIntermediateStandard = 103,
12810 ConvertibleFullPremiumLuxury = 104,
12811 SportsUtilityVehicle = 110,
12812 SportsUtilityVehicleEconomyCompact = 112,
12813 SportsUtilityVehicleIntermediateStandard = 113,
12814 SportsUtilityVehicleFullPremiumLuxury = 114,
12815 SportsUtilityVehicleOversize = 115,
12816}
12817
12818impl PlatformLandCarSubcategories {
12819 #[must_use]
12820 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12821 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12822 }
12823}
12824
12825#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12827pub enum PlatformLandBusSubcategories {
12828 #[default]
12829 Other = 0,
12830 CommuterFlatNose = 1,
12831 CommuterSnoutNose = 2,
12832 Shuttle = 3,
12833 DoubleDecker = 4,
12834 Guided = 5,
12835 Kneeling = 6,
12836 Midibus = 7,
12837 Minibus = 8,
12838 MiniWheelchair = 9,
12839 Motorcoach = 10,
12840 PrisonBus = 11,
12841 Schoolbus = 12,
12842 SchoolWheelchair = 13,
12843 Tour = 14,
12844 TramParkingLot = 15,
12845 Trolley = 16,
12846 AirportTransport = 17,
12847 Articulated = 18,
12848}
12849
12850impl PlatformLandBusSubcategories {
12851 #[must_use]
12852 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12853 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12854 }
12855}
12856
12857#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12859pub enum PlatformLandSingleUnitCargoTruckSubcategories {
12860 #[default]
12861 Other = 0,
12862 PickupTruckMini = 1,
12863 PickupTruckMidSize = 2,
12864 PickupTruckFullSize = 3,
12865 PickupTruckCrewCab = 4,
12866 PickupTruckExtendedCab = 5,
12867 PickupTruckLongBed = 6,
12868 PickupTruckCabForward = 7,
12869 CargoTruck = 10,
12870 CargoTruckupto2_5Ton = 11,
12871 CargoTruckupto5Ton = 12,
12872 CargoTruckupto7_5Ton = 13,
12873 CargoTruckupto10Ton = 14,
12874 CargoTruckover10Ton = 15,
12875 Tanker = 20,
12876 SemiTrailerCab = 30,
12877 Van = 70,
12878 VanExtended = 71,
12879 VanCompact = 72,
12880 VanWheelchair = 73,
12881 VanDelivery = 74,
12882 DeliveryTruck = 100,
12883 DeliveryTruckBox = 101,
12884 DeliveryTruckFlatbed = 102,
12885 DeliveryTruckStakeBed = 103,
12886 MessTruck = 104,
12887 TruckPalletisedLoadSystem = 105,
12888 TruckPetroleumOilandLubricants = 106,
12889 TruckPetroleumOilandLubricantsSurveillance = 107,
12890 RefrigeratedTruckSmall = 108,
12891 RefrigeratedTruckMedium = 109,
12892 RefrigeratedTruckLarge = 110,
12893}
12894
12895impl PlatformLandSingleUnitCargoTruckSubcategories {
12896 #[must_use]
12897 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12898 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12899 }
12900}
12901
12902#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12904pub enum PlatformLandSingleUnitUtilityEmergencyTruckSubcategories {
12905 #[default]
12906 Other = 0,
12907 AmbulanceTruck = 1,
12908 FireParamedicTruck = 2,
12909 AmbulanceAdvancedLifeSupport = 3,
12910 AmbulancePickupTruck = 4,
12911 FireEngine = 10,
12912 AerialLadderFireEngine = 11,
12913 AirportFireEngine = 12,
12914 WildlandFireEngine = 13,
12915 FireChief = 14,
12916 PolicePaddyWagon = 20,
12917 PoliceSWAT = 21,
12918 PoliceBombSquad = 22,
12919 PolicePickupTruck = 23,
12920 Hazmat = 30,
12921 WreckerNormalHookandChain = 40,
12922 WreckerNormalBoom = 41,
12923 WreckerNormalWheelLift = 42,
12924 WreckerNormalFlatbed = 43,
12925 WreckerNormalIntegrated = 44,
12926 WreckerHeavyHookandChain = 45,
12927 WreckerHeavyBoom = 46,
12928 WreckerHeavyWheelLift = 47,
12929 WreckerHeavyFlatbed = 48,
12930 WreckerHeavyIntegrated = 49,
12931 PostalTruck = 60,
12932 StreetSweeper = 70,
12933 StreetSweeperThreeWheeled = 71,
12934 WasteCollectionOther = 80,
12935 WasteCollectionFrontLoader = 81,
12936 WasteCollectionRearLoader = 82,
12937 WasteCollectionAutomatedSideLoader = 83,
12938 WasteCollectionPneumaticCollection = 84,
12939 WasteCollectionGrapple = 85,
12940 UtilityTruck = 90,
12941 UtilityTruckwBoom = 91,
12942 AerialWorkPlatformOther = 100,
12943 AerialWorkPlatformScissorLift = 101,
12944 AerialWorkPlatformTelescoping = 102,
12945 MaintenanceTruck = 120,
12946 DecontaminationTruck = 121,
12947 WaterCannonTruck = 122,
12948 WaterPurificationTruck = 123,
12949 SmokeGeneratorTruck = 124,
12950 AutoRickshaw = 150,
12951}
12952
12953impl PlatformLandSingleUnitUtilityEmergencyTruckSubcategories {
12954 #[must_use]
12955 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12956 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12957 }
12958}
12959
12960#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12962pub enum PlatformLandMultipleUnitCargoTruckSubcategories {
12963 #[default]
12964 Other = 0,
12965 TractorTrailer = 1,
12966 Tanker = 2,
12967}
12968
12969impl PlatformLandMultipleUnitCargoTruckSubcategories {
12970 #[must_use]
12971 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12972 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12973 }
12974}
12975
12976#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12978pub enum PlatformLandMultipleUnitUtilityEmergencyTruckSubcategories {
12979 #[default]
12980 Other = 0,
12981 FireEngineHookAndLadder = 1,
12982}
12983
12984impl PlatformLandMultipleUnitUtilityEmergencyTruckSubcategories {
12985 #[must_use]
12986 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
12987 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
12988 }
12989}
12990
12991#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
12993pub enum PlatformLandConstructionSpecialtyVehicleSubcategories {
12994 #[default]
12995 Other = 0,
12996 Tug = 1,
12997 Forklift = 2,
12998 Loader = 3,
12999 LoaderBackhoe = 4,
13000 CraneTractorMounted = 5,
13001 CraneWheeled = 6,
13002 Grader = 7,
13003 RoadRollerOther = 8,
13004 RoadRollerDoubleDrumSmooth = 9,
13005 RoadRollerSingleDrumSmooth = 10,
13006 RoadRollerDoubleDrumSheeps = 11,
13007 RoadRollerSingleDrumSheeps = 12,
13008 RoadRollerPneumaticTired = 13,
13009 ExcavatorOther = 14,
13010 ExcavatorDragline = 15,
13011 ExcavatorLongReach = 16,
13012 ExcavatorMobileTire = 17,
13013 MiniExcavator = 18,
13014 ExcavatorGiant = 19,
13015 BulldozerTractorMounted = 20,
13016 BulldozerTracked = 21,
13017 Scraper = 22,
13018 SkidSteer = 23,
13019 DumpTruckOther = 24,
13020 DumpTruckArticulated = 25,
13021 DumpTruckTransfer = 26,
13022 DumpTruckSuper = 27,
13023 DumpTruckOffRoad = 28,
13024 Paver = 29,
13025 DrillingMachine = 30,
13026 ConcreteMixerOther = 31,
13027 ConcreteMixerRearDischarge = 32,
13028 ConcreteMixerFrontDischarge = 33,
13029 ConcreteMixerSixAxle = 34,
13030 ConcreteMixerLongReachBoom = 35,
13031 ConcreteMixerVolumetric = 36,
13032 TrencherChain = 37,
13033 TrencherRockwheel = 38,
13034 Snowcat = 39,
13035 CraneTracked = 40,
13036 CraneShovel = 41,
13037 SweeperRotary = 42,
13038 RollerVibratoryCompactor = 43,
13039 ForkLiftTruck = 44,
13040 ForkLiftRoughtTerrain = 45,
13041 Transloader = 46,
13042 TruckWaterConstruction = 47,
13043 TruckFuelDelivery = 48,
13044 TruckSawmill = 49,
13045 TruckLineMarkingConstruction = 50,
13046 TractorIndustrial = 51,
13047 CompactorHighSpeed = 52,
13048 TruckDrilling = 53,
13049 TruckDrillingSupport = 54,
13050 CraneConstruction = 55,
13051}
13052
13053impl PlatformLandConstructionSpecialtyVehicleSubcategories {
13054 #[must_use]
13055 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13056 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13057 }
13058}
13059
13060#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13062pub enum PlatformLandFarmSpecialtyVehicleSubcategories {
13063 #[default]
13064 Other = 0,
13065 Tractor = 1,
13066 HarvesterReaper = 2,
13067 Skidder = 3,
13068 Forwarder = 4,
13069 LawnMowerOther = 5,
13070 LawnMowerRiding = 6,
13071 LawnMowerStanding = 7,
13072 LawnMowerPush = 8,
13073}
13074
13075impl PlatformLandFarmSpecialtyVehicleSubcategories {
13076 #[must_use]
13077 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13078 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13079 }
13080}
13081
13082#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13084pub enum PlatformLandTrailerSubcategories {
13085 #[default]
13086 Other = 0,
13087 TrailerFlatbed = 1,
13088 TrailerContainer = 2,
13089 TrailerContainerRefrigerated = 3,
13090 TrailerDouble = 4,
13091 TrailerAutoTransport = 5,
13092 TrailerArticulated = 6,
13093 TrailerTanker = 7,
13094 TrailerTankerSmall = 8,
13095 TrailerTankerLarge = 9,
13096 TrailerTankerGasoline = 10,
13097 TrailerTankerMilk = 11,
13098 TrailerTankerWater = 12,
13099 TrailerTankerSeptic = 13,
13100 TrailerBoat = 14,
13101 TrailerBoatSmall = 15,
13102 TrailerBoatLarge = 16,
13103 TrailerRecreational = 17,
13104 TrailerRecreationalConventional = 18,
13105 TrailerRecreationalTravelExpandable = 19,
13106 TrailerRecreationalFifthWheelTravel = 20,
13107 TrailerRecreationalFoldingCamping = 21,
13108 TrailerRecreationalTruckCamper = 22,
13109 TrailerAerostatMooringPlatform = 23,
13110 TrailerHousehold = 24,
13111 TrailerKitchen = 25,
13112 TrailerUltraLightAircraft = 26,
13113 TrailerHeavyEquipment = 27,
13114}
13115
13116impl PlatformLandTrailerSubcategories {
13117 #[must_use]
13118 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13119 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13120 }
13121}
13122
13123#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13125pub enum PlatformLandRecreationalSubcategories {
13126 #[default]
13127 Other = 0,
13128 ATV2X4 = 1,
13129 ATV4X4 = 2,
13130 ATV6X6 = 3,
13131 ATV3wheeled = 4,
13132 ToyOther = 5,
13133 ToyCar = 6,
13134 ToyATV = 7,
13135 GolfCart = 8,
13136 Snowmobile = 9,
13137 RecreationalVehicle = 10,
13138 RecreationalVehicleTypeAMotorhome = 11,
13139 RecreationalVehicleTypeBMotorhome = 12,
13140 RecreationalVehicleTypeCMotorhome = 13,
13141 ConversionVan = 14,
13142}
13143
13144impl PlatformLandRecreationalSubcategories {
13145 #[must_use]
13146 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13147 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13148 }
13149}
13150
13151#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13153pub enum PlatformLandNonmotorizedSubcategories {
13154 #[default]
13155 Other = 0,
13156 Unicycle = 1,
13157 Bicycle = 2,
13158 BicycleMountain = 3,
13159 BicycleRacing = 4,
13160 Tricycle = 5,
13161 Quadricycle = 6,
13162 RickshawTwoPerson = 7,
13163 RickshawOnePerson = 8,
13164 TandemBicycle = 9,
13165 CycleTrailer = 10,
13166 CycleSidecar = 11,
13167 Sled = 12,
13168 Skis = 13,
13169 Snowboard = 14,
13170 Skateboard = 15,
13171 Skates = 16,
13172 SkatesInLine = 17,
13173 WagonCart = 18,
13174 Dolly = 19,
13175 Handtruck = 20,
13176 PushCart = 21,
13177 Wheelbarrow = 22,
13178 KickScooter = 23,
13179 Wheelchair = 24,
13180}
13181
13182impl PlatformLandNonmotorizedSubcategories {
13183 #[must_use]
13184 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13185 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13186 }
13187}
13188
13189#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13191pub enum PlatformLandTrainsSubcategories {
13192 #[default]
13193 Other = 0,
13194 Engine = 1,
13195 BoxCar = 2,
13196 Tanker = 3,
13197 Flatcar = 4,
13198 Caboose = 5,
13199 PassengerCar = 6,
13200 Hopper = 7,
13201}
13202
13203impl PlatformLandTrainsSubcategories {
13204 #[must_use]
13205 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13206 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13207 }
13208}
13209
13210#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13212pub enum PlatformLandUtilityEmergencyCarSubcategories {
13213 #[default]
13214 Other = 0,
13215 AmbulanceCar = 1,
13216 PoliceCar = 2,
13217 PoliceChief = 3,
13218 Hearse = 4,
13219 Taxi = 5,
13220}
13221
13222impl PlatformLandUtilityEmergencyCarSubcategories {
13223 #[must_use]
13224 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13225 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13226 }
13227}
13228
13229#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13231pub enum PlatformSurfacePassengerVesselSubcategories {
13232 #[default]
13233 CruiseShip = 1,
13234 CruiseFerry = 2,
13235 HighSpeedFerry = 3,
13236 Ferry = 4,
13237 OceanLiner = 5,
13238}
13239
13240impl PlatformSurfacePassengerVesselSubcategories {
13241 #[must_use]
13242 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13243 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13244 }
13245}
13246
13247#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13249pub enum PlatformSurfaceDryCargoShipSubcategories {
13250 #[default]
13251 CommonDryCargoShip = 1,
13252 DryBulkCargoShip = 2,
13253 ContainerShip = 3,
13254 ReeferShip = 4,
13255 RoRoShip = 5,
13256 Barge = 6,
13257 HeavyLiftShip = 7,
13258}
13259
13260impl PlatformSurfaceDryCargoShipSubcategories {
13261 #[must_use]
13262 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13263 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13264 }
13265}
13266
13267#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13269pub enum PlatformSurfaceTankerSubcategories {
13270 #[default]
13271 LiquidPetroleumGasTanker = 1,
13272 ChemicalTanker = 2,
13273 LiquidNaturalGasTanker = 3,
13274 CoastalTradingVessel = 4,
13275 CrudeOilTanker = 5,
13276 LiquidBulkTanker = 6,
13277 VeryLargeCrudeCarrier = 7,
13278 UltraLargeCrudeCarrier = 8,
13279 CondensateStorageTanker = 9,
13280}
13281
13282impl PlatformSurfaceTankerSubcategories {
13283 #[must_use]
13284 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13285 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13286 }
13287}
13288
13289#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13291pub enum PlatformSurfaceSupportVesselSubcategories {
13292 #[default]
13293 PlatformSupplyVessel = 1,
13294 TenderVessel = 2,
13295 Tugboat = 3,
13296 DiveSupportVessel = 4,
13297 Fireboat = 5,
13298 WellStimulationVessel = 6,
13299 AnchorHandlingTugSupplyVessel = 7,
13300 OffshoreConstructionVessel = 8,
13301 EmergencyResponseandRescueVessel = 9,
13302}
13303
13304impl PlatformSurfaceSupportVesselSubcategories {
13305 #[must_use]
13306 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13307 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13308 }
13309}
13310
13311#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13313pub enum PlatformSurfacePrivateMotorboatSubcategories {
13314 #[default]
13315 SmallMotorboat = 1,
13316 MediumMotorboat = 2,
13317 LargeMotorboat = 3,
13318 VeryLargeMotorboat = 4,
13319}
13320
13321impl PlatformSurfacePrivateMotorboatSubcategories {
13322 #[must_use]
13323 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13324 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13325 }
13326}
13327
13328#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13330pub enum PlatformSurfacePrivateSailboatSubcategories {
13331 #[default]
13332 SmallSailboat = 1,
13333 MediumSailboat = 2,
13334 LargeSailboat = 3,
13335 VeryLargeSailboat = 4,
13336}
13337
13338impl PlatformSurfacePrivateSailboatSubcategories {
13339 #[must_use]
13340 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13341 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13342 }
13343}
13344
13345#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13347pub enum PlatformSurfaceFishingVesselSubcategories {
13348 #[default]
13349 SmallFishingVessel = 1,
13350 MediumFishingVessel = 2,
13351 LargeFishingVessel = 3,
13352 FishProcessingVessel = 4,
13353 MastedFishingVessel = 5,
13354}
13355
13356impl PlatformSurfaceFishingVesselSubcategories {
13357 #[must_use]
13358 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13359 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13360 }
13361}
13362
13363#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13365pub enum PlatformSurfaceOtherVesselsSubcategories {
13366 #[default]
13367 GoFastBoat = 1,
13368 ResearchVessel = 2,
13369 HydrofoilVessel = 3,
13370 CableLayerVessel = 4,
13371 DredgerVessel = 5,
13372 JunkDhowVessel = 6,
13373 Catamaran = 7,
13374 Pontoon = 8,
13375 PersonalWaterCraft = 9,
13376 RefugeeRaft = 10,
13377}
13378
13379impl PlatformSurfaceOtherVesselsSubcategories {
13380 #[must_use]
13381 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13382 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13383 }
13384}
13385
13386#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13388pub enum CryptoKeyIDCryptoMode {
13389 #[default]
13390 Baseband = 0,
13391 Diphase = 1,
13392}
13393
13394impl CryptoKeyIDCryptoMode {
13395 #[must_use]
13396 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13397 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13398 }
13399}
13400
13401#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13405pub enum Color {
13406 #[default]
13407 NotSpecified = 0,
13408 WhiteVGA = 1,
13409 RedVGA = 2,
13410 YellowVGA = 3,
13411 LimeVGA = 4,
13412 CyanVGA = 5,
13413 BlueVGA = 6,
13414 MagentaVGA = 7,
13415 GreyVGA = 8,
13416 SilverVGA = 9,
13417 MaroonVGA = 10,
13418 OliveVGA = 11,
13419 GreenVGA = 12,
13420 TealVGA = 13,
13421 NavyVGA = 14,
13422 PurpleVGA = 15,
13423 Black = 20,
13424 Navy = 21,
13425 DarkBlue = 22,
13426 MediumBlue = 23,
13427 Blue = 24,
13428 DarkGreen = 25,
13429 Green = 26,
13430 Teal = 27,
13431 DarkCyan = 28,
13432 DeepSkyBlue = 29,
13433 DarkTurquoise = 30,
13434 MediumSpringGreen = 31,
13435 Lime = 32,
13436 SpringGreen = 33,
13437 Cyan = 34,
13438 MidnightBlue = 35,
13439 DodgerBlue = 36,
13440 LightSeaGreen = 37,
13441 ForestGreen = 38,
13442 SeaGreen = 39,
13443 DarkSlateGray = 40,
13444 LimeGreen = 41,
13445 MediumSeaGreen = 42,
13446 Turquoise = 43,
13447 RoyalBlue = 44,
13448 SteelBlue = 45,
13449 DarkSlateBlue = 46,
13450 MediumTurquoise = 47,
13451 Indigo = 48,
13452 DarkOliveGreen = 49,
13453 CadetBlue = 50,
13454 CornflowerBlue = 51,
13455 MediumAquamarine = 52,
13456 DimGray = 53,
13457 SlateBlue = 54,
13458 OliveDrab = 55,
13459 SlateGray = 56,
13460 LightSlateGray = 57,
13461 MediumSlateBlue = 58,
13462 LawnGreen = 59,
13463 Chartreuse = 60,
13464 Aquamarine = 61,
13465 Maroon = 62,
13466 Purple = 63,
13467 Olive = 64,
13468 Gray = 65,
13469 Grey = 66,
13470 SkyBlue = 67,
13471 LightSkyBlue = 68,
13472 BlueViolet = 69,
13473 DarkRed = 70,
13474 DarkMagenta = 71,
13475 SaddleBrown = 72,
13476 DarkSeaGreen = 73,
13477 LightGreen = 74,
13478 MediumPurple = 75,
13479 DarkViolet = 76,
13480 PaleGreen = 77,
13481 DarkOrchid = 78,
13482 YellowGreen = 79,
13483 Sienna = 80,
13484 Brown = 81,
13485 DarkGray = 82,
13486 LightBlue = 83,
13487 GreenYellow = 84,
13488 PaleTurquoise = 85,
13489 LightSteelBlue = 86,
13490 PowderBlue = 87,
13491 FireBrick = 88,
13492 DarkGoldenRod = 89,
13493 MediumOrchid = 90,
13494 RosyBrown = 91,
13495 DarkKhaki = 92,
13496 Silver = 93,
13497 MediumVioletRed = 94,
13498 IndianRed = 95,
13499 Peru = 96,
13500 Chocolate = 97,
13501 Tan = 98,
13502 LightGray = 99,
13503 PaleVioletRed = 100,
13504 Thistle = 101,
13505 Orchid = 102,
13506 GoldenRod = 103,
13507 Crimson = 104,
13508 Gainsboro = 105,
13509 Plum = 106,
13510 BurlyWood = 107,
13511 LightCyan = 108,
13512 Lavender = 109,
13513 DarkSalmon = 110,
13514 Violet = 111,
13515 PaleGoldenRod = 112,
13516 LightCoral = 113,
13517 Khaki = 114,
13518 AliceBlue = 115,
13519 HoneyDew = 116,
13520 Azure = 117,
13521 SandyBrown = 118,
13522 Wheat = 119,
13523 Beige = 120,
13524 WhiteSmoke = 121,
13525 MintCream = 122,
13526 GhostWhite = 123,
13527 Salmon = 124,
13528 AntiqueWhite = 125,
13529 Linen = 126,
13530 LightGoldenRodYellow = 127,
13531 OldLace = 128,
13532 Red = 129,
13533 Fuchsia = 130,
13534 Magenta = 131,
13535 DeepPink = 132,
13536 OrangeRed = 133,
13537 Tomato = 134,
13538 HotPink = 135,
13539 Coral = 136,
13540 DarkOrange = 137,
13541 LightSalmon = 138,
13542 Orange = 139,
13543 LightPink = 140,
13544 Pink = 141,
13545 Gold = 142,
13546 PeachPuff = 143,
13547 NavajoWhite = 144,
13548 Moccasin = 145,
13549 Bisque = 146,
13550 MistyRose = 147,
13551 BlanchedAlmond = 148,
13552 PapayaWhip = 149,
13553 LavenderBlush = 150,
13554 SeaShell = 151,
13555 Cornsilk = 152,
13556 LemonChiffon = 153,
13557 FloralWhite = 154,
13558 Snow = 155,
13559 Yellow = 156,
13560 LightYellow = 157,
13561 Ivory = 158,
13562 White = 159,
13563}
13564
13565impl Color {
13566 #[must_use]
13567 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13568 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13569 }
13570}
13571
13572#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13574pub enum BuildingPaintScheme {
13575 #[default]
13576 Default = 0,
13577}
13578
13579impl BuildingPaintScheme {
13580 #[must_use]
13581 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13582 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13583 }
13584}
13585
13586#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13588pub enum Season {
13589 #[default]
13590 Summer = 0,
13591 Winter = 1,
13592 Spring = 2,
13593 Autumn = 3,
13594}
13595
13596impl Season {
13597 #[must_use]
13598 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13599 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13600 }
13601}
13602
13603#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13605pub enum Material {
13606 #[default]
13607 NotSpecified = 0,
13608 Plastic = 1,
13609 Rubber = 2,
13610 Road = 3,
13611}
13612
13613impl Material {
13614 #[must_use]
13615 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13616 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13617 }
13618}
13619
13620#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13622pub enum Link11_11BFidelityLevel {
13623 #[default]
13624 FidelityLevel0 = 0,
13625 FidelityLevel1 = 1,
13626 FidelityLevel2 = 2,
13627}
13628
13629impl Link11_11BFidelityLevel {
13630 #[must_use]
13631 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13632 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13633 }
13634}
13635
13636#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13638pub enum Link11TerminalMode {
13639 #[default]
13640 NoStatement = 0,
13641 NetworkControlStation = 1,
13642 Picket = 2,
13643}
13644
13645impl Link11TerminalMode {
13646 #[must_use]
13647 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13648 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13649 }
13650}
13651
13652#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13654#[deprecated(note = "Enumeration is deprecated and only serves an historical purpose")]
13655pub enum Link11DataTerminalSetIndicator {
13656 #[default]
13657 NoStatement = 0,
13658 Transmit = 1,
13659 Receive = 2,
13660 NetBusy = 3,
13661 TransmitDataError = 4,
13662 ReceiveDataError = 5,
13663 CodeError = 6,
13664 SynchronizationComplete = 7,
13665}
13666
13667impl Link11DataTerminalSetIndicator {
13668 #[must_use]
13669 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13670 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13671 }
13672}
13673
13674#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13676pub enum Link11ModeofOperation {
13677 #[default]
13678 NoStatement = 0,
13679 NetSync = 1,
13680 NetTest = 2,
13681 RollCall = 3,
13682 ShortBroadcast = 4,
13683 Broadcast = 5,
13684}
13685
13686impl Link11ModeofOperation {
13687 #[must_use]
13688 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13689 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
13690 }
13691}
13692
13693#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13695pub enum LifeFormsSubcategoryIranianWeapons {
13696 #[default]
13697 Misagh2 = 1,
13698 RBS70 = 2,
13699}
13700
13701impl LifeFormsSubcategoryIranianWeapons {
13702 #[must_use]
13703 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13704 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13705 }
13706}
13707
13708#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13710pub enum LifeFormLandCategories {
13711 #[default]
13712 ConventionalArmedForces = 10,
13713 Army = 11,
13714 NavalInfantry = 12,
13715 AirForce = 13,
13716 Navy = 14,
13717 CoastGuard = 15,
13718 UnitedNations = 16,
13719 SpecialOperationsForces = 30,
13720 LawEnforcement = 50,
13721 NonMilitaryNationalGovernmentAgencies = 70,
13722 RegionalLocalForces = 90,
13723 IrregularForces = 100,
13724 TerroristCombatant = 101,
13725 Insurgent = 102,
13726 ParamilitaryForces = 110,
13727 HumanitarianOrganizations = 120,
13728 Civilian = 130,
13729 EmergencyMedicalTechnician = 131,
13730 Firefighter = 132,
13731 Press = 133,
13732 Mammal = 200,
13733 Reptile = 201,
13734 Amphibian = 202,
13735 Insect = 203,
13736 Arachnid = 204,
13737 Mollusk = 205,
13738 Marsupial = 206,
13739}
13740
13741impl LifeFormLandCategories {
13742 #[must_use]
13743 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13744 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13745 }
13746}
13747
13748#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13750pub enum LifeFormHumanSubcategoryEquipmentClass {
13751 #[default]
13752 None = 0,
13753 WeaponNonspecific = 1,
13754 AssaultRifles = 5,
13755 HighPowerRifles = 10,
13756 SniperRifles = 15,
13757 AntiMaterielRifle = 17,
13758 SubMachineGuns = 20,
13759 ShotGuns = 25,
13760 GrenadeLaunchers = 30,
13761 MachineGuns = 35,
13762 GrenadeLaunchingMachineGun = 40,
13763 AntiTankRockets = 45,
13764 AntiTankMissiles = 50,
13765 AntiTankGuns = 55,
13766 FlameRockets = 60,
13767 FlameThrowers = 65,
13768 RocketLaunchers = 70,
13769 Mortars = 75,
13770 HandGuns = 80,
13771 ManPortableAirDefenseSystem = 85,
13772 RecoillessRifles = 90,
13773 DroneGuns = 95,
13774 EquipmentNonspecific = 150,
13775 Sensors = 151,
13776 SignalSensor = 152,
13777 Lasers = 153,
13778 AnimalCompanion = 160,
13779 PersonalElectronics = 171,
13780 LogisticsEquipment = 172,
13781}
13782
13783impl LifeFormHumanSubcategoryEquipmentClass {
13784 #[must_use]
13785 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13786 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13787 }
13788}
13789
13790#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13792#[allow(non_camel_case_types)]
13793pub enum LifeFormHumanSpecificAssaultRifles {
13794 #[default]
13795 Other = 0,
13796 _4_5mmInterdynamicsMKR = 1,
13797 _5_45mmAK74 = 10,
13798 _5_45mmAKS74 = 11,
13799 _5_45mmAK74M = 12,
13800 _5_45mmKbkwz_1988Tantal = 13,
13801 _5_56mmAK101 = 30,
13802 _5_56mmDiemacoC7 = 31,
13803 _5_56mmColtCanadaC8Carbine = 32,
13804 _5_56mmGIATFAMASG2 = 33,
13805 _5_56mmFNFNC = 34,
13806 _5_56mmHKG36 = 35,
13807 _5_56mmIMIGalil = 36,
13808 _5_56mmINSAS = 37,
13809 _5_56mmDaewooK1 = 38,
13810 _5_56mmDaewooK2 = 39,
13811 _5_56mmM16A1 = 40,
13812 _5_56mmM16A2A3A4 = 41,
13813 _5_56mmColtM4 = 42,
13814 _5_56mmColtM4SpecialOperationsPeculiarModification = 43,
13815 _5_56mmRugerMini14 = 44,
13816 _5_56mmEnfieldSA80A2 = 45,
13817 _5_56mmPindadSS1V1 = 46,
13818 _5_56mmPindadSS1V2 = 47,
13819 _5_56mmPindadSS1V3 = 48,
13820 _5_56mmSteyrAUGA1 = 49,
13821 _5_56mmT65 = 50,
13822 _5_56mmT91 = 51,
13823 _5_56mmTavorTAR21 = 52,
13824 _5_56mmTypeCQM311 = 53,
13825 _5_56mmDaewooK11 = 54,
13826 _5_56mmAusteyrF88 = 55,
13827 _5_56mmAusteyrF88GLA = 56,
13828 _5_56mmAusteyrF88SA1 = 57,
13829 _5_56mmAusteyrF88SA2 = 58,
13830 _5_56mmAusteyrF88C = 59,
13831 _5_56mmAusteyrF88SA1C = 60,
13832 _5_56mmAusteyrF88SA1LTR = 61,
13833 _5_56mmAusteyrEF88 = 62,
13834 _5_56mmBushmasterXM15 = 63,
13835 _5_56mmHK416 = 64,
13836 _5_56mmF90 = 65,
13837 _5_56mmF90G = 66,
13838 _5_56mmF90M = 67,
13839 _5_56mmF90MG = 68,
13840 _5_56mmF90CQB = 69,
13841 _5_56mmMK17SCARL = 70,
13842 _5_8mmQBZ95 = 100,
13843 _7_62mmAK103 = 110,
13844 _7_62mmAK104 = 111,
13845 _7_62mmAK47 = 112,
13846 _7_62mmAKM = 113,
13847 _7_62mmAKS47 = 114,
13848 _7_62mmHKG3A3 = 115,
13849 _7_62mmIMIGalil = 116,
13850 _7_62mmKLS = 117,
13851 _7_62mmSKS = 118,
13852 _7_62mmType56 = 119,
13853 _7_62mmType6368 = 120,
13854 _7_62mmType81 = 121,
13855 _7_62mmMK17SCARH = 122,
13856 _8mmLebelM16 = 240,
13857}
13858
13859impl LifeFormHumanSpecificAssaultRifles {
13860 #[must_use]
13861 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13862 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13863 }
13864}
13865
13866#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13868pub enum LifeFormHumanSpecificHighPowerRifles {
13869 #[default]
13870 Other = 0,
13871 _7_62mmM14 = 10,
13872 _7_62mmRemington700 = 11,
13873 _7_62mmSIGSauerSSG2000 = 12,
13874 _7_62mmStonerSR25 = 13,
13875 _7_62mmMosinNagantModel189130 = 14,
13876 _7_62mmHK417 = 15,
13877 _7_62mmHK41716Recce = 16,
13878 _7_65mmBARM1918 = 50,
13879 _7_65mmM1Garand = 51,
13880}
13881
13882impl LifeFormHumanSpecificHighPowerRifles {
13883 #[must_use]
13884 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13885 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13886 }
13887}
13888
13889#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13891pub enum LifeFormCategoriesUS {
13892 #[default]
13893 USArmy = 11,
13894 USMarineCorps = 12,
13895 USAirForce = 13,
13896 USNavy = 14,
13897 USCoastGuard = 15,
13898 Rangers = 31,
13899 ARSOF = 32,
13900 ForceReconnaissance = 33,
13901 NavySEAL = 34,
13902 AFSOF = 35,
13903 DeltaForce = 36,
13904 FederalBureauofInvestigation = 51,
13905 CentralIntelligenceAgency = 52,
13906 DepartmentofHomelandSecurity = 53,
13907 BureauofAlcoholTobaccoFirearmsandExplosives = 54,
13908 USSecretService = 55,
13909 USMarshal = 56,
13910 StatePolice = 71,
13911 CountySheriffPolice = 72,
13912 MunicipalPolice = 73,
13913 RedCross = 124,
13914}
13915
13916impl LifeFormCategoriesUS {
13917 #[must_use]
13918 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13919 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13920 }
13921}
13922
13923#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13925pub enum LifeFormExtraPersonalData {
13926 #[default]
13927 NotSpecifiedMale = 0,
13928 AsianMale = 1,
13929 PacificIslanderMale = 2,
13930 BlackMale = 3,
13931 EastAsianMale = 4,
13932 HispanicMale = 5,
13933 WhiteMale = 6,
13934 ArabMale = 7,
13935 HomogenousCountryCodeMale = 8,
13936 IndigenousCountryCodeMale = 9,
13937 InfantMale = 10,
13938 ToddlerMale = 20,
13939 ChildMale = 30,
13940 AdolescentMale = 40,
13941 TeenagerMale = 50,
13942 YoungAdultMale = 60,
13943 AdultMale = 70,
13944 SeniorAdultMale = 80,
13945 ElderlyMale = 90,
13946 Female = 100,
13947 AsianFemale = 101,
13948 PacificIslanderFemale = 102,
13949 BlackFemale = 103,
13950 EastAsianFemale = 104,
13951 HispanicFemale = 105,
13952 WhiteFemale = 106,
13953 ArabFemale = 107,
13954 HomogenousCountryCodeFemale = 108,
13955 IndigenousCountryCodeFemale = 109,
13956 InfantFemale = 110,
13957 ToddlerFemale = 120,
13958 ChildFemale = 130,
13959 AdolescentFemale = 140,
13960 TeenagerFemale = 150,
13961 YoungAdultFemale = 160,
13962 AdultFemale = 170,
13963 SeniorAdultFemale = 180,
13964 ElderlyFemale = 190,
13965}
13966
13967impl LifeFormExtraPersonalData {
13968 #[must_use]
13969 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13970 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13971 }
13972}
13973
13974#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13976pub enum LifeFormAirCategories {
13977 #[default]
13978 Bird = 200,
13979 Insect = 201,
13980 Mammal = 202,
13981}
13982
13983impl LifeFormAirCategories {
13984 #[must_use]
13985 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
13986 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
13987 }
13988}
13989
13990#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
13992pub enum LifeFormSubsurfaceCategories {
13993 #[default]
13994 Fish = 200,
13995 Mammal = 201,
13996 Mollusk = 202,
13997 Crustacean = 203,
13998 Insect = 204,
13999}
14000
14001impl LifeFormSubsurfaceCategories {
14002 #[must_use]
14003 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14004 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14005 }
14006}
14007
14008#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14012#[allow(non_camel_case_types)]
14013pub enum LifeFormHumanSpecificSniper {
14014 #[default]
14015 Other = 0,
14016 _5_8mmQBU88 = 1,
14017 _7_62mmC3 = 30,
14018 _7_62mmFRF2 = 31,
14019 _7_62mmAWMF = 32,
14020 _7_62mmG3SG1 = 33,
14021 _7_62mmGalilSniper = 34,
14022 _7_62mmL96A1 = 35,
14023 _7_62mmM14DMR = 36,
14024 _7_62mmM24SniperWeaponSystem = 37,
14025 _7_62mmM40A1A3 = 38,
14026 _7_62mmSteyrSSG69 = 39,
14027 _7_62mmSVD = 40,
14028 _7_62mmTYPE79 = 41,
14029 _7_62mmSR25MK11 = 42,
14030 _7_62mmAWSR98 = 43,
14031 _7_62mmBlaserR93 = 44,
14032 _7_62mmM2010EnhancedSniperRifle = 45,
14033 _7_62mmM110SemiAutomaticSniperSystem = 46,
14034 _7_62mmL129A1 = 47,
14035 _7_7mmTYPE99 = 100,
14036 _8_58mmBlaserR93Tactical2 = 105,
14037 _9mmVSSVintorez = 110,
14038 _12_7mmSteyrHS_50 = 170,
14039 _12_7mmM82A1ASpecialApplicationsScopedRifle = 171,
14040 _12_7mmNSV = 172,
14041 _12_7mmOSV96 = 173,
14042 _12_7mmRangemaster50 = 174,
14043 _12_7mmV94 = 175,
14044 _12_7mmM107 = 176,
14045 _20mmDenelNTW20 = 200,
14046}
14047
14048impl LifeFormHumanSpecificSniper {
14049 #[must_use]
14050 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14051 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14052 }
14053}
14054
14055#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14057pub enum LifeFormHumanSpecificSubMachineGun {
14058 #[default]
14059 Other = 0,
14060 _5_45mmAKS74U = 10,
14061 _5_56mmDaewooK1A = 20,
14062 _9mmDaewooK7 = 60,
14063 _9mmMAC10 = 61,
14064 _9mmMadsenMKII = 62,
14065 _9mmMiniUzi = 63,
14066 _9mmModel83SkorpionSMG = 64,
14067 _9mmMP5A2 = 65,
14068 _9mmMP5N = 66,
14069 _9mmSterlingSMG = 67,
14070 _9mmTypeCF05 = 68,
14071 _9mmUzi = 69,
14072}
14073
14074impl LifeFormHumanSpecificSubMachineGun {
14075 #[must_use]
14076 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14077 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14078 }
14079}
14080
14081#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14085pub enum AustralianCategoryOverlay {
14086 #[default]
14087 AustralianArmy = 11,
14088 RoyalAustralianAirForce = 13,
14089 RoyalAustralianNavy = 14,
14090 AustralianSpecialOperationsCommand = 30,
14091 AustralianDepartmentofHomeAffairs = 51,
14092 AustralianFederalPolice = 52,
14093}
14094
14095impl AustralianCategoryOverlay {
14096 #[must_use]
14097 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14098 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14099 }
14100}
14101
14102#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14104pub enum LifeFormCategoriesAfghanistan {
14105 #[default]
14106 AfghanNationalArmy = 11,
14107 AfghanAirForce = 13,
14108 NationalDirectorateofSecurity = 51,
14109 AfghanNationalPolice = 52,
14110 AfghanBorderPolice = 53,
14111 AfghanNationalCivilOrderPolice = 54,
14112 AfghanPublicProtectionForce = 55,
14113 NonMilitaryNationalGovernmentAgencies = 70,
14114 TerroristCombatant = 101,
14115 HumanitarianOrganizations = 120,
14116 RedCrescent = 121,
14117 Civilian = 130,
14118 Press = 133,
14119}
14120
14121impl LifeFormCategoriesAfghanistan {
14122 #[must_use]
14123 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14124 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14125 }
14126}
14127
14128#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14130pub enum LifeFormHumanSpecificEquipmentClass {
14131 #[default]
14132 SignalSmoke = 1,
14133 FlashLight = 2,
14134 SignalMirror = 3,
14135 IRStrobe = 4,
14136 IRIlluminator = 5,
14137 Spotlight = 6,
14138}
14139
14140impl LifeFormHumanSpecificEquipmentClass {
14141 #[must_use]
14142 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14143 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14144 }
14145}
14146
14147#[derive(Copy, Clone, Debug, FromPrimitive, PartialEq, Eq)]
14149pub enum CivilianSubmarineSubcategories {}
14150
14151impl CivilianSubmarineSubcategories {
14152 pub fn deserialize(_buf: &mut BytesMut) -> Self {
14153 unimplemented!()
14154 }
14155}
14156
14157#[derive(Copy, Clone, Debug, FromPrimitive, PartialEq, Eq)]
14159pub enum CivilianSubmersibleSubcategories {}
14160
14161impl CivilianSubmersibleSubcategories {
14162 pub fn deserialize(_buf: &mut BytesMut) -> Self {
14163 unimplemented!()
14164 }
14165}
14166
14167#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14169pub enum PlatformSubsurfaceCivilianSemiSubmersiblesSubcategories {
14170 #[default]
14171 NarcoSubmarine = 1,
14172}
14173
14174impl PlatformSubsurfaceCivilianSemiSubmersiblesSubcategories {
14175 #[must_use]
14176 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14177 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14178 }
14179}
14180
14181#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14183pub enum LeafCoverage {
14184 #[default]
14185 Normal = 0,
14186 Bare = 1,
14187}
14188
14189impl LeafCoverage {
14190 #[must_use]
14191 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14192 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14193 }
14194}
14195
14196#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14198pub enum LifeFormHumanSpecificAntiMaterielRifles {
14199 #[default]
14200 Other = 0,
14201 _12_7mmAW50 = 10,
14202 _12_7mmAW50F = 11,
14203}
14204
14205impl LifeFormHumanSpecificAntiMaterielRifles {
14206 #[must_use]
14207 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14208 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14209 }
14210}
14211
14212#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14214#[allow(non_camel_case_types)]
14215pub enum LifeFormHumanSpecificShotGuns {
14216 #[default]
14217 Other = 0,
14218 BrowningSuperposedOU = 20,
14219 BrowningCynergy = 21,
14220 BrowningAuto5 = 22,
14221 _18_5mmBrowningCitoriOU12Gauge = 23,
14222 _16_8mmBrowningCitoriOU16Gauge = 24,
14223 _15_6mmBrowningCitoriOU20Gauge = 25,
14224 _14mmBrowningCitoriOU28Gauge = 26,
14225 _10_4mmBrowningCitoriOU_410Bore = 27,
14226 _18_5mmBrowningDoubleAutomatic12Gauge = 28,
14227 _18_5mmIthaca3712Gauge = 29,
14228 _16_8mmIthaca3716Gauge = 30,
14229 _15_6mmIthaca3720Gauge = 31,
14230 _14mmIthaca3728Gauge = 32,
14231 _19_7mmIthacaMag10SA10Gauge = 33,
14232 _19_7mmMarlinModel5510Gauge = 34,
14233 _18_5mmMarlinModel5512Gauge = 35,
14234 _16_8mmMarlinModel5516Gauge = 36,
14235 _15_6mmMarlinModel5520Gauge = 37,
14236 _18_5mmMossberg50012Gauge = 38,
14237 _15_6mmMossberg50020Gauge = 39,
14238 _10_4mmMossberg500_410Bore = 40,
14239 _18_5mmMossberg59012Gauge = 41,
14240 _15_6mmMossberg59020Gauge = 42,
14241 _10_4mmMossberg590_410Bore = 43,
14242 _18_5mmMossberg930SA12Gauge = 44,
14243 RemingtonModel11SA = 45,
14244 RemingtonModel1012Gauge = 46,
14245 _15_6mmRemingtonModel1720Gauge = 47,
14246 RemingtonModel31 = 48,
14247 RemingtonModel1148SA = 49,
14248 _18_5mmRemington87012Gauge = 50,
14249 _16_8mmRemington87016Gauge = 51,
14250 _15_6mmRemington87020Gauge = 52,
14251 _14mmRemington87028Gauge = 53,
14252 _10_4mmRemington870_410Bore = 54,
14253 RemingtonModel58SA = 55,
14254 _18_5mmRemington878SA12Gauge = 56,
14255 _18_5mmRemingtonModel1100SA12Gauge = 57,
14256 _16_8mmRemingtonModel1100SA16Gauge = 58,
14257 _15_6mmRemingtonModel1100SA20Gauge = 59,
14258 _14mmRemingtonModel1100SA28Gauge = 60,
14259 _10_4mmRemingtonModel1100SA_410Bore = 61,
14260 _18_5mmRemington1187SA12Gauge = 62,
14261 _15_6mmRemington1187SA20Gauge = 63,
14262 _19_7mmRemingtonModelSP10SA10Gauge = 64,
14263 _18_5mmRemington88712Gauge = 65,
14264 _18_5mmRemingtonSparta100SxS12Gauge = 70,
14265 _15_6mmRemingtonSparta100SxS20Gauge = 71,
14266 _10_4mmRemingtonSparta100SxS_410Bore = 72,
14267 _18_5mmRemingtonSpartan310OU12Gauge = 73,
14268 _15_6mmRemingtonSpartan310OU20Gauge = 74,
14269 _14mmRemingtonSpartan310OU28Gauge = 75,
14270 _10_4mmRemingtonSpartan310OU_410Bore = 76,
14271 _18_5mmRemingtonSpartan453SA12Gauge = 77,
14272 _18_5mmWinchesterModel120012Gauge = 80,
14273 _16_8mmWinchesterModel120016Gauge = 81,
14274 _15_6mmWinchesterModel120020Gauge = 82,
14275 WinchesterModel18871901 = 83,
14276 WinchesterModel1897 = 84,
14277 WinchesterModel1912 = 85,
14278 WinchesterModel21SxS = 86,
14279 WinchesterModel37SxS = 87,
14280 _18_5mmHRUltraslugSxS12Gauge = 88,
14281 _15_6mmHRUltraslugSxS20Gauge = 89,
14282 _18_5mmCienerUltimateOU12Gauge = 90,
14283 _18_5mmCoachGunSxSDoubleBarrel12Gauge = 91,
14284 _18_5mmRugerGoldLabelSxS12Gauge = 92,
14285 _18_5mmHighStandardModel10SA12Gauge = 93,
14286 _18_5mmKelTexKSG12Gauge = 94,
14287 _18_5KACMasterkey12Gauge = 95,
14288 _18_5mmM26M_A_S_S_12Gauge = 96,
14289 _18_5mmSRMArmsM1216SA12Gauge = 97,
14290 _18_5mmAA12FAAtchissonAssault = 98,
14291 _18_5mmPancorJackhammerFA12Gauge = 99,
14292 _18_5mmUSAS12FA12Gauge = 110,
14293 _18_5mmMAULSA12Gauge = 111,
14294 _18_5mmFNSLPSA12Gauge = 112,
14295 _18_5mmFNTPS12Gauge = 113,
14296 _18_5mmENARMPentagunSA12Gauge = 115,
14297 StevensModel520620 = 116,
14298 StoegerCoachGunSxS = 117,
14299 StoegerCondorOU = 118,
14300 _18_5mmArmscorModel30SA12Gauge = 120,
14301 WeatherbySA08SA = 121,
14302 _18_5mmFabarmSDASSTactical12Gauge = 122,
14303 _18_5mmMAG712Gauge = 123,
14304 _18_5mmNeostead12Gauge = 124,
14305 _18_5mmArmselStrikerSA12Gauge = 125,
14306 _18_5mmParkerHaleRogunSA12Gauge = 127,
14307 _26mmRGA86Revolver = 130,
14308 _18_5mmSjorgrenSA12Gauge = 131,
14309 _18_5mmAkdalMKA1919SA12Gauge = 132,
14310 _18_5mmRetayMasaiMaraSA12Gauge = 133,
14311 _18_5mmSafirT14SA12Gauge = 134,
14312 _18_5mmBenelliM1Super90SA12Gauge = 150,
14313 _15_6mmBenelliM1Super90SA20Gauge = 151,
14314 _18_5mmBenelliM3Super90SA12Gauge = 152,
14315 _15_6mmBenelliM3Super90SA20Gauge = 153,
14316 _18_5mmBenelliM4Super90SA12Gauge = 154,
14317 _18_5mmBenelliNova12Gauge = 155,
14318 _15_6mmBenelliNove20Gauge = 156,
14319 _18_5mmBenelliRaffaelloSA12Gauge = 157,
14320 _18_5mmBenelliSupernova12Gauge = 158,
14321 _18_5mmBenelliVinciSA12Gauge = 159,
14322 _18_5mmBeretta1201FPSA12Gauge = 160,
14323 _18_5mmBeretta682OU12Gauge = 161,
14324 _15_6mmBeretta682OU20Gauge = 162,
14325 _14mmBeretta682OU28Gauge = 163,
14326 _10_4mmBeretta682OU_410Bore = 164,
14327 _18_5mmBerettaA303SA12Gauge = 165,
14328 _18_5mmBerettaAL391SA12Gauge = 166,
14329 _15_6mmBerettaAL391SA20Gauge = 167,
14330 _18_5mmBerettaDT10OU12Gauge = 168,
14331 BerettaSilverPigeonOU = 169,
14332 _18_5mmBerettaXtrema2SA12Gauge = 170,
14333 _15_6mmFranchiAL48SA20Gauge = 171,
14334 _14mmFranchiAL48SA28Gauge = 172,
14335 _10_4mmFranchimod_410FA_410Bore = 173,
14336 _18_5mmFranchiSPAS12SA12Gauge = 174,
14337 _18_5mmFranchiSPAS15SA12Gauge = 175,
14338 _18_5mmValtroPM5PM535012Gauge = 176,
14339 BlazerF3OU = 180,
14340 _18_5mmHKFABARMFP612Gauge = 181,
14341 _18_5mmHKCAWSFA12Gauge = 182,
14342 _18_5mmBaikalMP153SA12Gauge = 200,
14343 _18_5mmBandayevskyRB1212Gauge = 201,
14344 _18_5mmMolotBekasM12Gauge = 202,
14345 _16_8mmMolotBekasM16Gauge = 203,
14346 _18_5mmTOZ19412Gauge = 204,
14347 _23mmKS23 = 205,
14348 MTs255Revoler12Gauge = 206,
14349 _18_5mmRMB9312Gauge = 207,
14350 _18_5mmSaiga12SA12Gauge = 208,
14351 _15_6mmSaiga12SA20Gauge = 209,
14352 _10_4mmSaiga12SA_410Bore = 210,
14353 _18_5mmVepr12SA12Gauge = 211,
14354 _18_5mmFort50012Gauge = 212,
14355 _18_5mmNorincoHP9112Gauge = 220,
14356}
14357
14358impl LifeFormHumanSpecificShotGuns {
14359 #[must_use]
14360 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14361 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14362 }
14363}
14364
14365#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14367pub enum LifeFormHumanSpecificMortars {
14368 #[default]
14369 Others = 0,
14370 _60mmM224 = 30,
14371 _81mmF2 = 50,
14372 _81mmL16 = 51,
14373 _81mmM252 = 52,
14374}
14375
14376impl LifeFormHumanSpecificMortars {
14377 #[must_use]
14378 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14379 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14380 }
14381}
14382
14383#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14385pub enum LifeFormHumanSpecificHandGuns {
14386 #[default]
14387 Other = 0,
14388 _5_45mmPSM = 1,
14389 _9mmMK3SLP = 30,
14390 _9mmBeretta92S92FS = 31,
14391 _9mmHKUSP = 32,
14392 _9mmStechkinAPS = 33,
14393 _9mmMakarovPM = 34,
14394 _9mmSmithandWessonSD = 35,
14395 _9mmGlock17 = 36,
14396 _9mmSIGSauerM17 = 37,
14397 _9mmSIGPro = 38,
14398 _9mmSmithandWessonSW1911 = 39,
14399 _9mmSmithandWesson5900series = 40,
14400 _45CalM1911 = 41,
14401 _9_07mmRugerGP100 = 50,
14402 _10mmGlock20 = 60,
14403}
14404
14405impl LifeFormHumanSpecificHandGuns {
14406 #[must_use]
14407 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14408 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14409 }
14410}
14411
14412#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14414pub enum LifeFormHumanSpecificWeaponNonspecific {
14415 #[default]
14416 Other = 0,
14417 Knife = 10,
14418 Machete = 50,
14419 ExplosiveVest = 100,
14420 M18A1Claymore = 150,
14421}
14422
14423impl LifeFormHumanSpecificWeaponNonspecific {
14424 #[must_use]
14425 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14426 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14427 }
14428}
14429
14430#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14432pub enum LifeFormHumanSpecificGrenadeLaunchers {
14433 #[default]
14434 Other = 0,
14435 _40x46mmArsenalUGGLM1 = 1,
14436 _40x46mmArsenalMSGL = 2,
14437 _40mmVOGArsenalMSGL = 3,
14438 _40x46mmArsenalUBGLM16 = 4,
14439 _40x46mmArsenalUBGLM8 = 5,
14440 _40x46mmArsenalUBGLM7 = 6,
14441 _30mmBS1Tishina = 10,
14442 _40mmBTS203 = 11,
14443 _40mmIndumilIMC40 = 12,
14444 _40mmVOGBG15 = 20,
14445 _40mmVOGGP25Kostoyor = 21,
14446 _40mmVOGGP30Obuvka = 22,
14447 _40mmVOGGP34 = 23,
14448 _40mmVOGRGM40Kastet = 24,
14449 _40mmVOGRG6 = 25,
14450 _40x46mmM79 = 30,
14451 _40x46mmM203 = 31,
14452 _40x36mmM320 = 32,
14453 _40x46mmCIS40GL = 35,
14454 _40x46mmEAGLEGL = 36,
14455 _40x46mmHKAG36 = 37,
14456 _40x46mmHKAGCGLM = 38,
14457 _40x46mmHK69A1 = 39,
14458 _40x46mmBerettaGLX160 = 40,
14459 _40x46mmARDEUBGL = 41,
14460 _40x46mmXML148 = 42,
14461 _40x46mmChinaLakeGL = 43,
14462 _40x46mmHawkMM1 = 44,
14463 _25x40mmXM25CDTE = 50,
14464 _37mmMilkor3738LLStopper = 60,
14465 _40mmMilkor40GL = 61,
14466 _40mmMilkorMGL = 62,
14467 _40x47mmPalladwz1974 = 65,
14468 _40x47mmPalladwz1983 = 66,
14469 UGL200CanisterRWGL3 = 70,
14470 _20x30mmSTDaewooK11 = 80,
14471 _35mmType91BreechLoadGL = 90,
14472 _40x53mmCZW40 = 95,
14473 _45mmDP64 = 100,
14474 _20x42mmNeopupPAW20 = 105,
14475}
14476
14477impl LifeFormHumanSpecificGrenadeLaunchers {
14478 #[must_use]
14479 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14480 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14481 }
14482}
14483
14484#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14486#[allow(non_camel_case_types)]
14487pub enum LifeFormHumanSpecificMachineGuns {
14488 #[default]
14489 Other = 0,
14490 _5_56x45mmXM214MicrogunSixPak = 10,
14491 _7_62x51mmM134XM196Minigun = 11,
14492 _5_56x45mmM249FNMinimiSAWLMG = 20,
14493 _5_56x45mmFNMinimiMk3LMG = 21,
14494 _7_62x51mmFNMinimi7_62Mk3GPMG = 22,
14495 _7_62x63mmM1941Johnson = 25,
14496 _7_62x63mmM1918BAR = 26,
14497 _7_62x51mmM1919A4Mk21Mod0BrowningMMG = 27,
14498 _7_62x63mmM1919A6BrowningMMG = 28,
14499 _7_62x51mmM37BrowningMMG = 29,
14500 _5_56x45mmAresShrike5_56LMG = 30,
14501 _5_56x45mmLSATLMG = 31,
14502 _5_56x45mmCMG1LMG = 32,
14503 _5_56x45mmCMG2LMG = 33,
14504 _5_56x45mmStoner63ALMG = 34,
14505 _5_56x45mmUltimax100LMG = 35,
14506 _5_56x54mmBerettaAS7090LMG = 36,
14507 _5_56x45mmCETMEAmeliLMG = 37,
14508 _5_56x45mmIMINegevLMG = 38,
14509 _5_56x45mmINSASLMG = 39,
14510 _5_56x45mmAUGLMG = 40,
14511 _5_56x45mmAUGHBARLMG = 41,
14512 _5_56x45mmHKMG4LMG = 43,
14513 _5_56x45mmHK23GR9LMG = 44,
14514 _5_56x45mmM27IARSAW = 46,
14515 _5_56x45mmL86LSW = 47,
14516 _5_56x45mmDaewooK3LMG = 48,
14517 _5_56x45mmVectorMiniSSGPMG = 49,
14518 _7_62x51mmM60GPMG = 50,
14519 _7_62x51mmM60E3GPMG = 51,
14520 _7_62x51mmM60E4GPMG = 52,
14521 _7_62x51mmM60E6GPMG = 53,
14522 _7_62x51mmMark48GMPG = 55,
14523 _7_62x51mmM240FNMAG58GPMG = 58,
14524 _7_62x51mmM240E4M240BGPMG = 59,
14525 _7_62x51mmM240E1M240DGPMG = 60,
14526 _7_62x51mmM240GGPMG = 61,
14527 _7_62x51mmM240E5M240HGPMG = 62,
14528 _7_62x51mmM240LGPMG = 63,
14529 _7_62x39mmKk62LMG = 65,
14530 _7_62x51mmVectorSS77GPMG = 70,
14531 _7_62x51mmSIGMG7103GPMG = 71,
14532 _7_62x51mmSterling7_62GMPG = 72,
14533 _7_62x51mmSumitomoType62GPMG = 73,
14534 _7_62x51mmDaewooK12GPMG = 74,
14535 _7_62x51mmMG51GPMG = 75,
14536 _7_62x51mmRheinmetallMG3 = 76,
14537 _7_62x51mmRheinmetallMG3KWS = 77,
14538 _7_62x51mmMG5HK121GPMG = 80,
14539 _7_62x51mmHK21GPMG = 81,
14540 _7_62x51mmAA52GPMP = 85,
14541 _7_62x51mmUKM2000GPMG = 86,
14542 _7_62x54mmUkvz_59GPMG = 88,
14543 _7_92x57mmMG42GPMG = 89,
14544 _12_7x99mmM2A1BrowningHMG = 100,
14545 _12_7x99mmM2HBBrowningHMG = 101,
14546 _12_7x99mmM2HBQCBBrowningHMG = 102,
14547 _12_7x99mmM85CHMG = 105,
14548 _12_7x99mmRheinmetallRMG_50HMG = 108,
14549 _12_7x99mmHK25HMG = 110,
14550 _12_7x99mmCIS50MG = 112,
14551 _5_45x39mmIP2LMG = 120,
14552 _5_45x39mmNikonovLMG = 121,
14553 _5_45x39mmM74RPK = 122,
14554 _7_62x39mmM43RPK = 125,
14555 _7_62x39mmRPDSAW = 126,
14556 _7_62x39mmZastavaM72 = 127,
14557 _7_62x39mmType81LMG = 128,
14558 _7_62x51mmZastavaM77 = 135,
14559 _7_62x54mmPKGPMG = 140,
14560 _7_62x54mmAEK999GPMP = 141,
14561 _7_62x54mmPechenegGPMG = 142,
14562 _7_62x54mmZastavaM84 = 143,
14563 _7_62x54mmType67GPMG = 144,
14564 _7_62x54mmType80GPMG = 145,
14565 _12_7x108mmNSVHMG = 150,
14566 _12_7x108mmKordHMG = 151,
14567 _12_7x108mmKPD12_7HMG = 152,
14568 _12_7x108mmZastavaM02CoyotoeHMG = 153,
14569 _12_7x108mmZastavaM87 = 154,
14570 _12_7x108mmType77HMG = 155,
14571 _12_7x108mmW85HMG = 156,
14572 _12_7x108mmType90HMG = 157,
14573 _5_8x42mmQJY88LMG = 164,
14574 _5_8x42mmQBB95DBP87LMG = 165,
14575 _5_56x45mmQBB951LMG = 166,
14576}
14577
14578impl LifeFormHumanSpecificMachineGuns {
14579 #[must_use]
14580 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14581 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14582 }
14583}
14584
14585#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14587pub enum LifeFormHumanSpecificGrenadeLaunchingMachineGun {
14588 #[default]
14589 Other = 0,
14590 _40x53mmHKGMG = 20,
14591 _40x53mmMk47Striker = 25,
14592 _40mmM75 = 26,
14593 _40mmM129 = 27,
14594 _40x46mmXM174 = 28,
14595 _40x46mmMk18Mod0 = 29,
14596 _40x53mmMk19 = 30,
14597 _40x46mmMk20Mod0 = 31,
14598 _30x29mmRAG30SAG30 = 40,
14599 _30x29mmAGS17Plamya = 41,
14600 _30x29mmAGS30Atlant = 42,
14601 _40mmVOGAGS40Balkan = 43,
14602 _40x53mmSBLAG40 = 44,
14603 _40x53mmVektorY3 = 50,
14604 _40x53mmCIS40 = 55,
14605 _40x56mmHowaType96 = 60,
14606 _40x53mmDaewooPrecisionIndustriesK4 = 65,
14607 _25x59mmXM307AdvancedCrewServedWeapon = 70,
14608 _35x32mmQLZ87 = 80,
14609}
14610
14611impl LifeFormHumanSpecificGrenadeLaunchingMachineGun {
14612 #[must_use]
14613 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14614 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14615 }
14616}
14617
14618#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14620pub enum LifeFormHumanSpecificAntiTankRockets {
14621 #[default]
14622 Other = 0,
14623 _82mmB300 = 10,
14624 _82mmShipon = 11,
14625 _83mmMK153Mod0SMAW = 12,
14626 _66mmM72LAW = 20,
14627 _66mmM72A1LAW = 21,
14628 _66mmM72A2LAW = 22,
14629 _66mmM72A3LAW = 23,
14630 _66mmM72A4LAW = 24,
14631 _66mmM72A5LAW = 25,
14632 _66mmM72A6LAW = 26,
14633 _66mmM72A7LAW = 27,
14634 _66mmM72E8LAW = 28,
14635 _66mmM72E9LAW = 29,
14636 _66mmM72E10LAW = 30,
14637 _66mmM72ASLAW = 31,
14638 _94mmLAW80 = 35,
14639 _60mmM1Bazooka = 40,
14640 _60mmM1A1Bazooka = 41,
14641 _60mmM9Bazooka = 42,
14642 _60mmM9A1Bazooka = 43,
14643 _89mmM20SuperBazooka = 44,
14644 _89mmM20A1SuperBazooka = 45,
14645 _89mmM20B1SuperBazooka = 46,
14646 _89mmM20A1B1SuperBazooka = 47,
14647 _89mmM25ThreeShotBazooka = 48,
14648 _89mmInstalazaM65 = 49,
14649 _90mmInstalazaC90 = 50,
14650 _90mmC90CR = 51,
14651 _90mmC90CRAM = 52,
14652 _90mmC90CRBK = 53,
14653 _90mmC90CRIN = 54,
14654 _60mmPzF3 = 60,
14655 _60mmPzF3IT = 61,
14656 _60mmPzF3Bunkerfaust = 62,
14657 _44mmPzF44 = 65,
14658 _30mmPanzerfaust30 = 70,
14659 _50mmPanzerfaust60 = 71,
14660 _60mmPanzerfaust100 = 72,
14661 _60mmPanzerfaust150 = 73,
14662 _88mmPanzerschreckRPzB = 75,
14663 _83mmRL83Blindicide = 80,
14664 _100mmRL100Blindicide = 81,
14665 _90mmM79Osa = 85,
14666 _64mmM80Zolja = 86,
14667 _67mmArmburstCrossbow = 90,
14668 _40mmType69RPG = 93,
14669 _89mmPIAT = 95,
14670 _40mmRPG2 = 100,
14671 _64mmRPG18Mukha = 101,
14672 _72_5mmRPG22Netto = 102,
14673 _72_5mmRPG26Aglen = 103,
14674 _105mmRPG29Vampir = 104,
14675 _105mmRPG30Kryuk = 105,
14676 _105mmRPG32Nashshab = 106,
14677 _40mmRPG7 = 110,
14678 _40mmPSRL1 = 111,
14679 _40mmGS777PSRL2 = 112,
14680 _68mmRPG76Komar = 120,
14681 _120mmSEPDard120 = 125,
14682 _58mmWASP58 = 128,
14683 _73mmLRAC7350 = 130,
14684 _89mmLRAC89F1STRIM = 131,
14685 _90mmMATADOR = 135,
14686 _90mmMATADORMP = 136,
14687 _90mmMATADORWB = 137,
14688 _90mmMATADORAS = 138,
14689 _78mmMARAAntiTankRocketLauncher = 140,
14690 _120mmType98PF98 = 145,
14691}
14692
14693impl LifeFormHumanSpecificAntiTankRockets {
14694 #[must_use]
14695 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14696 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14697 }
14698}
14699
14700#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14702#[allow(non_camel_case_types)]
14703pub enum LifeFormHumanSpecificAntiTankMissiles {
14704 #[default]
14705 Other = 0,
14706 _120mmType64MATKAM3 = 30,
14707 _153mmType79JyuMATKAM9 = 31,
14708 _120mmType87ChuMAT = 32,
14709 _140mmType01LMAT = 33,
14710 _140mmM47Dragon = 58,
14711 _140mmSaeghe12 = 59,
14712 _127mmFGM148Javelin = 60,
14713 _139mmFGM172SRAW = 63,
14714 _139mmFGM172BSRAWMPV = 64,
14715 _152mmBGM71TOW = 68,
14716 _152mmOrevTOWII = 69,
14717 _120mmVickersVigilantClevite = 75,
14718 _110mmBantam = 80,
14719 _150mmRBS56BILL1 = 81,
14720 _150mmRBS562BILL2 = 82,
14721 _130mmSpikeSR = 85,
14722 _130mmSpikeMR = 86,
14723 _130mmSpikeLR = 87,
14724 _60mmMosquito = 95,
14725 _160mmSS_10 = 98,
14726 _103mmMILAN = 100,
14727 _115mmMILAN2 = 101,
14728 _115mmMILAN2T = 102,
14729 _115mmMILAN3 = 103,
14730 _115mmMILANER = 104,
14731 _136mmERYX = 105,
14732 _152mmEntac = 107,
14733 _125mmRAAD = 110,
14734 _125mmIRAADT = 111,
14735 _152mmToophan = 112,
14736 _152mmToophan2 = 113,
14737 _152mmToophan5 = 114,
14738 _136mmBumbar = 120,
14739 _130mmShershenPK2 = 125,
14740 _152mmShershenQP2B = 126,
14741 _130mmMectronMSS1_2 = 130,
14742 _120mmHJ8 = 140,
14743 _120mmHJ8A = 141,
14744 _120mmHJ8B = 142,
14745 _120mmHJ8C = 143,
14746 _120mmHJ8D = 144,
14747 _120mmHJ8E = 145,
14748 _120mmHJ8F = 146,
14749 _120mmHJ8FAE = 147,
14750 _120mmHJ8L = 148,
14751 _120mmHJ8H = 149,
14752 _120mmHJ8S = 150,
14753 _120mmBaktarShikan = 151,
14754 _120mmHJ11 = 152,
14755 _152mmHJ9A = 153,
14756 _135mmHJ12RedArrow = 154,
14757 _125mmHJ73MCLOS = 155,
14758 _125mmHJ73BSACLOS = 156,
14759 _125mmHJ73CSACLOSERA = 157,
14760 _125mmAT3SaggerA9M14Malyutka = 170,
14761 _125mmAT3BSaggerB9M14MMalyutkaM = 171,
14762 _125mmAT3CSaggerC9M14PMalyutkaP = 172,
14763 _125mmAT3DSaggerD9M142Malyutka2 = 173,
14764 _125mmSusongPo = 174,
14765 _125mmAT3CPOLK = 175,
14766 _125mmKunWu1 = 176,
14767 _125mmMaliutkaM2T = 177,
14768 _120mmAT4ASpigotA9M111Fagot = 178,
14769 _120mmAT4BSpigotB9M1112Fagot = 179,
14770 _120mmAT4CSpigotC9M111MFaktoriya = 180,
14771 _135mmAT5ASpandrel9M113Kronkurs = 181,
14772 _135mmAT5BSpandrel9M113MKronkursM = 182,
14773 _135mmTosan = 183,
14774 _94mmAT7Saxhorn9K115Metis = 184,
14775 _130mmAT13Saxhorn29K1152MetisM = 185,
14776 _152mmAT14Spriggan9M133Kornet = 186,
14777 _152mmDehlavie = 187,
14778 _102mmMathogo = 200,
14779}
14780
14781impl LifeFormHumanSpecificAntiTankMissiles {
14782 #[must_use]
14783 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14784 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14785 }
14786}
14787
14788#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14790pub enum LifeFormHumanSpecificManPortableAirDefenseSystem {
14791 #[default]
14792 Other = 0,
14793 _70mmFIM43Redeye = 1,
14794 _70mmFIM92Stinger = 2,
14795 _76mmBlowpipe = 10,
14796 _76mmStarburst = 11,
14797 _130mmStarstreakHVM = 12,
14798 _90mmMistral = 15,
14799 _72mm9K32MStrela2 = 20,
14800 _72mm9K36Strela3 = 21,
14801 _72mm9K38Igla = 22,
14802 _72mm9K310IglaM = 23,
14803 _72mm9K333Verba = 24,
14804 _72mm9K338IglaS = 25,
14805 _72mm9K32MStrela2M = 26,
14806 _72mmHN5HongYing5 = 30,
14807 _72mmQW1Vanguard = 31,
14808 _72mmQW2Vanguard2 = 32,
14809 _90mmQW3 = 33,
14810 _72mmFN6 = 34,
14811 _71mmMisagh1 = 45,
14812 _71mmMisagh2 = 46,
14813 _80mmType91KinSAM = 50,
14814 _80mmKPSAMShunGung = 55,
14815 _106mmRBS70 = 60,
14816}
14817
14818impl LifeFormHumanSpecificManPortableAirDefenseSystem {
14819 #[must_use]
14820 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14821 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14822 }
14823}
14824
14825#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14827pub enum LifeFormHumanSpecificRecoillessRifles {
14828 #[default]
14829 Other = 0,
14830 _84mmM136AT4CS = 15,
14831 _57mmM18RR = 20,
14832 _75mmM20RR = 21,
14833 _120mmM28DavyCrockett = 22,
14834 _155mmM29DavyCrockett = 23,
14835 _106mmM40RecoillessRifle = 24,
14836 _82mmM60RR = 25,
14837 _90mmM67RR = 26,
14838 _84mmM1CarlGustav = 30,
14839 _84mmM2CarlGustav = 31,
14840 _84mmM3CarlGustav = 32,
14841 _84mmM4CarlGustav = 33,
14842 _74mmPansarskottm68Miniman = 35,
14843 _84mmALAC = 40,
14844 _82mmB10RR = 45,
14845 _107mmB11RR = 46,
14846 _80mmBredaFolgore = 50,
14847 _120mmBATRR = 55,
14848 _73mmSPG9Kopye = 60,
14849 _88mmRCL3_45in = 65,
14850 _90mmPvpj110 = 70,
14851 _50mmJagdfaust = 75,
14852 _30mmRheinmetallRMK30 = 80,
14853 _88mm55S55Raikka = 90,
14854 _95mm95S5861 = 91,
14855 _73mmLG40 = 95,
14856 _105mmLG40 = 96,
14857 _105mmLG42 = 97,
14858}
14859
14860impl LifeFormHumanSpecificRecoillessRifles {
14861 #[must_use]
14862 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14863 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14864 }
14865}
14866
14867#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14869pub enum LifeFormHumanSpecificFlameRockets {
14870 #[default]
14871 Other = 0,
14872 _66mmM202Flash = 20,
14873 _62mmFHJ84 = 30,
14874 _90mmC90CRFIM = 40,
14875 _93mmRPOAShmel = 50,
14876 _93mmRPOZShmel = 51,
14877 _93mmRPODShmel = 52,
14878}
14879
14880impl LifeFormHumanSpecificFlameRockets {
14881 #[must_use]
14882 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14883 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14884 }
14885}
14886
14887#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14889pub enum LifeFormHumanSpecificFlameThrowers {
14890 #[default]
14891 Other = 0,
14892 Handflammpatrone = 10,
14893 FmW41 = 11,
14894 M1A1 = 20,
14895 M2A17 = 21,
14896 M9A17 = 22,
14897 LPO50 = 30,
14898 KPattern = 35,
14899 PortableNo2AckPack = 36,
14900 Marsden = 37,
14901 Harvey = 38,
14902 ROKS2 = 45,
14903 ROKS3 = 46,
14904 Type93 = 50,
14905 Type100 = 51,
14906}
14907
14908impl LifeFormHumanSpecificFlameThrowers {
14909 #[must_use]
14910 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14911 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14912 }
14913}
14914
14915#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14917pub enum LifeFormHumanSpecificDroneGuns {
14918 #[default]
14919 Other = 0,
14920 DroneGunTactical = 15,
14921 DroneGunMKII = 16,
14922}
14923
14924impl LifeFormHumanSpecificDroneGuns {
14925 #[must_use]
14926 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14927 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14928 }
14929}
14930
14931#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14933pub enum LifeFormHumanSpecificLogisticsEQClass {
14934 #[default]
14935 SlingLoadPendant = 1,
14936}
14937
14938impl LifeFormHumanSpecificLogisticsEQClass {
14939 #[must_use]
14940 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14941 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14942 }
14943}
14944
14945#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14947pub enum LifeFormHumanSpecificPersonalElectronicsClass {
14948 #[default]
14949 CellPhone = 1,
14950}
14951
14952impl LifeFormHumanSpecificPersonalElectronicsClass {
14953 #[must_use]
14954 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14955 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14956 }
14957}
14958
14959#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14961pub enum LifeFormHumanSpecificLasersClass {
14962 #[default]
14963 GenericLaserDesignator = 1,
14964 GenericLaserPointer = 2,
14965}
14966
14967impl LifeFormHumanSpecificLasersClass {
14968 #[must_use]
14969 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14970 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
14971 }
14972}
14973
14974#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14976pub enum TransmitterDetailSATCOMModulation {
14977 #[default]
14978 Other = 0,
14979 NoDelay = 1,
14980}
14981
14982impl TransmitterDetailSATCOMModulation {
14983 #[must_use]
14984 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
14985 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
14986 }
14987}
14988
14989#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
14991pub enum SupplyDomain {
14992 #[default]
14993 NotUsed = 0,
14994 Class1Subsistence = 1,
14995 Class2ClothingIndividualEquipmentToolsAdminSupplies = 2,
14996 Class3PetroleumOilsLubricants = 3,
14997 Class4ConstructionMaterials = 4,
14998 Class5Ammunition = 5,
14999 Class6PersonnelDemandItems = 6,
15000 Class7MajorItems = 7,
15001 Class8MedicalMaterial = 8,
15002 Class9RepairPartsandComponents = 9,
15003 Class10MaterialtoSupportNonMilitaryPrograms = 10,
15004 Class11Supplies = 11,
15005 Class12SlingLoads = 12,
15006}
15007
15008impl SupplyDomain {
15009 #[must_use]
15010 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15011 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15012 }
15013}
15014
15015#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15017pub enum Class1SupplyCategorySubsistence {
15018 #[default]
15019 Other = 1,
15020 ANonPerishable = 2,
15021 CCombatRations = 3,
15022 RRefrigerated = 4,
15023 SOtherNonRefrigerated = 5,
15024 WWater = 6,
15025}
15026
15027impl Class1SupplyCategorySubsistence {
15028 #[must_use]
15029 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15030 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15031 }
15032}
15033
15034#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15036pub enum Class2SupplyCategoryClothingIndividualEquipmentToolsAdminSupplies {
15037 #[default]
15038 Other = 1,
15039 AAir = 2,
15040 BGroundSupportMateriel = 3,
15041 EGeneralSupplies = 4,
15042 FClothing = 5,
15043 GElectronics = 6,
15044 MWeapons = 7,
15045 TIndustrialSupplies = 8,
15046}
15047
15048impl Class2SupplyCategoryClothingIndividualEquipmentToolsAdminSupplies {
15049 #[must_use]
15050 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15051 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15052 }
15053}
15054
15055#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15057pub enum Class3SupplyCategoryPetroleumOilsLubricants {
15058 #[default]
15059 Other = 1,
15060 APOLforAirVehicles = 2,
15061 WPOLforLandVehicles = 3,
15062 PPackagedPOL = 4,
15063}
15064
15065impl Class3SupplyCategoryPetroleumOilsLubricants {
15066 #[must_use]
15067 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15068 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15069 }
15070}
15071
15072#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15074pub enum Class4SupplyCategoryConstructionMaterials {
15075 #[default]
15076 Other = 1,
15077 AConstruction = 2,
15078 BBarrier = 3,
15079}
15080
15081impl Class4SupplyCategoryConstructionMaterials {
15082 #[must_use]
15083 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15084 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15085 }
15086}
15087
15088#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15090pub enum Class6SupplyCategoryPersonnelDemandItems {
15091 #[default]
15092 Other = 1,
15093}
15094
15095impl Class6SupplyCategoryPersonnelDemandItems {
15096 #[must_use]
15097 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15098 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15099 }
15100}
15101
15102#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15104pub enum Class7SupplyCategoryMajorItems {
15105 #[default]
15106 Other = 1,
15107 AAir = 2,
15108 BGroundSupportMateriel = 3,
15109 DAdminVehicles = 4,
15110 GElectronics = 5,
15111 JRacksAdaptorsPylons = 6,
15112 KTacticalVehicles = 7,
15113 LMissiles = 8,
15114 MWeapons = 9,
15115 NSpecialWeapons = 10,
15116 XAircraftEngines = 11,
15117 DropTank = 20,
15118 ConformalFuelTank = 21,
15119 LuggagePod = 22,
15120 ECMPod = 23,
15121 ParaDrogue = 24,
15122 TargetingPod = 25,
15123 Fairing = 26,
15124 AirRefuellingPod = 27,
15125 HeavyAirdrop = 28,
15126 ContainerDeliverySystemAirdrop = 29,
15127 RocketPodLauncher = 30,
15128 TacticalPod = 31,
15129 RECCEpod = 32,
15130 FLIRpod = 33,
15131}
15132
15133impl Class7SupplyCategoryMajorItems {
15134 #[must_use]
15135 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15136 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15137 }
15138}
15139
15140#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15142pub enum Class8SupplyCategoryMedicalMaterial {
15143 #[default]
15144 Other = 1,
15145 AMedicalMateriel = 2,
15146 BBloodFluids = 3,
15147}
15148
15149impl Class8SupplyCategoryMedicalMaterial {
15150 #[must_use]
15151 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15152 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15153 }
15154}
15155
15156#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15158pub enum Class9SupplyCategoryRepairPartsandComponents {
15159 #[default]
15160 Other = 1,
15161 AAir = 2,
15162 BGroundSupportMateriel = 3,
15163 DAdminVehicles = 4,
15164 GElectronics = 5,
15165 KTacticalVehicles = 6,
15166 LMissiles = 7,
15167 MWeapons = 8,
15168 NSpecialWeapons = 9,
15169 XAircraftEngines = 10,
15170}
15171
15172impl Class9SupplyCategoryRepairPartsandComponents {
15173 #[must_use]
15174 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15175 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15176 }
15177}
15178
15179#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15181pub enum Class10SupplyCategoryMaterialToSupportNonMilitaryPrograms {
15182 #[default]
15183 Other = 1,
15184}
15185
15186impl Class10SupplyCategoryMaterialToSupportNonMilitaryPrograms {
15187 #[must_use]
15188 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15189 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15190 }
15191}
15192
15193#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15195pub enum Class11SupplyCategorySupplies {
15196 #[default]
15197 Other = 1,
15198 Pallets = 2,
15199 FuelTanksDrumsandBladders = 3,
15200 Chests = 4,
15201 Boxes = 5,
15202}
15203
15204impl Class11SupplyCategorySupplies {
15205 #[must_use]
15206 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15207 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15208 }
15209}
15210
15211#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15213pub enum Class12SupplyCategorySlingLoads {
15214 #[default]
15215 Other = 1,
15216 SlingLoadBlivet = 2,
15217 SlingLoadCrate = 3,
15218 SlingLoadWaterBucket = 4,
15219 SlingLoadVehicles = 5,
15220 SlingLoadHowitzer = 6,
15221 SlingLoadCollapsible = 7,
15222 SlingLoadBladder = 8,
15223 SlingLoadPalletofCrates = 9,
15224 SlingLoadHelicopters = 10,
15225 SlingLoadHoist = 11,
15226 SlingLoadConcreteBlock = 12,
15227}
15228
15229impl Class12SupplyCategorySlingLoads {
15230 #[must_use]
15231 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15232 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15233 }
15234}
15235
15236#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15238pub enum LifeSavingEquipment {
15239 #[default]
15240 Lifeboat = 1,
15241 Liferaft = 2,
15242 MOBBoat = 3,
15243 Lifebuoy = 4,
15244}
15245
15246impl LifeSavingEquipment {
15247 #[must_use]
15248 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15249 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15250 }
15251}
15252
15253#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15255pub enum IslandSubcategory {
15256 #[default]
15257 Other = 0,
15258 Islands10002499km2 = 1,
15259 Islands25004999km2 = 2,
15260 Islands50009999km2 = 3,
15261 Islands1000024999km2 = 4,
15262 Islands2500099999km2 = 5,
15263 Islands100000km2andGreater = 6,
15264}
15265
15266impl IslandSubcategory {
15267 #[must_use]
15268 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15269 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
15270 }
15271}
15272
15273#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15275pub enum Link11MessageSubType {
15276 #[default]
15277 NoStatement = 0,
15278 Interrogation = 1,
15279 DataStart = 2,
15280 Data = 3,
15281 DataStop = 4,
15282}
15283
15284impl Link11MessageSubType {
15285 #[must_use]
15286 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15287 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15288 }
15289}
15290
15291#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15293pub enum Link11MessageTypeIdentifier {
15294 #[default]
15295 NoStatement = 0,
15296 NetTest = 1,
15297 RollCall = 2,
15298 PicketReply = 3,
15299 ShortBroadcast = 4,
15300 Broadcast = 5,
15301 NetSync = 6,
15302}
15303
15304impl Link11MessageTypeIdentifier {
15305 #[must_use]
15306 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15307 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15308 }
15309}
15310
15311#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15313pub enum Link11DataSignallingRate {
15314 #[default]
15315 NoStatement = 0,
15316 _1364bps = 1,
15317 _2250bps = 2,
15318 _1200bps = 3,
15319 _2400bps = 4,
15320}
15321
15322impl Link11DataSignallingRate {
15323 #[must_use]
15324 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15325 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15326 }
15327}
15328
15329#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15331pub enum Link11SignalIntegrationInterval {
15332 #[default]
15333 NoStatement = 0,
15334 _9ms = 1,
15335 _18ms = 2,
15336}
15337
15338impl Link11SignalIntegrationInterval {
15339 #[must_use]
15340 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15341 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15342 }
15343}
15344
15345#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15347pub enum Link11SignalWaveform {
15348 #[default]
15349 NoStatementCLEWFormat = 0,
15350 ConventionalLinkElevenWaveform = 1,
15351 SingleToneLinkElevenWaveform = 2,
15352}
15353
15354impl Link11SignalWaveform {
15355 #[must_use]
15356 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15357 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15358 }
15359}
15360
15361#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15363pub enum Link11_11BEncryptionFlag {
15364 #[default]
15365 NoEncryptionUsed = 0,
15366 EncryptionUsed = 1,
15367}
15368
15369impl Link11_11BEncryptionFlag {
15370 #[must_use]
15371 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15372 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15373 }
15374}
15375
15376#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15378pub enum SISOSTD002Version {
15379 #[default]
15380 SISOSTD0022006 = 0,
15381 SISOSTD0022021 = 1,
15382}
15383
15384impl SISOSTD002Version {
15385 #[must_use]
15386 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15387 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15388 }
15389}
15390
15391#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15393pub enum Link11BLinkState {
15394 #[default]
15395 NoStatement = 0,
15396 Inactive = 1,
15397 Ready = 2,
15398 Active = 3,
15399 Operational = 4,
15400}
15401
15402impl Link11BLinkState {
15403 #[must_use]
15404 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15405 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15406 }
15407}
15408
15409#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15411pub enum Link11BModeofOperation {
15412 #[default]
15413 NoStatement = 0,
15414 FullTransmissionofData = 1,
15415 LimitedTransmissionofData = 2,
15416 Receiveonly = 3,
15417}
15418
15419impl Link11BModeofOperation {
15420 #[must_use]
15421 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15422 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
15423 }
15424}
15425
15426#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15428pub enum Link11BMessageSubType {
15429 #[default]
15430 NoStatement = 0,
15431 TransmissionFrame = 1,
15432 StandbySignal = 2,
15433}
15434
15435impl Link11BMessageSubType {
15436 #[must_use]
15437 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15438 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15439 }
15440}
15441
15442#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15444pub enum Link11BDataSignalingRate {
15445 #[default]
15446 NoStatement = 0,
15447 _1200bps = 3,
15448 _2400bps = 4,
15449 _600bps = 5,
15450}
15451
15452impl Link11BDataSignalingRate {
15453 #[must_use]
15454 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15455 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15456 }
15457}
15458
15459#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15461#[allow(non_camel_case_types)]
15462pub enum Link11BModulationStandard {
15463 #[default]
15464 NoStatement = 0,
15465 CCITTV_23 = 1,
15466}
15467
15468impl Link11BModulationStandard {
15469 #[must_use]
15470 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15471 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15472 }
15473}
15474
15475#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15477pub enum CIGIExtensionPacketID {
15478 #[default]
15479 ImageCaptureRequestpacketID = 4096,
15480 ImageCaptureResponsepacketID = 4097,
15481 StateNotificationRequestPacketID = 4098,
15482 StateNotificationResponsePacketID = 4099,
15483 GlobalRefFrameDefPacketID = 5000,
15484}
15485
15486impl CIGIExtensionPacketID {
15487 #[must_use]
15488 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15489 Self::from_u16(buf.get_u16()).unwrap_or_else(Self::default)
15490 }
15491}
15492
15493#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15495pub enum Link16Version {
15496 #[default]
15497 NoStatement = 0,
15498 MILSTD6016C = 1,
15499 MILSTD6016D = 2,
15500 MILSTD6016E = 3,
15501 MILSTD6016F = 4,
15502 MILSTD6016FC1 = 5,
15503 STANAG5516Ed3 = 103,
15504 STANAG5516Ed4 = 104,
15505 STANAG5516Ed5 = 105,
15506 STANAG5516Ed6 = 106,
15507 STANAG5516Ed8 = 108,
15508}
15509
15510impl Link16Version {
15511 #[must_use]
15512 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15513 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15514 }
15515}
15516
15517#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15519pub enum AircraftIDSource {
15520 #[default]
15521 ModeSAircraftIdentificationFieldValue = 0,
15522 GICBIFFDataRecordAvailable = 1,
15523}
15524
15525impl AircraftIDSource {
15526 #[must_use]
15527 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15528 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15529 }
15530}
15531
15532#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15534pub enum ClothingIRSignature {
15535 #[default]
15536 StandardClothing = 0,
15537 Camouflage = 1,
15538 ThermalBlanket = 2,
15539 Other = 3,
15540}
15541
15542impl ClothingIRSignature {
15543 #[must_use]
15544 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15545 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15546 }
15547}
15548
15549#[derive(Copy, Clone, Debug, Default, FromPrimitive, PartialEq, Eq)]
15551pub enum DamageArea {
15552 #[default]
15553 DamageArea1orNotApplicableifDamageAreasarenotdefined_ = 0,
15554 DamageArea2 = 1,
15555 DamageArea3 = 2,
15556 DamageArea4 = 3,
15557 DamageArea5 = 4,
15558 DamageArea6 = 5,
15559 DamageArea7 = 6,
15560 DamageArea8 = 7,
15561}
15562
15563impl DamageArea {
15564 #[must_use]
15565 pub fn deserialize<B: Buf>(buf: &mut B) -> Self {
15566 Self::from_u8(buf.get_u8()).unwrap_or_else(Self::default)
15567 }
15568}