WXK
2025-02-11 e328ebef585cea2351b37117b2d5ac4978ecd3c0
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);
            }
        }
    }