Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
audio_dmic.h
Go to the documentation of this file.
1
9
10#ifndef INFUSE_SDK_INCLUDE_INFUSE_TASK_RUNNER_TASKS_AUDIO_DMIC_H_
11#define INFUSE_SDK_INCLUDE_INFUSE_TASK_RUNNER_TASKS_AUDIO_DMIC_H_
12
13#include <zephyr/kernel.h>
14#include <zephyr/audio/dmic.h>
15
16#include <infuse/drivers/imu.h>
19
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
31
35 const struct device *dev;
37 struct pdm_io_cfg io_cfg;
39 enum pdm_lr pdm_chan;
40};
41
49void dmic_task_fn(const struct task_schedule *schedule, struct k_poll_signal *terminate,
50 void *dmic_dev);
51
52/* Helper macro for defining static memory */
53#define _AUDIO_DMIC_MEM(dmic_node) \
54 K_THREAD_STACK_DEFINE(dmic_stack_area, CONFIG_TASK_RUNNER_TASK_AUDIO_DMIC_STACK_SIZE); \
55 static const struct task_audio_dmic_config dmic_config = { \
56 .dev = DEVICE_DT_GET(dmic_node), \
57 .io_cfg = PDM_DT_IO_CFG_GET(dmic_node), \
58 .pdm_chan = PDM_DT_HAS_LEFT_CHANNEL(dmic_node) ? PDM_CHAN_LEFT : PDM_CHAN_RIGHT, \
59 }; \
60 struct k_thread dmic_thread_obj
61
62/* Helper macro for defining configuration */
63#define _AUDIO_DMIC_CONFIG(dmic_node) \
64 { \
65 .name = "mic", \
66 .task_id = TASK_ID_AUDIO_DMIC, \
67 .exec_type = TASK_EXECUTOR_THREAD, \
68 .task_arg.const_arg = &dmic_config, \
69 .executor.thread = \
70 { \
71 .thread = &dmic_thread_obj, \
72 .task_fn = dmic_task_fn, \
73 .stack = dmic_stack_area, \
74 .stack_size = K_THREAD_STACK_SIZEOF(dmic_stack_area), \
75 }, \
76 }
77
85#define AUDIO_DMIC_TASK(define_mem, define_config, dmic_node) \
86 IF_ENABLED(define_mem, (_AUDIO_DMIC_MEM(dmic_node))) \
87 IF_ENABLED(define_config, (_AUDIO_DMIC_CONFIG(dmic_node)))
88
92
93#ifdef __cplusplus
94}
95#endif
96
97#endif /* INFUSE_SDK_INCLUDE_INFUSE_TASK_RUNNER_TASKS_AUDIO_DMIC_H_ */
Specialised driver API for IMU devices.
void dmic_task_fn(const struct task_schedule *schedule, struct k_poll_signal *terminate, void *dmic_dev)
Digital microphone task function.
Autogenerated task runner task IDs.
Task Runner task scheduling.
Digital microphone task configuration.
Definition audio_dmic.h:33
struct pdm_io_cfg io_cfg
PDM IO configuration.
Definition audio_dmic.h:37
const struct device * dev
Digital microphone device.
Definition audio_dmic.h:35
enum pdm_lr pdm_chan
PDM channel to record.
Definition audio_dmic.h:39
Schedule for a given task.
Definition schedule.h:169
Task Runner Task API.