More driver improvements

A project log for DS1881 Breakout

A breakout board for the Dallas/Maxim i2c dual logarithmic potentiometer

j-ian-lindsayJ. Ian Lindsay 11/30/2019 at 22:360 Comments

The driver had a tremendous amount of technical debt cleared away last night. Bus references are no longer hard-coded to "Wire", but are instead passed in as an argument to init(), and is then retained by the class. This costs an extra 4 bytes of resting memory load per-instance, but paves the way for the linux TwoWire abstraction, and makes life generally easier for anyone using the board with (suppose) "Wire1".

Additionally, the driver now supports state serialization and restore. It needs some more testing, but it should allow state restore before or after init(), allowing for "profiles" and easy management of preferred settings, default states, etc. Buffers written this way are versioned so that new driver features can be gracefully migrated in. This API is essentially finished, so it is now safe to code against. The example sketch is updated, tested, committed, and pushed.

Sloppy private boolean class variables were condensed into something more efficient and manageable (int member with flags).