akif999 / drivers

TinyGo drivers for sensors and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
https://tinygo.org
BSD 3-Clause "New" or "Revised" License
3 stars 0 forks source link

Update configuration APIs #6

Closed akif999 closed 1 year ago

akif999 commented 1 year ago

https://github.com/akif999/drivers/issues/2#issuecomment-1414572421

  • (3) ReadConfig の戻り値を type Config []byte とする
    • Config 型に Stringer を実装する
    • Config 型に対して paramsToBytes を実装する
sago35 commented 1 year ago

func (d *Device) WriteConfig(cfg Config) error で実施している各種エラーチェックは、 type Config 側で実施した方がよさそうだがうまく言語化できない。

akif999 commented 1 year ago

https://github.com/akif999/drivers/pull/6#issuecomment-1427262331 Config のバリデーションをどこでどうするべきかについて検討した結果。

以下より、案 3 を採用する。

func (d *Device) WriteConfig(cfg Config) error で実施している各種エラーチェックは、 type Config 側で実施した方がよさそうだがうまく言語化できない。

validation は Config に持たせたほうが良い気もするんだけど、そうじゃない気もする。 byteTo とか toByte とかやってる分には Validation は要らんのでは?という気持ちはある。

RssiAmbient とか、パラメータ毎に個別に設定するときは validation してもいいと思うけど。 でも、メンバーに直接アクセスできる現状だとその手のチェックはできないし、わざわざメソッド化してまでやりというと。。。

akif999 commented 1 year ago

https://github.com/akif999/drivers/pull/6#issuecomment-1428913615

Config のバリデーションをどこでどうするべきかについて検討した結果。 以下より、案 3 を採用する。

案 3 に基づき以下にて変更した。 7e3740a86b469889eeb5720c0f6b183979dd8c1d c998f6aee4d034e66c8abbd723a7e6cfb6fd3cdd