Updated PWM API.

Signed-off-by: Yilin Sun <imi415@imi.moe>
This commit is contained in:
Yilin Sun 2023-03-28 08:51:42 +08:00
parent 7b84e47e26
commit 850ed007ae
Signed by: imi415
GPG Key ID: 17F01E106F9F5E0A
2 changed files with 6 additions and 20 deletions

View File

@ -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) {

View File

@ -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