From e328ebef585cea2351b37117b2d5ac4978ecd3c0 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期二, 11 二月 2025 14:57:23 +0800
Subject: [PATCH] 1111111

---
 keil/include/components/wsf/sources/port/baremetal/wsf_os.c |   35 +++++++++++------------------------
 1 files changed, 11 insertions(+), 24 deletions(-)

diff --git a/keil/include/components/wsf/sources/port/baremetal/wsf_os.c b/keil/include/components/wsf/sources/port/baremetal/wsf_os.c
index 0721ab2..5ddfc30 100644
--- a/keil/include/components/wsf/sources/port/baremetal/wsf_os.c
+++ b/keil/include/components/wsf/sources/port/baremetal/wsf_os.c
@@ -34,6 +34,7 @@
 #include "wsf_buf.h"
 #include "wsf_msg.h"
 #include "wsf_cs.h"
+#include "mk_power.h"
 
 #if defined(RTOS_CMSIS_RTX) && (RTOS_CMSIS_RTX == 1)
 #include "cmsis_os2.h"
@@ -110,26 +111,6 @@
 
 /*************************************************************************************************/
 /*!
- *  \brief  Lock task scheduling.
- */
-/*************************************************************************************************/
-uint32_t WsfTaskLock(void)
-{
-    return PalEnterCs();
-}
-
-/*************************************************************************************************/
-/*!
- *  \brief  Unock task scheduling.
- */
-/*************************************************************************************************/
-void WsfTaskUnlock(uint32_t lock)
-{
-    PalExitCs(lock);
-}
-
-/*************************************************************************************************/
-/*!
  *  \brief  Set an event for an event handler.
  *
  *  \param  handlerId   Handler ID.
@@ -147,6 +128,7 @@
     uint32_t lock = WSF_CS_ENTER();
     wsfOs.task.handlerEventMask[WSF_HANDLER_FROM_ID(handlerId)] |= event;
     wsfOs.task.taskEventMask |= WSF_HANDLER_EVENT;
+    power_mode_request(POWER_UNIT_OS, POWER_MODE_ACTIVE);
     WSF_CS_EXIT(lock);
 
     /* set event in OS */
@@ -169,6 +151,7 @@
 
     uint32_t lock = WSF_CS_ENTER();
     wsfOs.task.taskEventMask |= event;
+    power_mode_request(POWER_UNIT_OS, POWER_MODE_ACTIVE);
     WSF_CS_EXIT(lock);
 
     /* set event in OS */
@@ -264,6 +247,7 @@
     uint32_t lock = WSF_CS_ENTER();
     taskEventMask = pTask->taskEventMask;
     pTask->taskEventMask = 0;
+    power_mode_clear(POWER_UNIT_OS);
     WSF_CS_EXIT(lock);
 
     if (taskEventMask & WSF_MSG_QUEUE_EVENT)
@@ -281,11 +265,14 @@
     if (taskEventMask & WSF_TIMER_EVENT)
     {
         /* service timers */
-        while ((pTimer = WsfTimerServiceExpired(0)) != NULL)
+        while ((pTimer = WsfTimerServiceExpired()) != NULL)
         {
-            WSF_ASSERT(pTimer->handlerId < WSF_MAX_HANDLERS);
-            WSF_OS_SET_ACTIVE_HANDLER_ID(pTimer->handlerId);
-            (*pTask->handler[pTimer->handlerId])(0, &pTimer->msg);
+            if (pTimer->msg.event != PHY_PD_TIMER_EVENT)
+            {
+                WSF_ASSERT(pTimer->handlerId < WSF_MAX_HANDLERS);
+                WSF_OS_SET_ACTIVE_HANDLER_ID(pTimer->handlerId);
+                (*pTask->handler[pTimer->handlerId])(0, &pTimer->msg);
+            }
         }
     }
 

--
Gitblit v1.9.3