USB to I2C voa command line interface.

Dependencies:   CommandProcessor mbed

Files at this revision

API Documentation at this revision

Comitter:
ericebert
Date:
Tue Nov 22 13:03:47 2016 +0000
Commit message:
USB2I2C erlaub es per Kommando-Interpreter Befehle an den I2C zu senden.

Changed in this revision

CommandProcessor.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r a39767890be8 CommandProcessor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CommandProcessor.lib	Tue Nov 22 13:03:47 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/WiredHome/code/CommandProcessor/#abba63b079fb
diff -r 000000000000 -r a39767890be8 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 22 13:03:47 2016 +0000
@@ -0,0 +1,153 @@
+
+#ifdef WIN32
+#include "stdio.h"
+#include "conio.h"
+#include "string.h"
+#include "assert.h"
+#else
+#include "mbed.h"
+#endif
+ 
+extern "C" {
+#include "CommandProcessor.h"
+}
+ 
+#ifdef WIN32
+#else
+I2C i2c(PTE0, PTE1);
+const int addr = 0x30;
+DigitalOut red(LED1);
+DigitalOut green(LED2);
+DigitalOut blue(LED3);
+Ticker flipper;
+char cmd[2];
+#endif
+ 
+ void flip() {
+    blue = !blue;
+}
+
+RUNRESULT_T Send(char *p);
+const CMD_T SendCmd = {
+    "send", 
+    "Send bytes to I2C", 
+    Send, 
+    visible
+};
+
+RUNRESULT_T Read(char *p);
+const CMD_T ReadCmd = {
+    "read", 
+    "Read bytes from I2C", 
+    Read, 
+    visible
+};
+
+RUNRESULT_T Who(char *p);
+const CMD_T WhoCmd = {
+    "who", 
+    "Shows who is logged on, or 'who id' for specifics", 
+    Who, 
+    visible
+};
+ 
+RUNRESULT_T SignOnBanner(char *p);
+const CMD_T SignOnBannerCmd = {
+    "About", 
+    "About this program", 
+    SignOnBanner, 
+    invisible
+};
+ 
+RUNRESULT_T SignOnBanner(char *p)
+{
+    puts("\r\nThis program was built " __DATE__ " " __TIME__ ".\r\n");
+    return runok;
+}
+ 
+RUNRESULT_T Who(char *p) {
+    printf("\r\nwho...\r\n");
+    if (*p)
+        printf(" Sorry, no help for [%s]\r\n", p);
+    return runok;
+}
+
+RUNRESULT_T Send(char *p) {
+    printf("\r\nSending bytes...\r\n");
+    if (*p)
+        {
+            red = 0;
+            printf("[%s]\r\n", p);
+            cmd[0] = p[0];
+            cmd[1] = p[1];
+            i2c.write(addr, cmd, 2);
+            red = 1;
+        }
+        
+    return runok;
+}
+RUNRESULT_T Read(char *p) {
+    printf("\r\nRead...\r\n");
+    if (*p)
+        {
+            green=0;
+            Send(p);
+            i2c.read(addr, cmd, 2);
+            float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0);
+            printf("Temp = %.2f\n", tmp);
+            green=1;
+        }
+    return runok;
+} 
+// Provide the serial interface methods for the command processor
+#ifdef WIN32
+int mReadable() { return _kbhit(); }
+int mGetCh() { return _getch(); }
+int mPutCh(int a) { return _putch(a); }
+int mPutS(const char * s) { return printf("%s\r\n", s); }
+#else
+Serial pc(USBTX, USBRX);
+int mReadable() { return pc.readable(); }
+int mGetCh() { return pc.getc(); }
+int mPutCh(int a) { return pc.putc(a); }
+int mPutS(const char * s) { return pc.printf("%s\r\n", s); }
+#endif
+ 
+int main(int argc, char* argv[])
+{
+    CMDP_T * cp = GetCommandProcessor();
+#ifdef WIN32
+    // nothing special for Win32
+#else
+    pc.baud(921600);
+#endif
+    cp->Init(
+        &SignOnBannerCmd,
+        CFG_ENABLE_TERMINATE | CFG_ENABLE_SYSTEM 
+        | CFG_ECHO_ON | CFG_CASE_INSENSITIVE,   // options
+        50,         // Command Buffer length 
+        5,          // History depth # of commands
+        mReadable,  // User provided API (kbhit())
+        mGetCh,     // User provided API
+        mPutCh,     // User provided API
+        mPutS);     // User provided API
+ 
+    // Start adding custom commands now
+    cp->Add(&WhoCmd);
+    cp->Add(&SendCmd);
+    cp->Add(&ReadCmd);
+ 
+    //alive signal
+    red = 1;
+    green=1;
+    blue=1;
+    flipper.attach(&flip, 0.5);
+ 
+    // Should never "wait" in here
+    while (cp->Run() == runok)  // run this timeslice
+    {
+       
+    }
+    cp->End();  // cleanup
+    return 0;
+}
\ No newline at end of file
diff -r 000000000000 -r a39767890be8 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Nov 22 13:03:47 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/0ab6a29f35bf
\ No newline at end of file