Open tadfmac opened 7 years ago
下記のように進めるべきかと思い、CHIRIMENのissueに登録させていただきました。
下記変更を検討中です。 ツッコミお待ちしております!
interface I2CSlaveDevice { readonly attribute unsigned short slaveAddress;
Promise read8(octet registerNumber); // registerNumberを unsigned shortから octetに変更
Promise read16(octet registerNumber); // registerNumberを unsigned shortから octetに変更
Promise write8(octet registerNumber, octet value); // registerNumberを unsigned shortから octetに変更
Promise write16(octet registerNumber, unsigned short value); // registerNumberを unsigned shortから octetに変更
Promise readBytes(octet readLength); // 追加
Promise writeBytes(sequence<octet> buffer); // 追加
Promise readByte(); // 追加
Promise writeByte(octet value); // 追加
};
readLengthに指定したoctet数読み込みを行う。 読み込み成功したデータを sequence で返す
指定したbufferの書き込みを行う。
1byteだけ読み込みを行う。
1byteだけ書き込みを行う。
TODO:
@satakagi さん、お時間ある時にコメント下さい
https://github.com/chirimen-oh/chirimen-raspi3 こちらで下記追加提案の APIを実装しています。
Promise readBytes(octet readLength); // 追加
Promise writeBytes(sequence<octet> buffer); // 追加
Promise readByte(); // 追加
Promise writeByte(octet value); // 追加
しかし、使ってみて、さらに下記のようなAPIも追加したくなりました。
Promise readRegisterBytes(octet registerNumber, octet readLength); // さらに追加
これがあれば、S11059のカラー読み出しのような要求が1度に行えるようになると思います。 http://akizukidenshi.com/download/ds/hamamatsu/s11059-02dt.pdf
CHIRIMEN for Raspberry Pi同様にnode-web-i2c(npmパッケージとしてのWeb I2C APIの実装)のほうにも加えました
現在のWeb I2C APIで定義されているSlave Deviceとのデータ送受信に利用可能なAPI(read8、write8など)は、SMBus Spec 3.0で定義されている下記プロトコルに対応したものになっている認識です。(※1)
(※1) Specの比較と現状のCHIRIMEN実装から個人的に読み解いたもので、Spec上で対応が示唆されているわけではありません
これらのAPIにより、上記SMBus Spec 6.5.4、6.5.5に対応したSlave Deviceとの通信は可能となりますが、言い換えると、上記以外の下記のようなデバイスへの対応が行えていない認識です。
CHIRIMENではGroveなど市販のI2Cセンサー等を中心とした対応を期待している認識ですが、より広いデバイスに対応するために最低限下記のようなAPIの追加が必要と認識しています。
registerNumber
を必要としない可変長の Read、Write[x] 追加するAPIの提案 (ここで)
[ ] 追加するAPIの提案 (Specへ)
[x] 追加実装・テスト
[ ] Pull Request (Gecko)
[ ] Pull Request (Polyfill)