dji-log-parser 0.5.7

Library for parsing DJI txt logs
Documentation
use binrw::binread;
use serde::Serialize;
#[cfg(target_arch = "wasm32")]
use tsify_next::Tsify;

#[binread]
#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
pub struct ComponentSerial {
    #[br(map = |x: u16| ComponentType::from(x as u8))]
    pub component_type: ComponentType,
    #[br(temp)]
    length: u8,
    #[br(count=length, map = |s: Vec<u8>| String::from_utf8_lossy(&s).trim_end_matches('\0').to_string())]
    pub serial: String,
}

#[derive(Serialize, Debug, Clone, Copy)]
#[cfg_attr(target_arch = "wasm32", derive(Tsify))]
pub enum ComponentType {
    Camera,
    Aircraft,
    RC,
    Battery,
    #[serde(untagged)]
    Unknown(u8),
}

impl ComponentType {
    pub fn from(value: u8) -> Self {
        match value {
            1 => ComponentType::Camera,
            2 => ComponentType::Aircraft,
            3 => ComponentType::RC,
            4 => ComponentType::Battery,
            _ => ComponentType::Unknown(value),
        }
    }
}