esp-hal 1.2.0

Bare-metal HAL for Espressif devices
Documentation
#[cfg_attr(ledc_version = "1", path = "v1.rs")]
#[cfg_attr(ledc_version = "2", path = "v2.rs")]
#[cfg_attr(ledc_version = "3", path = "v3.rs")]
mod version;

#[cfg(ledc_version = "1")]
use super::timer::HSClockSource;
use super::{
    LSGlobalClkSource,
    channel::Number as ChannelNumber,
    timer::{LSClockSource, Number as TimerNumber},
};
use crate::{gpio::OutputSignal, pac::ledc::RegisterBlock, time::Rate};

#[inline(always)]
pub(super) fn set_global_slow_clock(ledc: &RegisterBlock, clock_source: LSGlobalClkSource) {
    version::set_global_slow_clock(ledc, clock_source)
}

#[inline(always)]
pub(super) fn ls_freq_hw(clock_source: LSClockSource) -> Rate {
    version::ls_freq_hw(clock_source)
}

#[inline(always)]
pub(super) fn ls_configure_hw(
    ledc: &RegisterBlock,
    number: TimerNumber,
    divisor: u32,
    duty: u8,
    use_ref_tick: bool,
) {
    version::ls_configure_hw(ledc, number, divisor, duty, use_ref_tick)
}

#[inline(always)]
pub(super) fn ls_update_hw(ledc: &RegisterBlock, number: TimerNumber) {
    version::ls_update_hw(ledc, number)
}

#[cfg(ledc_version = "1")]
#[inline(always)]
pub(super) fn hs_freq_hw(clock_source: HSClockSource) -> Rate {
    version::hs_freq_hw(clock_source)
}

#[cfg(ledc_version = "1")]
#[inline(always)]
pub(super) fn hs_configure_hw(
    ledc: &RegisterBlock,
    number: TimerNumber,
    divisor: u32,
    duty: u8,
    clock_source: HSClockSource,
) {
    version::hs_configure_hw(ledc, number, divisor, duty, clock_source)
}

#[cfg(ledc_version = "1")]
#[inline(always)]
pub(super) fn hs_update_hw() {
    version::hs_update_hw()
}

#[inline(always)]
pub(super) fn output_signal(ch_num: ChannelNumber, is_hs: bool) -> OutputSignal {
    version::output_signal(ch_num, is_hs)
}

#[inline(always)]
pub(super) fn set_channel(
    ledc: &RegisterBlock,
    ch_num: ChannelNumber,
    timer_number: u8,
    is_hs: bool,
) {
    version::set_channel(ledc, ch_num, timer_number, is_hs)
}

#[inline(always)]
pub(super) fn start_duty_without_fading(ledc: &RegisterBlock, ch_num: ChannelNumber, is_hs: bool) {
    version::start_duty_without_fading(ledc, ch_num, is_hs)
}

#[inline(always)]
pub(super) fn update_channel(ledc: &RegisterBlock, ch_num: ChannelNumber, is_hs: bool) {
    version::update_channel(ledc, ch_num, is_hs)
}

#[inline(always)]
pub(super) fn set_duty_hw(ledc: &RegisterBlock, ch_num: ChannelNumber, is_hs: bool, duty: u32) {
    version::set_duty_hw(ledc, ch_num, is_hs, duty)
}

#[allow(clippy::too_many_arguments)]
#[inline(always)]
pub(super) fn start_duty_fade_hw(
    ledc: &RegisterBlock,
    ch_num: ChannelNumber,
    is_hs: bool,
    start_duty: u32,
    duty_inc: bool,
    duty_steps: u16,
    cycles_per_step: u16,
    duty_per_cycle: u16,
) {
    version::start_duty_fade_hw(
        ledc,
        ch_num,
        is_hs,
        start_duty,
        duty_inc,
        duty_steps,
        cycles_per_step,
        duty_per_cycle,
    )
}

#[inline(always)]
pub(super) fn is_duty_fade_running_hw(
    ledc: &RegisterBlock,
    ch_num: ChannelNumber,
    is_hs: bool,
) -> bool {
    version::is_duty_fade_running_hw(ledc, ch_num, is_hs)
}