- Updated edition to 2021
- Improved low-level API ergonomics:
- The
common::read_ram()
function can read all of the necessary data from RAM for each frame's calculations. - Register access (using the types in the
register
module) is simpler with theFromI2C
andToI2C
traits.
- The
- ADC resolution is now consistently handled as a
register::Resolution
instead of sometimes being au8
. - The generic parameters for
CameraDriver
have been simplified (fromCamera, Calibration, I2C, height, width, num_bytes
toCalibration, I2C, height, num_bytes
). They can be further simplified as const generic support is stabilized and released in rustc. - Added failed pixel flagging.
- Fix for two bugs preventing interleave mode from working with the MLX90640.
- Unintended dependency on
alloc
has been removed. - T_r can now be specified to account for reflected radiation when emissivity is <1.
- The estimated self heating method for determining T_r is more accurate on 641s (they self-heat less, ~5 degrees compared to ~8 for the 640).
- Multiple functions on
MelexisCamera
are now associated constants. - Image size constants (
HEIGHT
,WIDTH
,NUM_PIXELS
) are now on theMelexisCamera
trait instead of free constants in the specific camera module. - The
address_enum_ops
andexpose_member
macros are no longer part of the documented API. - The
MelexisCamera
trait is now sealed. - Interleave mode compensation for the MLX90640 is now implemented.
- Register access methods have been exposed for the low-level API.
- Implemented
From
forFrameRate
toDuration
. - Reduced the number of I2C operations performed for common tasks.
- Improved/fixed MLX90641 support.
- Bug fixes to 90640 EEPROM handling
- Better 90640 testing with full example data.
- Added MLX90641 support.
Camera
renamed toCameraDriver
, root level-Camera
type aliases renamed to-Driver
, andcamera
module renamed todriver
.
- Added ambient temperature and image dimension access methods to base camera type.
- Error type was split to make internal use easier.
- FrameRate and Resolution's From implementations were rewritten to be useful to external users of the crate instead of an internal implementation detail.
- Documentation much improved.
- Improved testing with full device-level mocks.
- Stop sending 0-length read requests over I2C.
- High and low level APIs defined.
*Initial Release