PWM: Implemented duty set/get.
This commit is contained in:
parent
850ed007ae
commit
61d8f29145
|
@ -117,6 +117,31 @@ static mrb_value mrb_pwm_enabled_set(mrb_state *mrb, mrb_value self) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mrb_value mrb_pwm_duty_get(mrb_state *mrb, mrb_value self) {
|
||||||
|
mrb_pwm_t *pwm_ch = mrb_data_get_ptr(mrb, self, &mrb_pwm_type);
|
||||||
|
if (pwm_ch == NULL) {
|
||||||
|
mrb_raise(mrb, E_RUNTIME_ERROR, "Uninitialized PWM struct");
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t duty = mrb_machine_pwm_impl_duty_get(pwm_ch->channel);
|
||||||
|
|
||||||
|
return mrb_int_value(mrb, duty);
|
||||||
|
}
|
||||||
|
|
||||||
|
static mrb_value mrb_pwm_duty_set(mrb_state *mrb, mrb_value self) {
|
||||||
|
mrb_value new_duty = mrb_get_arg1(mrb);
|
||||||
|
mrb_ensure_integer_type(mrb, new_duty);
|
||||||
|
|
||||||
|
mrb_pwm_t *pwm_ch = mrb_data_get_ptr(mrb, self, &mrb_pwm_type);
|
||||||
|
if (pwm_ch == NULL) {
|
||||||
|
mrb_raise(mrb, E_RUNTIME_ERROR, "Uninitialized PWM struct");
|
||||||
|
}
|
||||||
|
|
||||||
|
mrb_machine_pwm_impl_duty_set(pwm_ch->channel, mrb_integer(new_duty));
|
||||||
|
|
||||||
|
return mrb_nil_value();
|
||||||
|
}
|
||||||
|
|
||||||
void mrb_machine_pwm_gem_init(mrb_state *mrb) {
|
void mrb_machine_pwm_gem_init(mrb_state *mrb) {
|
||||||
/**
|
/**
|
||||||
* Example:
|
* Example:
|
||||||
|
@ -139,6 +164,8 @@ void mrb_machine_pwm_gem_init(mrb_state *mrb) {
|
||||||
mrb_define_method(mrb, class_pwm, "disable", mrb_pwm_disable, MRB_ARGS_NONE());
|
mrb_define_method(mrb, class_pwm, "disable", mrb_pwm_disable, MRB_ARGS_NONE());
|
||||||
mrb_define_method(mrb, class_pwm, "enabled", mrb_pwm_enabled_get, MRB_ARGS_NONE());
|
mrb_define_method(mrb, class_pwm, "enabled", mrb_pwm_enabled_get, MRB_ARGS_NONE());
|
||||||
mrb_define_method(mrb, class_pwm, "enabled=", mrb_pwm_enabled_set, MRB_ARGS_ARG(1, 0));
|
mrb_define_method(mrb, class_pwm, "enabled=", mrb_pwm_enabled_set, MRB_ARGS_ARG(1, 0));
|
||||||
|
mrb_define_method(mrb, class_pwm, "duty", mrb_pwm_duty_get, MRB_ARGS_NONE());
|
||||||
|
mrb_define_method(mrb, class_pwm, "duty=", mrb_pwm_duty_set, MRB_ARGS_ARG(1, 0));
|
||||||
|
|
||||||
/* TODO: Implement methods */
|
/* TODO: Implement methods */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue