diff options
-rw-r--r-- | cts/common/cts_common.h | 2 | ||||
-rw-r--r-- | cts/common/cts_testlist.h | 21 | ||||
-rw-r--r-- | cts/gpio/cts.testlist | 18 | ||||
-rw-r--r-- | cts/gpio/dut.c | 34 | ||||
-rw-r--r-- | cts/gpio/gpio_common.h | 21 | ||||
-rw-r--r-- | cts/gpio/th.c | 38 |
6 files changed, 69 insertions, 65 deletions
diff --git a/cts/common/cts_common.h b/cts/common/cts_common.h index eed93dccea..4f0036039f 100644 --- a/cts/common/cts_common.h +++ b/cts/common/cts_common.h @@ -13,6 +13,8 @@ #define CPRINTF(format, args...) cprintf(CC_SYSTEM, format, ## args) #define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args) +#define READ_WAIT_TIME_MS 100 + /* In a single test, only one board can return unknown, the other must * return a useful result (i.e. success, failure, etc) */ diff --git a/cts/common/cts_testlist.h b/cts/common/cts_testlist.h new file mode 100644 index 0000000000..8f560d674d --- /dev/null +++ b/cts/common/cts_testlist.h @@ -0,0 +1,21 @@ +/* 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. + */ + +struct cts_test { + enum cts_error_code (*run)(void); + char *name; +}; + +#define CTS_TEST(test) {test, STRINGIFY(test)}, +struct cts_test tests[] = { +#include "cts.testlist" +}; + +#undef CTS_TEST +#define CTS_TEST(test) CTS_TEST_ID_##test, +enum { +#include "cts.testlist" + CTS_TEST_ID_COUNT, +}; diff --git a/cts/gpio/cts.testlist b/cts/gpio/cts.testlist new file mode 100644 index 0000000000..8a6656db1d --- /dev/null +++ b/cts/gpio/cts.testlist @@ -0,0 +1,18 @@ +/* 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. + */ + +/* Test whether sync completes successfully */ +CTS_TEST(sync_test) +/* Check if the dut can set a line low */ +CTS_TEST(set_low_test) +/* Check if the dut can set a line high */ +CTS_TEST(set_high_test) +/* Check if the dut can read a line that is low */ +CTS_TEST(read_high_test) +/* Check if the dut can read a line that is high */ +CTS_TEST(read_low_test) +/* Check if the dut reads its true pin level (success) + or its register level when configured as a low open drain output pin */ +CTS_TEST(od_read_high_test) diff --git a/cts/gpio/dut.c b/cts/gpio/dut.c index c1b32ef0de..20248f2642 100644 --- a/cts/gpio/dut.c +++ b/cts/gpio/dut.c @@ -10,7 +10,6 @@ #include "watchdog.h" #include "dut_common.h" #include "cts_common.h" -#include "gpio_common.h" enum cts_error_code sync_test(void) { @@ -72,43 +71,38 @@ enum cts_error_code od_read_high_test(void) return FAILURE; } +#include "cts_testlist.h" + void cts_task(void) { - enum cts_error_code results[GPIO_CTS_TEST_COUNT]; + enum cts_error_code results[CTS_TEST_ID_COUNT]; int i; - sync(); - results[0] = sync_test(); - sync(); - results[1] = set_low_test(); - sync(); - results[2] = set_high_test(); - sync(); - results[3] = read_high_test(); - sync(); - results[4] = read_low_test(); - sync(); - results[5] = od_read_high_test(); + for (i = 0; i < CTS_TEST_ID_COUNT; i++) { + sync(); + results[i] = tests[i].run(); + } CPRINTS("GPIO test suite finished"); uart_flush_output(); CPRINTS("Results:"); - for (i = 0; i < GPIO_CTS_TEST_COUNT; i++) { + for (i = 0; i < CTS_TEST_ID_COUNT; i++) { switch (results[i]) { case SUCCESS: - CPRINTS("%d) Passed", i); + CPRINTS("%s) Passed", tests[i].name); break; case FAILURE: - CPRINTS("%d) Failed", i); + CPRINTS("%s) Failed", tests[i].name); break; case BAD_SYNC: - CPRINTS("%d) Bad sync", i); + CPRINTS("%s) Bad sync", tests[i].name); break; case UNKNOWN: - CPRINTS("%d) Test result unknown", i); + CPRINTS("%s) Test result unknown", tests[i].name); break; default: - CPRINTS("%d) ErrorCode not recognized", i); + CPRINTS("%s) ErrorCode (%d) not recognized", + tests[i].name, results[i]); break; } } diff --git a/cts/gpio/gpio_common.h b/cts/gpio/gpio_common.h deleted file mode 100644 index b19d23165a..0000000000 --- a/cts/gpio/gpio_common.h +++ /dev/null @@ -1,21 +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 __GPIO_COMMON_H -#define __GPIO_COMMON_H - -/* sync_test tests whether sync completes successfully - * set_low_test checks if the dut can set a line low - * set_high test checks if the dut can set a line high - * read_low_test checks if the dut can read a line that is low - * read_high_test checks if the dut can read a line that is high - * od_read_high_test checks if the dut reads its true pin level (success) - * or its register level when configured as a low open drain output pin - */ - -#define READ_WAIT_TIME_MS 100 -#define GPIO_CTS_TEST_COUNT 6 - -#endif diff --git a/cts/gpio/th.c b/cts/gpio/th.c index ddc46f6602..ed1d582a75 100644 --- a/cts/gpio/th.c +++ b/cts/gpio/th.c @@ -10,7 +10,6 @@ #include "watchdog.h" #include "dut_common.h" #include "cts_common.h" -#include "gpio_common.h" enum cts_error_code sync_test(void) { @@ -66,47 +65,38 @@ enum cts_error_code od_read_high_test(void) return UNKNOWN; } +#include "cts_testlist.h" + void cts_task(void) { - enum cts_error_code results[GPIO_CTS_TEST_COUNT]; + enum cts_error_code results[CTS_TEST_ID_COUNT]; int i; - /* Don't bother checking sync's return value now because - * host will deal with hanging syncs/tests as well as - * interpreting test results later - */ - sync(); - results[0] = sync_test(); - sync(); - results[1] = set_low_test(); - sync(); - results[2] = set_high_test(); - sync(); - results[3] = read_high_test(); - sync(); - results[4] = read_low_test(); - sync(); - results[5] = od_read_high_test(); + for (i = 0; i < CTS_TEST_ID_COUNT; i++) { + sync(); + results[i] = tests[i].run(); + } CPRINTS("GPIO test suite finished"); uart_flush_output(); CPRINTS("Results:"); - for (i = 0; i < GPIO_CTS_TEST_COUNT; i++) { + for (i = 0; i < CTS_TEST_ID_COUNT; i++) { switch (results[i]) { case SUCCESS: - CPRINTS("%d) Passed", i); + CPRINTS("%s) Passed", tests[i].name); break; case FAILURE: - CPRINTS("%d) Failed", i); + CPRINTS("%s) Failed", tests[i].name); break; case BAD_SYNC: - CPRINTS("%d) Bad sync", i); + CPRINTS("%s) Bad sync", tests[i].name); break; case UNKNOWN: - CPRINTS("%d) Test result unknown", i); + CPRINTS("%s) Test result unknown", tests[i].name); break; default: - CPRINTS("%d) ErrorCode not recognized", i); + CPRINTS("%s) ErrorCode (%d) not recognized", + tests[i].name, results[i]); break; } } |