Skip to content

Commit 05375fa

Browse files
c1728p9bulislaw
authored andcommitted
Fix network tests
Add handling for error codes returned by osEventFlagsWait in the lwip mailbox driver. This fixes the network tests. When there are no events pending in a call to osEventFlagsWait the error code osErrorResource (0xFFFFFFFD) is returned. Because this return value has bit 0 set (SYS_MBOX_FETCH_EVENT) it is interpreted as a mailbox event, even though the mailbox is empty. This patch checks for osFlagsError to determine if the return value of osEventFlagsWait is an error code or is a bitfield.
1 parent a0913b9 commit 05375fa

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

features/FEATURE_LWIP/lwip-interface/lwip-sys/arch/lwip_sys_arch.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ void sys_mbox_post(sys_mbox_t *mbox, void *msg) {
197197
err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg) {
198198
uint32_t flags = osEventFlagsWait(mbox->id, SYS_MBOX_POST_EVENT,
199199
osFlagsWaitAny | osFlagsNoClear, 0);
200-
if (!(flags & SYS_MBOX_POST_EVENT))
200+
if ((flags & osFlagsError) || !(flags & SYS_MBOX_POST_EVENT))
201201
return ERR_MEM;
202202

203203
int state = osKernelLock();
@@ -242,7 +242,7 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout) {
242242
uint32_t start = us_ticker_read();
243243
uint32_t flags = osEventFlagsWait(mbox->id, SYS_MBOX_FETCH_EVENT,
244244
osFlagsWaitAny | osFlagsNoClear, (timeout ? timeout : osWaitForever));
245-
if (!(flags & SYS_MBOX_FETCH_EVENT))
245+
if ((flags & osFlagsError) || !(flags & SYS_MBOX_FETCH_EVENT))
246246
return SYS_ARCH_TIMEOUT;
247247

248248
int state = osKernelLock();
@@ -276,7 +276,7 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout) {
276276
u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg) {
277277
uint32_t flags = osEventFlagsWait(mbox->id, SYS_MBOX_FETCH_EVENT,
278278
osFlagsWaitAny | osFlagsNoClear, 0);
279-
if (!(flags & SYS_MBOX_FETCH_EVENT))
279+
if ((flags & osFlagsError) || !(flags & SYS_MBOX_FETCH_EVENT))
280280
return SYS_MBOX_EMPTY;
281281

282282
int state = osKernelLock();

0 commit comments

Comments
 (0)