Skip to content

Commit c09ceb2

Browse files
committed
fix(demo): split feedback caculate macro with AUDIO_FREQ_TO_FEEDBACK_XS and AUDIO_FEEDBACK_TO_BUF_XS
Signed-off-by: sakumisu <1203593632@qq.com>
1 parent 56afada commit c09ceb2

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

class/audio/usb_audio.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ struct audio_cs_ep_ep_general_descriptor {
874874
0x09, /* bLength */ \
875875
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
876876
bFeedbackEndpointAddress, /* bFeedbackEndpointAddress Revise Dir to bEndpointAddress */ \
877-
0x15, /* bmAttributes: TransferType=Isochronous SyncType=Asynchronous EndpointType=Feedback */ \
877+
0x11, /* bmAttributes: TransferType=Isochronous SyncType=None EndpointType=Feedback */ \
878878
WBVAL(4), /* XXXX wMaxPacketSize in Bytes */ \
879879
bInterval, /* bInterval */ \
880880
0x03, /* bRefresh, 8ms */ \
@@ -1325,7 +1325,7 @@ struct audio_v2_control_range3_param_block {
13251325
0x07, /* bLength */ \
13261326
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
13271327
bFeedbackEndpointAddress, /* bFeedbackEndpointAddress Revise Dir to bEndpointAddress */ \
1328-
0x15, /* bmAttributes: TransferType=Isochronous SyncType=Asynchronous EndpointType=Feedback */ \
1328+
0x11, /* bmAttributes: TransferType=Isochronous SyncType=None EndpointType=Feedback */ \
13291329
WBVAL(4), /* XXXX wMaxPacketSize in Bytes */ \
13301330
bInterval /* bInterval */
13311331

@@ -1341,18 +1341,18 @@ struct audio_v2_control_range3_param_block {
13411341
(uint8_t)((frq >> 16)), (uint8_t)((frq >> 24))
13421342

13431343
/* format 10.14 */
1344-
#define AUDIO_UPDATE_FEEDBACK_DATA_FS(buf, freq) \
1345-
uint32_t value = ((freq << 10) / 1000); \
1346-
buf[0] = ((value << 4) & 0xFFU); \
1347-
buf[1] = (((value << 4) >> 8U) & 0xFFU); \
1348-
buf[2] = (((value << 4) >> 16U) & 0xFFU)
1344+
#define AUDIO_FREQ_TO_FEEDBACK_FS(freq) ((freq << 10) / 1000)
1345+
#define AUDIO_FEEDBACK_TO_BUF_FS(buf, feedback) \
1346+
buf[0] = ((feedback << 4) & 0xFFU); \
1347+
buf[1] = (((feedback << 4) >> 8U) & 0xFFU); \
1348+
buf[2] = (((feedback << 4) >> 16U) & 0xFFU)
13491349

13501350
/* format 16.16 */
1351-
#define AUDIO_UPDATE_FEEDBACK_DATA_HS(buf, freq) \
1352-
uint32_t value = ((freq << 13) / 1000); \
1353-
buf[0] = (((value & 0x00001FFFu) << 3) & 0xFFu); \
1354-
buf[1] = ((((value & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
1355-
buf[2] = (((value & 0x01FFE000u) >> 13) & 0xFFu); \
1356-
buf[3] = (((value & 0x01FFE000u) >> 21) & 0xFFu)
1351+
#define AUDIO_FREQ_TO_FEEDBACK_HS(freq) ((freq << 13) / 1000)
1352+
#define AUDIO_FEEDBACK_TO_BUF_HS(buf, feedback) \
1353+
buf[0] = (((feedback & 0x00001FFFu) << 3) & 0xFFu); \
1354+
buf[1] = ((((feedback & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
1355+
buf[2] = (((feedback & 0x01FFE000u) >> 13) & 0xFFu); \
1356+
buf[3] = (((feedback & 0x01FFE000u) >> 21) & 0xFFu)
13571357

13581358
#endif /* USB_AUDIO_H */

demo/audio_v1_mic_speaker_multichan_template.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,8 @@ void usbd_audio_open(uint8_t busid, uint8_t intf)
290290
rx_flag = 1;
291291
/* setup first out ep read transfer */
292292
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
293-
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_SPEAKER_FREQ); /* uac1 can only use 10.14 */
293+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_SPEAKER_FREQ);
294+
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value); /* uac1 can only use 10.14 */
294295
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
295296
printf("OPEN1\r\n");
296297
} else {
@@ -328,7 +329,8 @@ void usbd_audio_in_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
328329
void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
329330
{
330331
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
331-
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_SPEAKER_FREQ);
332+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_SPEAKER_FREQ);
333+
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
332334
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
333335
}
334336
#endif

demo/audio_v2_speaker_multichan_template.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -306,9 +306,11 @@ void usbd_audio_open(uint8_t busid, uint8_t intf)
306306
/* setup first out ep read transfer */
307307
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
308308
#ifdef CONFIG_USB_HS
309-
AUDIO_UPDATE_FEEDBACK_DATA_HS(s_speaker_feedback_buffer, AUDIO_FREQ);
309+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
310+
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
310311
#else
311-
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_FREQ);
312+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
313+
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
312314
#endif
313315
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
314316
USB_LOG_RAW("OPEN\r\n");
@@ -338,9 +340,11 @@ void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nb
338340
{
339341
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
340342
#ifdef CONFIG_USB_HS
341-
AUDIO_UPDATE_FEEDBACK_DATA_HS(s_speaker_feedback_buffer, AUDIO_FREQ);
343+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
344+
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
342345
#else
343-
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_FREQ);
346+
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
347+
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
344348
#endif
345349
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
346350
}

0 commit comments

Comments
 (0)