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