[THREAD] Update timer api

This commit is contained in:
jczhang 2022-09-27 20:07:43 +08:00
parent 9563086f23
commit dc526317d2
2 changed files with 18 additions and 5 deletions

View File

@ -19,6 +19,7 @@
#define OT_ALARM_TIMER_ID 0
TimerHandle_t otAlarm_timerHandle = NULL;
uint32_t otAlarm_offset = 0;
static void otPlatALarm_msTimerCallback( TimerHandle_t xTimer )
{
@ -28,6 +29,13 @@ static void otPlatALarm_msTimerCallback( TimerHandle_t xTimer )
void ot_alarmInit(void)
{
otAlarm_timerHandle = xTimerCreate("ot_timer", 1, pdFALSE, (void *)otAlarm_timerHandle, otPlatALarm_msTimerCallback);
OT_ENTER_CRITICAL();
bl_timer_restore_time(bl_timer_now_us64());
otAlarm_offset = (uint32_t)bl_timer_now_us64() - bl_timer_get_current_time();
OT_EXIT_CRITICAL();
printf ("ot_alarmInit = %lu\r\n", otAlarm_offset);
}
void otPlatAlarmMilliStartAt(otInstance *aInstance, uint32_t aT0, uint32_t aDt)
@ -77,12 +85,16 @@ void otPlatAlarmMicroStartAt(otInstance *aInstance, uint32_t aT0, uint32_t aDt)
{
OT_ENTER_CRITICAL();
uint32_t now = bl_timer_get_current_time();
uint32_t now = bl_timer_now_us64();
if (aDt > OT_ALARM_TIMER_MARGIN && now - aT0 < aDt - OT_ALARM_TIMER_MARGIN) {
bl_timer_start(OT_ALARM_TIMER_ID, aT0 + aDt, otAlarm_microTimerCallback);
OT_EXIT_CRITICAL();
return;
bl_timer_start(OT_ALARM_TIMER_ID, aT0 + aDt - otAlarm_offset, otAlarm_microTimerCallback);
if (bl_timer_get_remaining_time(OT_ALARM_TIMER_ID) <= aDt) {
OT_EXIT_CRITICAL();
return;
}
bl_timer_stop(OT_ALARM_TIMER_ID);
}
OT_EXIT_CRITICAL();
@ -97,7 +109,7 @@ void otPlatAlarmMicroStop(otInstance *aInstance)
uint32_t otPlatAlarmMicroGetNow(void)
{
return bl_timer_get_current_time();
return bl_timer_now_us64();
}
void ot_alarmTask(ot_system_event_t sevent)

View File

@ -77,6 +77,7 @@ CPPFLAGS += -DOPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE=1
#CPPFLAGS += -DOPENTHREAD_CONFIG_LOG_MAC=1
#CPPFLAGS += -DOPENTHREAD_CONFIG_LOG_LEVEL=OT_LOG_LEVEL_DEBG
CPPFLAGS += -DOPENTHREAD_CONFIG_LOG_SUFFIX=\"\\r\\n\"
OPENTHREAD_RADIO:=0
ifeq ($(origin CONFIG_NCP), undefined)