dji_log_parser/record/
deform.rs1use binrw::binread;
2use serde::Serialize;
3#[cfg(target_arch = "wasm32")]
4use tsify_next::Tsify;
5
6use crate::utils::sub_byte_field;
7
8#[binread]
9#[derive(Serialize, Debug)]
10#[serde(rename_all = "camelCase")]
11#[br(little)]
12#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
13pub struct Deform {
14 #[br(temp)]
15 _bitpack1: u8,
16 #[br(calc(sub_byte_field(_bitpack1, 0x01) == 1))]
17 pub is_deform_protected: bool,
18 #[br(calc(DeformStatus::from(sub_byte_field(_bitpack1, 0x0E))))]
19 pub deform_status: DeformStatus,
20 #[br(calc(DeformMode::from(sub_byte_field(_bitpack1, 0x30))))]
21 pub deform_mode: DeformMode,
22}
23
24#[derive(Serialize, Debug)]
25#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
26pub enum DeformMode {
27 Pack,
28 Protect,
29 Normal,
30 #[serde(untagged)]
31 Unknown(u8),
32}
33
34impl From<u8> for DeformMode {
35 fn from(value: u8) -> Self {
36 match value {
37 0 => DeformMode::Pack,
38 1 => DeformMode::Protect,
39 2 => DeformMode::Normal,
40 _ => DeformMode::Unknown(value),
41 }
42 }
43}
44
45#[derive(Serialize, Debug)]
46#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
47pub enum DeformStatus {
48 FoldComplete,
49 Folding,
50 StretchComplete,
51 Stretching,
52 StopDeformation,
53 #[serde(untagged)]
54 Unknown(u8),
55}
56
57impl From<u8> for DeformStatus {
58 fn from(value: u8) -> Self {
59 match value {
60 1 => DeformStatus::FoldComplete,
61 2 => DeformStatus::Folding,
62 3 => DeformStatus::StretchComplete,
63 4 => DeformStatus::Stretching,
64 5 => DeformStatus::StopDeformation,
65 _ => DeformStatus::Unknown(value),
66 }
67 }
68}