Preliminary main mbed library for nexpaq development

Revision:
0:6c56fb4bc5f0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libraries/tests/mbed/can_loopback/main.cpp	Fri Nov 04 20:27:58 2016 +0000
@@ -0,0 +1,74 @@
+#include "mbed.h"
+#include "test_env.h"
+
+#if !DEVICE_CAN
+  #error [NOT_SUPPORTED] CAN not supported
+#endif
+
+#if defined(TARGET_LPC1549)
+CAN can1(D9, D8);
+#elif defined(TARGET_LPC1768) || defined(TARGET_LPC4088)
+CAN can1(p9, p10);
+#elif defined(TARGET_B96B_F446VE)
+CAN can1(PD_0, PD_1);
+#elif defined(TARGET_VK_RZ_A1H)
+CAN can1(P5_9, P5_10);
+#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
+      defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \
+      defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
+      defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \
+      defined(TARGET_DISCO_F429ZI)  || \
+      defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG)  || \
+      defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L432KC)
+CAN can1(PA_11, PA_12);
+      defined(TARGET_NUCLEO_F446ZE) || \
+      defined(TARGET_NUCLEO_F103RB) || \
+      defined(TARGET_NUCLEO_F207ZG) || \
+      defined(TARGET_NUCLEO_F303ZE) || \
+      defined(TARGET_DISCO_F769NI)
+CAN can1(PB_8, PB_9);
+#endif
+
+#define TEST_ITERATIONS     127
+
+int main() {
+    MBED_HOSTTEST_TIMEOUT(20);
+    MBED_HOSTTEST_SELECT(dev_null);
+    MBED_HOSTTEST_DESCRIPTION(CAN Loopback);
+    MBED_HOSTTEST_START("MBED_A27");
+
+#if !defined(TARGET_VK_RZ_A1H)
+    can1.mode(CAN::Reset);
+#endif
+
+    if (!can1.mode(CAN::LocalTest)) {
+        printf("Mode change failed\n");
+    }
+
+    char success_count = 0;
+    for (char i=0; i < TEST_ITERATIONS; i++) {
+        unsigned int id = 1337;
+        CANMessage tx_msg(id, &i, sizeof(i));
+        bool sent = false;
+        if (can1.write(tx_msg)) {
+            printf("Sent %u: %d\n", id, i);
+            sent = true;
+        }
+        wait_ms(50);
+
+        bool read = false;
+        CANMessage rx_msg;
+        if (can1.read(rx_msg)) {
+            printf("Read %u: %d\n", rx_msg.id, rx_msg.data[0]);
+            read = (rx_msg.id == id) && (rx_msg.data[0] == i);
+        }
+
+        bool success = sent && read;
+
+        if (success) {
+            success_count++;
+        }
+    }
+
+    MBED_HOSTTEST_RESULT(success_count == TEST_ITERATIONS);
+}