2017 hongo b team

Dependents:   I2C_slave

Revision:
0:4eb718005c1b
Child:
1:946468f68668
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ApprI2CSlave.cpp	Fri Sep 08 04:02:22 2017 +0000
@@ -0,0 +1,48 @@
+#include "ApprI2CSlave.h"
+
+ApprI2CSlave::ApprI2CSlave(alpha_a::ID my_id_, alpha_a::f_type my_type_, int addr_, I2CSlave *slave_)
+{
+    _my_id = my_id_;
+    _my_type = my_type_;
+    _slave = slave_;
+    _slave->address(addr_);
+}
+
+void ApprI2CSlave::write(uint8_t data)
+{
+    char data_array[3] = {};
+    
+    data_array[0] = _my_id;
+    data_array[1] = _my_type;
+    data_array[2] = (char)data;
+    if(I2CSlave::ReadAddressed == _slave->receive())
+        _slave->write(data_array, 3);
+}
+
+int ApprI2CSlave::read()
+{
+    char buffer[3] = {};
+    int res_data = 0;
+    printf("%d\r\n",_slave->receive());
+    if(I2CSlave::WriteAddressed == _slave->receive())
+        _slave->read(buffer, 3);
+    
+    if((alpha_a::ID)buffer[0] == _my_id)
+    {
+        switch((alpha_a::f_type)buffer[1])
+        {
+            case alpha_a::sig:
+                res_data = (signed int)buffer[2];
+                break;
+            case alpha_a::unsig:
+                res_data = (unsigned int)buffer[2];
+                break;
+        };
+        
+        return res_data;
+    }
+    else
+    {
+        return res_data;
+    }
+}
\ No newline at end of file