Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

Committer:
XinZhangMS
Date:
Thu Aug 23 06:52:14 2018 +0000
Revision:
0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XinZhangMS 0:f7f1f0d76dd6 1 // Copyright (c) Microsoft. All rights reserved.
XinZhangMS 0:f7f1f0d76dd6 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
XinZhangMS 0:f7f1f0d76dd6 3
XinZhangMS 0:f7f1f0d76dd6 4 #ifndef CONDITION_H
XinZhangMS 0:f7f1f0d76dd6 5 #define CONDITION_H
XinZhangMS 0:f7f1f0d76dd6 6
XinZhangMS 0:f7f1f0d76dd6 7 #include "azure_c_shared_utility/macro_utils.h"
XinZhangMS 0:f7f1f0d76dd6 8 #include "azure_c_shared_utility/lock.h"
XinZhangMS 0:f7f1f0d76dd6 9 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 10
XinZhangMS 0:f7f1f0d76dd6 11 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 12 extern "C" {
XinZhangMS 0:f7f1f0d76dd6 13 #endif
XinZhangMS 0:f7f1f0d76dd6 14
XinZhangMS 0:f7f1f0d76dd6 15 typedef void* COND_HANDLE;
XinZhangMS 0:f7f1f0d76dd6 16
XinZhangMS 0:f7f1f0d76dd6 17 #define COND_RESULT_VALUES \
XinZhangMS 0:f7f1f0d76dd6 18 COND_OK, \
XinZhangMS 0:f7f1f0d76dd6 19 COND_INVALID_ARG, \
XinZhangMS 0:f7f1f0d76dd6 20 COND_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 21 COND_TIMEOUT \
XinZhangMS 0:f7f1f0d76dd6 22
XinZhangMS 0:f7f1f0d76dd6 23 /**
XinZhangMS 0:f7f1f0d76dd6 24 * @brief Enumeration specifying the lock status.
XinZhangMS 0:f7f1f0d76dd6 25 */
XinZhangMS 0:f7f1f0d76dd6 26 DEFINE_ENUM(COND_RESULT, COND_RESULT_VALUES);
XinZhangMS 0:f7f1f0d76dd6 27
XinZhangMS 0:f7f1f0d76dd6 28 /**
XinZhangMS 0:f7f1f0d76dd6 29 * @brief This API creates and returns a valid condition handle.
XinZhangMS 0:f7f1f0d76dd6 30 *
XinZhangMS 0:f7f1f0d76dd6 31 * @return A valid @c COND_HANDLE when successful or @c NULL otherwise.
XinZhangMS 0:f7f1f0d76dd6 32 */
XinZhangMS 0:f7f1f0d76dd6 33 MOCKABLE_FUNCTION(, COND_HANDLE, Condition_Init);
XinZhangMS 0:f7f1f0d76dd6 34
XinZhangMS 0:f7f1f0d76dd6 35 /**
XinZhangMS 0:f7f1f0d76dd6 36 * @brief unblock all currently working condition.
XinZhangMS 0:f7f1f0d76dd6 37 *
XinZhangMS 0:f7f1f0d76dd6 38 * @param handle A valid handle to the lock.
XinZhangMS 0:f7f1f0d76dd6 39 *
XinZhangMS 0:f7f1f0d76dd6 40 * @return Returns @c COND_OK when the condition object has been
XinZhangMS 0:f7f1f0d76dd6 41 * destroyed and @c COND_ERROR when an error occurs
XinZhangMS 0:f7f1f0d76dd6 42 * and @c COND_TIMEOUT when the handle times out.
XinZhangMS 0:f7f1f0d76dd6 43 */
XinZhangMS 0:f7f1f0d76dd6 44 MOCKABLE_FUNCTION(, COND_RESULT, Condition_Post, COND_HANDLE, handle);
XinZhangMS 0:f7f1f0d76dd6 45
XinZhangMS 0:f7f1f0d76dd6 46 /**
XinZhangMS 0:f7f1f0d76dd6 47 * @brief block on the condition handle unti the thread is signalled
XinZhangMS 0:f7f1f0d76dd6 48 * or until the timeout_milliseconds is reached.
XinZhangMS 0:f7f1f0d76dd6 49 *
XinZhangMS 0:f7f1f0d76dd6 50 * @param handle A valid handle to the lock.
XinZhangMS 0:f7f1f0d76dd6 51 *
XinZhangMS 0:f7f1f0d76dd6 52 * @return Returns @c COND_OK when the condition object has been
XinZhangMS 0:f7f1f0d76dd6 53 * destroyed and @c COND_ERROR when an error occurs
XinZhangMS 0:f7f1f0d76dd6 54 * and @c COND_TIMEOUT when the handle times out.
XinZhangMS 0:f7f1f0d76dd6 55 */
XinZhangMS 0:f7f1f0d76dd6 56 MOCKABLE_FUNCTION(, COND_RESULT, Condition_Wait, COND_HANDLE, handle, LOCK_HANDLE, lock, int, timeout_milliseconds);
XinZhangMS 0:f7f1f0d76dd6 57
XinZhangMS 0:f7f1f0d76dd6 58 /**
XinZhangMS 0:f7f1f0d76dd6 59 * @brief The condition instance is deinitialized.
XinZhangMS 0:f7f1f0d76dd6 60 *
XinZhangMS 0:f7f1f0d76dd6 61 * @param handle A valid handle to the condition.
XinZhangMS 0:f7f1f0d76dd6 62 *
XinZhangMS 0:f7f1f0d76dd6 63 * @return Returns @c COND_OK when the condition object has been
XinZhangMS 0:f7f1f0d76dd6 64 * destroyed and @c COND_ERROR when an error occurs.
XinZhangMS 0:f7f1f0d76dd6 65 */
XinZhangMS 0:f7f1f0d76dd6 66 MOCKABLE_FUNCTION(, void, Condition_Deinit, COND_HANDLE, handle);
XinZhangMS 0:f7f1f0d76dd6 67
XinZhangMS 0:f7f1f0d76dd6 68 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 69 }
XinZhangMS 0:f7f1f0d76dd6 70 #endif
XinZhangMS 0:f7f1f0d76dd6 71
XinZhangMS 0:f7f1f0d76dd6 72 #endif /* CONDITION_H */