aboutsummaryrefslogtreecommitdiff
path: root/client/i2c.cpp
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-05-30 15:51:08 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-05-30 15:51:08 +0200
commitb231e9d808f40aef0895787ea09624787b10addd (patch)
tree6ee2a4550e1c4a6384dd22e9967464b7766dc9cc /client/i2c.cpp
parentd1f5291f82f5e13db756adc919883e310cc537de (diff)
more client i2c shuffling
Diffstat (limited to 'client/i2c.cpp')
-rw-r--r--client/i2c.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/client/i2c.cpp b/client/i2c.cpp
new file mode 100644
index 0000000..fd29e1e
--- /dev/null
+++ b/client/i2c.cpp
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "i2ctcpv1.h"
+#include "sock.h"
+#include "xxd.h"
+
+bool i2c_dump_send = false;
+bool i2c_dump_recv = true;
+
+void i2c_send(uint16_t addr, const char * data, size_t data_size) {
+ i2ctcp_msg_t msg = {
+ .addr = addr,
+ .data = (char *) data,
+ .length = data_size,
+ };
+
+ char* packed;
+ size_t size;
+ if (!i2ctcp_write(&msg, &packed, &size)) return;
+
+ sock->send(packed, size);
+ if (i2c_dump_send) {
+ printf("[%s] addr(0x%02x) data(0x%02lx):\n", __FUNCTION__, addr, data_size);
+ xxd(data, data_size);
+ }
+
+ free(packed);
+}
+
+void i2c_recv(uint16_t addr, const char * data, size_t data_size) {
+ if (i2c_dump_recv) {
+ printf("[%s] addr(0x%02x) data(0x%02lx):\n", __FUNCTION__, addr, data_size);
+ xxd(data, data_size);
+ }
+}
+