/* 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. */ #include "common.h" #include "watchdog.h" #include "uart.h" #include "timer.h" #include "watchdog.h" #include "dut_common.h" #include "cts_common.h" enum cts_rc sync_test(void) { return CTS_RC_SUCCESS; } enum cts_rc set_high_test(void) { int level; gpio_set_flags(GPIO_INPUT_TEST, GPIO_INPUT | GPIO_PULL_UP); msleep(READ_WAIT_TIME_MS); level = gpio_get_level(GPIO_INPUT_TEST); if (level) return CTS_RC_SUCCESS; else return CTS_RC_FAILURE; } enum cts_rc set_low_test(void) { int level; gpio_set_flags(GPIO_INPUT_TEST, GPIO_INPUT | GPIO_PULL_UP); msleep(READ_WAIT_TIME_MS); level = gpio_get_level(GPIO_INPUT_TEST); if (!level) return CTS_RC_SUCCESS; else return CTS_RC_FAILURE; } enum cts_rc read_high_test(void) { gpio_set_flags(GPIO_OUTPUT_TEST, GPIO_ODR_LOW); gpio_set_level(GPIO_OUTPUT_TEST, 1); msleep(READ_WAIT_TIME_MS*2); return CTS_RC_SUCCESS; } enum cts_rc read_low_test(void) { gpio_set_flags(GPIO_OUTPUT_TEST, GPIO_ODR_LOW); gpio_set_level(GPIO_OUTPUT_TEST, 0); msleep(READ_WAIT_TIME_MS*2); return CTS_RC_SUCCESS; } enum cts_rc od_read_high_test(void) { gpio_set_flags(GPIO_INPUT_TEST, GPIO_OUTPUT | GPIO_ODR_LOW); msleep(READ_WAIT_TIME_MS*2); return CTS_RC_SUCCESS; } #include "cts_testlist.h" void cts_task(void) { enum cts_rc result; int i; uart_flush_output(); for (i = 0; i < CTS_TEST_ID_COUNT; i++) { sync(); result = tests[i].run(); CPRINTF("\n%s %d\n", tests[i].name, result); uart_flush_output(); } CPRINTS("GPIO test suite finished"); uart_flush_output(); while (1) { watchdog_reload(); sleep(1); } }