audio.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef __AUDIO_H__
  2. #define __AUDIO_H__
  3. #include "system/task.h"
  4. #include "device/device.h"
  5. #include "usb_bulk_transfer.h"
  6. #include "usb/host/usb_host.h"
  7. #include "usb/device/uac_audio.h"
  8. #define HEADPHONE_SUPPORTED 0x01
  9. #define MICROPHONE_SUPPORTED 0x02
  10. #define HEADSET_SUPPORTED 0x03
  11. struct audio_streaming_t {
  12. u8 bNumEndpoints;
  13. u8 bFormatType; /** FORMAT_TYPE_1 */
  14. u8 bNrChannels; /** physical channels in the stream */
  15. u8 bSubframeSize;
  16. u8 bBitResolution;
  17. u8 bSamFreqType;
  18. u32 tSamFreq[8];
  19. u8 host_ep; //主机传输端点
  20. u8 ep; //从机端点(由描述符中指定)
  21. u8 ep_Interval;
  22. u16 ep_max_packet_size;
  23. };
  24. struct audio_device_t {
  25. u8 interface_num; //接口号
  26. u8 subclass;
  27. u8 support;
  28. void *parent;
  29. struct audio_streaming_t as[8];
  30. };
  31. int usb_audio_parser(struct usb_host_device *host_dev, u8 interface_num, const u8 *pBuf);
  32. // API
  33. int usb_audio_play_put_buf(void *ptr, u32 len);
  34. int usb_audio_record_get_buf(void *ptr, u32 len);
  35. //headphone api
  36. void set_usb_audio_play_volume(u16 vol);
  37. void usb_audio_start_play(const usb_dev usb_id, u8 channel, u8 bit_reso, u32 sample_rate); //指定播放数据的声道数,位数,采样率
  38. void usb_audio_stop_play(const usb_dev usb_id);
  39. void usb_audio_pause_play(void);
  40. void usb_audio_resume_play(void);
  41. //microphone api
  42. void set_usb_audio_record_volume(u16 vol);
  43. void usb_audio_start_record(const usb_dev usb_id, u8 bit_reso, u32 sample_rate); //指定录制数据的位数,采样率
  44. void usb_audio_stop_record(const usb_dev usb_id);
  45. void usb_audio_pause_record(void);
  46. void usb_audio_resume_record(void);
  47. #endif