mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
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 }
Generated on Tue Jul 12 2022 18:00:34 by 1.7.2