Sound Open Firmware
Loading...
Searching...
No Matches
iadk_module_adapter.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2022 Intel Corporation. All rights reserved.
4 *
5 * Author: Jaroslaw Stelter <jaroslaw.stelter@intel.com>
6 *
7 */
8
9#ifndef _IADK_MODULE_ADAPTER_H
10#define _IADK_MODULE_ADAPTER_H
11
12#ifdef __cplusplus
13
16#include <adsp_stddef.h>
17#include <system_error.h>
18#include <sof/common.h>
19#include <api_version.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
26
27#ifdef __cplusplus
28} /* extern "C" */
29#endif
30
31extern "C" {
32namespace dsp_fw
33{
41 class IadkModuleAdapter
42 {
43 public:
44 IadkModuleAdapter(intel_adsp::ProcessingModuleInterface &processing_module,
45 void *comp_dev_instance,
46 uint32_t module_id,
47 uint32_t instance_id,
48 uint32_t core_id,
49 size_t module_size);
50
55 int IadkModuleAdapter_Init(void);
56
61 int IadkModuleAdapter_Prepare(void);
62
69 int IadkModuleAdapter_Process(struct sof_source **sources,
70 int num_of_sources,
71 struct sof_sink **sinks,
72 int num_of_sinks);
73
79 AdspErrorCode
80 IadkModuleAdapter_SetConfiguration(uint32_t config_id,
81 enum module_cfg_fragment_position fragment_position,
82 uint32_t data_offset_size,
83 const uint8_t *fragment_buffer,
84 size_t fragment_size,
85 uint8_t *response,
86 size_t &response_size) /*override*/;
87
91 AdspErrorCode
92 IadkModuleAdapter_GetConfiguration(uint32_t config_id,
93 enum module_cfg_fragment_position fragment_position,
94 uint32_t &data_offset_size,
95 uint8_t *fragment_buffer,
96 size_t &fragment_size);
102 void IadkModuleAdapter_Reset(void);
107 int IadkModuleAdapter_Free(void);
108 void IadkModuleAdapter_SetProcessingMode(enum module_processing_mode sof_mode);
109
110 enum module_processing_mode IadkModuleAdapter_GetProcessingMode(void);
111
112 private:
113
114 intel_adsp::ProcessingModuleInterface &processing_module_;
115 };
116
117STATIC_ASSERT(sizeof(IadkModuleAdapter) <= IADK_MODULE_PASS_BUFFER_SIZE, IadkModuleAdapter_too_big);
118
119} /* namespace dsp_fw */
120
121} /* extern "C" */
122
123void *operator new(size_t size, intel_adsp::InputStreamBuffer *placeholder) throw();
124void *operator new(size_t size, intel_adsp::OutputStreamBuffer *placeholder) throw();
125
126#else /* __cplusplus */
127
128/* C wrappers for C++ ProcessingModuleInterface() methods. */
129int iadk_wrapper_init(void *md);
130
132
133int iadk_wrapper_set_processing_mode(void *md, enum module_processing_mode mode);
134
135enum module_processing_mode iadk_wrapper_get_processing_mode(void *md);
136
137int iadk_wrapper_reset(void *md);
138
139int iadk_wrapper_free(void *md);
140
141int iadk_wrapper_set_configuration(void *md, uint32_t config_id,
142 enum module_cfg_fragment_position pos,
143 uint32_t data_offset_size,
144 const uint8_t *fragment, size_t fragment_size,
145 uint8_t *response, size_t response_size);
146
147/*
148 * \brief Retrieve module configuration
149 * \param[in] md - struct IadkModuleAdapter pointer
150 * \param[in] config_id - Configuration ID
151 * \param[in] pos - position of the fragment in the large message
152 * \param[in] data_offset_size: size of the whole configuration if it is the first fragment or the
153 * only fragment. Otherwise, it is the offset of the fragment in the whole configuration.
154 * \param[in] fragment: configuration fragment buffer
155 * \param[in,out] fragment_size: size of @fragment
156 *
157 * \return: 0 upon success or error upon failure
158 */
159int iadk_wrapper_get_configuration(void *md, uint32_t config_id,
160 enum module_cfg_fragment_position pos,
161 uint32_t *data_offset_size,
162 uint8_t *fragment, size_t *fragment_size);
163
165 struct sof_source **sources, int num_of_sources,
166 struct sof_sink **sinks, int num_of_sinks);
167
168#endif /* __cplusplus */
169
170#endif /*_IADK_MODULE_ADAPTER_H */
#define IADK_MODULE_PASS_BUFFER_SIZE
Definition api_version.h:26
#define STATIC_ASSERT(COND, MESSAGE)
Definition common.h:158
int iadk_wrapper_get_configuration(void *md, uint32_t config_id, enum module_cfg_fragment_position pos, uint32_t *data_offset_size, uint8_t *fragment, size_t *fragment_size)
int iadk_wrapper_set_configuration(void *md, uint32_t config_id, enum module_cfg_fragment_position pos, uint32_t data_offset_size, const uint8_t *fragment, size_t fragment_size, uint8_t *response, size_t response_size)
int iadk_wrapper_free(void *md)
int iadk_wrapper_init(void *md)
int iadk_wrapper_process(void *md, struct sof_source **sources, int num_of_sources, struct sof_sink **sinks, int num_of_sinks)
int iadk_wrapper_set_processing_mode(void *md, enum module_processing_mode mode)
int iadk_wrapper_reset(void *md)
enum module_processing_mode iadk_wrapper_get_processing_mode(void *md)
int iadk_wrapper_prepare(void *md)
Definition module_initial_settings_concrete.h:46
Descriptor of the data stream buffer extracted from a input module pin.
Definition processing_module_interface.h:70
Descriptor of the data stream buffer to inject into an output module pin.
Definition processing_module_interface.h:90