USB: EndpointResolver: Add a generic method to get a free endpoint

feature-hal-spec-usb-device
Filip Jagodzinski 2018-03-19 16:41:55 +01:00 committed by Russ Butler
parent 88b5d1c963
commit 4c752ff057
2 changed files with 13 additions and 13 deletions

View File

@ -44,9 +44,9 @@ void EndpointResolver::endpoint_ctrl(uint32_t size)
endpoint_out(USB_EP_TYPE_CTRL, size); endpoint_out(USB_EP_TYPE_CTRL, size);
} }
usb_ep_t EndpointResolver::endpoint_in(usb_ep_type_t type, uint32_t size) usb_ep_t EndpointResolver::next_free_endpoint(bool in_not_out, usb_ep_type_t type, uint32_t size)
{ {
int index = next_index(type, true); int index = next_index(type, in_not_out);
if (index < 0) { if (index < 0) {
_valid = false; _valid = false;
return 0; return 0;
@ -57,21 +57,16 @@ usb_ep_t EndpointResolver::endpoint_in(usb_ep_type_t type, uint32_t size)
_used |= 1 << index; _used |= 1 << index;
return index_to_endpoint(index); return index_to_endpoint(index);
}
usb_ep_t EndpointResolver::endpoint_in(usb_ep_type_t type, uint32_t size)
{
return next_free_endpoint(true, type, size);
} }
usb_ep_t EndpointResolver::endpoint_out(usb_ep_type_t type, uint32_t size) usb_ep_t EndpointResolver::endpoint_out(usb_ep_type_t type, uint32_t size)
{ {
int index = next_index(type, false); return next_free_endpoint(false, type, size);
if (index < 0) {
_valid = false;
return 0;
}
const usb_ep_entry_t &entry = _table->table[index_to_logical(index)];
_cost += entry.base_cost + entry.byte_cost * size;
_used |= 1 << index;
return index_to_endpoint(index);
} }
bool EndpointResolver::valid() bool EndpointResolver::valid()

View File

@ -62,6 +62,11 @@ public:
*/ */
usb_ep_t endpoint_out(usb_ep_type_t type, uint32_t size); usb_ep_t endpoint_out(usb_ep_type_t type, uint32_t size);
/**
* Get next free endpoint
*/
usb_ep_t next_free_endpoint(bool in_not_out, usb_ep_type_t type, uint32_t size);
/** /**
* Check if the endpoint configuration created so far is valid * Check if the endpoint configuration created so far is valid
* *