From 5207875addf972f8323b51318975c6c6f3861dd4 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 4 Mar 2013 01:00:25 +0700 Subject: [PATCH] sperate tests --- tests/test/host/ehci/test_ehci_init.c | 192 +++++++++++++++++++++ tests/test/host/ehci/test_ehci_structure.c | 134 +------------- 2 files changed, 194 insertions(+), 132 deletions(-) create mode 100644 tests/test/host/ehci/test_ehci_init.c diff --git a/tests/test/host/ehci/test_ehci_init.c b/tests/test/host/ehci/test_ehci_init.c new file mode 100644 index 00000000..5d691b60 --- /dev/null +++ b/tests/test/host/ehci/test_ehci_init.c @@ -0,0 +1,192 @@ +/* + * test_ehci_init.c + * + * Created on: Feb 27, 2013 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the tiny usb stack. + */ + +#include "unity.h" +#include "tusb_option.h" +#include "errors.h" +#include "binary.h" + +#include "hal.h" +#include "mock_osal.h" +#include "ehci.h" + +extern ehci_data_t ehci_data; + +LPC_USB0_Type lpc_usb0; +LPC_USB1_Type lpc_usb1; + +//--------------------------------------------------------------------+ +// Setup/Teardown + helper declare +//--------------------------------------------------------------------+ +void setUp(void) +{ + memclr_(&lpc_usb0, sizeof(LPC_USB0_Type)); + memclr_(&lpc_usb1, sizeof(LPC_USB1_Type)); +} + +void tearDown(void) +{ +} + +//--------------------------------------------------------------------+ +// Initialization +//--------------------------------------------------------------------+ +void test_hcd_init_data(void) +{ + uint32_t random_data = 0x1234; + memcpy(&ehci_data, &random_data, sizeof(random_data)); + + hcd_init(); + + //------------- check memory data -------------// + for(uint32_t i=0; iusb_int_enable_bit.usb_error); + TEST_ASSERT(regs->usb_int_enable_bit.port_change_detect); + TEST_ASSERT(regs->usb_int_enable_bit.async_advance); + + TEST_ASSERT_FALSE(regs->usb_int_enable_bit.framelist_rollover); + TEST_ASSERT_FALSE(regs->usb_int_enable_bit.pci_host_system_error); + + TEST_ASSERT_FALSE(regs->usb_int_enable_bit.usb); + TEST_ASSERT_TRUE(regs->usb_int_enable_bit.nxp_int_async); + TEST_ASSERT_TRUE(regs->usb_int_enable_bit.nxp_int_period); + + TEST_IGNORE_MESSAGE("not use nxp int async/period, use usbint instead"); + } +} + +void test_hcd_init_async_list(void) +{ + hcd_init(); + + for(uint32_t i=0; iasync_list_base); + + TEST_ASSERT_EQUAL_HEX(async_head, align32(async_head) ); + TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, async_head->next.type); + TEST_ASSERT_FALSE(async_head->next.terminate); + + TEST_ASSERT(async_head->head_list_flag); + TEST_ASSERT(async_head->qtd_overlay.next.terminate); + TEST_ASSERT(async_head->qtd_overlay.alternate.terminate); + TEST_ASSERT(async_head->qtd_overlay.halted); + } +} + +void test_hcd_init_period_list(void) +{ +#if EHCI_PERIODIC_LIST + hcd_init(); + + for(uint32_t i=0; iperiodic_list_base); + for(uint32_t list_idx=0; list_idx < EHCI_FRAMELIST_SIZE; list_idx++) + { + TEST_ASSERT_EQUAL_HEX( (uint32_t) period_head, align32((uint32_t)framelist[list_idx].address) ); + TEST_ASSERT_FALSE(framelist[list_idx].terminate); + TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, framelist[list_idx].type); + } + + TEST_ASSERT(period_head->smask) + TEST_ASSERT_TRUE(period_head->next.terminate); + TEST_ASSERT(period_head->qtd_overlay.next.terminate); + TEST_ASSERT(period_head->qtd_overlay.alternate.terminate); + TEST_ASSERT(period_head->qtd_overlay.halted); + } +#endif +} + +void test_hcd_init_tt_control(void) +{ + hcd_init(); + + for(uint32_t i=0; itt_control); + } +} + +void test_hcd_init_usbcmd(void) +{ + hcd_init(); + + for(uint32_t i=0; iusb_cmd_bit.async_enable); + +#if EHCI_PERIODIC_LIST + TEST_ASSERT(regs->usb_cmd_bit.periodic_enable); +#else + TEST_ASSERT_FALSE(regs->usb_cmd_bit.periodic_enable); +#endif + + //------------- Framelist size (NXP specific) -------------// + TEST_ASSERT_BITS(BIN8(11), EHCI_CFG_FRAMELIST_SIZE_BITS, regs->usb_cmd_bit.framelist_size); + TEST_ASSERT_EQUAL(EHCI_CFG_FRAMELIST_SIZE_BITS >> 2, regs->usb_cmd_bit.nxp_framelist_size_msb); + } + +} diff --git a/tests/test/host/ehci/test_ehci_structure.c b/tests/test/host/ehci/test_ehci_structure.c index 2594874e..81917edb 100644 --- a/tests/test/host/ehci/test_ehci_structure.c +++ b/tests/test/host/ehci/test_ehci_structure.c @@ -1,5 +1,5 @@ /* - * test_ehci.c + * test_ehci_structure.c * * Created on: Feb 27, 2013 * Author: hathach @@ -45,7 +45,6 @@ #include "ehci.h" extern ehci_data_t ehci_data; - LPC_USB0_Type lpc_usb0; LPC_USB1_Type lpc_usb1; @@ -75,8 +74,7 @@ uint8_t number_of_high_bits(uint32_t value); void setUp(void) { - memclr_(&lpc_usb0, sizeof(LPC_USB0_Type)); - memclr_(&lpc_usb1, sizeof(LPC_USB1_Type)); + } void tearDown(void) @@ -314,134 +312,6 @@ void test_ehci_data(void) TEST_IGNORE(); } -//--------------------------------------------------------------------+ -// Initialization -//--------------------------------------------------------------------+ -void test_hcd_init_data(void) -{ - uint32_t random_data = 0x1234; - memcpy(&ehci_data, &random_data, sizeof(random_data)); - - hcd_init(); - - //------------- check memory data -------------// - for(uint32_t i=0; iusb_int_enable_bit.usb_error); - TEST_ASSERT(regs->usb_int_enable_bit.port_change_detect); - TEST_ASSERT(regs->usb_int_enable_bit.async_advance); - - TEST_ASSERT_FALSE(regs->usb_int_enable_bit.framelist_rollover); - TEST_ASSERT_FALSE(regs->usb_int_enable_bit.pci_host_system_error); - - TEST_ASSERT_FALSE(regs->usb_int_enable_bit.usb); - TEST_ASSERT_TRUE(regs->usb_int_enable_bit.nxp_int_async); - TEST_ASSERT_TRUE(regs->usb_int_enable_bit.nxp_int_period); - - TEST_IGNORE_MESSAGE("not use nxp int async/period, use usbint instead"); - } -} - -void test_hcd_init_async_list(void) -{ - hcd_init(); - - for(uint32_t i=0; iasync_list_base); - - TEST_ASSERT_EQUAL_HEX(async_head, align32(async_head) ); - TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, async_head->next.type); - TEST_ASSERT_FALSE(async_head->next.terminate); - - TEST_ASSERT(async_head->head_list_flag); - TEST_ASSERT(async_head->qtd_overlay.next.terminate); - TEST_ASSERT(async_head->qtd_overlay.alternate.terminate); - TEST_ASSERT(async_head->qtd_overlay.halted); - } -} - -void test_hcd_init_period_list(void) -{ -#if EHCI_PERIODIC_LIST - hcd_init(); - - for(uint32_t i=0; iperiodic_list_base); - for(uint32_t list_idx=0; list_idx < EHCI_FRAMELIST_SIZE; list_idx++) - { - TEST_ASSERT_EQUAL_HEX( (uint32_t) period_head, align32((uint32_t)framelist[list_idx].address) ); - TEST_ASSERT_FALSE(framelist[list_idx].terminate); - TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, framelist[list_idx].type); - } - - TEST_ASSERT(period_head->smask) - TEST_ASSERT_TRUE(period_head->next.terminate); - TEST_ASSERT(period_head->qtd_overlay.next.terminate); - TEST_ASSERT(period_head->qtd_overlay.alternate.terminate); - TEST_ASSERT(period_head->qtd_overlay.halted); - } -#endif -} - -void test_hcd_init_tt_control(void) -{ - hcd_init(); - - for(uint32_t i=0; itt_control); - } -} - -void test_hcd_init_usbcmd(void) -{ - hcd_init(); - - for(uint32_t i=0; iusb_cmd_bit.async_enable); - -#if EHCI_PERIODIC_LIST - TEST_ASSERT(regs->usb_cmd_bit.periodic_enable); -#else - TEST_ASSERT_FALSE(regs->usb_cmd_bit.periodic_enable); -#endif - - //------------- Framelist size (NXP specific) -------------// - TEST_ASSERT_BITS(BIN8(11), EHCI_CFG_FRAMELIST_SIZE_BITS, regs->usb_cmd_bit.framelist_size); - TEST_ASSERT_EQUAL(EHCI_CFG_FRAMELIST_SIZE_BITS >> 2, regs->usb_cmd_bit.nxp_framelist_size_msb); - } - -} //--------------------------------------------------------------------+ // Helper //--------------------------------------------------------------------+