Skip to content

Commit 73d5ef2

Browse files
committed
wiseconnect: Resolved issues when multiple events are set in si91x bus events.
It was observed that when one event is set and another event is subsequently set, the first event gets cleared prematurely before it can be processed. To address this, the osEventFlagsWait call was updated to use the osFlagsNoClear option, which prevents automatic clearing of events upon retrieval. Events are now manually cleared after they are read, ensuring that all set events are reliably processed and none are missed due to premature clearing caused by subsequent event updates. Signed-off-by: Rahul Gurram <[email protected]>
1 parent c05c958 commit 73d5ef2

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

wiseconnect/components/device/silabs/si91x/wireless/src/sl_rsi_utility.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1839,7 +1839,7 @@ uint32_t sli_si91x_wait_for_event(uint32_t event_mask, uint32_t timeout)
18391839

18401840
uint32_t si91x_host_wait_for_bus_event(uint32_t event_mask, uint32_t timeout)
18411841
{
1842-
uint32_t result = osEventFlagsWait(si91x_bus_events, event_mask, osFlagsWaitAny, timeout);
1842+
uint32_t result = osEventFlagsWait(si91x_bus_events, event_mask, osFlagsWaitAny | osFlagsNoClear, timeout);
18431843

18441844
if (result == (uint32_t)osErrorTimeout || result == (uint32_t)osErrorResource) {
18451845
return 0;

wiseconnect/components/sli_wifi_command_engine/src/sli_wifi_command_engine.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
* Variable Definitions
4646
******************************************************/
4747
static osThreadId_t command_engine_ID = 0;
48+
extern osEventFlagsId_t si91x_bus_events;
4849

4950
/******************************************************
5051
* Function Declarations
@@ -117,6 +118,7 @@ void sli_wifi_command_engine(void *args)
117118

118119
events_received |= sli_wifi_command_engine_wait_for_event(events_to_wait_on, wait_time);
119120

121+
osEventFlagsClear(si91x_bus_events, events_received);
120122
if (events_received & SLI_WLAN_TERMINATE_THREAD_EVENT) {
121123
// Clear the termination event flag
122124
events_received &= ~SLI_WLAN_TERMINATE_THREAD_EVENT;

0 commit comments

Comments
 (0)