Azure IoT common library

Dependents:   STM32F746_iothub_client_sample_mqtt f767zi_mqtt iothub_client_sample_amqp iothub_client_sample_http ... more

Revision:
0:fa2de1b79154
Child:
1:9190c0f4d23a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lock_rtx_mbed.cpp	Fri Apr 08 12:01:36 2016 -0700
@@ -0,0 +1,94 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+#include <cstdlib>
+#ifdef _CRTDBG_MAP_ALLOC
+#include <crtdbg.h>
+#endif
+
+#include "azure_c_shared_utility/lock.h"
+#include "azure_c_shared_utility/iot_logging.h"
+#include "rtos.h"
+
+DEFINE_ENUM_STRINGS(LOCK_RESULT, LOCK_RESULT_VALUES);
+
+/*Tests_SRS_LOCK_99_002:[ This API on success will return a valid lock handle which should be a non NULL value]*/
+LOCK_HANDLE Lock_Init(void)
+{
+    Mutex* lock_mtx = new Mutex();
+  
+    return (LOCK_HANDLE)lock_mtx;
+}
+
+
+LOCK_RESULT Lock(LOCK_HANDLE handle)
+{
+    LOCK_RESULT result;
+    if (handle == NULL)
+    {
+        /*Tests_SRS_LOCK_99_007:[ This API on NULL handle passed returns LOCK_ERROR]*/
+        result = LOCK_ERROR;
+        LogError("(result = %s)\r\n", ENUM_TO_STRING(LOCK_RESULT, result));
+    }
+    else
+    {
+        Mutex* lock_mtx = (Mutex*)handle;
+        if (lock_mtx->lock() == osOK)
+        {
+            /*Tests_SRS_LOCK_99_005:[ This API on success should return LOCK_OK]*/
+            result = LOCK_OK;
+        }
+        else
+        {
+            /*Tests_SRS_LOCK_99_006:[ This API on error should return LOCK_ERROR]*/
+            result = LOCK_ERROR;
+            LogError("(result = %s)\r\n", ENUM_TO_STRING(LOCK_RESULT, result));
+        }
+    }
+    return result;
+}
+LOCK_RESULT Unlock(LOCK_HANDLE handle)
+{
+    LOCK_RESULT result;
+    if (handle == NULL)
+    {
+        /*Tests_SRS_LOCK_99_011:[ This API on NULL handle passed returns LOCK_ERROR]*/
+        result = LOCK_ERROR;
+        LogError("(result = %s)\r\n", ENUM_TO_STRING(LOCK_RESULT, result));
+    }
+    else
+    {
+        Mutex* lock_mtx = (Mutex*)handle;
+        if (lock_mtx->unlock() == osOK)
+        {
+            /*Tests_SRS_LOCK_99_009:[ This API on success should return LOCK_OK]*/
+            result = LOCK_OK;
+        }
+        else
+        {
+            /*Tests_SRS_LOCK_99_010:[ This API on error should return LOCK_ERROR]*/
+            result = LOCK_ERROR;
+            LogError("(result = %s)\r\n", ENUM_TO_STRING(LOCK_RESULT, result));
+        }
+    }
+    return result;
+}
+
+LOCK_RESULT Lock_Deinit(LOCK_HANDLE handle)
+{
+    LOCK_RESULT result=LOCK_OK ;
+    if (NULL == handle)
+    {
+        /*Tests_SRS_LOCK_99_013:[ This API on NULL handle passed returns LOCK_ERROR]*/
+        result = LOCK_ERROR;
+        LogError("(result = %s)\r\n", ENUM_TO_STRING(LOCK_RESULT, result));
+    }
+    else
+    {
+        /*Tests_SRS_LOCK_99_012:[ This API frees the memory pointed by handle]*/
+        Mutex* lock_mtx = (Mutex*)handle;
+        delete lock_mtx;
+    }
+    
+    return result;
+}