summaryrefslogtreecommitdiff
path: root/src/tusb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tusb.c')
-rw-r--r--src/tusb.c69
1 files changed, 67 insertions, 2 deletions
diff --git a/src/tusb.c b/src/tusb.c
index a30221059..c86bdd891 100644
--- a/src/tusb.c
+++ b/src/tusb.c
@@ -29,6 +29,7 @@
#if CFG_TUH_ENABLED || CFG_TUD_ENABLED
#include "tusb.h"
+#include "common/tusb_private.h"
// TODO clean up
#if CFG_TUD_ENABLED
@@ -67,6 +68,52 @@ bool tusb_inited(void)
// Internal Helper for both Host and Device stack
//--------------------------------------------------------------------+
+bool tu_edpt_claim(tu_edpt_state_t* ep_state, osal_mutex_t mutex)
+{
+ (void) mutex;
+
+#if TUSB_OPT_MUTEX
+ // pre-check to help reducing mutex lock
+ TU_VERIFY((ep_state->busy == 0) && (ep_state->claimed == 0));
+ osal_mutex_lock(mutex, OSAL_TIMEOUT_WAIT_FOREVER);
+#endif
+
+ // can only claim the endpoint if it is not busy and not claimed yet.
+ bool const available = (ep_state->busy == 0) && (ep_state->claimed == 0);
+ if (available)
+ {
+ ep_state->claimed = 1;
+ }
+
+#if TUSB_OPT_MUTEX
+ osal_mutex_unlock(mutex);
+#endif
+
+ return available;
+}
+
+bool tu_edpt_release(tu_edpt_state_t* ep_state, osal_mutex_t mutex)
+{
+ (void) mutex;
+
+#if TUSB_OPT_MUTEX
+ osal_mutex_lock(mutex, OSAL_TIMEOUT_WAIT_FOREVER);
+#endif
+
+ // can only release the endpoint if it is claimed and not busy
+ bool const ret = (ep_state->claimed == 1) && (ep_state->busy == 0);
+ if (ret)
+ {
+ ep_state->claimed = 0;
+ }
+
+#if TUSB_OPT_MUTEX
+ osal_mutex_unlock(mutex);
+#endif
+
+ return ret;
+}
+
bool tu_edpt_validate(tusb_desc_endpoint_t const * desc_ep, tusb_speed_t speed)
{
uint16_t const max_packet_size = tu_edpt_packet_size(desc_ep);
@@ -161,9 +208,27 @@ uint16_t tu_desc_get_interface_total_len(tusb_desc_interface_t const* desc_itf,
#if CFG_TUSB_DEBUG
#include <ctype.h>
-char const* const tusb_strerr[TUSB_ERROR_COUNT] = { ERROR_TABLE(ERROR_STRING) };
+#if CFG_TUSB_DEBUG >= 2
-char const* const tusb_speed_str[] = { "Full", "Low", "High" };
+char const* const tu_str_speed[] = { "Full", "Low", "High" };
+char const* const tu_str_std_request[] =
+{
+ "Get Status" ,
+ "Clear Feature" ,
+ "Reserved" ,
+ "Set Feature" ,
+ "Reserved" ,
+ "Set Address" ,
+ "Get Descriptor" ,
+ "Set Descriptor" ,
+ "Get Configuration" ,
+ "Set Configuration" ,
+ "Get Interface" ,
+ "Set Interface" ,
+ "Synch Frame"
+};
+
+#endif
static void dump_str_line(uint8_t const* buf, uint16_t count)
{