diff --git a/common/i2c/i2c.cpp b/common/i2c/i2c.cpp
index fb8bee0..653f823 100644
--- a/common/i2c/i2c.cpp
+++ b/common/i2c/i2c.cpp
@@ -76,6 +76,51 @@
     co_return result;
 }
 
+bool I2C::sendReceive(const std::vector<uint8_t>& writeData,
+                      std::vector<uint8_t>& readData) const
+{
+    bool result = true;
+
+    if (fd <= 0)
+    {
+        return false;
+    }
+    else
+    {
+        struct i2c_msg msg[2];
+        struct i2c_rdwr_ioctl_data readWriteData;
+        int msgIndex = 0;
+
+        if (!writeData.empty())
+        {
+            msg[msgIndex].addr = deviceNode;
+            msg[msgIndex].flags = 0;
+            msg[msgIndex].len = writeData.size();
+            msg[msgIndex].buf = const_cast<uint8_t*>(writeData.data());
+            msgIndex++;
+        }
+
+        if (!readData.empty())
+        {
+            msg[msgIndex].addr = deviceNode;
+            msg[msgIndex].flags = I2C_M_RD;
+            msg[msgIndex].len = readData.size();
+            msg[msgIndex].buf = readData.data();
+            msgIndex++;
+        }
+
+        readWriteData.msgs = msg;
+        readWriteData.nmsgs = msgIndex;
+
+        if (ioctl(fd, I2C_RDWR, &readWriteData) < 0)
+        {
+            result = false;
+        }
+    }
+
+    return result;
+}
+
 int I2C::close() const
 {
     return ::close(fd);
