mirror of
https://github.com/espressif/openthread.git
synced 2026-10-10 09:47:35 +00:00
[nrf528xx] improve CSL phase calculation (#6287)
Fill a CSL Phase IE with a value for the CSL transmitter to aim at the center of the receive window, instead of aiming at the beginning.
This commit is contained in:
@@ -51,7 +51,6 @@
|
||||
#include <platform-config.h>
|
||||
#include <openthread/platform/alarm-micro.h>
|
||||
#include <openthread/platform/diag.h>
|
||||
#include <openthread/platform/logging.h>
|
||||
#include <openthread/platform/radio.h>
|
||||
#include <openthread/platform/time.h>
|
||||
|
||||
@@ -119,9 +118,10 @@ static uint8_t sEnergyDetectionChannel;
|
||||
static int8_t sEnergyDetected;
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
|
||||
static uint32_t sCslPeriod;
|
||||
static uint32_t sCslSampleTime;
|
||||
static const uint8_t sCslIeHeader[OT_IE_HEADER_SIZE] = {CSL_IE_HEADER_BYTES_LO, CSL_IE_HEADER_BYTES_HI};
|
||||
static uint32_t sCslPeriod;
|
||||
static uint32_t sCslSampleTime;
|
||||
static const uint32_t sCslSampleDur = OPENTHREAD_CONFIG_CSL_SAMPLE_WINDOW * OT_US_PER_TEN_SYMBOLS;
|
||||
static const uint8_t sCslIeHeader[OT_IE_HEADER_SIZE] = {CSL_IE_HEADER_BYTES_LO, CSL_IE_HEADER_BYTES_HI};
|
||||
#endif // OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
|
||||
|
||||
typedef enum
|
||||
@@ -1068,8 +1068,9 @@ static uint16_t getCslPhase()
|
||||
{
|
||||
uint32_t curTime = otPlatAlarmMicroGetNow();
|
||||
uint32_t cslPeriodInUs = sCslPeriod * OT_US_PER_TEN_SYMBOLS;
|
||||
uint32_t diff = (cslPeriodInUs - (curTime % cslPeriodInUs) + (sCslSampleTime % cslPeriodInUs)) % cslPeriodInUs;
|
||||
|
||||
uint32_t diff =
|
||||
(cslPeriodInUs - (curTime % cslPeriodInUs) + (sCslSampleTime % cslPeriodInUs) + (sCslSampleDur / 2)) %
|
||||
cslPeriodInUs;
|
||||
return (uint16_t)(diff / OT_US_PER_TEN_SYMBOLS + 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user