firmware: master I2C command to other modules by SensorDriver are not atomic
pat1 opened this issue · 0 comments
pat1 commented
Il problema è relativo alla non atomicità della sequenza prepare/get di Sensordriver nella comunicazione master/i2c-rain master/i2c-th.
I comandi prepare sono inviati con CRC e conseguentemente con una possibilità di ripetizione del comando.
Questo provoca che due ripetuti "ONESHOT START-STOP" o "CONTINUOUS START-STOP" comportano il primo il reset del valore corrente elaborato della misura, il secondo la messa a disposizione per la successiva get del valore resettato (mancante in i2c-th, azzerato per i2c-rain) e quindi una restituzione di un dato o mancante o erroneamente calcolato.
Bisogna rendere la sequenza prepare and get atomica definendo degli stati della transazione.