#[derive(Debug, Clone, Copy, PartialEq)]
pub enum AlsGain {
Gain1x,
Gain2x,
Gain4x,
Gain8x,
Gain48x,
Gain96x,
}
impl Default for AlsGain {
fn default() -> Self {
AlsGain::Gain1x
}
}
impl AlsGain {
pub fn value(&self) -> u8 {
const BIT_OFFSET: u8 = 2;
match *self {
AlsGain::Gain1x => 0 << BIT_OFFSET,
AlsGain::Gain2x => 1 << BIT_OFFSET,
AlsGain::Gain4x => 2 << BIT_OFFSET,
AlsGain::Gain8x => 3 << BIT_OFFSET,
AlsGain::Gain48x => 6 << BIT_OFFSET,
AlsGain::Gain96x => 7 << BIT_OFFSET,
}
}
pub fn lux_compute_value(&self) -> f32 {
match *self {
AlsGain::Gain1x => 1.0,
AlsGain::Gain2x => 2.0,
AlsGain::Gain4x => 4.0,
AlsGain::Gain8x => 8.0,
AlsGain::Gain48x => 48.0,
AlsGain::Gain96x => 96.0,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LedPulse {
Pulse30,
Pulse40,
Pulse50,
Pulse60,
Pulse70,
Pulse80,
Pulse90,
Pulse100,
}
impl Default for LedPulse {
fn default() -> Self {
LedPulse::Pulse60
}
}
impl LedPulse {
pub fn value(&self) -> u8 {
const BIT_OFFSET: u8 = 5;
match *self {
LedPulse::Pulse30 => 0 << BIT_OFFSET,
LedPulse::Pulse40 => 1 << BIT_OFFSET,
LedPulse::Pulse50 => 2 << BIT_OFFSET,
LedPulse::Pulse60 => 3 << BIT_OFFSET,
LedPulse::Pulse70 => 4 << BIT_OFFSET,
LedPulse::Pulse80 => 5 << BIT_OFFSET,
LedPulse::Pulse90 => 6 << BIT_OFFSET,
LedPulse::Pulse100 => 7 << BIT_OFFSET,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LedDutyCycle {
_25,
_50,
_75,
_100,
}
impl Default for LedDutyCycle {
fn default() -> Self {
LedDutyCycle::_100
}
}
impl LedDutyCycle {
pub fn value(&self) -> u8 {
const BIT_OFFSET: u8 = 3;
match *self {
LedDutyCycle::_25 => 0 << BIT_OFFSET,
LedDutyCycle::_50 => 1 << BIT_OFFSET,
LedDutyCycle::_75 => 2 << BIT_OFFSET,
LedDutyCycle::_100 => 3 << BIT_OFFSET,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LedCurrent {
_5mA,
_10mA,
_20mA,
_50mA,
_100mA,
}
impl Default for LedCurrent {
fn default() -> Self {
LedCurrent::_100mA
}
}
impl LedCurrent {
pub fn value(&self) -> u8 {
match *self {
LedCurrent::_5mA => 0,
LedCurrent::_10mA => 1,
LedCurrent::_20mA => 2,
LedCurrent::_50mA => 3,
LedCurrent::_100mA => 7,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum PsMeasRate {
_50ms,
_70ms,
_100ms,
_200ms,
_500ms,
_1000ms,
_2000ms,
_10ms,
}
impl Default for PsMeasRate {
fn default() -> Self {
PsMeasRate::_100ms
}
}
impl PsMeasRate {
pub fn value(&self) -> u8 {
match *self {
PsMeasRate::_10ms => 8,
PsMeasRate::_50ms => 0,
PsMeasRate::_70ms => 1,
PsMeasRate::_100ms => 2,
PsMeasRate::_200ms => 3,
PsMeasRate::_500ms => 4,
PsMeasRate::_1000ms => 5,
PsMeasRate::_2000ms => 6,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum AlsMeasRate {
_50ms,
_100ms,
_200ms,
_500ms,
_1000ms,
_2000ms,
}
impl Default for AlsMeasRate {
fn default() -> Self {
AlsMeasRate::_500ms
}
}
impl AlsMeasRate {
pub fn value(&self) -> u8 {
match *self {
AlsMeasRate::_50ms => 0,
AlsMeasRate::_100ms => 1,
AlsMeasRate::_200ms => 2,
AlsMeasRate::_500ms => 3,
AlsMeasRate::_1000ms => 4,
AlsMeasRate::_2000ms => 7,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum AlsIntTime {
_50ms,
_100ms,
_150ms,
_200ms,
_250ms,
_300ms,
_350ms,
_400ms,
}
impl Default for AlsIntTime {
fn default() -> Self {
AlsIntTime::_100ms
}
}
impl AlsIntTime {
pub fn value(&self) -> u8 {
match *self {
AlsIntTime::_100ms => 0,
AlsIntTime::_50ms => 1,
AlsIntTime::_200ms => 2,
AlsIntTime::_400ms => 3,
AlsIntTime::_150ms => 4,
AlsIntTime::_250ms => 5,
AlsIntTime::_300ms => 6,
AlsIntTime::_350ms => 7,
}
}
pub fn lux_compute_value(&self) -> f32 {
match *self {
AlsIntTime::_100ms => 1.0,
AlsIntTime::_50ms => 0.5,
AlsIntTime::_200ms => 2.0,
AlsIntTime::_400ms => 4.0,
AlsIntTime::_150ms => 1.5,
AlsIntTime::_250ms => 2.5,
AlsIntTime::_300ms => 3.0,
AlsIntTime::_350ms => 3.5,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum AlsPersist {
EveryTime,
_2v,
_3v,
_4v,
_5v,
_6v,
_7v,
_8v,
_9v,
_10v,
_11v,
_12v,
_13v,
_14v,
_15v,
_16v,
}
impl Default for AlsPersist {
fn default() -> Self {
AlsPersist::EveryTime
}
}
impl AlsPersist {
pub fn value(&self) -> u8 {
match *self {
AlsPersist::EveryTime => 0,
AlsPersist::_2v => 1,
AlsPersist::_3v => 2,
AlsPersist::_4v => 3,
AlsPersist::_5v => 4,
AlsPersist::_6v => 5,
AlsPersist::_7v => 6,
AlsPersist::_8v => 7,
AlsPersist::_9v => 8,
AlsPersist::_10v => 9,
AlsPersist::_11v => 10,
AlsPersist::_12v => 11,
AlsPersist::_13v => 12,
AlsPersist::_14v => 13,
AlsPersist::_15v => 14,
AlsPersist::_16v => 15,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum PsPersist {
EveryTime,
_2v,
_3v,
_4v,
_5v,
_6v,
_7v,
_8v,
_9v,
_10v,
_11v,
_12v,
_13v,
_14v,
_15v,
_16v,
}
impl Default for PsPersist {
fn default() -> Self {
PsPersist::EveryTime
}
}
impl PsPersist {
pub fn value(&self) -> u8 {
const BIT_OFFSET: u8 = 4;
match *self {
PsPersist::EveryTime => 0,
PsPersist::_2v => 1 << BIT_OFFSET,
PsPersist::_3v => 2 << BIT_OFFSET,
PsPersist::_4v => 3 << BIT_OFFSET,
PsPersist::_5v => 4 << BIT_OFFSET,
PsPersist::_6v => 5 << BIT_OFFSET,
PsPersist::_7v => 6 << BIT_OFFSET,
PsPersist::_8v => 7 << BIT_OFFSET,
PsPersist::_9v => 8 << BIT_OFFSET,
PsPersist::_10v => 9 << BIT_OFFSET,
PsPersist::_11v => 10 << BIT_OFFSET,
PsPersist::_12v => 11 << BIT_OFFSET,
PsPersist::_13v => 12 << BIT_OFFSET,
PsPersist::_14v => 13 << BIT_OFFSET,
PsPersist::_15v => 14 << BIT_OFFSET,
PsPersist::_16v => 15 << BIT_OFFSET,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum InterruptMode {
Inactive,
OnlyPS,
OnlyALS,
Both,
}
impl Default for InterruptMode {
fn default() -> Self {
InterruptMode::Inactive
}
}
impl InterruptMode {
pub fn value(&self) -> u8 {
match *self {
InterruptMode::Inactive => 0,
InterruptMode::OnlyPS => 1,
InterruptMode::OnlyALS => 2,
InterruptMode::Both => 3,
}
}
}