diff options
-rw-r--r-- | Makefile.toolchain | 1 | ||||
-rw-r--r-- | cts/build.mk | 2 | ||||
-rw-r--r-- | cts/common/cts_common.c | 31 | ||||
-rw-r--r-- | cts/common/cts_common.h | 48 | ||||
-rw-r--r-- | cts/common/cts_testlist.h | 30 | ||||
-rw-r--r-- | cts/common/dut_common.c | 8 | ||||
-rw-r--r-- | cts/common/dut_common.h | 13 | ||||
-rw-r--r-- | cts/common/th_common.c | 1 | ||||
-rw-r--r-- | cts/common/th_common.h | 13 | ||||
-rw-r--r-- | cts/gpio/cts.testlist | 2 | ||||
-rw-r--r-- | cts/gpio/dut.c | 22 | ||||
-rw-r--r-- | cts/gpio/th.c | 22 | ||||
-rw-r--r-- | cts/hook/dut.c | 22 | ||||
-rw-r--r-- | cts/i2c/dut.c | 19 | ||||
-rw-r--r-- | cts/i2c/th.c | 24 | ||||
-rw-r--r-- | cts/interrupt/dut.c | 28 | ||||
-rw-r--r-- | cts/interrupt/th.c | 32 | ||||
-rw-r--r-- | cts/meta/cts.testlist | 54 | ||||
-rw-r--r-- | cts/meta/dut.c | 36 | ||||
-rw-r--r-- | cts/meta/th.c | 47 | ||||
-rw-r--r-- | cts/task/dut.c | 19 | ||||
-rw-r--r-- | cts/timer/dut.c | 25 | ||||
-rw-r--r-- | cts/timer/th.c | 22 |
23 files changed, 169 insertions, 352 deletions
diff --git a/Makefile.toolchain b/Makefile.toolchain index 05d5d1255c..8bbac56dcd 100644 --- a/Makefile.toolchain +++ b/Makefile.toolchain @@ -43,7 +43,6 @@ CFLAGS_INCLUDE=$(foreach i,$(includes),-I$(i) ) -I. CFLAGS_TEST=$(if $(TEST_BUILD),-DTEST_BUILD \ -DTEST_TASKFILE=$(PROJECT).tasklist,) \ $(if $(CTS_MODULE), $(CFLAGS_CTS)) \ - $(if $(CTS_DEBUG), -DCTS_DEBUG=DEFINED) \ $(if $(EMU_BUILD),-DEMU_BUILD) \ $(if $($(PROJECT)-scale),-DTEST_TIME_SCALE=$($(PROJECT)-scale)) \ -DTEST_$(PROJECT) -DTEST_$(UC_PROJECT) diff --git a/cts/build.mk b/cts/build.mk index 63b51c6fbf..ddbcb1e95f 100644 --- a/cts/build.mk +++ b/cts/build.mk @@ -17,6 +17,8 @@ CONFIG_I2C_MASTER=y endif endif +cts-y+=common/cts_common.o + ifeq ($(BOARD),stm32l476g-eval) cts-y+=$(CTS_MODULE)/th.o cts-y+=common/th_common.o diff --git a/cts/common/cts_common.c b/cts/common/cts_common.c new file mode 100644 index 0000000000..8975636655 --- /dev/null +++ b/cts/common/cts_common.c @@ -0,0 +1,31 @@ +/* Copyright 2017 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "console.h" +#include "cts_common.h" + +__attribute__((weak)) void clean_state(void) +{ + /* Each test overrides as needed */ +} + +void cts_main_loop(const struct cts_test* tests, const char *name) +{ + enum cts_rc rc; + int i; + + cflush(); + for (i = 0; i < cts_test_count; i++) { + CPRINTF("\n%s start\n", tests[i].name); + cflush(); + clean_state(); + sync(); + rc = tests[i].run(); + CPRINTF("\n%s end %d\n", tests[i].name, rc); + cflush(); + } + + CPRINTS("%s test suite finished", name); +} diff --git a/cts/common/cts_common.h b/cts/common/cts_common.h index 3c24b815e7..13a435e655 100644 --- a/cts/common/cts_common.h +++ b/cts/common/cts_common.h @@ -15,29 +15,41 @@ #define CPRINTL(format, args...) CPRINTS("%s:%d: "format, \ __func__, __LINE__, ## args) -#ifdef CTS_DEBUG -/* These debug tags should not be changed */ -#define CTS_DEBUG_START "\n[DEBUG]\n" -#define CTS_DEBUG_END "\n[DEBUG_END]\n" - -#define CTS_DEBUG_PRINTF(format, args...) \ - do { \ - CPRINTF(CTS_DEBUG_START format CTS_DEBUG_END, ## args); \ - cflush(); \ - } while (0) -#else -#define CTS_DEBUG_PRINTF(format, args...) -#endif - #define READ_WAIT_TIME_MS 100 #define CTS_INTERRUPT_TRIGGER_DELAY_US (250 * MSEC) -/* In a single test, only one board can return unknown, the other must - * return a useful result (i.e. success, failure, etc) - */ - enum cts_rc { #include "cts.rc" }; +struct cts_test { + enum cts_rc (*run)(void); + char *name; +}; + +extern const int cts_test_count; + +/** + * Main loop where each test in a suite is executed + * + * A test suite can implement its custom loop as needed. + * + * Args: + * @test: List of tests to run + * @name: Name of the test to be printed on EC console + */ +void cts_main_loop(const struct cts_test* tests, const char *name); + +/** + * Callback function called at the beginning of the main loop + */ +void clean_state(void); + +/** + * Synchronize DUT and TH + * + * @return CTS_RC_SUCCESS if sync is successful + */ +enum cts_rc sync(void); + #endif diff --git a/cts/common/cts_testlist.h b/cts/common/cts_testlist.h index 9e18c7f8eb..1586c1348e 100644 --- a/cts/common/cts_testlist.h +++ b/cts/common/cts_testlist.h @@ -3,26 +3,28 @@ * found in the LICENSE file. */ +#include "util.h" + /* - * CTS_TEST macro is used by dut.c, th.c, and cts.py. Currently, the 2nd - * and 3rd arguments are only used by cts.py. They specify the expected - * strings output by TH and DUT, respectively. + * CTS_TEST macro takes the following arguments: + * + * @test: Function running the test + * @th_rc: Expected CTS_RC_* from TH + * @th_string: Expected string printed by TH + * @dut_rc: Expected CTR_RC_* from DUT + * @dut_string: Expected string printed by DUT + * + * CTS_TEST macro is processed in multiple places. One is here for creating + * an array of test functions. Only @test is used. + * + * Another is in cts.py for evaluating the test results against expectations. */ -struct cts_test { - enum cts_rc (*run)(void); - char *name; -}; - +#undef CTS_TEST #define CTS_TEST(test, th_rc, th_string, dut_rc, dut_string) \ {test, STRINGIFY(test)}, struct cts_test tests[] = { #include "cts.testlist" }; -#undef CTS_TEST -#define CTS_TEST(test, th_rc, th_string, dut_rc, dut_string) CTS_TEST_ID_##test, -enum { -#include "cts.testlist" - CTS_TEST_ID_COUNT, -}; +const int cts_test_count = ARRAY_SIZE(tests); diff --git a/cts/common/dut_common.c b/cts/common/dut_common.c index 23315f970f..6e62a280e2 100644 --- a/cts/common/dut_common.c +++ b/cts/common/dut_common.c @@ -3,15 +3,10 @@ * found in the LICENSE file. */ +#include "cts_common.h" #include "gpio.h" -#include "timer.h" #include "watchdog.h" -#include "cts_common.h" -#include "dut_common.h" -/* Returns unknown because TH could potentially still get stuck - * even if the DUT completes the sync - */ enum cts_rc sync(void) { int input_level; @@ -30,3 +25,4 @@ enum cts_rc sync(void) return CTS_RC_SUCCESS; } + diff --git a/cts/common/dut_common.h b/cts/common/dut_common.h deleted file mode 100644 index f812631633..0000000000 --- a/cts/common/dut_common.h +++ /dev/null @@ -1,13 +0,0 @@ -/* Copyright 2016 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef __DUT_COMMON_H -#define __DUT_COMMON_H - -#include "cts_common.h" - -enum cts_rc sync(void); - -#endif diff --git a/cts/common/th_common.c b/cts/common/th_common.c index bcab367658..1d692b7843 100644 --- a/cts/common/th_common.c +++ b/cts/common/th_common.c @@ -7,7 +7,6 @@ #include "timer.h" #include "watchdog.h" #include "cts_common.h" -#include "th_common.h" /* Return SUCCESS if and only if we reach end of function * Returning success here means sync was successful diff --git a/cts/common/th_common.h b/cts/common/th_common.h deleted file mode 100644 index 339375c78c..0000000000 --- a/cts/common/th_common.h +++ /dev/null @@ -1,13 +0,0 @@ -/* Copyright 2016 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef __TH_COMMON_H -#define __TH_COMMON_H - -#include "cts_common.h" - -enum cts_rc sync(void); - -#endif diff --git a/cts/gpio/cts.testlist b/cts/gpio/cts.testlist index be303067a3..113d2b405f 100644 --- a/cts/gpio/cts.testlist +++ b/cts/gpio/cts.testlist @@ -3,8 +3,6 @@ * found in the LICENSE file. */ -/* Currently tests will execute in the order they are listed here */ - /* Test whether sync completes successfully */ CTS_TEST(sync_test,,,,) diff --git a/cts/gpio/dut.c b/cts/gpio/dut.c index c5b6bf813f..828996db8e 100644 --- a/cts/gpio/dut.c +++ b/cts/gpio/dut.c @@ -6,9 +6,9 @@ #include "common.h" #include "watchdog.h" #include "uart.h" +#include "task.h" #include "timer.h" #include "watchdog.h" -#include "dut_common.h" #include "cts_common.h" enum cts_rc sync_test(void) @@ -75,22 +75,6 @@ enum cts_rc od_read_high_test(void) void cts_task(void) { - enum cts_rc result; - int i; - - uart_flush_output(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - result = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, result); - uart_flush_output(); - } - - CPRINTS("GPIO test suite finished"); - uart_flush_output(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "GPIO"); + task_wait_event(-1); } diff --git a/cts/gpio/th.c b/cts/gpio/th.c index d18c1c367a..6c628b0ad5 100644 --- a/cts/gpio/th.c +++ b/cts/gpio/th.c @@ -6,9 +6,9 @@ #include "common.h" #include "watchdog.h" #include "uart.h" +#include "task.h" #include "timer.h" #include "watchdog.h" -#include "dut_common.h" #include "cts_common.h" enum cts_rc sync_test(void) @@ -69,22 +69,6 @@ enum cts_rc od_read_high_test(void) void cts_task(void) { - enum cts_rc result; - int i; - - uart_flush_output(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - result = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, result); - uart_flush_output(); - } - - CPRINTS("GPIO test suite finished"); - uart_flush_output(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "GPIO"); + task_wait_event(-1); } diff --git a/cts/hook/dut.c b/cts/hook/dut.c index 8be9121128..17f7c90506 100644 --- a/cts/hook/dut.c +++ b/cts/hook/dut.c @@ -8,8 +8,8 @@ #include "common.h" #include "console.h" #include "cts_common.h" -#include "dut_common.h" #include "hooks.h" +#include "task.h" #include "timer.h" #include "util.h" #include "watchdog.h" @@ -160,22 +160,6 @@ static enum cts_rc test_deferred(void) void cts_task(void) { - enum cts_rc result; - int i; - - cflush(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - result = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, result); - cflush(); - } - - CPRINTS("Hook test finished"); - cflush(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Hook"); + task_wait_event(-1); } diff --git a/cts/i2c/dut.c b/cts/i2c/dut.c index b629475ffa..98805a4fc2 100644 --- a/cts/i2c/dut.c +++ b/cts/i2c/dut.c @@ -6,9 +6,9 @@ #include "common.h" #include "cts_common.h" #include "cts_i2c.h" -#include "dut_common.h" #include "i2c.h" #include "registers.h" +#include "task.h" #include "timer.h" #include "uart.h" #include "watchdog.h" @@ -86,19 +86,6 @@ enum cts_rc read32_test(void) void cts_task(void) { - int i; - - cflush(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s %d\n", tests[i].name, tests[i].run()); - uart_flush_output(); - } - - CPRINTS("I2C test suite finished"); - uart_flush_output(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "I2C"); + task_wait_event(-1); } diff --git a/cts/i2c/th.c b/cts/i2c/th.c index 86c3a2c8de..17ed64b9f5 100644 --- a/cts/i2c/th.c +++ b/cts/i2c/th.c @@ -7,9 +7,9 @@ #include "common.h" #include "cts_common.h" #include "cts_i2c.h" -#include "dut_common.h" #include "i2c.h" #include "registers.h" +#include "task.h" #include "timer.h" #include "uart.h" #include "watchdog.h" @@ -61,7 +61,7 @@ static int wait_for_in_flag(uint32_t timeout_ms) return 1; } -static void clear_inbox(void) +void clean_state(void) { memset(inbox, 0, sizeof(inbox)); data_received = 0; @@ -146,22 +146,6 @@ enum cts_rc read32_test(void) void cts_task(void) { - enum cts_rc result; - int i; - - cflush(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - clear_inbox(); - sync(); - result = tests[i].run(); - CPRINTF("\n%s %d\n", tests[i].name, result); - uart_flush_output(); - } - - CPRINTS("I2C test suite finished"); - uart_flush_output(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "I2C"); + task_wait_event(-1); } diff --git a/cts/interrupt/dut.c b/cts/interrupt/dut.c index 35b47001ca..3c83e5701f 100644 --- a/cts/interrupt/dut.c +++ b/cts/interrupt/dut.c @@ -5,10 +5,10 @@ #include <string.h> #include "common.h" +#include "cts_common.h" #include "gpio.h" #include "registers.h" #include "task.h" -#include "dut_common.h" #include "timer.h" #include "watchdog.h" @@ -64,10 +64,11 @@ void cts_irq2(enum gpio_signal signal) state[state_index++] = 'D'; } -static void clear_state(void) +void clean_state(void) { uint32_t *event; + interrupt_enable(); got_interrupt = 0; wake_me_up = 0; state_index = 0; @@ -176,27 +177,8 @@ enum cts_rc test_nested_interrupt_high_low(void) void cts_task(void) { - enum cts_rc rc; - int i; - gpio_enable_interrupt(GPIO_CTS_IRQ1); gpio_enable_interrupt(GPIO_CTS_IRQ2); - interrupt_enable(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - clear_state(); - sync(); - CPRINTF("\n%s start\n", tests[i].name); - rc = tests[i].run(); - interrupt_enable(); - CPRINTF("\n%s end %d\n", tests[i].name, rc); - cflush(); - } - - CPRINTS("Interrupt test suite finished"); - cflush(); - - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Interrupt"); + task_wait_event(-1); } diff --git a/cts/interrupt/th.c b/cts/interrupt/th.c index b409fbd8ef..1639a1868c 100644 --- a/cts/interrupt/th.c +++ b/cts/interrupt/th.c @@ -4,11 +4,18 @@ */ #include "common.h" -#include "th_common.h" +#include "cts_common.h" #include "gpio.h" +#include "task.h" #include "timer.h" #include "watchdog.h" +void clean_state(void) +{ + gpio_set_level(GPIO_OUTPUT_TEST, 1); + gpio_set_level(GPIO_CTS_IRQ2, 1); +} + static void trigger_interrupt1(void) { usleep(CTS_INTERRUPT_TRIGGER_DELAY_US); @@ -65,26 +72,7 @@ enum cts_rc test_nested_interrupt_high_low(void) void cts_task(void) { - enum cts_rc rc; - int i; - gpio_set_flags(GPIO_OUTPUT_TEST, GPIO_ODR_HIGH); - - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - gpio_set_level(GPIO_OUTPUT_TEST, 1); - gpio_set_level(GPIO_CTS_IRQ2, 1); - sync(); - CPRINTF("\n%s start\n", tests[i].name); - rc = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, rc); - cflush(); - } - - CPRINTS("Interrupt test suite finished"); - cflush(); - - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Interrupt"); + task_wait_event(-1); } diff --git a/cts/meta/cts.testlist b/cts/meta/cts.testlist index d453d33e51..443f1b7376 100644 --- a/cts/meta/cts.testlist +++ b/cts/meta/cts.testlist @@ -3,50 +3,50 @@ * found in the LICENSE file. */ -/* Currently tests will execute in the order they are listed here */ - -/* Test should succeed show the following debug output: - * You should see #'s 1-4 on sequential lines: - * 1 - * 2 - * 3 - * 4 - */ -CTS_TEST(debug_test,,,,) - -/* Test should succeed if both report success - * (expected result: success) +/* + * Test SUCCESS from both TH and DUT */ CTS_TEST(success_test,,,,) -/* Test should fail if one reports success and - * (one reports failure (expected result: failure) +/* + * Test FAILURE from DUT */ CTS_TEST(fail_dut_test,,, CTS_RC_FAILURE,) -/* Test should fail if one reports success and - * (one reports failure (expected result: failure) +/* + * Test FAILURE from TH */ CTS_TEST(fail_th_test, CTS_RC_FAILURE,,,) -/* Test should fail when both boards report failure - * (expected result: failure) +/* + * Test failure from both TH and DUT. */ CTS_TEST(fail_both_test, CTS_RC_FAILURE,, CTS_RC_FAILURE,) -/* Test should fail with bad sync if one reports bad - * sync and the other reports success (expected result: - * bad_sync) +/* + * Test bad sync for TH */ CTS_TEST(bad_sync_and_success_test, CTS_RC_BAD_SYNC,,,) -/* Test should fail with bad sync if both boards report - * bad sync (expected result: bad_sync) +/* + * Test should fail with bad sync. */ CTS_TEST(bad_sync_both_test, CTS_RC_BAD_SYNC,, CTS_RC_BAD_SYNC,) -/* Test should be listed as corrupted if one test hangs, - * regardless of what the other test outputs - * (expected result: corrupted) +/* + * Test hang on DUT */ CTS_TEST(hang_test, CTS_RC_SUCCESS,, CTS_RC_DID_NOT_END,) + +/* + * Test CTS_RC_DID_NOT_START + * + * Since the previous test hung on DUT, this test won't run on DUT. + * TH will wait forever in sync(), thus won't end. + */ + CTS_TEST(did_not_start_test, CTS_RC_DID_NOT_END,, CTS_RC_DID_NOT_START,) + +/* + * TODO: Add test for expected string + * TODO: Make sync() return CTS_RC_BAD_SYNC when it times out. + */
\ No newline at end of file diff --git a/cts/meta/dut.c b/cts/meta/dut.c index b80628449b..c8264ab868 100644 --- a/cts/meta/dut.c +++ b/cts/meta/dut.c @@ -4,16 +4,11 @@ */ #include "common.h" -#include "uart.h" +#include "cts_common.h" +#include "task.h" #include "timer.h" +#include "uart.h" #include "watchdog.h" -#include "dut_common.h" -#include "cts_common.h" - -enum cts_rc debug_test(void) -{ - return CTS_RC_SUCCESS; -} enum cts_rc success_test(void) { @@ -55,26 +50,15 @@ enum cts_rc hang_test(void) return CTS_RC_SUCCESS; } +enum cts_rc did_not_start_test(void) +{ + return CTS_RC_SUCCESS; +} + #include "cts_testlist.h" void cts_task(void) { - enum cts_rc result; - int i; - - cflush(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - result = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, result); - cflush(); - } - - CPRINTS("Meta test finished"); - cflush(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Meta"); + task_wait_event(-1); } diff --git a/cts/meta/th.c b/cts/meta/th.c index c1331ff2a7..8564377b7f 100644 --- a/cts/meta/th.c +++ b/cts/meta/th.c @@ -4,60 +4,49 @@ */ #include "common.h" -#include "uart.h" +#include "cts_common.h" +#include "task.h" #include "timer.h" +#include "uart.h" #include "watchdog.h" -#include "dut_common.h" -#include "cts_common.h" - -enum cts_rc debug_test(void) -{ - CTS_DEBUG_PRINTF("You should see #'s 1-4 on sequential lines:"); - CTS_DEBUG_PRINTF("1"); - CTS_DEBUG_PRINTF("2\n3"); - CTS_DEBUG_PRINTF("4"); - return CTS_RC_SUCCESS; -} enum cts_rc success_test(void) { - CTS_DEBUG_PRINTF("Expect: Success"); return CTS_RC_SUCCESS; } enum cts_rc fail_dut_test(void) { - CTS_DEBUG_PRINTF("Expect: Failure"); return CTS_RC_SUCCESS; } enum cts_rc fail_th_test(void) { - CTS_DEBUG_PRINTF("Expect: Failure"); return CTS_RC_FAILURE; } enum cts_rc fail_both_test(void) { - CTS_DEBUG_PRINTF("Expect: Failure"); return CTS_RC_FAILURE; } enum cts_rc bad_sync_and_success_test(void) { - CTS_DEBUG_PRINTF("Expect: Bad Sync"); return CTS_RC_BAD_SYNC; } enum cts_rc bad_sync_both_test(void) { - CTS_DEBUG_PRINTF("Expect: Bad Sync"); return CTS_RC_BAD_SYNC; } enum cts_rc hang_test(void) { - CTS_DEBUG_PRINTF("This and next, expect: Corrupted"); + return CTS_RC_SUCCESS; +} + +enum cts_rc did_not_start_test(void) +{ return CTS_RC_SUCCESS; } @@ -65,22 +54,6 @@ enum cts_rc hang_test(void) void cts_task(void) { - enum cts_rc result; - int i; - - cflush(); - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - result = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, result); - cflush(); - } - - CPRINTS("Meta test finished"); - cflush(); - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Meta"); + task_wait_event(-1); } diff --git a/cts/task/dut.c b/cts/task/dut.c index 4cc6e3e4a4..0ca39df926 100644 --- a/cts/task/dut.c +++ b/cts/task/dut.c @@ -13,7 +13,7 @@ static int repeat_count; static int wake_count[3]; -void clear_state(void) +void clean_state(void) { wake_count[0] = wake_count[1] = wake_count[2] = 0; } @@ -135,22 +135,7 @@ enum cts_rc test_stack_overflow(void) void cts_task(void) { - enum cts_rc rc; - int i; - task_wake(TASK_ID_TICK); - - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - clear_state(); - CPRINTF("\n%s start\n", tests[i].name); - rc = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, rc); - cflush(); - } - - CPRINTS("Task test suite finished"); - cflush(); - - /* Sleep forever */ + cts_main_loop(tests, "Task"); task_wait_event(-1); } diff --git a/cts/timer/dut.c b/cts/timer/dut.c index 4089964791..96d7c5a3cf 100644 --- a/cts/timer/dut.c +++ b/cts/timer/dut.c @@ -4,8 +4,9 @@ */ #include "common.h" -#include "dut_common.h" +#include "cts_common.h" #include "gpio.h" +#include "task.h" #include "timer.h" #include "watchdog.h" @@ -14,7 +15,7 @@ static enum cts_rc timer_calibration_test(void) gpio_set_flags(GPIO_OUTPUT_TEST, GPIO_ODR_HIGH); sync(); - usleep(SECOND); + sleep(1); gpio_set_level(GPIO_OUTPUT_TEST, 0); return CTS_RC_SUCCESS; @@ -24,22 +25,6 @@ static enum cts_rc timer_calibration_test(void) void cts_task(void) { - enum cts_rc rc; - int i; - - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - rc = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, rc); - cflush(); - } - - CPRINTS("Timer test suite finished"); - cflush(); - - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Timer"); + task_wait_event(-1); } diff --git a/cts/timer/th.c b/cts/timer/th.c index 4c9912fdda..e82cac71ab 100644 --- a/cts/timer/th.c +++ b/cts/timer/th.c @@ -4,10 +4,10 @@ */ #include "common.h" +#include "cts_common.h" #include "gpio.h" #include "registers.h" #include "task.h" -#include "th_common.h" #include "timer.h" #include "watchdog.h" @@ -57,22 +57,6 @@ static enum cts_rc timer_calibration_test(void) void cts_task(void) { - enum cts_rc rc; - int i; - - for (i = 0; i < CTS_TEST_ID_COUNT; i++) { - sync(); - CPRINTF("\n%s start\n", tests[i].name); - rc = tests[i].run(); - CPRINTF("\n%s end %d\n", tests[i].name, rc); - cflush(); - } - - CPRINTS("Timer test suite finished"); - cflush(); - - while (1) { - watchdog_reload(); - sleep(1); - } + cts_main_loop(tests, "Timer"); + task_wait_event(-1); } |