diff --git a/mrbgems/machine-pwm/src/pwm.c b/mrbgems/machine-pwm/src/pwm.c index 811f263..13ba8a7 100644 --- a/mrbgems/machine-pwm/src/pwm.c +++ b/mrbgems/machine-pwm/src/pwm.c @@ -66,7 +66,7 @@ static mrb_value mrb_pwm_initialize(mrb_state *mrb, mrb_value self) { .enabled = init_enabled, }; - mrb_machine_pwm_impl_config_set(pwm_ch->channel, &cfg); + mrb_machine_pwm_impl_init(pwm_ch->channel, &cfg); DATA_PTR(self) = pwm_ch; DATA_TYPE(self) = &mrb_pwm_type; @@ -80,13 +80,7 @@ static mrb_value mrb_pwm_enable(mrb_state *mrb, mrb_value self) { mrb_raise(mrb, E_RUNTIME_ERROR, "Uninitialized PWM struct"); } - machine_pwm_config_t cfg; - - mrb_machine_pwm_impl_config_get(pwm_ch->channel, &cfg); - - cfg.enabled = true; - - mrb_machine_pwm_impl_config_set(pwm_ch->channel, &cfg); + mrb_machine_pwm_impl_output_set(pwm_ch->channel, true); return mrb_nil_value(); } @@ -97,13 +91,7 @@ static mrb_value mrb_pwm_disable(mrb_state *mrb, mrb_value self) { mrb_raise(mrb, E_RUNTIME_ERROR, "Uninitialized PWM struct"); } - machine_pwm_config_t cfg; - - mrb_machine_pwm_impl_config_get(pwm_ch->channel, &cfg); - - cfg.enabled = false; - - mrb_machine_pwm_impl_config_set(pwm_ch->channel, &cfg); + mrb_machine_pwm_impl_output_set(pwm_ch->channel, false); return mrb_nil_value(); } @@ -114,11 +102,9 @@ static mrb_value mrb_pwm_enabled_get(mrb_state *mrb, mrb_value self) { mrb_raise(mrb, E_RUNTIME_ERROR, "Uninitialized PWM struct"); } - machine_pwm_config_t cfg; + bool enabled = mrb_machine_pwm_impl_output_get(pwm_ch->channel); - mrb_machine_pwm_impl_config_get(pwm_ch->channel, &cfg); - - return mrb_bool_value(cfg.enabled); + return mrb_bool_value(enabled); } static mrb_value mrb_pwm_enabled_set(mrb_state *mrb, mrb_value self) { diff --git a/mrbgems/machine-pwm/src/pwm.h b/mrbgems/machine-pwm/src/pwm.h index 113b0fa..561c2ab 100644 --- a/mrbgems/machine-pwm/src/pwm.h +++ b/mrbgems/machine-pwm/src/pwm.h @@ -16,6 +16,6 @@ uint32_t mrb_machine_pwm_impl_freq_get(uint32_t channel); int mrb_machine_pwm_impl_duty_set(uint32_t channel, uint16_t duty); uint16_t mrb_machine_pwm_impl_duty_get(uint32_t channel); int mrb_machine_pwm_impl_output_set(uint32_t channel, bool enable); -bool mrb_machine_impl_output_get(uint32_t channel); +bool mrb_machine_pwm_impl_output_get(uint32_t channel); #endif // MRBGEMS_MACHINE_PWM_PWM_H