ETrobocon / RasPike

11 stars 11 forks source link

ColorSensorクラスをグローバルオブジェクトとして動作させると起動時に止まってしまう #9

Closed ytoi closed 2 years ago

ytoi commented 2 years ago

教育用教材sample03を使った場合に

pi@rp015:~/work/RasPike/sdk/workspace $ make start sudo env LD_PRELOAD=../common/setjmp/libssetjmp.so ./asp -d ../common/device_config.txt vdev initializer called

というところで止まってしまう。

ytoi commented 2 years ago

グローバルコンストラクタでColorSensorクラスをReflectで初期化しようとするが、その時点ではASP3のタスクが上がっておらず、SPIKEに対してモード変更の通知を行わない。そのため、初期化処理の中で色の変化を待っているが、待ちのままとなる。

RasPikeプロトコルが初期化されるまではuartのuart_wait_mode_change()の中でセンサー値の変化を待たないようにする。 もともとこの処理はRasPike固有の処理であり、uart_wait_mode_change()にあるのがおかしかった。