What
Implement and upstream a safe, idiomatic Rust wrapper over the raw Rust bindings to the PWM API. See PoC implementation as a start.
Why
The thermal-service relies on fans, typically PWM-controlled fans. To make use of Zephyr's PWM drivers by the thermal-service, they must be wrapped in a safe Rust API.
Out of Scope
- The Zephyr PWM API also provides an input capture interface, though this is not needed by the thermal-service, so it does not need to be included for the initial PR (though down the line it's always good to support it for completeness sake).
- This should NOT include an
embedded-fan implementation. Typically that is implemented at the application level because a fan is a bit of a higher level construct and Zephyr doesn't have "fan" drivers really.
What
Implement and upstream a safe, idiomatic Rust wrapper over the raw Rust bindings to the PWM API. See PoC implementation as a start.
Why
The
thermal-servicerelies on fans, typically PWM-controlled fans. To make use of Zephyr's PWM drivers by the thermal-service, they must be wrapped in a safe Rust API.Out of Scope
embedded-fanimplementation. Typically that is implemented at the application level because a fan is a bit of a higher level construct and Zephyr doesn't have "fan" drivers really.