USB composite device example program, drag-and-drop flash writer.

Dependencies:   SWD USBDevice mbed BaseDAP

Committer:
va009039
Date:
Sat Sep 28 03:21:14 2013 +0000
Revision:
1:ea8e179320d7
Parent:
0:2385683c867a
add USBMSD_Drop class. add CDC(Virtual COM) and HID(for example CMSIS-DAP), but KL25Z not work.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:2385683c867a 1 // mytest.h 2013/6/28
va009039 0:2385683c867a 2 #pragma once
va009039 0:2385683c867a 3 #include "mbed_debug.h"
va009039 0:2385683c867a 4
va009039 0:2385683c867a 5 class BaseTest {
va009039 0:2385683c867a 6 public:
va009039 0:2385683c867a 7 virtual void _run() = 0;
va009039 0:2385683c867a 8 char* m_a;
va009039 0:2385683c867a 9 char* m_b;
va009039 0:2385683c867a 10 int m_line;
va009039 0:2385683c867a 11 char* m_file;
va009039 0:2385683c867a 12 BaseTest* next;
va009039 0:2385683c867a 13 };
va009039 0:2385683c867a 14
va009039 0:2385683c867a 15 class reg {
va009039 0:2385683c867a 16 BaseTest* head;
va009039 0:2385683c867a 17 BaseTest* tail;
va009039 0:2385683c867a 18 reg() {
va009039 0:2385683c867a 19 head = NULL;
va009039 0:2385683c867a 20 tail = NULL;
va009039 0:2385683c867a 21 }
va009039 0:2385683c867a 22 public:
va009039 0:2385683c867a 23 static reg* inst() {
va009039 0:2385683c867a 24 static reg regtest;
va009039 0:2385683c867a 25 return &regtest;
va009039 0:2385683c867a 26 }
va009039 0:2385683c867a 27 void add(BaseTest* test) {
va009039 0:2385683c867a 28 test->next = NULL;
va009039 0:2385683c867a 29 if (head == NULL) {
va009039 0:2385683c867a 30 head = test;
va009039 0:2385683c867a 31 tail = test;
va009039 0:2385683c867a 32 } else {
va009039 0:2385683c867a 33 tail->next = test;
va009039 0:2385683c867a 34 tail = test;
va009039 0:2385683c867a 35 }
va009039 0:2385683c867a 36 }
va009039 0:2385683c867a 37 int run_all_tests(char* a = "") {
va009039 0:2385683c867a 38 BaseTest* test = head;
va009039 0:2385683c867a 39 int pass = 0;
va009039 0:2385683c867a 40 int count = 0;
va009039 0:2385683c867a 41 char* file = "";
va009039 0:2385683c867a 42 while(test) {
va009039 0:2385683c867a 43 if (strcmp(a, "") == 0 || strcmp(a, test->m_a) == 0) {
va009039 0:2385683c867a 44 if (strcmp(file, test->m_file) != 0) {
va009039 0:2385683c867a 45 file = test->m_file;
va009039 0:2385683c867a 46 debug("%s\n", file);
va009039 0:2385683c867a 47 }
va009039 0:2385683c867a 48 debug("TEST(%s,%s)@%d ... ",test->m_a, test->m_b, test->m_line);
va009039 0:2385683c867a 49 Timer t; t.start();
va009039 0:2385683c867a 50 test->_run();
va009039 0:2385683c867a 51 debug("OK (%d ms)\n", t.read_ms());
va009039 0:2385683c867a 52 pass++;
va009039 0:2385683c867a 53 }
va009039 0:2385683c867a 54 test = test->next;
va009039 0:2385683c867a 55 count++;
va009039 0:2385683c867a 56 }
va009039 0:2385683c867a 57 debug("%d/%d TESTS PASSED!!!\n", pass, count);
va009039 0:2385683c867a 58 return 0;
va009039 0:2385683c867a 59 }
va009039 0:2385683c867a 60 };
va009039 0:2385683c867a 61
va009039 0:2385683c867a 62 #define TEST(A,B) \
va009039 0:2385683c867a 63 class class_##A##_##B : public BaseTest { \
va009039 0:2385683c867a 64 public: \
va009039 0:2385683c867a 65 class_##A##_##B(char* a, char* b, char* file, int line) { \
va009039 0:2385683c867a 66 m_a = a; m_b = b; \
va009039 0:2385683c867a 67 m_file = file; m_line = line; \
va009039 0:2385683c867a 68 reg::inst()->add(this); \
va009039 0:2385683c867a 69 } \
va009039 0:2385683c867a 70 virtual void _run(); \
va009039 0:2385683c867a 71 }; \
va009039 0:2385683c867a 72 class_##A##_##B instance_##A##_##B(#A,#B,__FILE__,__LINE__); \
va009039 0:2385683c867a 73 void class_##A##_##B::_run()
va009039 0:2385683c867a 74
va009039 0:2385683c867a 75 #define RUN_TEST(A,B) instance_##A##_##B._run()
va009039 0:2385683c867a 76 #define RUN_ALL_TESTS(A) reg::inst()->run_all_tests(#A)
va009039 0:2385683c867a 77 #define ASSERT_TRUE(A) if(A){}else{debug("\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);};
va009039 0:2385683c867a 78
va009039 0:2385683c867a 79 #ifndef DBG
va009039 0:2385683c867a 80 #define DBG(FMT, ...) do{debug("[%s:%d]"FMT"\r\n", __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);}while(0);
va009039 0:2385683c867a 81 #endif
va009039 0:2385683c867a 82 #define TEST_PRINT(FMT, ...) do{debug("[TEST: %d]"FMT"\r\n", __LINE__, ##__VA_ARGS__);}while(0);