Skip to content

Commit ff42a6f

Browse files
committed
update(demo): add usbd_audio_set_sampling_freq and usbd_audio_get_sampling_freq for audio demo
Signed-off-by: sakumisu <[email protected]>
1 parent ca71e74 commit ff42a6f

5 files changed

+123
-8
lines changed

demo/audio_v1_mic_multichan_template.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ const uint8_t audio_v1_descriptor[] = {
220220

221221
volatile bool tx_flag = 0;
222222
volatile bool ep_tx_busy_flag = false;
223+
volatile uint32_t s_mic_sample_rate;
223224

224225
static void usbd_event_handler(uint8_t busid, uint8_t event)
225226
{
@@ -260,6 +261,26 @@ void usbd_audio_close(uint8_t busid, uint8_t intf)
260261
tx_flag = 0;
261262
}
262263

264+
void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq)
265+
{
266+
if (ep == AUDIO_IN_EP) {
267+
s_mic_sample_rate = sampling_freq;
268+
}
269+
}
270+
271+
uint32_t usbd_audio_get_sampling_freq(uint8_t busid, uint8_t ep)
272+
{
273+
(void)busid;
274+
275+
uint32_t freq = 0;
276+
277+
if (ep == AUDIO_IN_EP) {
278+
freq = s_mic_sample_rate;
279+
}
280+
281+
return freq;
282+
}
283+
263284
void usbd_audio_iso_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
264285
{
265286
USB_LOG_RAW("actual in len:%d\r\n", (unsigned int)nbytes);

demo/audio_v1_mic_speaker_multichan_template.c

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,8 @@ USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t s_speaker_feedback_buffer[4];
258258
volatile bool tx_flag = 0;
259259
volatile bool rx_flag = 0;
260260
volatile bool ep_tx_busy_flag = false;
261+
volatile uint32_t s_mic_sample_rate;
262+
volatile uint32_t s_speaker_sample_rate;
261263

262264
static void usbd_event_handler(uint8_t busid, uint8_t event)
263265
{
@@ -291,7 +293,7 @@ void usbd_audio_open(uint8_t busid, uint8_t intf)
291293
/* setup first out ep read transfer */
292294
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
293295
#if USING_FEEDBACK == 1
294-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_SPEAKER_FREQ);
296+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(s_speaker_sample_rate);
295297
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value); /* uac1 can only use 10.14 */
296298
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
297299
#endif
@@ -315,6 +317,30 @@ void usbd_audio_close(uint8_t busid, uint8_t intf)
315317
}
316318
}
317319

320+
void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq)
321+
{
322+
if (ep == AUDIO_OUT_EP) {
323+
s_speaker_sample_rate = sampling_freq;
324+
} else if (ep == AUDIO_IN_EP) {
325+
s_mic_sample_rate = sampling_freq;
326+
}
327+
}
328+
329+
uint32_t usbd_audio_get_sampling_freq(uint8_t busid, uint8_t ep)
330+
{
331+
(void)busid;
332+
333+
uint32_t freq = 0;
334+
335+
if (ep == AUDIO_OUT_EP) {
336+
freq = s_speaker_sample_rate;
337+
} else if (ep == AUDIO_IN_EP) {
338+
freq = s_mic_sample_rate;
339+
}
340+
341+
return freq;
342+
}
343+
318344
void usbd_audio_out_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
319345
{
320346
USB_LOG_RAW("actual out len:%d\r\n", (unsigned int)nbytes);
@@ -331,7 +357,7 @@ void usbd_audio_in_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
331357
void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
332358
{
333359
USB_LOG_RAW("actual feedback len:%d\r\n", (unsigned int)nbytes);
334-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_SPEAKER_FREQ);
360+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(s_speaker_sample_rate);
335361
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
336362
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
337363
}

demo/audio_v2_mic_multichan_template.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[AUDIO_IN_PACKET];
235235

236236
volatile bool tx_flag = 0;
237237
volatile bool ep_tx_busy_flag = false;
238+
volatile uint32_t s_mic_sample_rate;
238239

239240
static void usbd_event_handler(uint8_t busid, uint8_t event)
240241
{
@@ -273,6 +274,26 @@ void usbd_audio_close(uint8_t busid, uint8_t intf)
273274
tx_flag = 0;
274275
}
275276

277+
void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq)
278+
{
279+
if (ep == AUDIO_IN_EP) {
280+
s_mic_sample_rate = sampling_freq;
281+
}
282+
}
283+
284+
uint32_t usbd_audio_get_sampling_freq(uint8_t busid, uint8_t ep)
285+
{
286+
(void)busid;
287+
288+
uint32_t freq = 0;
289+
290+
if (ep == AUDIO_IN_EP) {
291+
freq = s_mic_sample_rate;
292+
}
293+
294+
return freq;
295+
}
296+
276297
void usbd_audio_get_sampling_freq_table(uint8_t busid, uint8_t ep, uint8_t **sampling_freq_table)
277298
{
278299
if (ep == AUDIO_IN_EP) {

demo/audio_v2_mic_speaker_multichan_template.c

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,8 @@ USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[AUDIO_IN_PACKET];
342342
volatile bool tx_flag = 0;
343343
volatile bool rx_flag = 0;
344344
volatile bool ep_tx_busy_flag = false;
345+
volatile uint32_t s_mic_sample_rate;
346+
volatile uint32_t s_speaker_sample_rate;
345347

346348
static void usbd_event_handler(uint8_t busid, uint8_t event)
347349
{
@@ -402,6 +404,30 @@ void usbd_audio_close(uint8_t busid, uint8_t intf)
402404
}
403405
}
404406

407+
void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq)
408+
{
409+
if (ep == AUDIO_OUT_EP) {
410+
s_speaker_sample_rate = sampling_freq;
411+
} else if (ep == AUDIO_IN_EP) {
412+
s_mic_sample_rate = sampling_freq;
413+
}
414+
}
415+
416+
uint32_t usbd_audio_get_sampling_freq(uint8_t busid, uint8_t ep)
417+
{
418+
(void)busid;
419+
420+
uint32_t freq = 0;
421+
422+
if (ep == AUDIO_OUT_EP) {
423+
freq = s_speaker_sample_rate;
424+
} else if (ep == AUDIO_IN_EP) {
425+
freq = s_mic_sample_rate;
426+
}
427+
428+
return freq;
429+
}
430+
405431
void usbd_audio_get_sampling_freq_table(uint8_t busid, uint8_t ep, uint8_t **sampling_freq_table)
406432
{
407433
if (ep == AUDIO_OUT_EP) {
@@ -429,10 +455,10 @@ void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nb
429455
{
430456
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
431457
#ifdef CONFIG_USB_HS
432-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
458+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(s_speaker_sample_rate);
433459
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
434460
#else
435-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
461+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(s_speaker_sample_rate);
436462
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
437463
#endif
438464
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);

demo/audio_v2_speaker_multichan_template.c

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[AUDIO_OUT_PACKET];
274274
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t s_speaker_feedback_buffer[4];
275275

276276
volatile bool rx_flag = 0;
277+
volatile uint32_t s_speaker_sample_rate;
277278

278279
static void usbd_event_handler(uint8_t busid, uint8_t event)
279280
{
@@ -307,10 +308,10 @@ void usbd_audio_open(uint8_t busid, uint8_t intf)
307308
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
308309
#if USING_FEEDBACK == 1
309310
#ifdef CONFIG_USB_HS
310-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
311+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(s_speaker_sample_rate);
311312
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
312313
#else
313-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
314+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(s_speaker_sample_rate);
314315
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
315316
#endif
316317
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
@@ -324,6 +325,26 @@ void usbd_audio_close(uint8_t busid, uint8_t intf)
324325
rx_flag = 0;
325326
}
326327

328+
void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq)
329+
{
330+
if (ep == AUDIO_OUT_EP) {
331+
s_speaker_sample_rate = sampling_freq;
332+
}
333+
}
334+
335+
uint32_t usbd_audio_get_sampling_freq(uint8_t busid, uint8_t ep)
336+
{
337+
(void)busid;
338+
339+
uint32_t freq = 0;
340+
341+
if (ep == AUDIO_OUT_EP) {
342+
freq = s_speaker_sample_rate;
343+
}
344+
345+
return freq;
346+
}
347+
327348
void usbd_audio_get_sampling_freq_table(uint8_t busid, uint8_t ep, uint8_t **sampling_freq_table)
328349
{
329350
if (ep == AUDIO_OUT_EP) {
@@ -342,10 +363,10 @@ void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nb
342363
{
343364
USB_LOG_RAW("actual feedback len:%d\r\n", (unsigned int)nbytes);
344365
#ifdef CONFIG_USB_HS
345-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
366+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(s_speaker_sample_rate);
346367
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
347368
#else
348-
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
369+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(s_speaker_sample_rate);
349370
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
350371
#endif
351372
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);

0 commit comments

Comments
 (0)