blob: aaa038394bfa29af18386c5ecad2e569e5760ad8 [file] [log] [blame]
/* Copyright 2022 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "common.h"
#include "debug.h"
#include "string.h"
#include "test_util.h"
static bool debugger_connected;
static bool debugger_connected_previously /* = false */;
static void print_usage(void)
{
ccprintf(
"usage: runtest [debugger|no_debugger] [was_debugger|was_no_debugger]\n");
ccprintf("\n");
ccprintf("debugger - "
"There is currently a debugger connected.\n");
ccprintf("no_debugger - "
"There is not currently a debugger connected.\n");
ccprintf("was_debugger - "
"There was previously a debugger connected "
"(only power cycle can reset this).\n");
ccprintf("was_no_debugger - "
"There was not previously a debugger connected "
"(only power cycle can reset this).\n");
}
test_static int test_debugger_is_connected(void)
{
ccprintf("debugger_is_connected: %d\n", debugger_connected);
TEST_EQ(debugger_is_connected(), debugger_connected, "%d");
return EC_SUCCESS;
}
/*
* Note that a reset will not suffice to reset debugger_was_connected() state.
* It must be a power cycle.
*/
test_static int test_debugger_was_connected(void)
{
ccprintf("debugger_was_connected: %d\n", debugger_connected_previously);
TEST_EQ(debugger_was_connected(), debugger_connected_previously, "%d");
return EC_SUCCESS;
}
void run_test(int argc, const char **argv)
{
test_reset();
if (argc < 2) {
print_usage();
test_fail();
return;
}
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "debugger") == 0) {
debugger_connected = true;
} else if (strcmp(argv[i], "no_debugger") == 0) {
debugger_connected = false;
} else if (strcmp(argv[i], "was_debugger") == 0) {
debugger_connected_previously = true;
} else if (strcmp(argv[i], "was_no_debugger") == 0) {
debugger_connected_previously = false;
} else {
print_usage();
test_fail();
return;
}
}
RUN_TEST(test_debugger_is_connected);
RUN_TEST(test_debugger_was_connected);
test_print_result();
}
static int command_debugger_check(int argc, const char **argv)
{
ccprintf("debugger_is_connected() = %d\n", debugger_is_connected());
ccprintf("debugger_was_connected() = %d\n", debugger_was_connected());
return EC_SUCCESS;
}
DECLARE_CONSOLE_COMMAND(debugger, command_debugger_check, "",
"Check detected debugger status.");
OSZAR »