-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
ハードウェアリセット直後にget_is_online()を呼ぶと、I2Cの準備が完了していないのか、Remote I/O errorになります。
sakura.ioモジュールのI2Cがreadyかどうかの判断はどのようにすべきでしょうか?
$ echo 22 > /sys/class/gpio/export; \
echo out > /sys/class/gpio/gpio22/direction; \
echo 1 > /sys/class/gpio/gpio22/value; sleep 0.1; \
echo 0 > /sys/class/gpio/gpio22/value; \
python3 -c "from sakuraio.hardware.rpi import SakuraIOSMBus;print(SakuraIOSMBus().get_is_online())"
-bash: echo: write error: Device or resource busy
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/commands/common.py", line 34, in get_is_online
status = self.get_connection_status()
File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/commands/common.py", line 24, in get_connection_status
response = self.execute_command(CMD_GET_CONNECTION_STATUS)
File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/base.py", line 44, in execute_command
self.start(False)
File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/rpi/__init__.py", line 16, in start
self.bus.write_i2c_block_data(SAKURAIO_SLAVE_ADDR, self.request[0], self.request[1:])
OSError: [Errno 121] Remote I/O error
とりあえず、ハードウェアリセットからI2Cアクセスまで2秒くらい待機することで回避しています。
Metadata
Metadata
Assignees
Labels
No labels