mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mrbTimer.cpp Source File

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 }