mirror of
https://github.com/espressif/openthread.git
synced 2026-08-13 14:17:47 +00:00
[platform] add PlatformEventSignalPending to platform module (#2180)
This commit is contained in:
committed by
Jonathan Hui
parent
50485f894e
commit
ce2bc59c87
@@ -43,6 +43,7 @@
|
|||||||
#include <openthread/platform/alarm-micro.h>
|
#include <openthread/platform/alarm-micro.h>
|
||||||
#include <openthread/platform/alarm-milli.h>
|
#include <openthread/platform/alarm-milli.h>
|
||||||
#include <openthread/platform/diag.h>
|
#include <openthread/platform/diag.h>
|
||||||
|
#include <openthread/platform/platform.h>
|
||||||
|
|
||||||
#include "platform-config.h"
|
#include "platform-config.h"
|
||||||
#include "platform-nrf5.h"
|
#include "platform-nrf5.h"
|
||||||
@@ -180,6 +181,7 @@ static void HandleCompareMatch(AlarmIndex aIndex, bool aSkipCheck)
|
|||||||
nrf_rtc_int_disable(RTC_INSTANCE, sChannelData[aIndex].mCompareInt);
|
nrf_rtc_int_disable(RTC_INSTANCE, sChannelData[aIndex].mCompareInt);
|
||||||
|
|
||||||
sTimerData[aIndex].mFireAlarm = true;
|
sTimerData[aIndex].mFireAlarm = true;
|
||||||
|
PlatformEventSignalPending();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,3 +89,8 @@ void PlatformProcessDrivers(otInstance *aInstance)
|
|||||||
nrf5RadioProcess(aInstance);
|
nrf5RadioProcess(aInstance);
|
||||||
nrf5UartProcess();
|
nrf5UartProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__WEAK void PlatformEventSignalPending(void)
|
||||||
|
{
|
||||||
|
// Intentionally empty
|
||||||
|
}
|
||||||
|
|||||||
@@ -44,9 +44,10 @@
|
|||||||
|
|
||||||
#include <common/code_utils.hpp>
|
#include <common/code_utils.hpp>
|
||||||
#include <platform-config.h>
|
#include <platform-config.h>
|
||||||
#include <openthread/platform/logging.h>
|
|
||||||
#include <openthread/platform/radio.h>
|
|
||||||
#include <openthread/platform/diag.h>
|
#include <openthread/platform/diag.h>
|
||||||
|
#include <openthread/platform/logging.h>
|
||||||
|
#include <openthread/platform/platform.h>
|
||||||
|
#include <openthread/platform/radio.h>
|
||||||
|
|
||||||
#include "platform-nrf5.h"
|
#include "platform-nrf5.h"
|
||||||
|
|
||||||
@@ -140,6 +141,8 @@ static void setPendingEvent(RadioPendingEvents aEvent)
|
|||||||
pendingEvents |= bitToSet;
|
pendingEvents |= bitToSet;
|
||||||
}
|
}
|
||||||
while (__STREXW(pendingEvents, (unsigned long volatile *)&sPendingEvents));
|
while (__STREXW(pendingEvents, (unsigned long volatile *)&sPendingEvents));
|
||||||
|
|
||||||
|
PlatformEventSignalPending();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resetPendingEvent(RadioPendingEvents aEvent)
|
static void resetPendingEvent(RadioPendingEvents aEvent)
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <openthread/types.h>
|
#include <openthread/types.h>
|
||||||
|
#include <openthread/platform/platform.h>
|
||||||
#include <openthread/platform/toolchain.h>
|
#include <openthread/platform/toolchain.h>
|
||||||
#include <openthread/platform/uart.h>
|
#include <openthread/platform/uart.h>
|
||||||
#include <utils/code_utils.h>
|
#include <utils/code_utils.h>
|
||||||
@@ -263,6 +264,7 @@ void UARTE0_UART0_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
sReceiveBuffer[sReceiveHead] = byte;
|
sReceiveBuffer[sReceiveHead] = byte;
|
||||||
sReceiveHead = (sReceiveHead + 1) % UART_RX_BUFFER_SIZE;
|
sReceiveHead = (sReceiveHead + 1) % UART_RX_BUFFER_SIZE;
|
||||||
|
PlatformEventSignalPending();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,6 +283,7 @@ void UARTE0_UART0_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
sTransmitDone = true;
|
sTransmitDone = true;
|
||||||
nrf_uart_task_trigger(UART_INSTANCE, NRF_UART_TASK_STOPTX);
|
nrf_uart_task_trigger(UART_INSTANCE, NRF_UART_TASK_STOPTX);
|
||||||
|
PlatformEventSignalPending();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,12 @@ void PlatformDeinit(void);
|
|||||||
*/
|
*/
|
||||||
void PlatformProcessDrivers(otInstance *aInstance);
|
void PlatformProcessDrivers(otInstance *aInstance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is called whenever platform drivers needs processing.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
extern void PlatformEventSignalPending(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // end of extern "C"
|
} // end of extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user