summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2022-01-25 22:29:05 +0700
committerGitHub <[email protected]>2022-01-25 22:29:05 +0700
commit7de166390ed6125e851af9a3e8221fbd3f3a773b (patch)
tree7b32328cf010b7641c4b513f441ccae5a1710b92 /src/common
parentc5d2c82cbbabf02cef16c2da565867f63900f69b (diff)
parenta59228207999329eb16fddbeb6286dfc36f4c0bd (diff)
Merge branch 'master' into master
Diffstat (limited to 'src/common')
-rw-r--r--src/common/tusb_fifo.c25
-rw-r--r--src/common/tusb_verify.h14
2 files changed, 23 insertions, 16 deletions
diff --git a/src/common/tusb_fifo.c b/src/common/tusb_fifo.c
index 564687e02..183c9c6fc 100644
--- a/src/common/tusb_fifo.c
+++ b/src/common/tusb_fifo.c
@@ -716,7 +716,7 @@ bool tu_fifo_peek(tu_fifo_t* f, void * p_buffer)
uint16_t tu_fifo_peek_n(tu_fifo_t* f, void * p_buffer, uint16_t n)
{
_ff_lock(f->mutex_rd);
- bool ret = _tu_fifo_peek_n(f, p_buffer, n, f->wr_idx, f->rd_idx, TU_FIFO_COPY_INC);
+ uint16_t ret = _tu_fifo_peek_n(f, p_buffer, n, f->wr_idx, f->rd_idx, TU_FIFO_COPY_INC);
_ff_unlock(f->mutex_rd);
return ret;
}
@@ -741,21 +741,28 @@ bool tu_fifo_write(tu_fifo_t* f, const void * data)
{
_ff_lock(f->mutex_wr);
- uint16_t w = f->wr_idx;
+ bool ret;
+ uint16_t const w = f->wr_idx;
- if ( _tu_fifo_full(f, w, f->rd_idx) && !f->overwritable ) return false;
+ if ( _tu_fifo_full(f, w, f->rd_idx) && !f->overwritable )
+ {
+ ret = false;
+ }else
+ {
+ uint16_t wRel = get_relative_pointer(f, w);
- uint16_t wRel = get_relative_pointer(f, w);
+ // Write data
+ _ff_push(f, data, wRel);
- // Write data
- _ff_push(f, data, wRel);
+ // Advance pointer
+ f->wr_idx = advance_pointer(f, w, 1);
- // Advance pointer
- f->wr_idx = advance_pointer(f, w, 1);
+ ret = true;
+ }
_ff_unlock(f->mutex_wr);
- return true;
+ return ret;
}
/******************************************************************************/
diff --git a/src/common/tusb_verify.h b/src/common/tusb_verify.h
index 56ba8bcd1..8fef11dc7 100644
--- a/src/common/tusb_verify.h
+++ b/src/common/tusb_verify.h
@@ -37,31 +37,31 @@
* manipulation that you are told to stay away.
*
* This contains macros for both VERIFY and ASSERT:
- *
+ *
* VERIFY: Used when there is an error condition which is not the
* fault of the MCU. For example, bounds checking on data
* sent to the micro over USB should use this function.
* Another example is checking for buffer overflows, where
* returning from the active function causes a NAK.
- *
+ *
* ASSERT: Used for error conditions that are caused by MCU firmware
* bugs. This is used to discover bugs in the code more
* quickly. One example would be adding assertions in library
* function calls to confirm a function's (untainted)
* parameters are valid.
- *
+ *
* The difference in behavior is that ASSERT triggers a breakpoint while
* verify does not.
*
* #define TU_VERIFY(cond) if(cond) return false;
* #define TU_VERIFY(cond,ret) if(cond) return ret;
- *
+ *
* #define TU_VERIFY_HDLR(cond,handler) if(cond) {handler; return false;}
* #define TU_VERIFY_HDLR(cond,ret,handler) if(cond) {handler; return ret;}
*
* #define TU_ASSERT(cond) if(cond) {_MESS_FAILED(); TU_BREAKPOINT(), return false;}
* #define TU_ASSERT(cond,ret) if(cond) {_MESS_FAILED(); TU_BREAKPOINT(), return ret;}
- *
+ *
*------------------------------------------------------------------*/
#ifdef __cplusplus
@@ -81,8 +81,8 @@
#define _MESS_FAILED() do {} while (0)
#endif
-// Halt CPU (breakpoint) when hitting error, only apply for Cortex M3, M4, M7
-#if defined(__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
+// Halt CPU (breakpoint) when hitting error, only apply for Cortex M3, M4, M7, M33
+#if defined(__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__)
#define TU_BREAKPOINT() do \
{ \
volatile uint32_t* ARM_CM_DHCSR = ((volatile uint32_t*) 0xE000EDF0UL); /* Cortex M CoreDebug->DHCSR */ \