2 unstable releases

0.2.0 Jul 31, 2025
0.1.0 May 26, 2025

#2121 in Embedded development

Download history 579/week @ 2025-11-07 699/week @ 2025-11-14 546/week @ 2025-11-21 410/week @ 2025-11-28 620/week @ 2025-12-05 768/week @ 2025-12-12 1007/week @ 2025-12-19 323/week @ 2025-12-26 583/week @ 2026-01-02 781/week @ 2026-01-09 882/week @ 2026-01-16 793/week @ 2026-01-23 458/week @ 2026-01-30 886/week @ 2026-02-06 833/week @ 2026-02-13 1087/week @ 2026-02-20

3,399 downloads per month

MIT license

15KB
186 lines

Async 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_async::{self, Fan, RpmSense};

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

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

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

impl embedded_fans_async::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
    }

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

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

embedded-fans-async

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

Dependencies

~135KB