10#ifndef INFUSE_SDK_INCLUDE_INFUSE_TASK_RUNNER_TASKS_AUDIO_DMIC_H_
11#define INFUSE_SDK_INCLUDE_INFUSE_TASK_RUNNER_TASKS_AUDIO_DMIC_H_
13#include <zephyr/kernel.h>
14#include <zephyr/audio/dmic.h>
27 const struct device *
dev;
43#define _AUDIO_DMIC_MEM(dmic_node) \
44 K_THREAD_STACK_DEFINE(dmic_stack_area, CONFIG_TASK_RUNNER_TASK_AUDIO_DMIC_STACK_SIZE); \
45 static const struct task_audio_dmic_config dmic_config = { \
46 .dev = DEVICE_DT_GET(dmic_node), \
47 .io_cfg = PDM_DT_IO_CFG_GET(dmic_node), \
48 .pdm_chan = PDM_DT_HAS_LEFT_CHANNEL(dmic_node) ? PDM_CHAN_LEFT : PDM_CHAN_RIGHT, \
50 struct k_thread dmic_thread_obj
53#define _AUDIO_DMIC_CONFIG(dmic_node) \
56 .task_id = TASK_ID_AUDIO_DMIC, \
57 .exec_type = TASK_EXECUTOR_THREAD, \
58 .task_arg.const_arg = &dmic_config, \
61 .thread = &dmic_thread_obj, \
62 .task_fn = dmic_task_fn, \
63 .stack = dmic_stack_area, \
64 .stack_size = K_THREAD_STACK_SIZEOF(dmic_stack_area), \
75#define AUDIO_DMIC_TASK(define_mem, define_config, dmic_node) \
76 IF_ENABLED(define_mem, (_AUDIO_DMIC_MEM(dmic_node))) \
77 IF_ENABLED(define_config, (_AUDIO_DMIC_CONFIG(dmic_node)))
void dmic_task_fn(const struct task_schedule *schedule, struct k_poll_signal *terminate, void *dmic_dev)
Digital microphone task function.
Specialised driver API for IMU devices.
Task Runner task scheduling.
Definition audio_dmic.h:26
struct pdm_io_cfg io_cfg
Definition audio_dmic.h:28
const struct device * dev
Definition audio_dmic.h:27
enum pdm_lr pdm_chan
Definition audio_dmic.h:29
Schedule for a given task.
Definition schedule.h:168