diff options
| author | jacqueline <me@jacqueline.id.au> | 2022-11-15 16:36:42 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2022-11-15 16:39:54 +1100 |
| commit | 07e1b5a3284201b4eac36a15c361b85dfba147b5 (patch) | |
| tree | d623b7b31192486aa4fb0293f5ea5aa36c936a9c /test | |
| parent | aef2eb7566e7f8f6caf2481942ce67a31f007563 (diff) | |
| download | tangara-fw-07e1b5a3284201b4eac36a15c361b85dfba147b5.tar.gz | |
WIP debug console for testing playback
Diffstat (limited to 'test')
| -rw-r--r-- | test/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | test/main/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | test/main/main.cpp | 84 |
3 files changed, 21 insertions, 70 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1b1ae818..0834a2b8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -9,7 +9,10 @@ idf_build_set_property( # Treat warnings as errors for test purposes. list(APPEND EXTRA_WARNINGS "-Werror") -list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/src/drivers") +list(APPEND EXTRA_COMPONENT_DIRS + "$ENV{PROJ_PATH}/src/drivers" + "$ENV{PROJ_PATH}/src/dev_console" + ) # List all components that include tests here. set(TEST_COMPONENTS "drivers") diff --git a/test/main/CMakeLists.txt b/test/main/CMakeLists.txt index 650dcc24..f0d35421 100644 --- a/test/main/CMakeLists.txt +++ b/test/main/CMakeLists.txt @@ -1,4 +1,4 @@ idf_component_register( SRCS "main.cpp" INCLUDE_DIRS "." - REQUIRES "catch2") + REQUIRES "catch2 dev_console") diff --git a/test/main/main.cpp b/test/main/main.cpp index 9e01dbc0..13369cb4 100644 --- a/test/main/main.cpp +++ b/test/main/main.cpp @@ -1,63 +1,13 @@ #include <stdio.h> -#include <string.h> - -#include <algorithm> -#include <iostream> -#include <string> +#include <cstdint> #include "esp_console.h" #include "esp_log.h" -#include "esp_system.h" #include "catch_runner.hpp" +#include "console.hpp" -int exec_loglevel(int argc, char** argv) { - static const std::string usage = - "usage: loglevel [VERBOSE,DEBUG,INFO,WARN,ERROR,NONE]"; - if (argc != 2) { - std::cout << usage << std::endl; - return 1; - } - std::string level_str = argv[1]; - std::transform(level_str.begin(), level_str.end(), level_str.begin(), - [](unsigned char c) { return std::toupper(c); }); - - esp_log_level_t level; - if (level_str == "VERBOSE") { - level = ESP_LOG_VERBOSE; - } else if (level_str == "DEBUG") { - level = ESP_LOG_DEBUG; - } else if (level_str == "INFO") { - level = ESP_LOG_INFO; - } else if (level_str == "WARN") { - level = ESP_LOG_WARN; - } else if (level_str == "ERROR") { - level = ESP_LOG_ERROR; - } else if (level_str == "NONE") { - level = ESP_LOG_NONE; - } else { - std::cout << usage << std::endl; - return 1; - } - - esp_log_level_set("*", level); - - return 0; -} - -void register_loglevel() { - esp_console_cmd_t cmd{ - .command = "loglevel", - .help = - "Sets the log level to one of \"VERBOSE\", \"DEBUG\", \"INFO\", " - "\"WARN\", \"ERROR\", \"NONE\"", - .hint = "level", - .func = &exec_loglevel, - .argtable = NULL}; - esp_console_cmd_register(&cmd); -} - -void register_catch2() { +void RegisterCatch2() { esp_console_cmd_t cmd{ .command = "catch", .help = "Execute the catch2 test runner. Use -? for options.", @@ -67,23 +17,21 @@ void register_catch2() { esp_console_cmd_register(&cmd); } -extern "C" void app_main(void) { - esp_console_repl_t* repl = nullptr; - esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT(); - repl_config.max_history_len = 16; - repl_config.prompt = " →"; - repl_config.max_cmdline_length = 256; - // Catch2 needs a huge stack, since it does a lot of pretty string formatting. - repl_config.task_stack_size = 1024 * 24; +namespace console { - esp_console_dev_uart_config_t hw_config = - ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT(); - ESP_ERROR_CHECK(esp_console_new_repl_uart(&hw_config, &repl_config, &repl)); +class TestConsole : public Console { + protected: + virtual auto RegisterExtraComponents() -> void { RegisterCatch2(); } + virtual auto GetStackSizeKiB() -> uint16_t { + // Catch2 requires a particularly large stack. + return 24; + } +}; - esp_console_register_help_command(); - register_loglevel(); - register_catch2(); +} // namespace console +extern "C" void app_main(void) { esp_log_level_set("*", ESP_LOG_WARN); - ESP_ERROR_CHECK(esp_console_start_repl(repl)); + console::Console* c = new console::TestConsole(); + c->Launch(); } |
