ESP周辺機器¶
ESP Peripherals
このライブラリは、単一のタスクでプールおよび監視し、イベントを送受信するための基本的な機能を追加することにより、周辺機器の管理を簡素化します。 また、新しい周辺機器を簡単に統合するためのAPIも提供します。
This library simplifies the management of peripherals, by pooling and monitoring in a single task, adding basic functions to send and receive events. And it also provides APIs to easily integrate new peripherals.
Note
新しいペリフェラルをesp_peripheralsに統合する予定がない場合は、単純なapi esp_periph_init
、esp_periph_start
、esp_periph_stop
、およびesp_periph_destroy
にのみ関心があることに注意してください。 新しい周辺機器を統合する場合は、周辺機器ボタンのソースコードを参照してください。
Note that if you do not intend to integrate new peripherals into esp_peripherals, you are only interested in simple apiesp_periph_init
,esp_periph_start
,esp_periph_stop
andesp_periph_destroy
. If you want to integrate new peripherals, please refer to Periph Button source code
例¶
Examples
#include "esp_log.h"
#include "esp_peripherals.h"
#include "periph_sdcard.h"
#include "periph_button.h"
#include "periph_touch.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_BUTTON:
ESP_LOGI(TAG, "BUTTON[%d], event->event_id=%d", (int)event->data, event->cmd);
break;
case PERIPH_ID_SDCARD:
ESP_LOGI(TAG, "SDCARD status, event->event_id=%d", event->cmd);
break;
case PERIPH_ID_TOUCH:
ESP_LOGI(TAG, "TOUCH[%d], event->event_id=%d", (int)event->data, event->cmd);
break;
case PERIPH_ID_WIFI:
ESP_LOGI(TAG, "WIFI, event->event_id=%d", event->cmd);
break;
}
return ESP_OK;
}
void app_main(void)
{
// Initialize Peripherals pool
esp_periph_config_t periph_cfg = DEFAULT_ESP_PERIPH_SET_CONFIG();
esp_periph_set_handle_t set = esp_periph_set_init(&periph_cfg);
esp_periph_set_register_callback(set, _periph_event_handle, NULL);
// Setup SDCARD peripheral
periph_sdcard_cfg_t sdcard_cfg = {
.root = "/sdcard",
.card_detect_pin = GPIO_NUM_34,
};
esp_periph_handle_t sdcard_handle = periph_sdcard_init(&sdcard_cfg);
// Setup BUTTON peripheral
periph_button_cfg_t btn_cfg = {
.gpio_mask = GPIO_SEL_36 | GPIO_SEL_39
};
esp_periph_handle_t button_handle = periph_button_init(&btn_cfg);
// Setup TOUCH peripheral
periph_touch_cfg_t touch_cfg = {
.touch_mask = TOUCH_PAD_SEL4 | TOUCH_PAD_SEL7 | TOUCH_PAD_SEL8 | TOUCH_PAD_SEL9,
.tap_threshold_percent = 70,
};
esp_periph_handle_t touch_handle = periph_touch_init(&touch_cfg);
// Start all peripheral
esp_periph_start(set, button_handle);
esp_periph_start(set, sdcard_handle);
esp_periph_start(set, touch_handle);
vTaskDelay(10*1000/portTICK_RATE_MS);
//Stop button peripheral
esp_periph_stop(button_handle);
vTaskDelay(10*1000/portTICK_RATE_MS);
//Start button again
esp_periph_start(set, button_handle);
vTaskDelay(10*1000/portTICK_RATE_MS);
//Stop & destroy all peripherals
esp_periph_set_destroy(set);
}
APIリファレンス¶
API Reference
関数¶
Functions
-
esp_periph_set_handle_t
esp_periph_set_init
(esp_periph_config_t *config)¶ esp_peripheralセットを初期化し、空のペリフェラルリストを作成します。 周辺機器を起動する前に(
esp_periph_start
を使用して)この関数を呼び出します。 この呼び出しは、esp_peripheralsが機能するために必要なデータを初期化しますが、実際にはタスクを作成しません。 このコールバック関数からイベントを受信する場合、event_handle
はオプションです。 esp_peripheralsタスクは、すべてのイベントをevent_ifaceに送信し、esp_periph_get_event_iface
によるevent_ifaceでリッスンできます。user_context
は、esp_periph_event_handle_t
を* contextパラメーターとして送信します。Initialize esp_peripheral sets, create empty peripherals list. Call this function before starting any peripherals (with
esp_periph_start
). This call will initialize the data needed for esp_peripherals to work, but does not actually create the task. Theevent_handle
is optional if you want to receive events from this callback function. The esp_peripherals task will send all events out to event_iface, can be listen by event_iface byesp_periph_get_event_iface
. Theuser_context
will sentesp_periph_event_handle_t
as *context parameter.- Return
- 周辺機器セットインスタンス
The peripheral sets instance
- Parameters
config
: 構成config
: The configurations
-
esp_err_t
esp_periph_set_destroy
(esp_periph_set_handle_t periph_set_handle)¶ この関数は、監視タスクを停止して強制終了し、ペリフェラルのすべての破棄コールバック関数を呼び出します(したがって、ペリフェラルオブジェクトを手動で破棄する必要はありません)。 また、ペリフェラルリストに割り当てられているすべてのメモリが削除されるため、使用する場合は、
esp_periph_set_init
関数を再度呼び出す必要があります。This function will stop and kill the monitor task, calling all destroy callback functions of the peripheral (so you do not need to destroy the peripheral object manually). It will also remove all memory allocated to the peripherals list, so you need to call the
esp_periph_set_init
function again if you want to use it.- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instance
-
esp_err_t
esp_periph_set_stop_all
(esp_periph_set_handle_t periph_set_handle)¶ すべての周辺機器の監視を停止しても、周辺機器の状態は維持されます。 この機能は、周辺機器を一時的に無効にするだけです。
Stop monitoring all peripherals, the peripheral state is still kept. This funciton only temporary disables the peripheral.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instance
-
esp_periph_handle_t
esp_periph_set_get_by_id
(esp_periph_set_handle_t periph_set_handle, int periph_id)¶ ペリフェラルIDでペリフェラルハンドルを取得します。
Get the peripheral handle by Peripheral ID.
- Return
- esp_periph_handle_t
The esp_periph_handle_t
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instanceperiph_id
: esp_periph_id_t、またはesp_periph_create
を呼び出すときに使用するIDとしてperiph_id
: as esp_periph_id_t, or any ID you use when callingesp_periph_create
-
audio_event_iface_handle_t
esp_periph_set_get_event_iface
(esp_periph_set_handle_t periph_set_handle)¶ このesp_peripheralsによって使用されるevent_ifaceを返します。
Return the event_iface used by this esp_peripherals.
- Return
- オーディオイベントifaceハンドル
The audio event iface handle
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instance
-
esp_err_t
esp_periph_set_register_callback
(esp_periph_set_handle_t periph_set_handle, esp_periph_event_handle_t cb, void *user_context)¶ 周辺機器セットのイベントコールバック関数を登録します。
Register peripheral sets event callback function.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instancecb
: イベントハンドルコールバック関数cb
: The event handle callback functionuser_context
: ユーザーコンテキストポインタuser_context
: The user context pointer
-
QueueHandle_t
esp_periph_set_get_queue
(esp_periph_set_handle_t periph_set_handle)¶ 周辺機器はevent_ifaceを使用してイベントを制御しており、すべてのイベントはevent_ifaceキューに送信されます。 この関数は、event_ifaceキューから直接イベントを読み取りたい場合に役立ちます。
Peripheral is using event_iface to control the event, all events are send out to event_iface queue. This function will be useful in case we want to read events directly from the event_iface queue.
- Return
- キューハンドル
The queue handle
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instance
-
esp_err_t
esp_periph_set_list_init
(esp_periph_set_handle_t periph_set_handle)¶ この関数を呼び出して、リストされているすべての周辺機器を初期化します。
Call this function to initialize all the listed peripherals.
- Note
- タスク周辺機器セットなしでのみ動作
Work with no task peripheral set only
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instance
-
esp_err_t
esp_periph_set_list_run
(esp_periph_set_handle_t periph_set_handle, audio_event_iface_msg_t msg)¶ リストされているすべての周辺機器を実行するには、この関数を呼び出します。
Call this function to run all the listed peripherals.
- Note
- タスク周辺機器セットなしでのみ動作
Work with no task peripheral set only
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instancemsg
: audio_event_iface_msg_tハンドルメッセージmsg
: The audio_event_iface_msg_t handle message
-
esp_err_t
esp_periph_set_list_destroy
(esp_periph_set_handle_t periph_set_handle)¶ リストされているすべての周辺機器を破棄するには、この関数を呼び出します。
Call this function to destroy all the listed peripherals.
- Note
- タスク周辺機器セットなしでのみ動作
Work with no task peripheral set only
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instance
-
esp_periph_handle_t
esp_periph_create
(int periph_id, const char *tag)¶ この関数を呼び出して、新しい周辺機器を初期化します。
Call this function to initialize a new peripheral.
- Return
- 周辺ハンドル
The peripheral handle
- Parameters
periph_id
: ペリフ識別子periph_id
: The periph identifiertag
: タグ名、デバッグログで簡単に取得できる名前を付けましたtag
: The tag name, we named it easy to get in debug logs
-
esp_err_t
esp_periph_set_function
(esp_periph_handle_t periph, esp_periph_func init, esp_periph_run_func run, esp_periph_func destroy)¶ 各ペリフェラルには、初期化、コマンドの実行、ペリフェラルの破棄までの一連の操作のサイクルがあります。 これらの操作は、この関数に呼び出しパラメーターとして渡される関数によって表されます。
Each peripheral has a cycle of sequential operations from initialization, execution of commands to destroying the peripheral. These operations are represented by functions passed as call parameters to this function.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: ペリフperiph
: The periphinit
: 初期化init
: The initializerun
: 実行run
: The rundestroy
: 破壊するdestroy
: The destroy
-
esp_err_t
esp_periph_start
(esp_periph_set_handle_t periph_set_handle, esp_periph_handle_t periph)¶ 周辺機器リストに周辺機器を追加し、監視タスクを有効にして開始します(タスクスタックサイズが0以上の場合)
Add the peripheral to peripherals list, enable and start monitor task (if task stack size > 0)
- Note
- このペリフェラルは、
esp_periph_create
を呼び出して最初に作成する必要がありますThis peripheral must be first created by calling
esp_periph_create
- Return
- 成功したESP_OK
ESP_OK on success
- エラーが発生した場合のESP_FAIL
ESP_FAIL when any errors
- 成功したESP_OK
- Parameters
periph_set_handle
: esp_periph_set_handle_tインスタンスperiph_set_handle
: The esp_periph_set_handle_t instanceperiph
: 周辺インスタンスperiph
: The peripheral instance
-
esp_err_t
esp_periph_stop
(esp_periph_handle_t periph)¶ 周辺機器の監視を停止しても、周辺機器の状態は維持されます。 この機能は、周辺機器を一時的に無効にするだけです。
Stop monitoring the peripheral, the peripheral state is still kept. This funciton only temporary disables the peripheral.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: ペリフperiph
: The periph
-
esp_err_t
esp_periph_send_cmd
(esp_periph_handle_t periph, int cmd, void *data, int data_len)¶ この関数が呼び出されると、コマンドはevent_ifaceコマンドキューに渡され、このペリフェラルの
esp_periph_run_func
がメインペリフェラルタスクで実行されます。 この関数はどのタスクからでも呼び出すことができ、基本的にはメインの周辺タスクにのみキューを送信します。When this function is called, the command is passed to the event_iface command queue, and the
esp_periph_run_func
of this peripheral will be executed in the main peripheral task. This function can be called from any task, basically it only sends a queue to the main peripheral task.- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: ペリフperiph
: The periphcmd
: コマンドcmd
: The commanddata
: データdata
: The datadata_len
: データ長data_len
: The data length
-
esp_err_t
esp_periph_send_cmd_from_isr
(esp_periph_handle_t periph, int cmd, void *data, int data_len)¶ esp_periph_send_cmd
に似ていますが、ハードウェア割り込みハンドルで呼び出すことができます。Similar to
esp_periph_send_cmd
, but it can be called in the hardware interrupt handle.- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: ペリフperiph
: The periphcmd
: コマンドcmd
: The commanddata
: データdata
: The datadata_len
: データ長data_len
: The data length
-
esp_err_t
esp_periph_send_event
(esp_periph_handle_t periph, int event_id, void *data, int data_len)¶ event_ifaceを介してイベントを送信することに加えて、この関数は、
event_handle
コールバックがesp_periph_init
で提供されている場合、event_handleコールバックをディスパッチします。In addition to sending an event via event_iface, this function will dispatch the
event_handle
callback if the event_handle callback is provided atesp_periph_init
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺インスタンスperiph
: The peripheralevent_id
: イベント識別子event_id
: The event identifierdata
: データdata
: The datadata_len
: データ長data_len
: The data length
-
esp_err_t
esp_periph_start_timer
(esp_periph_handle_t periph, TickType_t interval_tick, timer_callback callback)¶ 各ペリフェラルはタイマーを初期化できますが、デフォルトではNULLです。 この関数が呼び出されると、ペリフェラルのタイマーが作成され、インターバルティックごとにコールバック関数が呼び出されます。
Each peripheral can initialize a timer, which is by default NULL. When this function is called, the timer for the peripheral is created and it invokes the callback function every interval tick.
- Note
- タイマーを停止または破棄する必要はありません。
esp_periph_destroy
関数が呼び出されると、タイマーは停止してすべてを破棄します。You do not need to stop or destroy the timer, when the
esp_periph_destroy
function is called, it will stop and destroy all - このタイマーはFreeRTOSタイマーを使用し、autoreload = trueです。
This timer using FreeRTOS Timer, with autoreload = true
- タイマーを停止または破棄する必要はありません。
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺インスタンスperiph
: The peripheralinterval_tick
: インターバルティックinterval_tick
: The interval tickcallback
: コールバックcallback
: The callback
-
esp_err_t
esp_periph_stop_timer
(esp_periph_handle_t periph)¶ 周辺機器タイマーを停止します。
Stop peripheral timer.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺インスタンスperiph
: The peripheral
-
esp_err_t
esp_periph_set_data
(esp_periph_handle_t periph, void *data)¶ ユーザーデータを設定します。
Set the user data.
- Note
データ
の有効期間が十分であることを確認してください。この関数はすべてのデータをコピーするのではなく、データポインタのみを格納します。Make sure the
data
lifetime is sufficient, this function does not copy all data, it only stores the data pointer- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺インスタンスperiph
: The peripheraldata
: データdata
: The data
-
void *
esp_periph_get_data
(esp_periph_handle_t periph)¶ 周辺機器に保存されているユーザーデータを取得します。
Get the user data stored in the peripheral.
- Return
- 周辺データポインタ
Peripheral data pointer
- Parameters
periph
: 周辺インスタンスperiph
: The peripheral
-
esp_periph_state_t
esp_periph_get_state
(esp_periph_handle_t periph)¶ 周辺機器の現在の状態を取得します。
Get the current state of peripheral.
- Return
- 周辺の動作状態
The peripharal working state
- Parameters
periph
: 周辺機器のハンドルperiph
: The handle of peripheral
-
esp_periph_id_t
esp_periph_get_id
(esp_periph_handle_t periph)¶ 周辺機器識別子を取得します。
Get Peripheral identifier.
- Return
- 周辺識別子
The peripheral identifier
- Parameters
periph
: 周辺インスタンスperiph
: The peripheral
-
esp_err_t
esp_periph_set_id
(esp_periph_handle_t periph, esp_periph_id_t periph_id)¶ 周辺機器識別子を設定します。
Set Peripheral identifier.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺インスタンスperiph
: The peripheralperiph_id
: 周辺識別子periph_id
: The peripheral identifier
-
esp_err_t
esp_periph_init
(esp_periph_handle_t periph)¶ これを呼び出して、ペリフェラルインスタンスの
init
関数を実行します。Call this to execute
init
function of peripheral instance.- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺ハンドルperiph
: The peripheral handle
-
esp_err_t
esp_periph_run
(esp_periph_handle_t periph)¶ これを呼び出して、ペリフェラルインスタンスの
実行
関数を実行します。Call this to execute
run
function of peripheral instance.- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺ハンドルperiph
: The peripheral handle
-
esp_err_t
esp_periph_destroy
(esp_periph_handle_t periph)¶ これを呼び出して、ペリフェラルインスタンスの
destroy
関数を実行します。Call this to execute
destroy
function of peripheral instance.- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺ハンドルperiph
: The peripheral handle
-
esp_err_t
esp_periph_register_on_events
(esp_periph_handle_t periph, esp_periph_event_t *evts)¶ イベントハンドルのリグスターペリフェラル。
Rigster peripheral on event handle.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
periph
: 周辺ハンドルperiph
: The peripheral handleevts
: The esp_periph_event_t handle
構造体¶
Structures
-
struct
esp_periph_config_t
¶ 一般的な周辺機器の構成。
Common peripherals configurations.
-
struct
esp_periph_event
¶ 周辺イベント
peripheral events
Public Members
-
void *
user_ctx
¶ 周辺コンテキストデータ
peripheral context data
-
esp_periph_event_handle_t
cb
¶ 周辺コールバック関数
peripheral callback function
-
audio_event_iface_handle_t
iface
¶ 周辺イベント
peripheral event
-
void *
マクロ¶
Macros
-
DEFAULT_ESP_PERIPH_STACK_SIZE
¶
-
DEFAULT_ESP_PERIPH_TASK_PRIO
¶
-
DEFAULT_ESP_PERIPH_TASK_CORE
¶
-
DEFAULT_ESP_PERIPH_SET_CONFIG
()¶
-
periph_tick_get
¶
タイプ定義¶
Type Definitions
-
typedef struct esp_periph_sets *
esp_periph_set_handle_t
¶
-
typedef struct esp_periph *
esp_periph_handle_t
¶
-
typedef esp_err_t (*
esp_periph_func
)(esp_periph_handle_t periph)¶
-
typedef esp_err_t (*
esp_periph_run_func
)(esp_periph_handle_t periph, audio_event_iface_msg_t *msg)¶
-
typedef esp_err_t (*
esp_periph_event_handle_t
)(audio_event_iface_msg_t *event, void *context)¶
-
typedef void (*
timer_callback
)(xTimerHandle tmr)¶
-
typedef struct esp_periph_event
esp_periph_event_t
¶ 周辺イベント
peripheral events
列挙¶
Enumerations
-
enum
esp_periph_id_t
¶ 周辺機器の識別。これは、周辺機器リストに追加された周辺機器ごとに一意である必要があります。
Peripheral Identify, this must be unique for each peripheral added to the peripherals list.
Values:
-
PERIPH_ID_BUTTON
= AUDIO_ELEMENT_TYPE_PERIPH + 1¶
-
PERIPH_ID_TOUCH
= AUDIO_ELEMENT_TYPE_PERIPH + 2¶
-
PERIPH_ID_SDCARD
= AUDIO_ELEMENT_TYPE_PERIPH + 3¶
-
PERIPH_ID_WIFI
= AUDIO_ELEMENT_TYPE_PERIPH + 4¶
-
PERIPH_ID_FLASH
= AUDIO_ELEMENT_TYPE_PERIPH + 5¶
-
PERIPH_ID_AUXIN
= AUDIO_ELEMENT_TYPE_PERIPH + 6¶
-
PERIPH_ID_ADC
= AUDIO_ELEMENT_TYPE_PERIPH + 7¶
-
PERIPH_ID_CONSOLE
= AUDIO_ELEMENT_TYPE_PERIPH + 8¶
-
PERIPH_ID_BLUETOOTH
= AUDIO_ELEMENT_TYPE_PERIPH + 9¶
-
PERIPH_ID_LED
= AUDIO_ELEMENT_TYPE_PERIPH + 10¶
-
PERIPH_ID_SPIFFS
= AUDIO_ELEMENT_TYPE_PERIPH + 11¶
-
PERIPH_ID_ADC_BTN
= AUDIO_ELEMENT_TYPE_PERIPH + 12¶
-
PERIPH_ID_IS31FL3216
= AUDIO_ELEMENT_TYPE_PERIPH + 13¶
-
PERIPH_ID_GPIO_ISR
= AUDIO_ELEMENT_TYPE_PERIPH + 14¶
-
PERIPH_ID_WS2812
= AUDIO_ELEMENT_TYPE_PERIPH + 15¶
-