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.
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.