mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mbed.c Source File

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 }