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:
@@ -874,7 +874,7 @@ struct audio_cs_ep_ep_general_descriptor {
|
|||||||
0x09, /* bLength */ \
|
0x09, /* bLength */ \
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
|
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
|
||||||
bFeedbackEndpointAddress, /* bFeedbackEndpointAddress Revise Dir to bEndpointAddress */ \
|
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 */ \
|
WBVAL(4), /* XXXX wMaxPacketSize in Bytes */ \
|
||||||
bInterval, /* bInterval */ \
|
bInterval, /* bInterval */ \
|
||||||
0x03, /* bRefresh, 8ms */ \
|
0x03, /* bRefresh, 8ms */ \
|
||||||
@@ -1325,7 +1325,7 @@ struct audio_v2_control_range3_param_block {
|
|||||||
0x07, /* bLength */ \
|
0x07, /* bLength */ \
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
|
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \
|
||||||
bFeedbackEndpointAddress, /* bFeedbackEndpointAddress Revise Dir to bEndpointAddress */ \
|
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 */ \
|
WBVAL(4), /* XXXX wMaxPacketSize in Bytes */ \
|
||||||
bInterval /* bInterval */
|
bInterval /* bInterval */
|
||||||
|
|
||||||
@@ -1341,18 +1341,18 @@ struct audio_v2_control_range3_param_block {
|
|||||||
(uint8_t)((frq >> 16)), (uint8_t)((frq >> 24))
|
(uint8_t)((frq >> 16)), (uint8_t)((frq >> 24))
|
||||||
|
|
||||||
/* format 10.14 */
|
/* format 10.14 */
|
||||||
#define AUDIO_UPDATE_FEEDBACK_DATA_FS(buf, freq) \
|
#define AUDIO_FREQ_TO_FEEDBACK_FS(freq) ((freq << 10) / 1000)
|
||||||
uint32_t value = ((freq << 10) / 1000); \
|
#define AUDIO_FEEDBACK_TO_BUF_FS(buf, feedback) \
|
||||||
buf[0] = ((value << 4) & 0xFFU); \
|
buf[0] = ((feedback << 4) & 0xFFU); \
|
||||||
buf[1] = (((value << 4) >> 8U) & 0xFFU); \
|
buf[1] = (((feedback << 4) >> 8U) & 0xFFU); \
|
||||||
buf[2] = (((value << 4) >> 16U) & 0xFFU)
|
buf[2] = (((feedback << 4) >> 16U) & 0xFFU)
|
||||||
|
|
||||||
/* format 16.16 */
|
/* format 16.16 */
|
||||||
#define AUDIO_UPDATE_FEEDBACK_DATA_HS(buf, freq) \
|
#define AUDIO_FREQ_TO_FEEDBACK_HS(freq) ((freq << 13) / 1000)
|
||||||
uint32_t value = ((freq << 13) / 1000); \
|
#define AUDIO_FEEDBACK_TO_BUF_HS(buf, feedback) \
|
||||||
buf[0] = (((value & 0x00001FFFu) << 3) & 0xFFu); \
|
buf[0] = (((feedback & 0x00001FFFu) << 3) & 0xFFu); \
|
||||||
buf[1] = ((((value & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
|
buf[1] = ((((feedback & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
|
||||||
buf[2] = (((value & 0x01FFE000u) >> 13) & 0xFFu); \
|
buf[2] = (((feedback & 0x01FFE000u) >> 13) & 0xFFu); \
|
||||||
buf[3] = (((value & 0x01FFE000u) >> 21) & 0xFFu)
|
buf[3] = (((feedback & 0x01FFE000u) >> 21) & 0xFFu)
|
||||||
|
|
||||||
#endif /* USB_AUDIO_H */
|
#endif /* USB_AUDIO_H */
|
||||||
|
|||||||
@@ -290,7 +290,8 @@ void usbd_audio_open(uint8_t busid, uint8_t intf)
|
|||||||
rx_flag = 1;
|
rx_flag = 1;
|
||||||
/* setup first out ep read transfer */
|
/* setup first out ep read transfer */
|
||||||
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
|
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
|
||||||
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_SPEAKER_FREQ); /* uac1 can only use 10.14 */
|
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_SPEAKER_FREQ);
|
||||||
|
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value); /* uac1 can only use 10.14 */
|
||||||
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
||||||
printf("OPEN1\r\n");
|
printf("OPEN1\r\n");
|
||||||
} else {
|
} else {
|
||||||
@@ -328,7 +329,8 @@ void usbd_audio_in_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
|
|||||||
void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
|
void usbd_audio_iso_out_feedback_callback(uint8_t busid, uint8_t ep, uint32_t nbytes)
|
||||||
{
|
{
|
||||||
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
|
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
|
||||||
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_SPEAKER_FREQ);
|
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_SPEAKER_FREQ);
|
||||||
|
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
|
||||||
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -306,9 +306,11 @@ void usbd_audio_open(uint8_t busid, uint8_t intf)
|
|||||||
/* setup first out ep read transfer */
|
/* setup first out ep read transfer */
|
||||||
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
|
usbd_ep_start_read(busid, AUDIO_OUT_EP, read_buffer, AUDIO_OUT_PACKET);
|
||||||
#ifdef CONFIG_USB_HS
|
#ifdef CONFIG_USB_HS
|
||||||
AUDIO_UPDATE_FEEDBACK_DATA_HS(s_speaker_feedback_buffer, AUDIO_FREQ);
|
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
|
||||||
|
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
|
||||||
#else
|
#else
|
||||||
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_FREQ);
|
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
|
||||||
|
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
|
||||||
#endif
|
#endif
|
||||||
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
||||||
USB_LOG_RAW("OPEN\r\n");
|
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
|
|||||||
{
|
{
|
||||||
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
|
USB_LOG_RAW("actual feedback len:%d\r\n", nbytes);
|
||||||
#ifdef CONFIG_USB_HS
|
#ifdef CONFIG_USB_HS
|
||||||
AUDIO_UPDATE_FEEDBACK_DATA_HS(s_speaker_feedback_buffer, AUDIO_FREQ);
|
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_HS(AUDIO_FREQ);
|
||||||
|
AUDIO_FEEDBACK_TO_BUF_HS(s_speaker_feedback_buffer, feedback_value);
|
||||||
#else
|
#else
|
||||||
AUDIO_UPDATE_FEEDBACK_DATA_FS(s_speaker_feedback_buffer, AUDIO_FREQ);
|
uint32_t feedback_value = AUDIO_FREQ_TO_FEEDBACK_FS(AUDIO_FREQ);
|
||||||
|
AUDIO_FEEDBACK_TO_BUF_FS(s_speaker_feedback_buffer, feedback_value);
|
||||||
#endif
|
#endif
|
||||||
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
usbd_ep_start_write(busid, AUDIO_OUT_FEEDBACK_EP, s_speaker_feedback_buffer, FEEDBACK_ENDP_PACKET_SIZE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user