diff --git a/mrbgems/mruby-devmem/src/devmem.c b/mrbgems/mruby-devmem/src/devmem.c index a9dc3e0..b21107e 100644 --- a/mrbgems/mruby-devmem/src/devmem.c +++ b/mrbgems/mruby-devmem/src/devmem.c @@ -36,11 +36,11 @@ static mrb_value mrb_read8(mrb_state *mrb, mrb_value self) { } static mrb_value mrb_write32(mrb_state *mrb, mrb_value self) { - mrb_value addr, value; - mrb_get_args(mrb, "i|i", &addr, &value); + mrb_int addr, value; + mrb_get_args(mrb, "ii", &addr, &value); - uint32_t addr_int = mrb_integer(addr); - uint32_t value_int = mrb_integer(value); + uint32_t addr_int = (uint32_t)addr; + uint32_t value_int = (uint32_t)value; if (addr_int % 4 != 0) { mrb_raise(mrb, E_ARGUMENT_ERROR, "Address must be 32bits aligned"); @@ -48,15 +48,15 @@ static mrb_value mrb_write32(mrb_state *mrb, mrb_value self) { *(volatile uint16_t *)(addr_int) = value_int; - return self; + return mrb_nil_value(); } static mrb_value mrb_write16(mrb_state *mrb, mrb_value self) { - mrb_value addr, value; - mrb_get_args(mrb, "i|i", &addr, &value); + mrb_int addr, value; + mrb_get_args(mrb, "ii", &addr, &value); - uint32_t addr_int = mrb_integer(addr); - uint16_t value_int = mrb_integer(value); + uint32_t addr_int = (uint32_t)addr; + uint16_t value_int = (uint16_t)value; if (addr_int % 2 != 0) { mrb_raise(mrb, E_ARGUMENT_ERROR, "Address must be 16bits aligned"); @@ -64,19 +64,19 @@ static mrb_value mrb_write16(mrb_state *mrb, mrb_value self) { *(volatile uint16_t *)(addr_int) = value_int; - return self; + return mrb_nil_value(); } static mrb_value mrb_write8(mrb_state *mrb, mrb_value self) { - mrb_value addr, value; - mrb_get_args(mrb, "i|i", &addr, &value); + mrb_int addr, value; + mrb_get_args(mrb, "ii", &addr, &value); - uint32_t addr_int = mrb_integer(addr); - uint16_t value_int = mrb_integer(value); + uint32_t addr_int = (uint32_t)addr; + uint8_t value_int = (uint8_t)value; *(volatile uint8_t *)(addr_int) = value_int; - return self; + return mrb_nil_value(); } void mrb_mruby_devmem_gem_init(mrb_state *mrb) {