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
27 const struct device *dev;
28 struct pdm_io_cfg io_cfg;
29 enum pdm_lr pdm_chan;
30};
31
39void dmic_task_fn(const struct task_schedule *schedule, struct k_poll_signal *terminate,
40 void *dmic_dev);
41
42/* Helper macro for defining static memory */
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, \
49 }; \
50 struct k_thread dmic_thread_obj
51
52/* Helper macro for defining congiguration */
53#define _AUDIO_DMIC_CONFIG(dmic_node) \
54 { \
55 .name = "mic", \
56 .task_id = TASK_ID_AUDIO_DMIC, \
57 .exec_type = TASK_EXECUTOR_THREAD, \
58 .task_arg.const_arg = &dmic_config, \
59 .executor.thread = \
60 { \
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), \
65 }, \
66 }
67
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)))
78
79#ifdef __cplusplus
80}
81#endif
82
83#endif /* INFUSE_SDK_INCLUDE_INFUSE_TASK_RUNNER_TASKS_AUDIO_DMIC_H_ */
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
Task Runner Task API.