Skip to content

Commit 659e37a

Browse files
committed
Line bias accessors.
1 parent a7acae5 commit 659e37a

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/lib.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,14 @@ pub enum LineDirection {
401401
Out,
402402
}
403403

404+
/// How the line is biased
405+
#[derive(Debug, Clone, Copy, PartialEq)]
406+
pub enum LineBias {
407+
PullUp,
408+
PullDown,
409+
Disabled,
410+
}
411+
404412
unsafe fn cstrbuf_to_string(buf: &[libc::c_char]) -> Option<String> {
405413
if buf[0] == 0 {
406414
None
@@ -614,6 +622,23 @@ impl LineInfo {
614622
}
615623
}
616624

625+
/// Get how this line is biased
626+
///
627+
/// Some is returned when only one bias flag is present.
628+
/// If more than one flag or no flags are specified, None is returned.
629+
pub fn bias(&self) -> Option<LineBias> {
630+
let up = self.flags.contains(LineFlags::BIAS_PULL_UP);
631+
let down = self.flags.contains(LineFlags::BIAS_PULL_DOWN);
632+
let disabled = self.flags.contains(LineFlags::BIAS_DISABLE);
633+
634+
match (up, down, disabled) {
635+
(true, false, false) => Some(LineBias::PullUp),
636+
(false, true, false) => Some(LineBias::PullDown),
637+
(false, false, true) => Some(LineBias::Disabled),
638+
_ => None,
639+
}
640+
}
641+
617642
/// True if the any flags for the device are set (input or output)
618643
pub fn is_used(&self) -> bool {
619644
!self.flags.is_empty()
@@ -643,6 +668,21 @@ impl LineInfo {
643668
pub fn is_open_source(&self) -> bool {
644669
self.flags.contains(LineFlags::OPEN_SOURCE)
645670
}
671+
672+
// True if the line is marked as having a pull-up bias
673+
pub fn is_bias_pull_up(&self) -> bool {
674+
self.flags.contains(LineFlags::BIAS_PULL_UP)
675+
}
676+
677+
// True if the line is marked as having a pull-down bias
678+
pub fn is_bias_pull_down(&self) -> bool {
679+
self.flags.contains(LineFlags::BIAS_PULL_DOWN)
680+
}
681+
682+
// True if the line is marked as having a disabled bias
683+
pub fn is_bias_disabled(&self) -> bool {
684+
self.flags.contains(LineFlags::BIAS_DISABLE)
685+
}
646686
}
647687

648688
/// Handle for interacting with a "requested" line

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy