2023-10-09 22:37:46 +11:00
|
|
|
/*
|
|
|
|
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "esp_console.h"
|
|
|
|
#include "esp_log.h"
|
|
|
|
#include "console_simple_init.h"
|
|
|
|
|
2023-10-24 16:37:31 +02:00
|
|
|
|
2023-10-09 22:37:46 +11:00
|
|
|
static esp_console_repl_t *repl = NULL;
|
|
|
|
static const char *TAG = "console_simple_init";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Initializes the esp console
|
2023-10-24 16:37:31 +02:00
|
|
|
* @return ESP_OK on success
|
2023-10-09 22:37:46 +11:00
|
|
|
*/
|
|
|
|
esp_err_t console_cmd_init(void)
|
|
|
|
{
|
|
|
|
esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT();
|
|
|
|
|
|
|
|
// install console REPL environment
|
|
|
|
#if defined(CONFIG_ESP_CONSOLE_UART_DEFAULT) || defined(CONFIG_ESP_CONSOLE_UART_CUSTOM)
|
|
|
|
esp_console_dev_uart_config_t hw_config = ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT();
|
|
|
|
return esp_console_new_repl_uart(&hw_config, &repl_config, &repl);
|
|
|
|
|
|
|
|
#elif defined(CONFIG_ESP_CONSOLE_USB_CDC)
|
|
|
|
esp_console_dev_usb_cdc_config_t hw_config = ESP_CONSOLE_DEV_CDC_CONFIG_DEFAULT();
|
|
|
|
return esp_console_new_repl_usb_cdc(&hw_config, &repl_config, &repl);
|
|
|
|
|
|
|
|
#elif defined(CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG)
|
|
|
|
esp_console_dev_usb_serial_jtag_config_t hw_config = ESP_CONSOLE_DEV_USB_SERIAL_JTAG_CONFIG_DEFAULT();
|
|
|
|
return esp_console_new_repl_usb_serial_jtag(&hw_config, &repl_config, &repl);
|
|
|
|
|
|
|
|
#else
|
|
|
|
#error Unsupported console type
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2023-10-24 16:37:31 +02:00
|
|
|
* @brief Register a user supplied command
|
2023-10-09 22:37:46 +11:00
|
|
|
*
|
|
|
|
* @param[in] cmd string that is the user defined command
|
|
|
|
* @param[in] do_user_cmd Function pointer for a user-defined command callback function
|
|
|
|
*
|
2023-10-24 16:37:31 +02:00
|
|
|
* @return ESP_OK on success
|
2023-10-09 22:37:46 +11:00
|
|
|
*/
|
|
|
|
esp_err_t console_cmd_user_register(char *cmd, esp_console_cmd_func_t do_user_cmd)
|
|
|
|
{
|
|
|
|
esp_err_t ret;
|
|
|
|
|
|
|
|
const esp_console_cmd_t user_cmd = {
|
|
|
|
.command = cmd,
|
|
|
|
.help = "User defined command",
|
|
|
|
.hint = NULL,
|
|
|
|
.func = do_user_cmd,
|
|
|
|
};
|
|
|
|
|
|
|
|
ret = esp_console_cmd_register(&user_cmd);
|
|
|
|
if (ret) {
|
|
|
|
ESP_LOGE(TAG, "Unable to register user cmd");
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2023-10-24 16:37:31 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Register all the console commands in .console_cmd_desc section
|
|
|
|
*
|
|
|
|
* @return ESP_OK on success
|
|
|
|
*/
|
|
|
|
esp_err_t console_cmd_all_register(void)
|
|
|
|
{
|
|
|
|
esp_err_t ret = ESP_FAIL;
|
|
|
|
extern const console_cmd_plugin_desc_t _console_cmd_array_start;
|
|
|
|
extern const console_cmd_plugin_desc_t _console_cmd_array_end;
|
|
|
|
|
|
|
|
ESP_LOGI(TAG, "List of Console commands:\n");
|
|
|
|
for (const console_cmd_plugin_desc_t *it = &_console_cmd_array_start; it != &_console_cmd_array_end; ++it) {
|
|
|
|
ESP_LOGI(TAG, "- Command '%s', function plugin_regd_fn=%p\n", it->name, it->plugin_regd_fn);
|
|
|
|
if (it->plugin_regd_fn != NULL) {
|
|
|
|
ret = (it->plugin_regd_fn)();
|
|
|
|
if (ret != ESP_OK) {
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return ESP_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2023-10-09 22:37:46 +11:00
|
|
|
/**
|
|
|
|
* @brief Starts the esp console
|
2023-10-24 16:37:31 +02:00
|
|
|
* @return ESP_OK on success
|
2023-10-09 22:37:46 +11:00
|
|
|
*/
|
|
|
|
esp_err_t console_cmd_start(void)
|
|
|
|
{
|
|
|
|
// start console REPL
|
|
|
|
return esp_console_start_repl(repl);
|
|
|
|
}
|