From e77c61bd3a9684ba3aeace96fb2530eb49cb8b40 Mon Sep 17 00:00:00 2001 From: Kevin Bracey Date: Thu, 13 Feb 2020 16:41:11 +0200 Subject: [PATCH 1/2] DTLSSocketWrapper: Convert to Chrono --- features/netsocket/DTLSSocketWrapper.cpp | 9 ++++++--- features/netsocket/DTLSSocketWrapper.h | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/features/netsocket/DTLSSocketWrapper.cpp b/features/netsocket/DTLSSocketWrapper.cpp index a3f5f8102e2..97841cb7349 100644 --- a/features/netsocket/DTLSSocketWrapper.cpp +++ b/features/netsocket/DTLSSocketWrapper.cpp @@ -50,8 +50,11 @@ void DTLSSocketWrapper::timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fi return; } - context->_int_ms_tick = rtos::Kernel::get_ms_count() + int_ms; - context->_timer_event_id = mbed::mbed_event_queue()->call_in(fin_ms, context, &DTLSSocketWrapper::timer_event); + auto int_duration = std::chrono::duration(int_ms); + auto fin_duration = std::chrono::duration(fin_ms); + + context->_int_time = rtos::Kernel::Clock::now() + int_duration; + context->_timer_event_id = mbed::mbed_event_queue()->call_in(fin_duration, context, &DTLSSocketWrapper::timer_event); } int DTLSSocketWrapper::timing_get_delay(void *ctx) @@ -64,7 +67,7 @@ int DTLSSocketWrapper::timing_get_delay(void *ctx) return -1; } else if (context->_timer_expired) { return 2; - } else if (context->_int_ms_tick < rtos::Kernel::get_ms_count()) { + } else if (context->_int_time < rtos::Kernel::Clock::now()) { return 1; } else { return 0; diff --git a/features/netsocket/DTLSSocketWrapper.h b/features/netsocket/DTLSSocketWrapper.h index 3ec161577a1..5f7ff00e0a4 100644 --- a/features/netsocket/DTLSSocketWrapper.h +++ b/features/netsocket/DTLSSocketWrapper.h @@ -23,6 +23,7 @@ #define DTLSSOCKETWRAPPER_H #include "TLSSocketWrapper.h" +#include "rtos/Kernel.h" // This class requires Mbed TLS SSL/TLS client code #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) @@ -43,7 +44,7 @@ class DTLSSocketWrapper : public TLSSocketWrapper { static void timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fin_ms); static int timing_get_delay(void *ctx); void timer_event(); - uint64_t _int_ms_tick = 0; + rtos::Kernel::Clock::time_point _int_time; int _timer_event_id = 0; bool _timer_expired = false; }; From 2f867543cd70ae265569d52c085cca52fab003fe Mon Sep 17 00:00:00 2001 From: Kevin Bracey Date: Fri, 8 May 2020 16:48:30 +0300 Subject: [PATCH 2/2] Add Kernel::impl::get_tick_count() stub --- UNITTESTS/stubs/Kernel_stub.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/UNITTESTS/stubs/Kernel_stub.cpp b/UNITTESTS/stubs/Kernel_stub.cpp index 0050f4481a4..a2697ad161a 100644 --- a/UNITTESTS/stubs/Kernel_stub.cpp +++ b/UNITTESTS/stubs/Kernel_stub.cpp @@ -20,6 +20,11 @@ namespace rtos { uint64_t Kernel::get_ms_count() +{ + return impl::get_tick_count(); + +} +uint64_t Kernel::impl::get_tick_count() { return 20; }