解决 USB stall pid问题(mute问题)

点击静音按钮出现 USTS c0000004 stall pid问题。 

是因为数据没有收取,导致了数据的溢出。


int usbd_ep0_recv(uint16_t length, usbd_ep_xfer_callback_t callback)

static int uac_interface_class_request_out_handler(const usbd_interface_req_t *req)
{
    // only support SetCur()
    if (req->request != UAC_CLASS_REQ_SET_CUR) {
        return -1;
    }


    const uint8_t interface = req->index & 0xff;
    const uint8_t unit = req->index >> 8;
    switch (get_uac_interface(interface)) {
    case UAC_INTERFACE_HP_CONTROL:
        if (unit != UAC_FEATURE_UNIT_ID) {
            return -2;
        }

        m_hp_mute = req->value;

        int usbd_ep0_recv(uint16_t length, usbd_ep_xfer_callback_t callback); //添加这个函数进行收取数据

        return 0;
    case UAC_INTERFACE_MIC_CONTROL:
        if (unit != UAC_FEATURE_UNIT_ID) {
            return -2;
        }
        m_mic_mute = req->value;
        return 0;
    case UAC_INTERFACE_HP_DATA:
    case UAC_INTERFACE_MIC_DATA:
    case UAC_INTERFACE_UNKNOWN:
    default:
        return -1;
    }
}

总结:遇到这样的问题要学会类比。同样是contrl,道理是一样的。

相关文章
相关标签/搜索