diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-06-25 10:44:57 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-06-25 10:44:57 +0200 |
commit | dcccf564f0bdc529b4165e4f2e2fb63216da2339 (patch) | |
tree | 33586f0b0b655026909e51a1bdd81ad8ad05d049 /lib | |
parent | 637ec19bc55a2466fb0ffbf310140f891ac06783 (diff) |
add i2c hooks
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pbdrv/drv/rp2040/mod.c | 2 | ||||
-rw-r--r-- | lib/pbdrv/pb-mod.c | 5 | ||||
-rw-r--r-- | lib/pbdrv/pb-mod.h | 13 |
3 files changed, 20 insertions, 0 deletions
diff --git a/lib/pbdrv/drv/rp2040/mod.c b/lib/pbdrv/drv/rp2040/mod.c index 1535da9..bc20927 100644 --- a/lib/pbdrv/drv/rp2040/mod.c +++ b/lib/pbdrv/drv/rp2040/mod.c @@ -43,6 +43,8 @@ void pb_setup() { } __weak void pb_i2c_send(i2c_addr_t addr, const uint8_t * buf, size_t sz) { + pb_hook_i2c_send(addr, buf, sz); + // false to write stop condition to i2c bus i2c_write_timeout_us(PB_I2C_M, addr, buf, sz, false, PB_TIMEOUT_US); } diff --git a/lib/pbdrv/pb-mod.c b/lib/pbdrv/pb-mod.c index c27194e..6b23b04 100644 --- a/lib/pbdrv/pb-mod.c +++ b/lib/pbdrv/pb-mod.c @@ -18,7 +18,10 @@ __weak void pb_hook_mod_state_write(pb_global_state_t state) { _global_state = state; } +__weak void pb_hook_i2c_recv(const uint8_t * data, size_t sz) { } __weak void pb_i2c_recv(const uint8_t * data, size_t sz) { + pb_hook_i2c_recv(data, sz); + pb_buf_t buf = { .data = (char *) data, .size = sz, @@ -32,3 +35,5 @@ __weak void pb_i2c_recv(const uint8_t * data, size_t sz) { pb_msg_free(msg); } +__weak void pb_hook_i2c_send(i2c_addr_t i2c_addr, const uint8_t * data, size_t sz) { } + diff --git a/lib/pbdrv/pb-mod.h b/lib/pbdrv/pb-mod.h index 91e1d1f..bf5952b 100644 --- a/lib/pbdrv/pb-mod.h +++ b/lib/pbdrv/pb-mod.h @@ -94,6 +94,19 @@ pb_global_state_t pb_hook_mod_state_read(); void pb_hook_mod_state_write(pb_global_state_t state); /// \} + +/** + * \defgroup pb_hook_i2c I2C + * \brief Intercept incoming/outgoing I2C messages + * + * \{ + */ + +void pb_hook_i2c_recv(const uint8_t * buf, size_t sz); +void pb_hook_i2c_send(i2c_addr_t i2c_addr, const uint8_t * buf, size_t sz); + +/// \} + /// \} #ifdef __cplusplus |