1 /*
2  * Copyright (c) 2022, sakumisu
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef USBD_AUDIO_H
7 #define USBD_AUDIO_H
8 
9 #include "usb_audio.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct audio_entity_info {
16     uint8_t bDescriptorSubtype;
17     uint8_t bEntityId;
18     uint8_t ep;
19 };
20 
21 /* Init audio interface driver */
22 struct usbd_interface *usbd_audio_init_intf(uint8_t busid, struct usbd_interface *intf,
23                                             uint16_t uac_version,
24                                             struct audio_entity_info *table,
25                                             uint8_t num);
26 
27 void usbd_audio_open(uint8_t busid, uint8_t intf);
28 void usbd_audio_close(uint8_t busid, uint8_t intf);
29 
30 void usbd_audio_set_volume(uint8_t busid, uint8_t ep, uint8_t ch, int volume_db);
31 int usbd_audio_get_volume(uint8_t busid, uint8_t ep, uint8_t ch);
32 void usbd_audio_set_mute(uint8_t busid, uint8_t ep, uint8_t ch, bool mute);
33 bool usbd_audio_get_mute(uint8_t busid, uint8_t ep, uint8_t ch);
34 void usbd_audio_set_sampling_freq(uint8_t busid, uint8_t ep, uint32_t sampling_freq);
35 uint32_t usbd_audio_get_sampling_freq(uint8_t busid, uint8_t ep);
36 
37 void usbd_audio_get_sampling_freq_table(uint8_t busid, uint8_t ep, uint8_t **sampling_freq_table);
38 
39 #ifdef __cplusplus
40 }
41 #endif
42 
43 #endif /* USBD_AUDIO_H */
44