remote_id/data/
basic_id.rs1use crate::MAX_ID_BYTE_SIZE;
2
3pub const MESSAGE_TYPE: u8 = 0;
4
5#[derive(Debug, Clone, PartialEq)]
6pub struct BasicId {
7 pub id_type: IdType,
8 pub ua_type: UAType,
9 pub uas_id: [u8; MAX_ID_BYTE_SIZE],
10}
11
12#[derive(Debug, Copy, Clone, PartialEq)]
13pub enum IdType {
14 None = 0,
15 SerialNumber = 1,
17 CaaRegistrationId = 2,
18 UtmAssignedId = 3,
19 SpecificSessionId = 4,
20}
21
22impl From<u8> for IdType {
23 fn from(value: u8) -> Self {
24 match value {
25 0 => IdType::None,
26 1 => IdType::SerialNumber,
27 2 => IdType::CaaRegistrationId,
28 3 => IdType::UtmAssignedId,
29 4 => IdType::SpecificSessionId,
30
31 _ => IdType::None,
32 }
33 }
34}
35
36impl From<IdType> for u8 {
37 fn from(val: IdType) -> Self {
38 match val {
39 IdType::None => 0,
40 IdType::SerialNumber => 1,
41 IdType::CaaRegistrationId => 2,
42 IdType::UtmAssignedId => 3,
43 IdType::SpecificSessionId => 4,
44 }
45 }
46}
47
48#[derive(Debug, Copy, Clone, PartialEq)]
49pub enum UAType {
50 None = 0,
51 Aeroplane = 1,
52 HelicopterOrMultirotor = 2,
53 Gyroplane = 3,
54 HybridLift = 4,
55 Ornithopter = 5,
56 Glider = 6,
57 Kite = 7,
58 FreeBalloon = 8,
59 CaptiveBalloon = 9,
60 Airship = 10,
61 FreeFallParachute = 11,
62 Rocket = 12,
63 TetheredPoweredAircraft = 13,
64 GroundObstacle = 14,
65 Other = 15,
66}
67
68impl From<u8> for UAType {
69 fn from(value: u8) -> Self {
70 match value {
71 0 => UAType::None,
72 1 => UAType::Aeroplane,
73 2 => UAType::HelicopterOrMultirotor,
74 3 => UAType::Gyroplane,
75 4 => UAType::HybridLift,
76 5 => UAType::Ornithopter,
77 6 => UAType::Glider,
78 7 => UAType::Kite,
79 8 => UAType::FreeBalloon,
80 9 => UAType::CaptiveBalloon,
81 10 => UAType::Airship,
82 11 => UAType::FreeFallParachute,
83 12 => UAType::Rocket,
84 13 => UAType::TetheredPoweredAircraft,
85 14 => UAType::GroundObstacle,
86 _ => UAType::Other,
87 }
88 }
89}
90
91impl From<UAType> for u8 {
92 fn from(val: UAType) -> Self {
93 match val {
94 UAType::Aeroplane => 1,
95 UAType::HelicopterOrMultirotor => 2,
96 UAType::Gyroplane => 3,
97 UAType::HybridLift => 4,
98 UAType::Ornithopter => 5,
99 UAType::Glider => 6,
100 UAType::Kite => 7,
101 UAType::FreeBalloon => 8,
102 UAType::CaptiveBalloon => 9,
103 UAType::Airship => 10,
104 UAType::FreeFallParachute => 11,
105 UAType::Rocket => 12,
106 UAType::TetheredPoweredAircraft => 13,
107 UAType::GroundObstacle => 14,
108 UAType::Other => 15,
109
110 UAType::None => 0,
111 }
112 }
113}