use std::io::Write;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
pub struct File {
fileName: String,
pointer: Option<usize>,
nameLength: Option<usize>,
filePnLength: Option<usize>,
filePn: Option<usize>,
fileLength: Option<usize>,
fileCrc: Option<usize>,
expansionPoint2: Option<Vec<u8>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Files {
basePath: String,
numberOfDataFiles: Option<usize>,
files: Vec<File>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TargetHwId {
idLength: Option<usize>,
id: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct SoftwareInformations {
loadPnLength: Option<usize>,
loadPn: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct HardwareInformations {
numberOfTargetHwIds: Option<usize>,
targets: Vec<TargetHwId>,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum FormatVersion {}
#[derive(Debug, Deserialize, Serialize)]
pub struct Header {
headerFileLength: Option<usize>,
loadFileFormatVersion: Option<usize>,
pointerToLoadPartNumberLength: Option<usize>,
pointerToTargetHwIdList: Option<usize>,
pointerToDataFileList: Option<usize>,
pointerToSupportFileList: Option<usize>,
pointerToUserDefinedData: Option<usize>,
expansionPoint1: Option<Vec<u8>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct FileItems {
data: Files,
support: Files,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct AdditionnalInformations {
expansionPoint4: Option<Vec<u8>>,
userDefinedData: Option<Vec<u8>>,
headerFileCrc: Option<Vec<u8>>,
load_crc: Option<Vec<u8>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct LUH {
header: Header,
software: SoftwareInformations,
hardware: HardwareInformations,
files: FileItems,
additionnal_informations: AdditionnalInformations,
}
impl LUH {
fn pointer_to_support_file_list() {
}
pub fn to_writer(&self, mut o: impl Write) -> Vec<u8> {
let output = vec![];
o.write(&output).expect("failed to write");
output
}
}