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>
This commit is contained in:
sakumisu
2025-02-25 22:12:16 +08:00
parent 56afada2cc
commit c09ceb2537
3 changed files with 25 additions and 19 deletions

View File

@@ -874,7 +874,7 @@ struct audio_cs_ep_ep_general_descriptor {
0x09, /* bLength */ \
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
bFeedbackEndpointAddress, /* bFeedbackEndpointAddress Revise Dir to bEndpointAddress */ \
0x15, /* bmAttributes: TransferType=Isochronous SyncType=Asynchronous EndpointType=Feedback */ \
0x11, /* bmAttributes: TransferType=Isochronous SyncType=None EndpointType=Feedback */ \
WBVAL(4), /* XXXX wMaxPacketSize in Bytes */ \
bInterval, /* bInterval */ \
0x03, /* bRefresh, 8ms */ \
@@ -1325,7 +1325,7 @@ struct audio_v2_control_range3_param_block {
0x07, /* bLength */ \
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
bFeedbackEndpointAddress, /* bFeedbackEndpointAddress Revise Dir to bEndpointAddress */ \
0x15, /* bmAttributes: TransferType=Isochronous SyncType=Asynchronous EndpointType=Feedback */ \
0x11, /* bmAttributes: TransferType=Isochronous SyncType=None EndpointType=Feedback */ \
WBVAL(4), /* XXXX wMaxPacketSize in Bytes */ \
bInterval /* bInterval */
@@ -1341,18 +1341,18 @@ struct audio_v2_control_range3_param_block {
(uint8_t)((frq >> 16)), (uint8_t)((frq >> 24))
/* format 10.14 */
#define AUDIO_UPDATE_FEEDBACK_DATA_FS(buf, freq) \
uint32_t value = ((freq << 10) / 1000); \
buf[0] = ((value << 4) & 0xFFU); \
buf[1] = (((value << 4) >> 8U) & 0xFFU); \
buf[2] = (((value << 4) >> 16U) & 0xFFU)
#define AUDIO_FREQ_TO_FEEDBACK_FS(freq) ((freq << 10) / 1000)
#define AUDIO_FEEDBACK_TO_BUF_FS(buf, feedback) \
buf[0] = ((feedback << 4) & 0xFFU); \
buf[1] = (((feedback << 4) >> 8U) & 0xFFU); \
buf[2] = (((feedback << 4) >> 16U) & 0xFFU)
/* format 16.16 */
#define AUDIO_UPDATE_FEEDBACK_DATA_HS(buf, freq) \
uint32_t value = ((freq << 13) / 1000); \
buf[0] = (((value & 0x00001FFFu) << 3) & 0xFFu); \
buf[1] = ((((value & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
buf[2] = (((value & 0x01FFE000u) >> 13) & 0xFFu); \
buf[3] = (((value & 0x01FFE000u) >> 21) & 0xFFu)
#define AUDIO_FREQ_TO_FEEDBACK_HS(freq) ((freq << 13) / 1000)
#define AUDIO_FEEDBACK_TO_BUF_HS(buf, feedback) \
buf[0] = (((feedback & 0x00001FFFu) << 3) & 0xFFu); \
buf[1] = ((((feedback & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
buf[2] = (((feedback & 0x01FFE000u) >> 13) & 0xFFu); \
buf[3] = (((feedback & 0x01FFE000u) >> 21) & 0xFFu)
#endif /* USB_AUDIO_H */