dji_log_parser/record/
component_serial.rs1use binrw::binread;
2use serde::Serialize;
3#[cfg(target_arch = "wasm32")]
4use tsify_next::Tsify;
5
6#[binread]
7#[derive(Serialize, Debug)]
8#[serde(rename_all = "camelCase")]
9#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
10pub struct ComponentSerial {
11 #[br(map = |x: u16| ComponentType::from(x as u8))]
12 pub component_type: ComponentType,
13 #[br(temp)]
14 length: u8,
15 #[br(count=length, map = |s: Vec<u8>| String::from_utf8_lossy(&s).trim_end_matches('\0').to_string())]
16 pub serial: String,
17}
18
19#[derive(Serialize, Debug, Clone, Copy)]
20#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
21pub enum ComponentType {
22 Camera,
23 Aircraft,
24 RC,
25 Battery,
26 #[serde(untagged)]
27 Unknown(u8),
28}
29
30impl ComponentType {
31 pub fn from(value: u8) -> Self {
32 match value {
33 1 => ComponentType::Camera,
34 2 => ComponentType::Aircraft,
35 3 => ComponentType::RC,
36 4 => ComponentType::Battery,
37 _ => ComponentType::Unknown(value),
38 }
39 }
40}