buslogger
buslogger is a small helper library for embedded-hal rust applications. It helps with debugging bus interfaces by logging each read and write transaction to a separate logging device.
Currently, it only supports I2C busses, but support is planned for other bus types.
buslogger works by moving in a struct that implements the i2c traits, as well as a struct that implements the core::fmt::Write trait. It then returns a new i2c struct that also implements the i2c traits, in a similiar fashion to the shared_bus crate.
Example usage:
use BusLogger;
let i2c = /* some struct that implements read / write / write_read traits */;
let serial = /* some struct that implements core::fmt::Write */;
let i2c = new;
let mut buf : = ;
// use the i2c device like normal
i2c.write.ok;
i2c.write_read.ok;
i2c.read.ok;
i2c.write_read.ok; //assume this fails with error i2c::Error::Nack
Example output you would see on the trace
a[42] w[40, 80]
a[42] w[00] r[01]
a[42] r[00]
a[42] w[01] Nack