lib/cmsis_rtos_v2: Implement support for generic wait APIs
APIs to introduce wait i.e osDelay and osDelayUntil are defined
here. They are analogous to k_sleep in the kernel.
Signed-off-by: Rajavardhan Gundi <rajavardhan.gundi@intel.com>
diff --git a/lib/cmsis_rtos_v2/kernel.c b/lib/cmsis_rtos_v2/kernel.c
index 1decd3e..39b4708 100644
--- a/lib/cmsis_rtos_v2/kernel.c
+++ b/lib/cmsis_rtos_v2/kernel.c
@@ -117,3 +117,34 @@
{
return sys_clock_hw_cycles_per_sec();
}
+
+/**
+ * @brief Wait for Timeout (Time Delay).
+ */
+osStatus_t osDelay(uint32_t ticks)
+{
+ if (k_is_in_isr()) {
+ return osErrorISR;
+ }
+
+ k_sleep(__ticks_to_ms(ticks));
+
+ return osOK;
+}
+
+/**
+ * @brief Wait until specified time.
+ */
+osStatus_t osDelayUntil(uint32_t ticks)
+{
+ u32_t ticks_elapsed;
+
+ if (k_is_in_isr()) {
+ return osErrorISR;
+ }
+
+ ticks_elapsed = osKernelGetTickCount();
+ k_sleep(__ticks_to_ms(ticks - ticks_elapsed));
+
+ return osOK;
+}