use crate::data::{self, PduData, Field};
use crate::registers::MailboxSupport;
use bilge::prelude::*;
pub const WORD: usize = core::mem::size_of::<u16>();
pub const pdi_control: Field<u16> = Field::simple(WORD*0x0000);
pub const pdi_config: Field<u16> = Field::simple(WORD*0x0001);
pub const sync_impulse: Field<u16> = Field::simple(WORD*0x0002);
pub const pdi_config2: Field<u16> = Field::simple(WORD*0x0003);
pub const address_alias: Field<u16> = Field::simple(WORD*0x0004);
pub const checksum: Field<u16> = Field::simple(WORD*0x0007);
pub mod device {
use super::*;
pub const vendor: Field<u32> = Field::simple(WORD*0x0008);
pub const product: Field<u32> = Field::simple(WORD*0x000a);
pub const revision: Field<u32> = Field::simple(WORD*0x000c);
pub const serial_number: Field<u32> = Field::simple(WORD*0x000e);
}
pub mod mailbox {
use super::*;
pub mod bootstrap {
use super::*;
pub mod write {
use super::*;
pub const offset: Field<u16> = Field::simple(WORD*0x0014);
pub const size: Field<u16> = Field::simple(WORD*0x0015);
}
pub mod read {
use super::*;
pub const offset: Field<u16> = Field::simple(WORD*0x0016);
pub const size: Field<u16> = Field::simple(WORD*0x0017);
}
}
pub mod standard {
use super::*;
pub mod write {
use super::*;
pub const offset: Field<u16> = Field::simple(WORD*0x0018);
pub const size: Field<u16> = Field::simple(WORD*0x0019);
}
pub mod read {
use super::*;
pub const offset: Field<u16> = Field::simple(WORD*0x001a);
pub const size: Field<u16> = Field::simple(WORD*0x001b);
}
}
pub const protocols: Field<MailboxSupport> = Field::simple(WORD*0x001c);
}
pub const eeprom_size: Field<u16> = Field::simple(WORD*0x003e);
pub const version: Field<u16> = Field::simple(WORD*0x003f);
pub const categories: u16 = (WORD*0x0040) as u16;