diff options
| author | Ha Thach <[email protected]> | 2024-11-18 13:02:23 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-11-18 13:02:23 +0700 |
| commit | fee5ee6f0a64c3f4318940fe8b46eb7ea1add374 (patch) | |
| tree | 191afddd123e714c20681e26719003e97b0387a5 /src/class/audio | |
| parent | 0569188aed17d19d5954f1e1b911e989814ec93d (diff) | |
| parent | cdc98e12c1baa0528198e7a8abc0db06e6d205ec (diff) | |
Merge pull request #2866 from HiFiPhile/uac_fix
Fix 2 UAC issue
Diffstat (limited to 'src/class/audio')
| -rw-r--r-- | src/class/audio/audio_device.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/class/audio/audio_device.c b/src/class/audio/audio_device.c index 136f658df..66430feab 100644 --- a/src/class/audio/audio_device.c +++ b/src/class/audio/audio_device.c @@ -1810,7 +1810,8 @@ static bool audiod_get_interface(uint8_t rhport, tusb_control_request_t const * uint8_t const *dummy; TU_VERIFY(audiod_get_AS_interface_index_global(itf, &func_id, &idxItf, &dummy)); - TU_VERIFY(tud_control_xfer(rhport, p_request, &_audiod_fct[func_id].alt_setting[idxItf], 1)); + _audiod_fct[func_id].ctrl_buf[0] = _audiod_fct[func_id].alt_setting[idxItf]; + TU_VERIFY(tud_control_xfer(rhport, p_request, _audiod_fct[func_id].ctrl_buf, 1)); TU_LOG2(" Get itf: %u - current alt: %u\r\n", itf, _audiod_fct[func_id].alt_setting[idxItf]); @@ -2137,6 +2138,13 @@ static bool audiod_control_complete(uint8_t rhport, tusb_control_request_t const // Check if entity is present and get corresponding driver index TU_VERIFY(audiod_verify_entity_exists(itf, entityID, &func_id)); +#if CFG_TUD_AUDIO_ENABLE_EP_IN && CFG_TUD_AUDIO_EP_IN_FLOW_CONTROL + uint8_t ctrlSel = TU_U16_HIGH(p_request->wValue); + if (_audiod_fct[func_id].bclock_id_tx == entityID && ctrlSel == AUDIO_CS_CTRL_SAM_FREQ && p_request->bRequest == AUDIO_CS_REQ_CUR) { + _audiod_fct[func_id].sample_rate_tx = tu_unaligned_read32(_audiod_fct[func_id].ctrl_buf); + } +#endif + // Invoke callback return tud_audio_set_req_entity_cb(rhport, p_request, _audiod_fct[func_id].ctrl_buf); } |
