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