文章目录
- 一、流程
- 二、UML图
一、流程
- 1:主机发送命令,设置音频流播放接口的选项为“1”
- 2:请求从HAL驱动程序传输到
USBD_Core
- 3,4:
USBD_Core
将请求传输到音频类 - 5:设置配置选项功能被调用
- 6:
USB_AudioPlaybackSetAudioStreamingInterfaceAlternateSetting
回调被调用。它通知应用程序AS接口替代设置中的更改 - 7:播放会话开始函数被调用
- 8,9:USB输入节点启动被调用
- 10,11:控制功能启动被调用
- 12:播放会话已启动
- 13:中间件音频类从USB输入节点请求最大数据包大小
- 14:打开数据EP(同步)
- 15:中间件音频类从USB输入节点请求缓冲区
- 16:中间件音频类开始接收数据包
- 17,18:如果激活了反馈同步,则中间件音频类打开反馈EP并开始传输数据速率
- 19,20:准备正面握手
- i:音频SAI DMA已编程,传输完成时会产生中断
BSP_AUDIO_OUT_TransferComplete_CallBack
- ii:当收到此中断时,将启动新的传输
BSP_AUDIO_OUT_ChangeBuffer
。
二、UML图
Host
HAL USB
Middleware USB Core
Middleware USB Class Audi10
audio_usb_playback_session.c
audio_usb_node.c
audio_speaker_node.c
BSP
audio_speaker_node
1. Set Audio Streaming Interface Alternate Setting to 1
2. USBD_LL_SetupStage
3. USBD_StdDevReq
4. USBD_Audio_Setup
5. USBD_AUDIO_SetInterfaceAlternate
6. USB_AudioPlaybackSetAudioStreamingInterfaceAlternateSetting
7. USB_AudioPlaybackSessionStart
8. USB AUDIO StreamingOutputStart
9. node.state=AUDIO_NODE_STARTED
10. PlaybackFeatureUnitNode.CFStart
11.a AUDIO_SpeakerSetVolume
11.b BSP_AUDIO_OUT_SetVolume
12. session.state = AUDIO_SESSION_STARTED
13. USB_AudioStreamingInputOutputMaxPacketLength
Max Packet Length
14. USB_LL_OpenEP(OUT EP)
i. BSP_AUDIO_OUT_TransferComplete_CallBack
ii. BSP_AUDIO_OUT_ChangeBuffer
15. USB_AudioStreamingInputGetBuffer
pbuf, length
16. USB_LL_PrepareReceive
17. USB_LL_OpenEP(FEEDBACK UP)
18. USB_LL_Transmit
19. USBD_CtlSendStatus
20. USBD_LL
19. Status ok
Host
HAL USB
Middleware USB Core
Middleware USB Class Audi10
audio_usb_playback_session.c
audio_usb_node.c
audio_speaker_node.c
BSP
audio_speaker_node