From 45de008c50ed92ab65a96c25c62483d5585bf689 Mon Sep 17 00:00:00 2001 From: Rajkumar Kanagaraj Date: Tue, 14 Apr 2020 17:48:47 +0100 Subject: [PATCH] Incorporated the review comment --- .../mbedmicro-rtos-mbed/event_flags/main.cpp | 48 ++++++++---------- text.txt | Bin 208824 -> 0 bytes 2 files changed, 20 insertions(+), 28 deletions(-) delete mode 100644 text.txt diff --git a/TESTS/mbedmicro-rtos-mbed/event_flags/main.cpp b/TESTS/mbedmicro-rtos-mbed/event_flags/main.cpp index abc1d15c83..ad2791655c 100644 --- a/TESTS/mbedmicro-rtos-mbed/event_flags/main.cpp +++ b/TESTS/mbedmicro-rtos-mbed/event_flags/main.cpp @@ -36,7 +36,6 @@ using utest::v1::Case; #define MAX_FLAG_POS 30 #define PROHIBITED_FLAG_POS 31 -static bool is_ticker_used = false; /* This flag protects avoid calling ThisThread::sleep_for as it is not safe to call in IRQ mode. */ /* flags */ #define FLAG01 0x1FFF /* 00000000000000000001111111111111 */ @@ -45,14 +44,13 @@ static bool is_ticker_used = false; /* This flag protects avoid calling ThisThre #define PROHIBITED_FLAG 0x80000000 /* 10000000000000000000000000000000 */ #define NO_FLAGS 0x0 -template -void send_thread(EventFlags *ef) +void send_thread(EventFlags *ef, uint32_t flags, uint32_t wait_ms) { for (uint32_t i = 0; i <= MAX_FLAG_POS; i++) { const uint32_t flag = flags & (1 << i); if (flag) { ef->set(flag); - if (!is_ticker_used) { + if (wait_ms != 0) { ThisThread::sleep_for(wait_ms); } } @@ -220,9 +218,9 @@ void test_multi_thread_all(void) Thread thread1(osPriorityNormal, THREAD_STACK_SIZE); Thread thread2(osPriorityNormal, THREAD_STACK_SIZE); Thread thread3(osPriorityNormal, THREAD_STACK_SIZE); - thread1.start(callback(send_thread, &ef)); - thread2.start(callback(send_thread, &ef)); - thread3.start(callback(send_thread, &ef)); + thread1.start([&] { send_thread(&ef, FLAG01, 1); }); + thread2.start([&] { send_thread(&ef, FLAG02, 2); }); + thread3.start([&] { send_thread(&ef, FLAG03, 3); }); uint32_t ret = ef.wait_all(FLAG01 | FLAG02 | FLAG03); TEST_ASSERT_EQUAL(FLAG01 | FLAG02 | FLAG03, ret); @@ -241,9 +239,9 @@ void test_multi_thread_any(void) Thread thread1(osPriorityNormal, THREAD_STACK_SIZE); Thread thread2(osPriorityNormal, THREAD_STACK_SIZE); Thread thread3(osPriorityNormal, THREAD_STACK_SIZE); - thread1.start(callback(send_thread, &ef)); - thread2.start(callback(send_thread, &ef)); - thread3.start(callback(send_thread, &ef)); + thread1.start([&] { send_thread(&ef, FLAG01, 1); }); + thread2.start([&] { send_thread(&ef, FLAG02, 1); }); + thread3.start([&] { send_thread(&ef, FLAG03, 1); }); for (int i = 0; i <= MAX_FLAG_POS; i++) { uint32_t flag = 1 << i; @@ -296,9 +294,9 @@ void test_multi_thread_any_no_clear(void) Thread thread1(osPriorityNormal, THREAD_STACK_SIZE); Thread thread2(osPriorityNormal, THREAD_STACK_SIZE); Thread thread3(osPriorityNormal, THREAD_STACK_SIZE); - thread1.start(callback(send_thread, &ef)); - thread2.start(callback(send_thread, &ef)); - thread3.start(callback(send_thread, &ef)); + thread1.start([&] { send_thread(&ef, FLAG01, 1); }); + thread2.start([&] { send_thread(&ef, FLAG02, 1); }); + thread3.start([&] { send_thread(&ef, FLAG03, 1); }); for (int i = 0; i <= MAX_FLAG_POS; i++) { uint32_t flag = 1 << i; @@ -364,13 +362,11 @@ void test_multi_eventflags_all(void) { EventFlags ef; Ticker t1, t2, t3; - is_ticker_used = true; - t1.attach_us(callback(send_thread, &ef), 3000); - t2.attach_us(callback(send_thread, &ef), 4000); - t3.attach_us(callback(send_thread, &ef), 5000); + t1.attach_us([&] { send_thread(&ef, FLAG01, 0); }, 3000); + t2.attach_us([&] { send_thread(&ef, FLAG02, 0); }, 4000); + t3.attach_us([&] { send_thread(&ef, FLAG03, 0); }, 5000); uint32_t ret = ef.wait_all(FLAG01 | FLAG02 | FLAG03, 20, false); TEST_ASSERT_EQUAL(FLAG01 | FLAG02 | FLAG03, ret); - is_ticker_used = false; } /** Test if multi-event flag set cause wait_any to return @@ -384,10 +380,9 @@ void test_multi_eventflags_any(void) EventFlags ef; uint32_t ret; Ticker t1, t2, t3; - is_ticker_used = true; - t1.attach_us(callback(send_thread, &ef), 3000); - t2.attach_us(callback(send_thread, &ef), 4000); - t3.attach_us(callback(send_thread, &ef), 5000); + t1.attach_us([&] { send_thread(&ef, FLAG01, 0); }, 3000); + t2.attach_us([&] { send_thread(&ef, FLAG02, 0); }, 4000); + t3.attach_us([&] { send_thread(&ef, FLAG03, 0); }, 5000); for (int i = 0; i <= MAX_FLAG_POS; i++) { uint32_t flag = 1 << i; @@ -396,7 +391,6 @@ void test_multi_eventflags_any(void) } ret = ef.get(); TEST_ASSERT_EQUAL(NO_FLAGS, ret); - is_ticker_used = false; } /** Test if multi-event flag set cause wait_any(without clear) to return @@ -410,10 +404,9 @@ void test_multi_eventflags_any_no_clear(void) EventFlags ef; uint32_t ret; Ticker t1, t2, t3; - is_ticker_used = true; - t1.attach_us(callback(send_thread, &ef), 3000); - t2.attach_us(callback(send_thread, &ef), 4000); - t3.attach_us(callback(send_thread, &ef), 5000); + t1.attach_us([&] { send_thread(&ef, FLAG01, 0); }, 3000); + t2.attach_us([&] { send_thread(&ef, FLAG02, 0); }, 4000); + t3.attach_us([&] { send_thread(&ef, FLAG03, 0); }, 5000); for (int i = 0; i <= MAX_FLAG_POS; i++) { uint32_t flag = 1 << i; @@ -424,7 +417,6 @@ void test_multi_eventflags_any_no_clear(void) } ret = ef.get(); TEST_ASSERT_EQUAL(NO_FLAGS, ret); - is_ticker_used = false; } utest::v1::status_t test_setup(const size_t number_of_cases) diff --git a/text.txt b/text.txt deleted file mode 100644 index 7ea665ecd553352d7eff1521c8d114975c843c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208824 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