In response to #4, I've implemented a tolerance for exposure time: rather than reading, and re-applying, the exposure time every time we reconfigure the camera (e.g. when switching mode), the stored value is only updated if it differs significantly from the actual value. So, the gradual decrease we were seeing (20us each time it was reconfigured) gets ignored, and the value won't drift over time.
Obviously, if we are working with very short exposures, ignoring a change from 70ms to 50ms would be a problem. This issue is a reminder that we should consider a more elegant way of dealing with this - for example, explicitly updating the relevant item in persistent_controls when we update camera properties.
In response to #4, I've implemented a tolerance for exposure time: rather than reading, and re-applying, the exposure time every time we reconfigure the camera (e.g. when switching mode), the stored value is only updated if it differs significantly from the actual value. So, the gradual decrease we were seeing (20us each time it was reconfigured) gets ignored, and the value won't drift over time.
Obviously, if we are working with very short exposures, ignoring a change from 70ms to 50ms would be a problem. This issue is a reminder that we should consider a more elegant way of dealing with this - for example, explicitly updating the relevant item in
persistent_controlswhen we update camera properties.