Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
c-utility/inc/azure_c_shared_utility/condition.h@0:f7f1f0d76dd6, 2018-08-23 (annotated)
- 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?
| User | Revision | Line number | New 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 */ |