#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum I2cAddress {
Addr0x74,
Addr0x75,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum LightLoadMode {
Pfm,
Pwm,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum VccSource {
Internal,
External5v,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum LightLoadOverride {
FromPreset,
FromRegister,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum VoutSlewRate {
Sr1p25MvPerUs,
Sr2p5MvPerUs,
Sr5MvPerUs,
Sr10MvPerUs,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum OcpDelay {
Us128,
Ms3_072,
Ms6_144,
Ms12_288,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FeedbackSource {
Internal,
External,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum InternalFeedbackRatio {
R0_2256,
R0_1128,
R0_0752,
R0_0564,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum CableCompOption {
Internal,
External,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum CableCompLevel {
V0p0,
V0p1,
V0p2,
V0p3,
V0p4,
V0p5,
V0p6,
V0p7,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ModePreset {
pub resistor_kohm: Option<f32>,
pub vcc_source: VccSource,
pub address: I2cAddress,
pub light_load_mode: LightLoadMode,
}
pub const MODE_PRESETS: [ModePreset; 8] = [
ModePreset {
resistor_kohm: Some(0.0),
vcc_source: VccSource::Internal,
address: I2cAddress::Addr0x74,
light_load_mode: LightLoadMode::Pwm,
},
ModePreset {
resistor_kohm: Some(6.19),
vcc_source: VccSource::Internal,
address: I2cAddress::Addr0x74,
light_load_mode: LightLoadMode::Pfm,
},
ModePreset {
resistor_kohm: Some(14.3),
vcc_source: VccSource::Internal,
address: I2cAddress::Addr0x75,
light_load_mode: LightLoadMode::Pwm,
},
ModePreset {
resistor_kohm: Some(24.9),
vcc_source: VccSource::Internal,
address: I2cAddress::Addr0x75,
light_load_mode: LightLoadMode::Pfm,
},
ModePreset {
resistor_kohm: Some(51.1),
vcc_source: VccSource::External5v,
address: I2cAddress::Addr0x74,
light_load_mode: LightLoadMode::Pwm,
},
ModePreset {
resistor_kohm: Some(75.0),
vcc_source: VccSource::External5v,
address: I2cAddress::Addr0x74,
light_load_mode: LightLoadMode::Pfm,
},
ModePreset {
resistor_kohm: Some(105.0),
vcc_source: VccSource::External5v,
address: I2cAddress::Addr0x75,
light_load_mode: LightLoadMode::Pwm,
},
ModePreset {
resistor_kohm: None,
vcc_source: VccSource::External5v,
address: I2cAddress::Addr0x75,
light_load_mode: LightLoadMode::Pfm,
},
];
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum OperatingStatus {
Boost,
Buck,
BuckBoost,
Reserved,
}
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FaultStatus {
pub short_circuit: bool,
pub over_current: bool,
pub over_voltage: bool,
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct StatusFlags {
pub raw: u8,
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FaultFlags {
pub raw: u8,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct VoutSetting {
pub millivolts: u16,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct CurrentLimitSetting {
pub milliamps: u16,
}