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 // This file is under development and it is subject to change
XinZhangMS 0:f7f1f0d76dd6 5
XinZhangMS 0:f7f1f0d76dd6 6 #ifndef IOTHUB_DEVICETWIN_H
XinZhangMS 0:f7f1f0d76dd6 7 #define IOTHUB_DEVICETWIN_H
XinZhangMS 0:f7f1f0d76dd6 8
XinZhangMS 0:f7f1f0d76dd6 9 #include "azure_c_shared_utility/crt_abstractions.h"
XinZhangMS 0:f7f1f0d76dd6 10 #include "azure_c_shared_utility/singlylinkedlist.h"
XinZhangMS 0:f7f1f0d76dd6 11 #include "azure_c_shared_utility/map.h"
XinZhangMS 0:f7f1f0d76dd6 12 #include <time.h>
XinZhangMS 0:f7f1f0d76dd6 13 #include "iothub_service_client_auth.h"
XinZhangMS 0:f7f1f0d76dd6 14
XinZhangMS 0:f7f1f0d76dd6 15 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 16
XinZhangMS 0:f7f1f0d76dd6 17 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 18 extern "C"
XinZhangMS 0:f7f1f0d76dd6 19 {
XinZhangMS 0:f7f1f0d76dd6 20 #else
XinZhangMS 0:f7f1f0d76dd6 21 #endif
XinZhangMS 0:f7f1f0d76dd6 22
XinZhangMS 0:f7f1f0d76dd6 23 #define IOTHUB_DEVICE_TWIN_RESULT_VALUES \
XinZhangMS 0:f7f1f0d76dd6 24 IOTHUB_DEVICE_TWIN_OK, \
XinZhangMS 0:f7f1f0d76dd6 25 IOTHUB_DEVICE_TWIN_INVALID_ARG, \
XinZhangMS 0:f7f1f0d76dd6 26 IOTHUB_DEVICE_TWIN_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 27 IOTHUB_DEVICE_TWIN_HTTPAPI_ERROR \
XinZhangMS 0:f7f1f0d76dd6 28
XinZhangMS 0:f7f1f0d76dd6 29 DEFINE_ENUM(IOTHUB_DEVICE_TWIN_RESULT, IOTHUB_DEVICE_TWIN_RESULT_VALUES);
XinZhangMS 0:f7f1f0d76dd6 30
XinZhangMS 0:f7f1f0d76dd6 31 /** @brief Handle to hide struct and use it in consequent APIs
XinZhangMS 0:f7f1f0d76dd6 32 */
XinZhangMS 0:f7f1f0d76dd6 33 typedef struct IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_TAG* IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE;
XinZhangMS 0:f7f1f0d76dd6 34
XinZhangMS 0:f7f1f0d76dd6 35
XinZhangMS 0:f7f1f0d76dd6 36 /** @brief Creates a IoT Hub Service Client DeviceTwin handle for use it in consequent APIs.
XinZhangMS 0:f7f1f0d76dd6 37 *
XinZhangMS 0:f7f1f0d76dd6 38 * @param serviceClientHandle Service client handle.
XinZhangMS 0:f7f1f0d76dd6 39 *
XinZhangMS 0:f7f1f0d76dd6 40 * @return A non-NULL @c IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE value that is used when
XinZhangMS 0:f7f1f0d76dd6 41 * invoking other functions for IoT Hub DeviceTwin and @c NULL on failure.
XinZhangMS 0:f7f1f0d76dd6 42 */
XinZhangMS 0:f7f1f0d76dd6 43 MOCKABLE_FUNCTION(, IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE, IoTHubDeviceTwin_Create, IOTHUB_SERVICE_CLIENT_AUTH_HANDLE, serviceClientHandle);
XinZhangMS 0:f7f1f0d76dd6 44
XinZhangMS 0:f7f1f0d76dd6 45 /** @brief Disposes of resources allocated by the IoT Hub IoTHubDeviceTwin_Create.
XinZhangMS 0:f7f1f0d76dd6 46 *
XinZhangMS 0:f7f1f0d76dd6 47 * @param serviceClientDeviceTwinHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 48 */
XinZhangMS 0:f7f1f0d76dd6 49 MOCKABLE_FUNCTION(, void, IoTHubDeviceTwin_Destroy, IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE, serviceClientDeviceTwinHandle);
XinZhangMS 0:f7f1f0d76dd6 50
XinZhangMS 0:f7f1f0d76dd6 51 /** @brief Retrieves the given device's twin info.
XinZhangMS 0:f7f1f0d76dd6 52 *
XinZhangMS 0:f7f1f0d76dd6 53 * @param serviceClientDeviceTwinHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 54 * @param deviceId The device name (id) to retrieve twin info for.
XinZhangMS 0:f7f1f0d76dd6 55 *
XinZhangMS 0:f7f1f0d76dd6 56 * @return A non-NULL char* containing device twin info upon success or NULL upon failure.
XinZhangMS 0:f7f1f0d76dd6 57 */
XinZhangMS 0:f7f1f0d76dd6 58 MOCKABLE_FUNCTION(, char*, IoTHubDeviceTwin_GetTwin, IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE, serviceClientDeviceTwinHandle, const char*, deviceId);
XinZhangMS 0:f7f1f0d76dd6 59
XinZhangMS 0:f7f1f0d76dd6 60 /** @brief Updates (partial update) the given device's twin info.
XinZhangMS 0:f7f1f0d76dd6 61 *
XinZhangMS 0:f7f1f0d76dd6 62 * @param serviceClientDeviceTwinHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 63 * @param deviceId The device name (id) to update the twin info for.
XinZhangMS 0:f7f1f0d76dd6 64 * @param deviceTwinJson DeviceTwin JSon string containing the info (tags, desired properties) to update.
XinZhangMS 0:f7f1f0d76dd6 65 * All well-known read-only members are ignored.
XinZhangMS 0:f7f1f0d76dd6 66 * Properties provided with value of null are removed from twin's document.
XinZhangMS 0:f7f1f0d76dd6 67 *
XinZhangMS 0:f7f1f0d76dd6 68 * @return A non-NULL char* containing updated device twin info upon success or NULL upon failure.
XinZhangMS 0:f7f1f0d76dd6 69 */
XinZhangMS 0:f7f1f0d76dd6 70 MOCKABLE_FUNCTION(, char*, IoTHubDeviceTwin_UpdateTwin, IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE, serviceClientDeviceTwinHandle, const char*, deviceId, const char*, deviceTwinJson);
XinZhangMS 0:f7f1f0d76dd6 71
XinZhangMS 0:f7f1f0d76dd6 72 /** @brief Retrieves the given module's twin info.
XinZhangMS 0:f7f1f0d76dd6 73 *
XinZhangMS 0:f7f1f0d76dd6 74 * @param serviceClientDeviceTwinHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 75 * @param deviceId The device name (id) containing the module to retrieve the twin info for.
XinZhangMS 0:f7f1f0d76dd6 76 * @param moduleId The module name (id) to retrieve twin info for.
XinZhangMS 0:f7f1f0d76dd6 77 *
XinZhangMS 0:f7f1f0d76dd6 78 * @return A non-NULL char* containing module twin info upon success or NULL upon failure.
XinZhangMS 0:f7f1f0d76dd6 79 */
XinZhangMS 0:f7f1f0d76dd6 80 MOCKABLE_FUNCTION(, char*, IoTHubDeviceTwin_GetModuleTwin, IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE, serviceClientDeviceTwinHandle, const char*, deviceId, const char*, moduleId);
XinZhangMS 0:f7f1f0d76dd6 81
XinZhangMS 0:f7f1f0d76dd6 82 /** @brief Updates (partial update) the given module's twin info.
XinZhangMS 0:f7f1f0d76dd6 83 *
XinZhangMS 0:f7f1f0d76dd6 84 * @param serviceClientDeviceTwinHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 85 * @param deviceId The device name (id) containing the module to update.
XinZhangMS 0:f7f1f0d76dd6 86 * @param moduleId The module name (id) to update the twin info for.
XinZhangMS 0:f7f1f0d76dd6 87 * @param moduleTwinJson ModuleTwin JSon string containing the info (tags, desired properties) to update.
XinZhangMS 0:f7f1f0d76dd6 88 * All well-known read-only members are ignored.
XinZhangMS 0:f7f1f0d76dd6 89 * Properties provided with value of null are removed from twin's document.
XinZhangMS 0:f7f1f0d76dd6 90 *
XinZhangMS 0:f7f1f0d76dd6 91 * @return A non-NULL char* containing updated module twin info upon success or NULL upon failure.
XinZhangMS 0:f7f1f0d76dd6 92 */
XinZhangMS 0:f7f1f0d76dd6 93 MOCKABLE_FUNCTION(, char*, IoTHubDeviceTwin_UpdateModuleTwin, IOTHUB_SERVICE_CLIENT_DEVICE_TWIN_HANDLE, serviceClientDeviceTwinHandle, const char*, deviceId, const char*, moduleId, const char*, moduleTwinJson);
XinZhangMS 0:f7f1f0d76dd6 94
XinZhangMS 0:f7f1f0d76dd6 95 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 96 }
XinZhangMS 0:f7f1f0d76dd6 97 #endif
XinZhangMS 0:f7f1f0d76dd6 98
XinZhangMS 0:f7f1f0d76dd6 99 #endif // IOTHUB_DEVICETWIN_H