イベントインターフェース

Event Interface

ADFは、パイプライン内のオーディオ要素間の通信を確立するためのイベントインターフェイスAPIを提供します。 APIはFreeRTOSキューを中心に構築されています。 着信メッセージを監視し、コールバック関数を使用してそれらについて通知する「リスナー」を実装します。

The ADF provides the Event Interface API to establish communication between Audio Elements in a pipeline. The API is built around FreeRTOS queue. It implements ‘listeners’ to watch for incoming messages and inform about them with a callback function.

アプリケーション例

Application Examples

このAPIの実装は、get-started/play_mp3を含むいくつかの例で示されています。

Implementation of this API is demonstrated in couple of examples including get-started/play_mp3.

APIリファレンス

API Reference

ヘッダーファイル

Header File

関数

Functions
audio_event_iface_handle_t audio_event_iface_init(audio_event_iface_cfg_t *config)

オーディオイベントを初期化します。

Initialize audio event.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • config: 構成
    config: The configurations

esp_err_t audio_event_iface_destroy(audio_event_iface_handle_t evt)

クリーンアップイベント。evtポインタは解放されません。

Cleanup event, it doesn’t free evt pointer.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event

esp_err_t audio_event_iface_set_listener(audio_event_iface_handle_t evt, audio_event_iface_handle_t listener)

オーディオイベントevtをリスナーに追加すると、聞き取りからevtイベントを聞くことができます

Add audio event evt to the listener, then we can listen evt event from listen 

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • listener: イベントは別のイベントを聞くことができます
    listener: The event can listen another event
  • evt: 追加するイベント
    evt: The event to be added to

esp_err_t audio_event_iface_remove_listener(audio_event_iface_handle_t listener, audio_event_iface_handle_t evt)

リスナーからオーディオイベントevtを削除します。

Remove audio event evt from the listener.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • listener: イベントリスナー
    listener: The event listener
  • evt: 削除するイベント
    evt: The event to be removed from

esp_err_t audio_event_iface_set_cmd_waiting_timeout(audio_event_iface_handle_t evt, TickType_t wait_time)

イベントの現在のキュー待機時間を設定します。

Set current queue wait time for the event.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event
  • wait_time: 待ち時間
    wait_time: The wait time

esp_err_t audio_event_iface_waiting_cmd_msg(audio_event_iface_handle_t evt)

内部キューメッセージを待機しています。

Waiting internal queue message.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event

esp_err_t audio_event_iface_cmd(audio_event_iface_handle_t evt, audio_event_iface_msg_t *msg)

メッセージを使用して内部キューのイベントをトリガーします。

Trigger an event for internal queue with a message.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event
  • msg: メッセージ
    msg: The message

esp_err_t audio_event_iface_cmd_from_isr(audio_event_iface_handle_t evt, audio_event_iface_msg_t *msg)

audio_event_iface_cmdと同じですが、ISRからメッセージを送信できます。

It’s same with audio_event_iface_cmd, but can send a message from ISR.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event
  • msg: メッセージ
    msg: The message

esp_err_t audio_event_iface_sendout(audio_event_iface_handle_t evt, audio_event_iface_msg_t *msg)

メッセージでトリガーしてイベントを出します。

Trigger and event out with a message.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event
  • msg: メッセージ
    msg: The message

esp_err_t audio_event_iface_discard(audio_event_iface_handle_t evt)

進行中のイベントメッセージをすべて破棄します。

Discard all ongoing event message.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event

esp_err_t audio_event_iface_listen(audio_event_iface_handle_t evt, audio_event_iface_msg_t *msg, TickType_t wait_time)

イベントが発生した場合は、コールバック関数をリッスンして呼び出します。

Listening and invoke callback function if there are any event are comming.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • evt: イベント
    evt: The event
  • msg: メッセージ
    msg: The message
  • wait_time: 待ち時間
    wait_time: The wait time

QueueHandle_t audio_event_iface_get_queue_handle(audio_event_iface_handle_t evt)

エミッタの外部キューハンドルを取得します。

Get External queue handle of Emmitter.

Return
外部QueueHandle_t
External QueueHandle_t
Parameters
  • evt: 外部キュー
    evt: The external queue

esp_err_t audio_event_iface_read(audio_event_iface_handle_t evt, audio_event_iface_msg_t *msg, TickType_t wait_time)

インターフェイスのキューセットに登録されているすべてのイベントエミッタからイベントを読み取ります。

Read the event from all the registered event emitters in the queue set of the interface.

Return
  • ESP_OKイベントの正常な受信時
    ESP_OK On successful receiving of event
  • ESP_FAILタイムアウトまたは無効なパラメーターが渡された場合
    ESP_FAIL In case of a timeout or invalid parameter passed
Parameters
  • evt: イベントインターフェイス
    evt: The event interface
  • msg: イベントを受信する構造体へのポインタ
    msg: The pointer to structure in which event is to be received
  • wait_time: イベント受信のタイムアウト
    wait_time: Timeout for receiving event

QueueHandle_t audio_event_iface_get_msg_queue_handle(audio_event_iface_handle_t evt)

エミッタの内部キューハンドルを取得します。

Get Internal queue handle of Emmitter.

Return
内部QueueHandle_t
Internal QueueHandle_t
Parameters
  • evt: 内部キュー
    evt: The Internal queue

esp_err_t audio_event_iface_set_msg_listener(audio_event_iface_handle_t evt, audio_event_iface_handle_t listener)

オーディオ内部イベントevtをリスナーに追加すると、聞き取りからevtイベントを聞くことができます

Add audio internal event evt to the listener, then we can listen evt event from listen 

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • listener: イベントは別のイベントを聞くことができます
    listener: The event can listen another event
  • evt: 追加するイベント
    evt: The event to be added to

構造体

Structures
struct audio_event_iface_msg_t

イベントメッセージ

Event message

Public Members

int cmd

コマンドID

Command id
void *data

データポインタ

Data pointer
int data_len

データ長

Data length
void *source

ソースイベント

Source event
int source_type

ソースタイプ(それがどこから来たのかを知るため)

Source type (To know where it came from)
bool need_free_data

イベントが処理された後、データポインタを解放する必要があります

Need to free data pointer after the event has been processed
struct audio_event_iface_cfg_t

イベントインターフェイスの構成

Event interface configurations

Public Members

int internal_queue_size

オプションです。イベントinternal_queueのキューサイズ

It’s optional, Queue size for event internal_queue 
int external_queue_size

オプションです。イベントexternal_queueのキューサイズ

It’s optional, Queue size for event external_queue 
int queue_set_size

オプションで、イベントqueue_setのQueueSetサイズ

It’s optional, QueueSet size for event queue_set 
on_event_iface_func on_cmd

イベントが到着したときのリスナーの関数コールバック

Function callback for listener when any event arrived
void *context

コンテキストはコールバック関数に渡されます

Context will pass to callback function
TickType_t wait_time

イベントキューをチェックするためのタイムアウト

Timeout to check for event queue
int type

audio_event_iface_msg_t source_typeに渡されます(どこから来たのかを知るため)

it will pass to audio_event_iface_msg_t source_type (To know where it came from)

マクロ

Macros
DEFAULT_AUDIO_EVENT_IFACE_SIZE
AUDIO_EVENT_IFACE_DEFAULT_CFG()

タイプ定義

Type Definitions
typedef esp_err_t (*on_event_iface_func)(audio_event_iface_msg_t *, void *)
typedef struct audio_event_iface *audio_event_iface_handle_t