コンソール周辺機器¶
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 ofperiph_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
関数¶
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
-
const char *
-
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
-
int
マクロ¶
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[])¶