Introduce constants for the endpoints
i2c "get status" reads the pin states.
more scribble about reading in 32 byte chunks, of aa e0

If you want more readings, you have to pad out to the next 32byte block, issue
the full read, and then pad to the next one, as many as necessary.  Only the
first section is complicated.
more notes from decoding demo apps
receive ACK/NAK on single byte reads

Notes from demo apps, building blocks in smaller pieces. This is both
a) way slower, and
b) not as reliable.  The stop bit generation isn't reliably enough.

Further, only being able to send a single byte to get the ack is pretty
untenable.  Perhaps you can use the ack detection on the writing of the
address, then use the normal multi command patterns to get some decent
performance, and hope it works ok?