dji_log_parser/record/
firmware.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#[br(little)]
10#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
11pub struct Firmware {
12 #[br(map = |x: u8| SenderType::from(x))]
13 pub sender_type: SenderType,
14 pub sub_sender_type: u8,
15 #[br(map = |x: [u8; 4]| format!("{}.{}.{}", x[0], x[1], x[2]))]
16 pub version: String,
17}
18
19#[derive(Serialize, Debug)]
20#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
21pub enum SenderType {
22 None,
23 Camera,
24 MC,
25 Gimbal,
26 RC,
27 Battery,
28 Unknown(u8),
29}
30
31impl SenderType {
32 pub fn from(value: u8) -> Self {
33 match value {
34 0 => SenderType::None,
35 1 => SenderType::Camera,
36 3 => SenderType::MC,
37 4 => SenderType::Gimbal,
38 6 => SenderType::RC,
39 11 => SenderType::Battery,
40 _ => SenderType::Unknown(value),
41 }
42 }
43}