cancel
Showing results for 
Search instead for 
Did you mean: 

USBX Audio Class frame done callback not called

nico23
Senior III

Please refer to this thread that, for some reason, @FBL accepted as an answer (it is not) https://community.st.com/t5/stm32-mcus-embedded-software/usbx-audio-class-frame-done-callback-not-called/td-p/855262

I'm seeing that when I try to start an audio flux from my PC to the USB Audio driver, I'm seeing the error handler being called with the following stack:

status = _ux_device_stack_transfer_request(transfer, max_packet_size, max_packet_size); 

triggers the error as the status is 38 (what does it mean?). Inside the function, I've found

status =  dcd -> ux_slave_dcd_function(dcd, UX_DCD_TRANSFER_REQUEST, transfer_request);

which is the one that returns 38.

In ux_api.h, the only value I was able to find that matches the return value was

#define UX_TRANSFER_BUS_RESET                                           0x26

 From here, I'm stuck as the ux_slave_dcd_function is defined as 

typedef struct UX_SLAVE_DCD_STRUCT
{

    UINT            ux_slave_dcd_status;
    UINT            ux_slave_dcd_controller_type;
    UINT            ux_slave_dcd_otg_capabilities;
    UINT            ux_slave_dcd_irq;
    ULONG           ux_slave_dcd_io;
    ULONG           ux_slave_dcd_device_address;
    UINT            (*ux_slave_dcd_function) (struct UX_SLAVE_DCD_STRUCT *,UINT, VOID *);
    void            *ux_slave_dcd_controller_hardware;

} UX_SLAVE_DCD;

 

2 REPLIES 2
FBL
ST Employee

Hi @nico23 

I've answered you in the original post! It would be better to address different issues in different posts to avoid misinterpretation.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.


Please, feel free to delete this post and keep the original one.

The issue is always one, the frame done callback not being called.