0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

mrubyのi2c

Last updated at Posted at 2023-10-08

mrubyのデバイスアクセスメソッドの標準化ができたようです。

i2cを見てみます。

2023/10/9現在の私の作ったものの仕様です。

mruby on FreeBSD(ZRouter.org)

    struct RClass *bsdiic;
    bsdiic = mrb_define_class(mrb, "BsdIic", mrb->object_class);
    mrb_define_method(mrb, bsdiic, "initialize", mrb_bsdiic_init, MRB_ARGS_REQ(1));
    mrb_define_method(mrb, bsdiic, "read", mrb_bsdiic_read, MRB_ARGS_REQ(2));
    mrb_define_method(mrb, bsdiic, "write", mrb_bsdiic_write, MRB_ARGS_REQ(3));
    mrb_define_method(mrb, bsdiic, "writes", mrb_bsdiic_writes, MRB_ARGS_REQ(2));

mruby on YABM

  mrb_define_method(mrb, yabm, "i2cinit", mrb_yabm_i2cinit, MRB_ARGS_REQ(3));
  mrb_define_method(mrb, yabm, "i2cchk", mrb_yabm_i2cchk, MRB_ARGS_REQ(1));
  mrb_define_method(mrb, yabm, "i2cread", mrb_yabm_i2cread, MRB_ARGS_REQ(2));
  mrb_define_method(mrb, yabm, "i2cwrite", mrb_yabm_i2cwrite, MRB_ARGS_REQ(3));
  mrb_define_method(mrb, yabm, "i2cwrites", mrb_yabm_i2cwrites, MRB_ARGS_REQ(3));
  mrb_define_method(mrb, yabm, "i2creads", mrb_yabm_i2creads, MRB_ARGS_REQ(2));

これらはYABMクラスに他のデバイスメソッドといっしょに入っています。

完全に合わせることは出来ませんが、ちょっと寄せる方法を考えてみます。

I2Cモジュールのような低速のデバイスをFreeBSDで処理するのはCPUの無駄になるので、センサーからデータを拾うような処理はYABMの方が向いています。

おうちの気温などはbcmbm-mruby(YABM)で拾って、FreeBSDなモジュールにHTTPで渡しています。

I2Cはいろいろな仕様がありますが、センサーなど多くは1バイトのアドレスと1バイトのデータの読み書きする仕様です。

一回の処理で行われるのか以下のケースがあります

  • 書き込みのみ
  • 読み込みのみ
  • 書き込みした後に読み込み(逆は無い)

BsdIicのwritesの機能をwriteに入れてwritesを消しました。(2023/10/10)

BsdIicのreadの仕様を変更しました。read,writeでエラーを返すようにしました。(2023/10/22)

BsdIicのreadのもともとあったバイトオペレーションを戻しました。(2023/10/24)

BsdIicのreadの返り値を読み込みサイズが1の時はintが返り、それ以外の場合はArrayが返るようにしました。(2023/10/28)

YABMの仕様をBsdIicに合わせました。(2023/11/20)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?