1 /* 2 * Copyright (c) 2022, sakumisu 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef USBH_AUDIO_H 7 #define USBH_AUDIO_H 8 9 #include "usb_audio.h" 10 11 struct usbh_audio_format_type { 12 uint8_t channels; 13 uint8_t format_type; 14 uint8_t bitresolution; 15 uint8_t sampfreq_num; 16 uint32_t sampfreq[3]; 17 }; 18 19 /** 20 * bSourceID in feature_unit = input_terminal_id 21 * bSourceID in output_terminal = feature_unit_id 22 * terminal_link_id = input_terminal_id or output_terminal_id (if input_terminal_type or output_terminal_type is 0x0101) 23 * 24 * 25 */ 26 struct usbh_audio_module { 27 const char *name; 28 uint8_t data_intf; 29 uint8_t input_terminal_id; 30 uint16_t input_terminal_type; 31 uint16_t input_channel_config; 32 uint8_t output_terminal_id; 33 uint16_t output_terminal_type; 34 uint8_t feature_unit_id; 35 uint8_t feature_unit_controlsize; 36 uint8_t feature_unit_controls[8]; 37 uint8_t terminal_link_id; 38 struct usbh_audio_format_type altsetting[CONFIG_USBHOST_MAX_INTF_ALTSETTINGS]; 39 }; 40 41 struct usbh_audio { 42 struct usbh_hubport *hport; 43 44 uint8_t ctrl_intf; /* interface number */ 45 uint8_t minor; 46 usbh_pipe_t isoin; /* ISO IN endpoint */ 47 usbh_pipe_t isoout; /* ISO OUT endpoint */ 48 uint16_t isoin_mps; 49 uint16_t isoout_mps; 50 bool is_opened; 51 uint16_t bcdADC; 52 uint8_t bInCollection; 53 uint8_t num_of_intf_altsettings; 54 struct usbh_audio_module module[2]; 55 uint8_t module_num; 56 }; 57 58 #ifdef __cplusplus 59 extern "C" { 60 #endif 61 62 int usbh_audio_open(struct usbh_audio *audio_class, const char *name, uint32_t samp_freq); 63 int usbh_audio_close(struct usbh_audio *audio_class, const char *name); 64 int usbh_audio_set_volume(struct usbh_audio *audio_class, const char *name, uint8_t ch, uint8_t volume); 65 int usbh_audio_set_mute(struct usbh_audio *audio_class, const char *name, uint8_t ch, bool mute); 66 67 void usbh_audio_run(struct usbh_audio *audio_class); 68 void usbh_audio_stop(struct usbh_audio *audio_class); 69 70 #ifdef __cplusplus 71 } 72 #endif 73 74 #endif /* USBH_AUDIO_H */ 75