Merge pull request #12429 from kjbracey-arm/chrono_dtls

DTLSSocketWrapper: Convert to Chrono
pull/12971/head
Martin Kojtal 2020-05-13 19:29:10 +02:00 committed by GitHub
commit f4015c7eaa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -50,8 +50,11 @@ void DTLSSocketWrapper::timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fi
return; return;
} }
context->_int_ms_tick = rtos::Kernel::get_ms_count() + int_ms; auto int_duration = std::chrono::duration<uint32_t, std::milli>(int_ms);
context->_timer_event_id = mbed::mbed_event_queue()->call_in(fin_ms, context, &DTLSSocketWrapper::timer_event); auto fin_duration = std::chrono::duration<uint32_t, std::milli>(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) int DTLSSocketWrapper::timing_get_delay(void *ctx)
@ -64,7 +67,7 @@ int DTLSSocketWrapper::timing_get_delay(void *ctx)
return -1; return -1;
} else if (context->_timer_expired) { } else if (context->_timer_expired) {
return 2; return 2;
} else if (context->_int_ms_tick < rtos::Kernel::get_ms_count()) { } else if (context->_int_time < rtos::Kernel::Clock::now()) {
return 1; return 1;
} else { } else {
return 0; return 0;

View File

@ -23,6 +23,7 @@
#define DTLSSOCKETWRAPPER_H #define DTLSSOCKETWRAPPER_H
#include "TLSSocketWrapper.h" #include "TLSSocketWrapper.h"
#include "rtos/Kernel.h"
// This class requires Mbed TLS SSL/TLS client code // This class requires Mbed TLS SSL/TLS client code
#if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY)
@ -43,7 +44,7 @@ private:
static void timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fin_ms); static void timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fin_ms);
static int timing_get_delay(void *ctx); static int timing_get_delay(void *ctx);
void timer_event(); void timer_event();
uint64_t _int_ms_tick = 0; rtos::Kernel::Clock::time_point _int_time;
int _timer_event_id = 0; int _timer_event_id = 0;
bool _timer_expired = false; bool _timer_expired = false;
}; };