diff --git a/hw-tests/api-demo/api/api_caller.c b/hw-tests/api-demo/api/api_caller.c
index cc26fd8c0c8398dde939475d6e13d5088bd208a6..3b8d42fa80078f5a950e2f925bf3b182e526f070 100644
--- a/hw-tests/api-demo/api/api_caller.c
+++ b/hw-tests/api-demo/api/api_caller.c
@@ -1,13 +1,21 @@
+#include <stdlib.h>
+
 #include "api/api_caller.h"
 
 void* api_call_start (uint32_t id, void* args, uint32_t size)
 {
-	int ret;
 	// aquire semaphore
-	ret = SEMA_GetSema (API_CALL_SEMA);
+	while (E_BUSY == SEMA_GetSema (API_CALL_SEMA)) ;
 
 	ApiCallSpace->id = id;
 	ApiCallSpace->returning = 0;
 	return ApiCallSpace;
 }
 
+void* api_call_bother_dispatcher (void* buf)
+{
+	SEMA_FreeSema (API_CALL_SEMA);
+	// set event
+
+	return NULL;
+}
diff --git a/hw-tests/api-demo/api/api_caller.h b/hw-tests/api-demo/api/api_caller.h
index c19ea4332c3d1b278e5facd606d5b20a1454f03f..39f7d99a60ad527f189e9750fbe2e5de9931212d 100644
--- a/hw-tests/api-demo/api/api_caller.h
+++ b/hw-tests/api-demo/api/api_caller.h
@@ -1,3 +1,5 @@
+#include "mxc_errors.h"
+
 #include "api_common.h"
 
 void* api_call (uint32_t id, void *args, uint32_t size);