Skip to content

Commit 8b373c7

Browse files
committed
Add keyword arguments.
1 parent 7c83a2b commit 8b373c7

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/mruby_esp32_spi.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,19 @@ mrb_spi_init(mrb_state *mrb, mrb_value self) {
3737
spi_t *spi = mrb_malloc(mrb, sizeof(spi_t));
3838

3939
mrb_int id;
40-
mrb_sym kname = MRB_SYM(unit);
41-
mrb_value u;
42-
const mrb_kwargs kw = {1, 0, &kname, &u, NULL};
43-
mrb_get_args(mrb, "|i?:", &id, &kw);
40+
mrb_bool given;
41+
mrb_sym knames[4] = { MRB_SYM(unit), MRB_SYM(mode), MRB_SYM(first_bit), MRB_SYM(frequency) };
42+
mrb_value kvalues[4] = { 0 };
43+
const mrb_kwargs kw = { 4, 0, knames, kvalues, NULL };
44+
mrb_get_args(mrb, "|i?:", &id, &given, &kw);
45+
46+
if (!given) {
47+
ESP_LOGI(TAG, "initialize()");
48+
} else {
49+
ESP_LOGI(TAG, "initialize(%d)", id);
50+
}
4451

4552
mrb_data_init(self, spi, &mrb_spi);
46-
ESP_LOGI(TAG, "initialize(%d)", id);
4753

4854
return self;
4955
}
@@ -52,7 +58,7 @@ void
5258
mrb_mruby_esp32_spi_gem_init(mrb_state* mrb) {
5359
struct RClass *client_class = mrb_define_class(mrb, "SPI", mrb->object_class);
5460

55-
mrb_define_method(mrb, client_class, "initialize", mrb_spi_init, MRB_ARGS_REQ(2));
61+
mrb_define_method(mrb, client_class, "initialize", mrb_spi_init, MRB_ARGS_ANY());
5662
}
5763

5864
void

0 commit comments

Comments
 (0)