fix hid host incorrect edpt release if failed to transmit

add CDC_CONTROL_LINE_STATE_DTR/RTS, TUSB_INDEX_INVALID enum
This commit is contained in:
hathach 2022-12-20 12:06:59 +07:00
parent fc9321ce26
commit 7004914d8c
3 changed files with 14 additions and 3 deletions

View File

@ -192,6 +192,12 @@ typedef enum
CDC_REQUEST_MDLM_SEMANTIC_MODEL = 0x60,
}cdc_management_request_t;
enum
{
CDC_CONTROL_LINE_STATE_DTR = 0x01,
CDC_CONTROL_LINE_STATE_RTS = 0x02,
};
//--------------------------------------------------------------------+
// Management Element Notification (Notification Endpoint)
//--------------------------------------------------------------------+
@ -390,8 +396,8 @@ TU_VERIFY_STATIC(sizeof(cdc_line_coding_t) == 7, "size is not correct");
typedef struct TU_ATTR_PACKED
{
uint16_t dte_is_present : 1; ///< Indicates to DCE if DTE is presentor not. This signal corresponds to V.24 signal 108/2 and RS-232 signal DTR.
uint16_t half_duplex_carrier_control : 1;
uint16_t dtr : 1;
uint16_t rts : 1;
uint16_t : 14;
} cdc_line_control_state_t;

View File

@ -259,7 +259,7 @@ bool tuh_hid_receive_report(uint8_t dev_addr, uint8_t instance)
if ( !usbh_edpt_xfer(dev_addr, hid_itf->ep_in, hid_itf->epin_buf, hid_itf->epin_size) )
{
usbh_edpt_claim(dev_addr, hid_itf->ep_in);
usbh_edpt_release(dev_addr, hid_itf->ep_in);
return false;
}

View File

@ -273,6 +273,11 @@ enum
CONTROL_STAGE_ACK
};
enum
{
TUSB_INDEX_INVALID = 0xff
};
//--------------------------------------------------------------------+
// USB Descriptors
//--------------------------------------------------------------------+