examples/uac2: drop redundant entity_id check in request helpers

The audio20 get/set entity dispatchers already extract entity_id from
wIndex and route to the matching clock / feature-unit helper, so each
helper's own entity_id re-derivation and TU_ASSERT(entity_id == ...) was
dead: the helper is only ever reached for its one entity. Unknown
entities are still rejected by the dispatcher's "not handled" path.

Remove the redundant local, the dead assert, and the constant "entity"
field from each helper's not-supported log (the message text already
identifies the entity). The local is dropped entirely rather than kept
for the log, since TU_LOG1 compiles out in release and would leave it
unused.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
hathach
2026-06-18 17:42:51 +07:00
parent edf675f468
commit 3710e6e5a5
3 changed files with 31 additions and 61 deletions

View File

@ -84,10 +84,7 @@ void audio_task(void) {
// Helper for clock get requests
static bool tud_audio_clock_get_request(uint8_t rhport, tusb_control_request_t const *p_request)
{
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_CLOCK);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
if (ctrl_sel == AUDIO20_CS_CTRL_SAM_FREQ)
{
@ -123,8 +120,8 @@ static bool tud_audio_clock_get_request(uint8_t rhport, tusb_control_request_t c
TU_LOG1("Clock get is valid %u\r\n", cur_valid.bCur);
return tud_audio_buffer_and_schedule_control_xfer(rhport, p_request, &cur_valid, sizeof(cur_valid));
}
TU_LOG1("Clock get request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Clock get request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
@ -133,10 +130,8 @@ static bool tud_audio_clock_set_request(uint8_t rhport, tusb_control_request_t c
{
(void)rhport;
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_CLOCK);
TU_VERIFY(p_request->bRequest == AUDIO20_CS_REQ_CUR);
if (ctrl_sel == AUDIO20_CS_CTRL_SAM_FREQ)
@ -151,8 +146,8 @@ static bool tud_audio_clock_set_request(uint8_t rhport, tusb_control_request_t c
}
else
{
TU_LOG1("Clock set request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Clock set request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
}
@ -160,12 +155,9 @@ static bool tud_audio_clock_set_request(uint8_t rhport, tusb_control_request_t c
// Helper for feature unit get requests
static bool tud_audio_feature_unit_get_request(uint8_t rhport, tusb_control_request_t const *p_request)
{
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const channel_num = TU_U16_LOW(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_SPK_FEATURE_UNIT);
if (ctrl_sel == AUDIO20_FU_CTRL_MUTE && p_request->bRequest == AUDIO20_CS_REQ_CUR)
{
audio20_control_cur_1_t mute1 = { .bCur = mute[channel_num] };
@ -191,8 +183,8 @@ static bool tud_audio_feature_unit_get_request(uint8_t rhport, tusb_control_requ
return tud_audio_buffer_and_schedule_control_xfer(rhport, p_request, &cur_vol, sizeof(cur_vol));
}
}
TU_LOG1("Feature unit get request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Feature unit get request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
@ -202,11 +194,9 @@ static bool tud_audio_feature_unit_set_request(uint8_t rhport, tusb_control_requ
{
(void)rhport;
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const channel_num = TU_U16_LOW(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_SPK_FEATURE_UNIT);
TU_VERIFY(p_request->bRequest == AUDIO20_CS_REQ_CUR);
if (ctrl_sel == AUDIO20_FU_CTRL_MUTE)
@ -231,8 +221,8 @@ static bool tud_audio_feature_unit_set_request(uint8_t rhport, tusb_control_requ
}
else
{
TU_LOG1("Feature unit set request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Feature unit set request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
}

View File

@ -320,10 +320,7 @@ static bool audio10_get_req_entity(uint8_t rhport, tusb_control_request_t const
// Helper for clock get requests
static bool audio20_clock_get_request(uint8_t rhport, tusb_control_request_t const *p_request) {
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_CLOCK);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
if (ctrl_sel == AUDIO20_CS_CTRL_SAM_FREQ) {
if (p_request->bRequest == AUDIO20_CS_REQ_CUR) {
@ -351,8 +348,8 @@ static bool audio20_clock_get_request(uint8_t rhport, tusb_control_request_t con
TU_LOG1("Clock get is valid %u\r\n", cur_valid.bCur);
return tud_audio_buffer_and_schedule_control_xfer(rhport, p_request, &cur_valid, sizeof(cur_valid));
}
TU_LOG1("Clock get request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Clock get request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
@ -360,10 +357,8 @@ static bool audio20_clock_get_request(uint8_t rhport, tusb_control_request_t con
static bool audio20_clock_set_request(uint8_t rhport, tusb_control_request_t const *p_request, uint8_t const *buf) {
(void) rhport;
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_CLOCK);
TU_VERIFY(p_request->bRequest == AUDIO20_CS_REQ_CUR);
if (ctrl_sel == AUDIO20_CS_CTRL_SAM_FREQ) {
@ -375,20 +370,17 @@ static bool audio20_clock_set_request(uint8_t rhport, tusb_control_request_t con
return true;
} else {
TU_LOG1("Clock set request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Clock set request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
}
// Helper for feature unit get requests
static bool audio20_feature_unit_get_request(uint8_t rhport, tusb_control_request_t const *p_request) {
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const channel_num = TU_U16_LOW(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_SPK_FEATURE_UNIT);
if (ctrl_sel == AUDIO20_FU_CTRL_MUTE && p_request->bRequest == AUDIO20_CS_REQ_CUR) {
audio20_control_cur_1_t mute1 = {.bCur = mute[channel_num]};
TU_LOG1("Get channel %u mute %d\r\n", channel_num, mute1.bCur);
@ -407,8 +399,8 @@ static bool audio20_feature_unit_get_request(uint8_t rhport, tusb_control_reques
return tud_audio_buffer_and_schedule_control_xfer(rhport, p_request, &cur_vol, sizeof(cur_vol));
}
}
TU_LOG1("Feature unit get request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Feature unit get request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
@ -417,11 +409,9 @@ static bool audio20_feature_unit_get_request(uint8_t rhport, tusb_control_reques
static bool audio20_feature_unit_set_request(uint8_t rhport, tusb_control_request_t const *p_request, uint8_t const *buf) {
(void) rhport;
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const channel_num = TU_U16_LOW(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_SPK_FEATURE_UNIT);
TU_VERIFY(p_request->bRequest == AUDIO20_CS_REQ_CUR);
if (ctrl_sel == AUDIO20_FU_CTRL_MUTE) {
@ -441,8 +431,8 @@ static bool audio20_feature_unit_set_request(uint8_t rhport, tusb_control_reques
return true;
} else {
TU_LOG1("Feature unit set request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Feature unit set request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
}

View File

@ -316,10 +316,7 @@ const uint32_t sample_rates[] = {44100, 48000, 88200, 96000};
#define N_SAMPLE_RATES TU_ARRAY_SIZE(sample_rates)
static bool audio20_clock_get_request(uint8_t rhport, tusb_control_request_t const *p_request) {
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_CLOCK);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
if (ctrl_sel == AUDIO20_CS_CTRL_SAM_FREQ) {
if (p_request->bRequest == AUDIO20_CS_REQ_CUR) {
@ -347,16 +344,14 @@ static bool audio20_clock_get_request(uint8_t rhport, tusb_control_request_t con
TU_LOG1("Clock get is valid %u\r\n", cur_valid.bCur);
return tud_audio_buffer_and_schedule_control_xfer(rhport, p_request, &cur_valid, sizeof(cur_valid));
}
TU_LOG1("Clock get request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Clock get request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
static bool audio20_clock_set_request(tusb_control_request_t const *p_request, uint8_t const *buf) {
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_CLOCK);
TU_VERIFY(p_request->bRequest == AUDIO20_CS_REQ_CUR);
if (ctrl_sel == AUDIO20_CS_CTRL_SAM_FREQ) {
@ -368,19 +363,16 @@ static bool audio20_clock_set_request(tusb_control_request_t const *p_request, u
return true;
} else {
TU_LOG1("Clock set request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Clock set request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
}
static bool audio20_feature_unit_get_request(uint8_t rhport, tusb_control_request_t const *p_request) {
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const channel_num = TU_U16_LOW(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_FEATURE_UNIT);
if (ctrl_sel == AUDIO20_FU_CTRL_MUTE && p_request->bRequest == AUDIO20_CS_REQ_CUR) {
audio20_control_cur_1_t mute1 = {.bCur = mute[channel_num]};
TU_LOG1("Get channel %u mute %d\r\n", channel_num, mute1.bCur);
@ -399,18 +391,16 @@ static bool audio20_feature_unit_get_request(uint8_t rhport, tusb_control_reques
return tud_audio_buffer_and_schedule_control_xfer(rhport, p_request, &cur_vol, sizeof(cur_vol));
}
}
TU_LOG1("Feature unit get request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Feature unit get request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
static bool audio20_feature_unit_set_request(tusb_control_request_t const *p_request, uint8_t const *buf) {
uint8_t const entity_id = TU_U16_HIGH(p_request->wIndex);
uint8_t const ctrl_sel = TU_U16_HIGH(p_request->wValue);
uint8_t const channel_num = TU_U16_LOW(p_request->wValue);
TU_ASSERT(entity_id == UAC2_ENTITY_FEATURE_UNIT);
TU_VERIFY(p_request->bRequest == AUDIO20_CS_REQ_CUR);
if (ctrl_sel == AUDIO20_FU_CTRL_MUTE) {
@ -430,8 +420,8 @@ static bool audio20_feature_unit_set_request(tusb_control_request_t const *p_req
return true;
} else {
TU_LOG1("Feature unit set request not supported, entity = %u, selector = %u, request = %u\r\n",
entity_id, ctrl_sel, p_request->bRequest);
TU_LOG1("Feature unit set request not supported, selector = %u, request = %u\r\n",
ctrl_sel, p_request->bRequest);
return false;
}
}