summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-06-10 17:21:08 +0700
committerhathach <[email protected]>2019-06-10 17:21:08 +0700
commita26430b90fda9679c22ce87d728cd23201a0f76f (patch)
tree368bcfeaaa13fcd278c3617c726536d7df3bc833
parentdb08bde4159a3a0be442d96b5882434cc19f6f57 (diff)
add fifo test
-rw-r--r--test/project.yml2
-rw-r--r--test/test/support/tusb_config.h103
-rw-r--r--test/test/test_fifo.c79
3 files changed, 183 insertions, 1 deletions
diff --git a/test/project.yml b/test/project.yml
index ac8ae7e33..311a672d5 100644
--- a/test/project.yml
+++ b/test/project.yml
@@ -30,7 +30,7 @@
- +:test/**
- -:test/support
:source:
- - src/**
+ - ../src/**
:support:
- test/support
diff --git a/test/test/support/tusb_config.h b/test/test/support/tusb_config.h
new file mode 100644
index 000000000..76efd0629
--- /dev/null
+++ b/test/test/support/tusb_config.h
@@ -0,0 +1,103 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2019 Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ */
+
+#ifndef _TUSB_CONFIG_H_
+#define _TUSB_CONFIG_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+//--------------------------------------------------------------------
+// COMMON CONFIGURATION
+//--------------------------------------------------------------------
+
+// defined by compiler flags for flexibility
+#ifndef CFG_TUSB_MCU
+ //#error CFG_TUSB_MCU must be defined
+ #define CFG_TUSB_MCU OPT_MCU_NRF5X
+#endif
+
+#if CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX
+#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | OPT_MODE_HIGH_SPEED)
+#else
+#define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE
+#endif
+
+#define CFG_TUSB_OS OPT_OS_NONE
+
+// CFG_TUSB_DEBUG is defined by compiler in DEBUG build
+// #define CFG_TUSB_DEBUG 0
+
+/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
+ * Tinyusb use follows macros to declare transferring memory so that they can be put
+ * into those specific section.
+ * e.g
+ * - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") ))
+ * - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4)))
+ */
+#ifndef CFG_TUSB_MEM_SECTION
+#define CFG_TUSB_MEM_SECTION
+#endif
+
+#ifndef CFG_TUSB_MEM_ALIGN
+#define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4)
+#endif
+
+//--------------------------------------------------------------------
+// DEVICE CONFIGURATION
+//--------------------------------------------------------------------
+
+#define CFG_TUD_ENDOINT0_SIZE 64
+
+//------------- CLASS -------------//
+#define CFG_TUD_CDC 1
+#define CFG_TUD_MSC 1
+#define CFG_TUD_HID 1
+
+#define CFG_TUD_MIDI 0
+#define CFG_TUD_CUSTOM_CLASS 0
+
+//------------- CDC -------------//
+
+// FIFO size of CDC TX and RX
+#define CFG_TUD_CDC_RX_BUFSIZE 64
+#define CFG_TUD_CDC_TX_BUFSIZE 64
+
+//------------- MSC -------------//
+
+// Buffer size of Device Mass storage
+#define CFG_TUD_MSC_BUFSIZE 512
+
+//------------- HID -------------//
+
+// Should be sufficient to hold ID (if any) + Data
+#define CFG_TUD_HID_BUFSIZE 16
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_CONFIG_H_ */
diff --git a/test/test/test_fifo.c b/test/test/test_fifo.c
new file mode 100644
index 000000000..f34f9d1bb
--- /dev/null
+++ b/test/test/test_fifo.c
@@ -0,0 +1,79 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2019 Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+#include "unity.h"
+#include "tusb_fifo.h"
+
+#define FIFO_SIZE 10
+TU_FIFO_DEF(ff, FIFO_SIZE, uint8_t, false);
+
+void setUp(void)
+{
+ tu_fifo_clear(&ff);
+}
+
+void tearDown(void)
+{
+}
+
+void test_normal(void)
+{
+ uint8_t i;
+
+ for(i=0; i < FIFO_SIZE; i++)
+ {
+ tu_fifo_write(&ff, &i);
+ }
+
+ for(i=0; i < FIFO_SIZE; i++)
+ {
+ uint8_t c;
+ tu_fifo_read(&ff, &c);
+ TEST_ASSERT_EQUAL(i, c);
+ }
+}
+
+void test_empty(void)
+{
+ uint8_t temp;
+ TEST_ASSERT_TRUE(tu_fifo_empty(&ff));
+ tu_fifo_write(&ff, &temp);
+ TEST_ASSERT_FALSE(tu_fifo_empty(&ff));
+}
+
+void test_full(void)
+{
+ uint8_t i;
+
+ TEST_ASSERT_FALSE(tu_fifo_full(&ff));
+
+ for(i=0; i < FIFO_SIZE; i++)
+ {
+ tu_fifo_write(&ff, &i);
+ }
+
+ TEST_ASSERT_TRUE(tu_fifo_full(&ff));
+}