summaryrefslogtreecommitdiff
path: root/cts
diff options
context:
space:
mode:
Diffstat (limited to 'cts')
-rw-r--r--cts/common/cts_common.h2
-rw-r--r--cts/common/cts_testlist.h21
-rw-r--r--cts/gpio/cts.testlist18
-rw-r--r--cts/gpio/dut.c34
-rw-r--r--cts/gpio/gpio_common.h21
-rw-r--r--cts/gpio/th.c38
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;
}
}