#include #include #include #include #include /* Private */ #include "pwm.h" typedef struct { uint32_t channel; } mrb_pwm_t; static void mrb_pwm_free(mrb_state *mrb, void *ptr); const struct mrb_data_type mrb_pwm_type = { .struct_name = "PWM", .dfree = mrb_pwm_free, }; static void mrb_pwm_free(mrb_state *mrb, void *ptr) { mrb_free(mrb, ptr); } static mrb_value mrb_pwm_initialize(mrb_state *mrb, mrb_value self) { /* TODO: Implement this */ return self; } void mrb_machine_pwm_gem_init(mrb_state *mrb) { /** * Example: * pwm_pin led = Machine::PWM.new(0, {frequency: 1000, duty: 32768, enable: false}) * led.enable * led.freq(5000) * led.duty(10) */ struct RClass *module_machine = mrb_define_module(mrb, "Machine"); struct RClass *class_pwm = mrb_define_class_under(mrb, module_machine, "PWM", mrb->object_class); MRB_SET_INSTANCE_TT(class_pwm, MRB_TT_CDATA); mrb_define_method(mrb, class_pwm, "initialize", mrb_pwm_initialize, MRB_ARGS_ARG(1, 1)); /* TODO: Implement methods */ } void mrb_machine_gpio_gem_final(mrb_state *mrb) { /* Unused */ }