sabme ua / mruby-mbed

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mrbI2C.cpp Source File

mrbI2C.cpp

00001 #include "mbed.h"
00002 #include "mrbI2C.h"
00003 
00004 static struct mrb_data_type mbed_i2c_type = {
00005     "I2C", mrb_mbed_i2c_free
00006 };
00007 
00008 mrb_value
00009 mrb_mbed_i2c_init(mrb_state *mrb, mrb_value self)
00010 {
00011     mrb_int sda, scl;
00012 
00013     mrb_get_args(mrb, "ii", &sda, &scl);
00014     PinName pin_sda = static_cast<PinName>(sda);
00015     PinName pin_scl = static_cast<PinName>(scl);
00016 
00017     DATA_TYPE(self) = &mbed_i2c_type;
00018     DATA_PTR(self) = new I2C(pin_sda, pin_scl);
00019 
00020     return self;
00021 }
00022 
00023 void
00024 mrb_mbed_i2c_free(mrb_state *mrb, void *ptr)
00025 {
00026     I2C *obj = static_cast<I2C*>(ptr);
00027     delete obj;
00028 }
00029 
00030 mrb_value
00031 mrb_mbed_i2c_freq(mrb_state *mrb, mrb_value self)
00032 {
00033     I2C *obj = static_cast<I2C*>(DATA_PTR(self));
00034 
00035     mrb_int freq;
00036     mrb_get_args(mrb, "i", &freq);
00037 
00038     obj->frequency(freq);
00039 
00040     return self;
00041 }
00042 
00043 mrb_value
00044 mrb_mbed_i2c_start(mrb_state *mrb, mrb_value self)
00045 {
00046     I2C *obj = static_cast<I2C*>(DATA_PTR(self));
00047 
00048     obj->start();
00049 
00050     return self;
00051 }
00052 
00053 mrb_value
00054 mrb_mbed_i2c_stop(mrb_state *mrb, mrb_value self)
00055 {
00056     I2C *obj = static_cast<I2C*>(DATA_PTR(self));
00057 
00058     obj->stop();
00059 
00060     return self;
00061 }