use bve_derive::{FromKVPSection, FromKVPValueEnumNumbers};
#[derive(Debug, Default, Clone, PartialEq, FromKVPSection)]
pub struct DeviceSection {
#[kvp(bare)]
ats: AtsAvailable,
#[kvp(bare)]
atc: AtcAvailable,
#[kvp(bare)]
eb: EmergencyBrakeAvailable,
#[kvp(bare)]
const_speed: ConstSpeedAvailable,
#[kvp(bare)]
hold_brake: HoldBrakeAvailable,
#[kvp(bare)]
re_adhesion_device: ReAdhesionDeviceType,
#[kvp(bare)]
load_compensating_device: String,
#[kvp(bare)]
pass_alarm: PassAlarmType,
#[kvp(bare)]
door_open_mode: DoorMode,
#[kvp(bare)]
door_close_mode: DoorMode,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum AtsAvailable {
#[kvp(default, index = "-1")]
Neither,
AtsSn,
AtsSnAtsP,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum AtcAvailable {
#[kvp(default)]
Unavailable,
Manual,
Automatic,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum EmergencyBrakeAvailable {
#[kvp(default)]
Unavailable,
Available,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum ConstSpeedAvailable {
#[kvp(default)]
Unavailable,
Available,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum HoldBrakeAvailable {
#[kvp(default)]
Unavailable,
Available,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum ReAdhesionDeviceType {
#[kvp(default, index = "-1")]
Unavailable,
TypeA,
TypeB,
TypeC,
TypeD,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum PassAlarmType {
#[kvp(default)]
Unavailable,
Single,
Loop,
}
#[derive(Debug, Clone, PartialEq, FromKVPValueEnumNumbers)]
pub enum DoorMode {
#[kvp(default)]
AutomaticOrManual,
AutomaticOnly,
ManualOnly,
}