I2C via rpc

Dependencies:   RPCInterface mbed

Fork of RPC_Serial by Michael Walker

Revision:
2:1b38b24c66dc
Parent:
1:de34af25056a
--- a/main.cpp	Tue Aug 24 15:15:44 2010 +0000
+++ b/main.cpp	Tue Apr 30 07:04:28 2013 +0000
@@ -1,6 +1,59 @@
 #include "mbed.h"
 #include "rpc.h"
+#include "RPCFunction.h"
+#include "RPCVariable.h"
 Serial pc(USBTX, USBRX);
+I2C i2c(p28,p27);
+//functions definition
+void sendData(char * input, char * output);
+void readData(char * input, char * output);
+//RPC function calls
+RPCFunction send(&sendData, "send");
+RPCFunction read(&readData, "read");
+
+// Functions
+void sendData(char * input, char * output)
+{
+    int adress;
+    int length;
+    int offset;
+    char *data = &input[0];
+    int temp;
+    int i=0;
+    sscanf(data, "%x %x %n", &adress,&length, &offset);
+   // printf("adress = %#x \nlengte= %#x \n", adress , length);
+    data += offset;
+    char cmd[length];
+    while (1==sscanf(data, "%x %n", &temp, &offset))
+      {
+        cmd[i]=temp;
+        data += offset;
+        i++;
+      }
+  //    printf("adress = %#x \nlengte= %#x \ncmd[0]= %#x \ncmd[1]= %#x\n", adress , length ,cmd[0],cmd[1]);
+    i2c.write(adress,cmd,length);
+}
+void readData(char * input, char * output)
+{
+    strcpy(output,"");
+    int adress;
+    int length;
+    int offset;
+    char *data = &input[0];
+    sscanf(data, " %x %x%n", &adress,&length, &offset);
+    data += offset;
+    char cmd[length];
+
+    i2c.read(adress,cmd,length);
+    char temp[4];
+    for (int i=0;i<length;i++)
+    {
+    sprintf(temp,"%x",cmd[i]);
+    strcat(output,temp);
+    }
+   // printf("%#x %#x",cmd[0],cmd[1]);
+}
+
 int main() {
     // setup the classes that can be created dynamically
     Base::add_rpc_class<AnalogIn>();