2 unstable releases

0.2.0 Jul 31, 2025
0.1.0 May 26, 2025

#1728 in Embedded development

Download history 768/week @ 2025-10-13 849/week @ 2025-10-20 870/week @ 2025-10-27 766/week @ 2025-11-03 583/week @ 2025-11-10 704/week @ 2025-11-17 487/week @ 2025-11-24 432/week @ 2025-12-01 647/week @ 2025-12-08 904/week @ 2025-12-15 822/week @ 2025-12-22 343/week @ 2025-12-29 724/week @ 2026-01-05 649/week @ 2026-01-12 1045/week @ 2026-01-19 639/week @ 2026-01-26

3,158 downloads per month
Used in embedded-fans-async

MIT license

9KB
115 lines

embedded-fans

This crate contains blocking traits which define the embedded-fans interface.


lib.rs:

Blocking Fan API

This API provides generic methods for interfacing with fans.

For HAL authors

Here is an example of an embedded-fans implementation of the Fan and RpmSense traits.

use embedded_fans::{self, Fan, RpmSense};

// A struct representing a fan device.
pub struct MyFan {
    // ...
}

#[derive(Clone, Copy, Debug)]
pub enum Error {
    // ...
}

impl embedded_fans::Error for Error {
    fn kind(&self) -> embedded_fans::ErrorKind {
        match *self {
            // ...
        }
    }
}

impl embedded_fans::ErrorType for MyFan {
    type Error = Error;
}

impl Fan for MyFan {
    fn max_rpm(&self) -> u16 {
        3150
    }

    fn min_rpm(&self) -> u16 {
        0
    }

    fn min_start_rpm(&self) -> u16 {
        1120
    }

    fn set_speed_rpm(&mut self, rpm: u16) -> Result<u16, Self::Error> {
        // ...
        Ok(rpm)
    }
}

impl RpmSense for MyFan {
    fn rpm(&mut self) -> Result<u16, Self::Error> {
        // ...
        Ok(42)
    }
}

Dependencies

~135KB