HelloWorld program for USB400Serial Library

Dependencies:   USB400Serial USBHost mbed

Files at this revision

API Documentation at this revision

Comitter:
nanashino
Date:
Wed Dec 03 06:19:56 2014 +0000
Child:
1:eda79d6db274
Commit message:
initial version

Changed in this revision

USB400Serial.lib Show annotated file Show diff for this revision Revisions of this file
USBHost.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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USB400Serial.lib	Wed Dec 03 06:19:56 2014 +0000
@@ -0,0 +1,1 @@
+USB400Serial#0dd5d1e4cf71
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USBHost.lib	Wed Dec 03 06:19:56 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/USBHost/#607951c26872
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Dec 03 06:19:56 2014 +0000
@@ -0,0 +1,142 @@
+#include "mbed.h"
+#include "USB400Serial.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+Serial pc(USBTX, USBRX);
+
+uint8_t u8CRC8Table[256] = {
+    0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15,
+    0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d,
+    0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65,
+    0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d,
+    0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5,
+    0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd,
+    0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85,
+    0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd,
+    0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2,
+    0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea,
+    0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2,
+    0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a,
+    0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32,
+    0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a,
+    0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42,
+    0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a,
+    0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c,
+    0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4,
+    0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec,
+    0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4,
+    0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c,
+    0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44,
+    0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c,
+    0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34,
+    0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b,
+    0x76, 0x71, 0x78, 0x7f, 0x6A, 0x6d, 0x64, 0x63,
+    0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b,
+    0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13,
+    0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb,
+    0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8D, 0x84, 0x83,
+    0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb,
+    0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3
+};
+
+#define proccrc8(u8CRC, u8Data) (u8CRC8Table[u8CRC ^ u8Data])
+
+void serial_task(void const*)
+{
+    USB400Serial serial;
+    int i;
+    int dataLength;
+    int optionalLength;
+    uint8_t c;
+    uint8_t crc;
+    int rockeraction = 0;
+    int energybow = 0;
+
+    while(1) {
+
+        while(!serial.connect())
+            Thread::wait(500);
+
+        serial.putc(0x55); // CO_WR_MODE(Compatible mode)
+        serial.putc(0x00);
+        serial.putc(0x02);
+        serial.putc(0x00);
+        serial.putc(0x05);
+        serial.putc(0xcd);
+        serial.putc(0x1c);
+        serial.putc(0x00);
+        serial.putc(0xab);
+
+        while (1) {
+
+            if (!serial.connected())
+                break;
+
+            if (serial.available()) {
+                c = serial.getc();
+
+                if (c == 0x55) {
+                    crc = 0;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+                    dataLength = c;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+                    dataLength = (dataLength << 8) | c;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+                    optionalLength = c;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+
+                    if (crc == 0) {
+                        crc = 0;
+
+                        for (i = 0; i < dataLength; i++) {
+                            c = serial.getc();
+                            crc = proccrc8(crc, c);
+                            printf("%02X ", c);
+                            if (i == 1) {
+                                rockeraction = (c & 0xE0) >> 5;
+                                energybow = (c & 0x10) >> 4;
+                            }
+                        }
+                        printf("\n\r");
+
+                        for (i = 0; i < optionalLength; i++) {
+                            c = serial.getc();
+                            crc = proccrc8(crc, c);
+                        }
+
+                        c = serial.getc();
+                        crc = proccrc8(crc, c);
+
+                        if (crc == 0) {
+                            if((energybow == 1) && (rockeraction == 0)) led4 = 1;
+                            else if((energybow == 1) && (rockeraction == 1)) led4 = 0;
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+int main()
+{
+    Thread serialTask(serial_task, NULL, osPriorityNormal, 256 * 4);
+    while(1) {
+        led1 = !led1;
+        Thread::wait(500);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Dec 03 06:19:56 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5
\ No newline at end of file