summaryrefslogtreecommitdiff
path: root/include/driver
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-01-15 10:16:13 +0100
committerDaniel Friesel <derf@finalrewind.org>2018-01-15 10:16:13 +0100
commit7b8c37d235c77d881db4184a798fc4b72a1fa279 (patch)
tree974caf26a3964f1650285ae80f6c924d29474abd /include/driver
parentc374e91391d3e58295375f439b15fe888bcdb3bd (diff)
Add Software I2C implementation
Diffstat (limited to 'include/driver')
-rw-r--r--include/driver/soft_i2c.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/include/driver/soft_i2c.h b/include/driver/soft_i2c.h
new file mode 100644
index 0000000..aff63e3
--- /dev/null
+++ b/include/driver/soft_i2c.h
@@ -0,0 +1,26 @@
+#ifndef SOFTI2C_H
+#define SOFTI2C_H
+
+class SoftI2C {
+ private:
+ SoftI2C(const SoftI2C &copy);
+
+ unsigned char sda, scl;
+
+ void start();
+ void stop();
+ bool tx(unsigned char byte);
+ unsigned char rx(bool send_ack);
+
+ public:
+ SoftI2C(unsigned char sda, unsigned char scl) : sda(sda), scl(scl) {}
+ signed char setup();
+ void scan(unsigned int *results);
+ signed char xmit(unsigned char address,
+ unsigned char tx_len, unsigned char *tx_buf,
+ unsigned char rx_len, unsigned char *rx_buf);
+};
+
+extern SoftI2C i2c;
+
+#endif