7
7
* Date Author Notes
8
8
* 2017-05-09 Urey first version
9
9
* 2019-07-09 Zero-Free improve device ops interface and data flows
10
- *
10
+ * 2025-03-04 wumingzi add doxygen comments.
11
11
*/
12
12
13
13
#ifndef __DEV_AUDIO_H__
54
54
#define AUDIO_CTL_STOP _AUDIO_CTL(4) /**< Stop audio device */
55
55
#define AUDIO_CTL_GETBUFFERINFO _AUDIO_CTL(5) /**< Get audio device buffer information */
56
56
57
- /** @} */ /* End of audio_control*/
57
+ /** @} */ /* End of audio_control */
58
58
59
59
/**
60
60
* @defgroup audio_type AUDIO_TYPE
70
70
#define AUDIO_TYPE_INPUT 0x01 /**< Set audio device type to input type */
71
71
#define AUDIO_TYPE_OUTPUT 0x02 /**< Set audio device type to output type */
72
72
#define AUDIO_TYPE_MIXER 0x04 /**< Set audio device type to mixer type */
73
- /** @} */ /* End of audio_type*/
73
+ /** @} */ /* End of audio_type */
74
74
75
75
/**
76
76
* @defgroup audio_samp_rates AUDIO_SAMP_RATES
94
94
#define AUDIO_SAMP_RATE_160K 0x0200 /**< Set audio device sample rate to 160K */
95
95
#define AUDIO_SAMP_RATE_172K 0x0400 /**< Set audio device sample rate to 172K */
96
96
#define AUDIO_SAMP_RATE_192K 0x0800 /**< Set audio device sample rate to 192K */
97
- /** @} */ /* End of audio_samp_rates*/
97
+ /** @} */ /* End of audio_samp_rates */
98
98
99
99
/**
100
100
* @defgroup audio_bit_rates AUDIO_BIT_RATES
114
114
#define AUDIO_BIT_RATE_160K 0x20 /**< Set audio device bit rates to 160K */
115
115
#define AUDIO_BIT_RATE_172K 0x40 /**< Set audio device bit rates to 172K */
116
116
#define AUDIO_BIT_RATE_192K 0x80 /**< Set audio device bit rates to 192K */
117
- /** @} */ /* End of audio_bit_rates*/
117
+ /** @} */ /* End of audio_bit_rates */
118
118
119
119
120
120
/**
121
121
* @defgroup audio_dsp AUDIO_DSP
122
122
*
123
- * @brief Support Dsp(input/output) Units controls
123
+ * @brief Support Dsp(input/output) Units controls. The macro group from application level, can
124
+ * set audio mixer parameters including samplerate, channels etc.
124
125
*/
125
126
126
127
/**
131
132
#define AUDIO_DSP_SAMPLERATE 1 /**< samplerate */
132
133
#define AUDIO_DSP_CHANNELS 2 /**< channels */
133
134
#define AUDIO_DSP_SAMPLEBITS 3 /**< sample bits width */
134
- /** @} */ /* End of audio_dsp*/
135
+ /** @} */ /* End of audio_dsp */
135
136
136
137
/**
137
138
* @defgroup audio_mixer AUDIO_MIXER
138
139
*
139
- * @brief Supported Mixer Units controls
140
+ * @brief Supported Mixer Units controls. The macro group from driver level, can set audio mixer
141
+ * parameters including volume, frequence db, microphone etc.
140
142
*/
141
143
142
144
/**
147
149
#define AUDIO_MIXER_MUTE 0x0001 /**< Mute audio device */
148
150
#define AUDIO_MIXER_VOLUME 0x0002 /**< Set mixer volume */
149
151
#define AUDIO_MIXER_BASS 0x0004 /**< Set the low-frequency section of the mixer */
150
- #define AUDIO_MIXER_MID 0x0008 /**< Set the mid-frequency section of the mixer*/
152
+ #define AUDIO_MIXER_MID 0x0008 /**< Set the mid-frequency section of the mixer */
151
153
#define AUDIO_MIXER_TREBLE 0x0010 /**< Set the high-frequency section of the mixer */
152
154
#define AUDIO_MIXER_EQUALIZER 0x0020 /**< Set equalizer option */
153
155
#define AUDIO_MIXER_LINE 0x0040 /**< Set line control option */
154
156
#define AUDIO_MIXER_DIGITAL 0x0080 /**< Set digital source */
155
157
#define AUDIO_MIXER_MIC 0x0100 /**< Set microphone option */
156
158
#define AUDIO_MIXER_VITURAL 0x0200 /**< Set virtual audio option */
157
159
#define AUDIO_MIXER_EXTEND 0x8000 /**< Extend mixer command */
158
- /** @} */ /* End of audio_mixer*/
160
+ /** @} */ /* End of audio_mixer */
159
161
160
162
#define AUDIO_VOLUME_MAX (100)
161
163
#define AUDIO_VOLUME_MIN (0)
@@ -181,25 +183,36 @@ enum
181
183
*/
182
184
struct rt_audio_buf_info
183
185
{
184
- rt_uint8_t * buffer ;
185
- rt_uint16_t block_size ;
186
- rt_uint16_t block_count ;
187
- rt_uint32_t total_size ;
186
+ rt_uint8_t * buffer ; /**< Audio buffer information */
187
+ rt_uint16_t block_size ; /**< Audio block_size information for replay function */
188
+ rt_uint16_t block_count ; /**< Audio block_count information for replay function */
189
+ rt_uint32_t total_size ; /**< Audio total_size which is equal to block_size multiplying
190
+ block_count information for replay function */
188
191
};
189
192
190
193
struct rt_audio_device ;
191
194
struct rt_audio_caps ;
192
195
struct rt_audio_configure ;
196
+
197
+ /**
198
+ * @brief Aduio device operators
199
+ */
193
200
struct rt_audio_ops
194
- {
195
- rt_err_t (* getcaps )(struct rt_audio_device * audio , struct rt_audio_caps * caps );
196
- rt_err_t (* configure )(struct rt_audio_device * audio , struct rt_audio_caps * caps );
197
- rt_err_t (* init )(struct rt_audio_device * audio );
198
- rt_err_t (* start )(struct rt_audio_device * audio , int stream );
199
- rt_err_t (* stop )(struct rt_audio_device * audio , int stream );
201
+ {
202
+ /** Get audio capabilities information */
203
+ rt_err_t (* getcaps )(struct rt_audio_device * audio , struct rt_audio_caps * caps );
204
+ /** Configure audio devices */
205
+ rt_err_t (* configure )(struct rt_audio_device * audio , struct rt_audio_caps * caps );
206
+ /** Initialize audio device */
207
+ rt_err_t (* init )(struct rt_audio_device * audio );
208
+ /** Turn on the audio device */
209
+ rt_err_t (* start )(struct rt_audio_device * audio , int stream );
210
+ /** Turn off the audio device */
211
+ rt_err_t (* stop )(struct rt_audio_device * audio , int stream );
212
+ /** Transmit data between application and device */
200
213
rt_ssize_t (* transmit )(struct rt_audio_device * audio , const void * writeBuf , void * readBuf , rt_size_t size );
201
- /* get page size of codec or private buffer's info */
202
- void (* buffer_info )(struct rt_audio_device * audio , struct rt_audio_buf_info * info );
214
+ /** Get page size of codec or private buffer's info */
215
+ void (* buffer_info )(struct rt_audio_device * audio , struct rt_audio_buf_info * info );
203
216
};
204
217
205
218
/**
@@ -211,43 +224,45 @@ struct rt_audio_ops
211
224
*/
212
225
struct rt_audio_configure
213
226
{
214
- rt_uint32_t samplerate ;
215
- rt_uint16_t channels ;
216
- rt_uint16_t samplebits ;
227
+ rt_uint32_t samplerate ; /**< Audio samplerate information */
228
+ rt_uint16_t channels ; /**< Audio channels information */
229
+ rt_uint16_t samplebits ; /**< Audio samplebits information */
217
230
};
218
231
219
232
/**
220
233
* @brief Audio capabilities
221
234
*/
222
235
struct rt_audio_caps
223
236
{
224
- int main_type ;
225
- int sub_type ;
237
+ int main_type ; /**< Audio main type, one value of @ref audio_type */
238
+ int sub_type ; /**< Audio sub type, one value of @ref audio_dsp @ref audio_mixer */
226
239
227
240
union
228
241
{
229
- rt_uint32_t mask ;
230
- int value ;
231
- struct rt_audio_configure config ;
232
- } udata ;
242
+ rt_uint32_t mask ; /**< Capabilities mask */
243
+ int value ; /**< Capabilities value */
244
+ struct rt_audio_configure config ; /**< Audio samplebits information */
245
+ } udata ; /**< User data */
233
246
};
234
247
235
248
/**
236
249
* @brief Audio replay
237
250
*/
238
251
struct rt_audio_replay
239
252
{
240
- struct rt_mempool * mp ;
241
- struct rt_data_queue queue ;
242
- struct rt_mutex lock ;
243
- struct rt_completion cmp ;
244
- struct rt_audio_buf_info buf_info ;
245
- rt_uint8_t * write_data ;
246
- rt_uint16_t write_index ;
247
- rt_uint16_t read_index ;
248
- rt_uint32_t pos ;
249
- rt_uint8_t event ;
250
- rt_bool_t activated ;
253
+ struct rt_mempool * mp ; /**< Memory pool for audio replay */
254
+ struct rt_data_queue queue ; /**< Replay data queue */
255
+ struct rt_mutex lock ; /**< Replay mutex lock */
256
+ struct rt_completion cmp ; /**< Replay completion, it will be */
257
+ struct rt_audio_buf_info buf_info ; /**< Replay buffer information */
258
+ rt_uint8_t * write_data ; /**< Pointer to the data to be written into data queue */
259
+ rt_uint16_t write_index ; /**< Index of pointer write_data.It records how much data
260
+ has been written in currently being played block */
261
+ rt_uint16_t read_index ; /**< Index of replaying data for audio device, it indicates index
262
+ of replay in the blocks which is currently being played */
263
+ rt_uint32_t pos ; /**< Global position of audio replay */
264
+ rt_uint8_t event ; /**< Event flag */
265
+ rt_bool_t activated ; /**< Activaty flag */
251
266
};
252
267
253
268
/**
@@ -264,10 +279,10 @@ struct rt_audio_record
264
279
*/
265
280
struct rt_audio_device
266
281
{
267
- struct rt_device parent ;
268
- struct rt_audio_ops * ops ;
269
- struct rt_audio_replay * replay ;
270
- struct rt_audio_record * record ;
282
+ struct rt_device parent ; /**< Audio device parents */
283
+ struct rt_audio_ops * ops ; /**< Audio device operator */
284
+ struct rt_audio_replay * replay ; /**< Pointer to audio replay structure */
285
+ struct rt_audio_record * record ; /**< Pointer to audio record structure */
271
286
};
272
287
273
288
rt_err_t rt_audio_register (struct rt_audio_device * audio , const char * name , rt_uint32_t flag , void * data );
@@ -277,7 +292,8 @@ void rt_audio_rx_done(struct rt_audio_device *audio, rt_uint8_t *pbuf, rt
277
292
/**
278
293
* @defgroup audio_codec_cmd CODEC_CMD
279
294
*
280
- * @brief Device Control Commands
295
+ * @brief Device Control Commands. The macro group from hardware level, can set codec
296
+ * parametes including volume, EQ and 3D etc.
281
297
*/
282
298
283
299
/**
@@ -292,7 +308,7 @@ void rt_audio_rx_done(struct rt_audio_device *audio, rt_uint8_t *pbuf, rt
292
308
#define CODEC_CMD_3D 5 /**< Set 3D effect by codec */
293
309
294
310
#define CODEC_VOLUME_MAX (63)
295
- /** @} */ /* End of audio_codec_cmd*/
311
+ /** @} */ /* End of audio_codec_cmd */
296
312
297
313
/** @} group_Audio */
298
314
0 commit comments