mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
mbed.c
00001 /* 00002 ** mbed.c - mbed module 00003 ** 00004 */ 00005 #include "mruby.h" 00006 #include "mruby/data.h" 00007 00008 #include "mrbPinName.h" 00009 #include "mrbDigitalOut.h" 00010 #include "mrbTimer.h" 00011 #include "mrbMbedFunc.h" 00012 #include "mrbI2C.h" 00013 #include "mrbSPI.h" 00014 #include "mrbSPISlave.h" 00015 00016 void 00017 mrb_mruby_mbed_gem_init(mrb_state* mrb) 00018 { 00019 struct RClass *mrb_mbed; 00020 struct RClass *mrb_mbed_do; 00021 struct RClass *mrb_mbed_timer; 00022 struct RClass *mrb_mbed_i2c; 00023 struct RClass *mrb_mbed_spi; 00024 struct RClass *mrb_mbed_spis; 00025 00026 mrb_mbed = mrb_define_module(mrb, "Mbed"); 00027 00028 mrb_mbed_pinname_define(mrb, mrb_mbed); 00029 00030 mrb_define_module_function(mrb, mrb_mbed, "sleep", mrb_mbed_sleep, MRB_ARGS_REQ(1)); 00031 mrb_define_module_function(mrb, mrb_mbed, "wait", mrb_mbed_sleep, MRB_ARGS_REQ(1)); 00032 mrb_define_module_function(mrb, mrb_mbed, "sleep_ms", mrb_mbed_sleep_ms, MRB_ARGS_REQ(1)); 00033 mrb_define_module_function(mrb, mrb_mbed, "wait_ms", mrb_mbed_sleep_ms, MRB_ARGS_REQ(1)); 00034 mrb_define_module_function(mrb, mrb_mbed, "sleep_us", mrb_mbed_sleep_us, MRB_ARGS_REQ(1)); 00035 mrb_define_module_function(mrb, mrb_mbed, "wait_us", mrb_mbed_sleep_us, MRB_ARGS_REQ(1)); 00036 00037 mrb_mbed_do = mrb_define_class_under(mrb, mrb_mbed, "DigitalOut", mrb->object_class); 00038 mrb_define_method(mrb, mrb_mbed_do, "initialize", mrb_mbed_do_init, MRB_ARGS_REQ(1)); 00039 mrb_define_method(mrb, mrb_mbed_do, "write", mrb_mbed_do_write, MRB_ARGS_REQ(1)); 00040 mrb_define_method(mrb, mrb_mbed_do, "read", mrb_mbed_do_read, MRB_ARGS_NONE()); 00041 mrb_define_method(mrb, mrb_mbed_do, "high", mrb_mbed_do_high, MRB_ARGS_NONE()); 00042 mrb_define_method(mrb, mrb_mbed_do, "low", mrb_mbed_do_low, MRB_ARGS_NONE()); 00043 00044 mrb_mbed_timer = mrb_define_class_under(mrb, mrb_mbed, "Timer", mrb->object_class); 00045 mrb_define_method(mrb, mrb_mbed_timer, "initialize", mrb_mbed_timer_init, MRB_ARGS_NONE()); 00046 mrb_define_method(mrb, mrb_mbed_timer, "start", mrb_mbed_timer_start, MRB_ARGS_NONE()); 00047 mrb_define_method(mrb, mrb_mbed_timer, "stop", mrb_mbed_timer_stop, MRB_ARGS_NONE()); 00048 mrb_define_method(mrb, mrb_mbed_timer, "reset", mrb_mbed_timer_reset, MRB_ARGS_NONE()); 00049 mrb_define_method(mrb, mrb_mbed_timer, "read", mrb_mbed_timer_read, MRB_ARGS_NONE()); 00050 mrb_define_method(mrb, mrb_mbed_timer, "read_ms", mrb_mbed_timer_read_ms, MRB_ARGS_NONE()); 00051 mrb_define_method(mrb, mrb_mbed_timer, "read_us", mrb_mbed_timer_read_us, MRB_ARGS_NONE()); 00052 00053 mrb_mbed_i2c = mrb_define_class_under(mrb, mrb_mbed, "I2C", mrb->object_class); 00054 mrb_define_method(mrb, mrb_mbed_i2c, "initialize", mrb_mbed_i2c_init, MRB_ARGS_REQ(2)); 00055 mrb_define_method(mrb, mrb_mbed_i2c, "frequency", mrb_mbed_i2c_freq, MRB_ARGS_REQ(1)); 00056 //mrb_define_method(mrb, mrb_mbed_i2c, "read", mrb_mbed_i2c_read, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(3)); 00057 //mrb_define_method(mrb, mrb_mbed_i2c, "write", mrb_mbed_i2c_write, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(3)); 00058 mrb_define_method(mrb, mrb_mbed_i2c, "start", mrb_mbed_i2c_start, MRB_ARGS_NONE()); 00059 mrb_define_method(mrb, mrb_mbed_i2c, "stop", mrb_mbed_i2c_stop, MRB_ARGS_NONE()); 00060 00061 mrb_mbed_spi = mrb_define_class_under(mrb, mrb_mbed, "SPI", mrb->object_class); 00062 mrb_define_method(mrb, mrb_mbed_spi, "initialize", mrb_mbed_spi_init, MRB_ARGS_REQ(3)); 00063 mrb_define_method(mrb, mrb_mbed_spi, "frequency", mrb_mbed_spi_freq, MRB_ARGS_OPT(1)); 00064 mrb_define_method(mrb, mrb_mbed_spi, "format", mrb_mbed_spi_format, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1)); 00065 mrb_define_method(mrb, mrb_mbed_spi, "write", mrb_mbed_spi_write, MRB_ARGS_REQ(1)); 00066 00067 mrb_mbed_spis = mrb_define_class_under(mrb, mrb_mbed, "SPISlave", mrb->object_class); 00068 mrb_define_method(mrb, mrb_mbed_spis, "initialize", mrb_mbed_spis_init, MRB_ARGS_REQ(4)); 00069 mrb_define_method(mrb, mrb_mbed_spis, "frequency", mrb_mbed_spis_freq, MRB_ARGS_OPT(1)); 00070 mrb_define_method(mrb, mrb_mbed_spis, "format", mrb_mbed_spis_format, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1)); 00071 mrb_define_method(mrb, mrb_mbed_spis, "reply", mrb_mbed_spis_reply, MRB_ARGS_REQ(1)); 00072 mrb_define_method(mrb, mrb_mbed_spis, "read", mrb_mbed_spis_read, MRB_ARGS_NONE()); 00073 mrb_define_method(mrb, mrb_mbed_spis, "receive", mrb_mbed_spis_receive, MRB_ARGS_NONE()); 00074 00075 } 00076 00077 void 00078 mrb_mruby_mbed_gem_final(mrb_state* mrb) 00079 { 00080 }
Generated on Tue Jul 12 2022 18:00:34 by 1.7.2