コンソール周辺機器

Console Peripheral

コンソールペリフェラルは、ターミナル画面からオーディオアプリケーションを制御するために使用されます。 コマンドを実行する2つの方法を提供します。1つはイベントをesp_peripheralsに送信し(パラメーターのないコマンドの場合)、もう1つはコールバック関数を呼び出します(パラメーターが必要です)。 コールバック関数がある場合、イベントは送信されません。

Console Peripheral is used to control the Audio application from the terminal screen. It provides 2 ways do execute command, one sends an event to esp_peripherals (for a command without parameters), another calls a callback function (need parameters). If there is a callback function, no event will be sent.

コンソール操作中にperiph_console_cmd_tの存続期間を確保する必要があることを確認してください。periph_console_init()は参照のみで、コピーは作成されません。

Please make sure that the lifetime of periph_console_cmd_t must be ensured during console operation, periph_console_init() only reference, does not make a copy.

コード例

Code example
#include "freertos/FreeRTOS.h"
#include "esp_log.h"
#include "esp_peripherals.h"
#include "periph_console.h"

static const char *TAG = "ESP_PERIPH_TEST";

static esp_err_t _periph_event_handle(audio_event_iface_msg_t *event, void *context)
{
    switch ((int)event->source_type) {
        case PERIPH_ID_CONSOLE:
            ESP_LOGI(TAG, "CONSOLE, command id=%d", event->cmd);
            break;
    }
    return ESP_OK;
}

esp_err_t console_test_cb(esp_periph_handle_t periph, int argc, char *argv[])
{
    int i;
    ESP_LOGI(TAG, "CONSOLE Callback, argc=%d", argc);
    for (i=0; i<argc; i++) {
        ESP_LOGI(TAG, "CONSOLE Args[%d] %s", i, argv[i]);
    }
    return ESP_OK;
}

void app_main(void)
{
    // Initialize Peripherals pool
    esp_periph_config_t periph_cfg = {
        .event_handle = _periph_event_handle,
        .user_context = NULL,
    };
    esp_periph_init(&periph_cfg);

    const periph_console_cmd_t cmd[]= {
        { .cmd = "play", .id = 1, .help = "Play audio" },
        { .cmd = "stop", .id = 2, .help = "Stop audio" },
        { .cmd = "test", .help = "test console", .func = console_test_cb },
    };

    periph_console_cfg_t console_cfg = {
        .command_num = sizeof(cmd)/sizeof(periph_console_cmd_t),
        .commands = cmd,
    };
    esp_periph_handle_t console_handle = periph_console_init(&console_cfg);
    esp_periph_start(console_handle);
    vTaskDelay(30000/portTICK_RATE_MS);
    ESP_LOGI(TAG, "Stopped");
    esp_periph_destroy();

}

APIリファレンス

API Reference

ヘッダーファイル

Header File

関数

Functions
esp_periph_handle_t periph_console_init(periph_console_cfg_t *config)

コンソールペリフェラルを初期化します。

Initialize Console Peripheral.

Return
espペリフェラルハンドル
The esp peripheral handle
Parameters
  • config: 構成
    config: The configuration

構造体

Structures
struct periph_console_cmd_t

コマンド構造。

Command structure.

Public Members

const char *cmd

コマンドの名前。一意である必要があります

Name of command, must be unique
int id

コマンドが一致すると、コマンドIDが一緒に送信されます

Command ID will be sent together when the command is matched
const char *help

コマンドの説明

Explanation of the command
console_cmd_callback_t func

コマンドの関数コールバック

Function callback for the command
struct periph_console_cfg_t

コンソール周辺機器の構成。

Console Peripheral configuration.

Public Members

int command_num

コマンドの総数

Total number of commands
const periph_console_cmd_t *commands

コマンドの配列へのポインタ

Pointer to array of commands
int task_stack

コンソールタスクスタック、値がゼロの場合はデフォルトを使用

Console task stack, using default if the value is zero
int task_prio

コンソールタスクの優先度(freeRTOSの優先度に基づく)、値がゼロの場合はデフォルトを使用

Console task priority (based on freeRTOS priority), using default if the value is zero
int buffer_size

コンソール入力バッファのサイズ

Size of console input buffer
const char *prompt_string

コンソールプロンプト文字列。ポインタがNULLの場合はデフォルトのCONSOLE_PROMPT_STRINGを使用します。

Console prompt string, using default CONSOLE_PROMPT_STRING if the pointer is NULL

マクロ

Macros
CONSOLE_DEFAULT_TASK_PRIO
CONSOLE_DEFAULT_TASK_STACK
CONSOLE_DEFAULT_BUFFER_SIZE
CONSOLE_DEFAULT_PROMPT_STRING

タイプ定義

Type Definitions
typedef esp_err_t (*console_cmd_callback_t)(esp_periph_handle_t periph, int argc, char *argv[])