dji_log_parser/record/
firmware.rs

1use 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}