mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
mrbTimer.cpp
00001 #include "mbed.h" 00002 #include "mrbTimer.h" 00003 00004 static struct mrb_data_type mbed_timer_type = { 00005 "Timer", mrb_mbed_timer_free 00006 }; 00007 00008 mrb_value 00009 mrb_mbed_timer_init(mrb_state *mrb, mrb_value self) 00010 { 00011 DATA_TYPE(self) = &mbed_timer_type; 00012 DATA_PTR(self) = new Timer(); 00013 00014 return self; 00015 } 00016 00017 void 00018 mrb_mbed_timer_free(mrb_state *mrb, void *ptr) 00019 { 00020 Timer *obj = static_cast<Timer*>(ptr); 00021 delete obj; 00022 } 00023 00024 mrb_value 00025 mrb_mbed_timer_start(mrb_state *mrb, mrb_value self) 00026 { 00027 Timer *obj = static_cast<Timer*>(DATA_PTR(self)); 00028 obj->start(); 00029 00030 return self; 00031 } 00032 00033 mrb_value 00034 mrb_mbed_timer_stop(mrb_state *mrb, mrb_value self) 00035 { 00036 Timer *obj = static_cast<Timer*>(DATA_PTR(self)); 00037 obj->stop(); 00038 00039 return self; 00040 } 00041 00042 mrb_value 00043 mrb_mbed_timer_reset(mrb_state *mrb, mrb_value self) 00044 { 00045 Timer *obj = static_cast<Timer*>(DATA_PTR(self)); 00046 obj->reset(); 00047 00048 return self; 00049 } 00050 00051 mrb_value 00052 mrb_mbed_timer_read(mrb_state *mrb, mrb_value self) 00053 { 00054 Timer *obj = static_cast<Timer*>(DATA_PTR(self)); 00055 00056 return mrb_float_value(mrb, obj->read()); 00057 } 00058 00059 mrb_value 00060 mrb_mbed_timer_read_ms(mrb_state *mrb, mrb_value self) 00061 { 00062 Timer *obj = static_cast<Timer*>(DATA_PTR(self)); 00063 00064 return mrb_fixnum_value(obj->read_ms()); 00065 } 00066 00067 mrb_value 00068 mrb_mbed_timer_read_us(mrb_state *mrb, mrb_value self) 00069 { 00070 Timer *obj = static_cast<Timer*>(DATA_PTR(self)); 00071 00072 return mrb_fixnum_value(obj->read_us()); 00073 }
Generated on Tue Jul 12 2022 18:00:34 by 1.7.2