mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mrbDigitalOut.cpp Source File

mrbDigitalOut.cpp

00001 #include "mbed.h"
00002 #include "mrbDigitalOut.h"
00003 
00004 static struct mrb_data_type mbed_do_type = {
00005     "DigitalOut", mrb_mbed_do_free
00006 };
00007 
00008 mrb_value
00009 mrb_mbed_do_init(mrb_state *mrb, mrb_value self)
00010 {
00011     mrb_int pin;
00012     mrb_get_args(mrb, "i", &pin);
00013     PinName pinname = static_cast<PinName>(pin);
00014 
00015     DATA_TYPE(self) = &mbed_do_type;
00016     DATA_PTR(self) = new DigitalOut(pinname);
00017 
00018     return self;
00019 }
00020 
00021 void
00022 mrb_mbed_do_free(mrb_state *mrb, void *ptr)
00023 {
00024     DigitalOut *obj = static_cast<DigitalOut*>(ptr);
00025     delete obj;
00026 }
00027 
00028 mrb_value
00029 mrb_mbed_do_write(mrb_state *mrb, mrb_value self)
00030 {
00031     DigitalOut *obj = static_cast<DigitalOut*>(DATA_PTR(self));
00032 
00033     mrb_int val;
00034     mrb_get_args(mrb, "i", &val);
00035 
00036     obj->write(val);
00037 
00038     return self;
00039 }
00040 
00041 mrb_value
00042 mrb_mbed_do_read(mrb_state *mrb, mrb_value self)
00043 {
00044     DigitalOut *obj = static_cast<DigitalOut*>(DATA_PTR(self));
00045 
00046     return mrb_fixnum_value(obj->read());
00047 }
00048 
00049 mrb_value
00050 mrb_mbed_do_high(mrb_state *mrb, mrb_value self)
00051 {
00052     DigitalOut *obj = static_cast<DigitalOut*>(DATA_PTR(self));
00053 
00054     obj->write(1);
00055 }
00056 
00057 mrb_value
00058 mrb_mbed_do_low(mrb_state *mrb, mrb_value self)
00059 {
00060     DigitalOut *obj = static_cast<DigitalOut*>(DATA_PTR(self));
00061 
00062     obj->write(0);
00063 }