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_DEVICECONFIGURATION_H
XinZhangMS 0:f7f1f0d76dd6 7 #define IOTHUB_DEVICECONFIGURATION_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 <time.h>
XinZhangMS 0:f7f1f0d76dd6 12 #include "iothub_service_client_auth.h"
XinZhangMS 0:f7f1f0d76dd6 13
XinZhangMS 0:f7f1f0d76dd6 14 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 15
XinZhangMS 0:f7f1f0d76dd6 16 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 17 extern "C"
XinZhangMS 0:f7f1f0d76dd6 18 {
XinZhangMS 0:f7f1f0d76dd6 19 #endif
XinZhangMS 0:f7f1f0d76dd6 20
XinZhangMS 0:f7f1f0d76dd6 21 #define IOTHUB_DEVICE_CONFIGURATION_RESULT_VALUES \
XinZhangMS 0:f7f1f0d76dd6 22 IOTHUB_DEVICE_CONFIGURATION_OK, \
XinZhangMS 0:f7f1f0d76dd6 23 IOTHUB_DEVICE_CONFIGURATION_INVALID_ARG, \
XinZhangMS 0:f7f1f0d76dd6 24 IOTHUB_DEVICE_CONFIGURATION_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 25 IOTHUB_DEVICE_CONFIGURATION_HTTPAPI_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 26 IOTHUB_DEVICE_CONFIGURATION_JSON_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 27 IOTHUB_DEVICE_CONFIGURATION_OUT_OF_MEMORY_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 28 IOTHUB_DEVICE_CONFIGURATION_CONFIGURATION_NOT_EXIST, \
XinZhangMS 0:f7f1f0d76dd6 29 IOTHUB_DEVICE_CONFIGURATION_CONFIGURATION_EXIST \
XinZhangMS 0:f7f1f0d76dd6 30
XinZhangMS 0:f7f1f0d76dd6 31 DEFINE_ENUM(IOTHUB_DEVICE_CONFIGURATION_RESULT, IOTHUB_DEVICE_CONFIGURATION_RESULT_VALUES);
XinZhangMS 0:f7f1f0d76dd6 32
XinZhangMS 0:f7f1f0d76dd6 33 #define IOTHUB_DEVICECONFIGURATION_REQUEST_MODE_VALUES \
XinZhangMS 0:f7f1f0d76dd6 34 IOTHUB_DEVICECONFIGURATION_REQUEST_GET_LIST, \
XinZhangMS 0:f7f1f0d76dd6 35 IOTHUB_DEVICECONFIGURATION_REQUEST_GET, \
XinZhangMS 0:f7f1f0d76dd6 36 IOTHUB_DEVICECONFIGURATION_REQUEST_ADD, \
XinZhangMS 0:f7f1f0d76dd6 37 IOTHUB_DEVICECONFIGURATION_REQUEST_UPDATE, \
XinZhangMS 0:f7f1f0d76dd6 38 IOTHUB_DEVICECONFIGURATION_REQUEST_DELETE, \
XinZhangMS 0:f7f1f0d76dd6 39 IOTHUB_DEVICECONFIGURATION_REQUEST_APPLY_CONFIGURATION_CONTENT
XinZhangMS 0:f7f1f0d76dd6 40
XinZhangMS 0:f7f1f0d76dd6 41 DEFINE_ENUM(IOTHUB_DEVICECONFIGURATION_REQUEST_MODE, IOTHUB_DEVICECONFIGURATION_REQUEST_MODE_VALUES);
XinZhangMS 0:f7f1f0d76dd6 42
XinZhangMS 0:f7f1f0d76dd6 43 typedef struct IOTHUB_DEVICE_CONFIGURATION_CONTENT_TAG
XinZhangMS 0:f7f1f0d76dd6 44 {
XinZhangMS 0:f7f1f0d76dd6 45 const char* deviceContent;
XinZhangMS 0:f7f1f0d76dd6 46 const char* modulesContent;
XinZhangMS 0:f7f1f0d76dd6 47 } IOTHUB_DEVICE_CONFIGURATION_CONTENT;
XinZhangMS 0:f7f1f0d76dd6 48
XinZhangMS 0:f7f1f0d76dd6 49 typedef struct IOTHUB_DEVICE_CONFIGURATION_METRICS_RESULTS_TAG
XinZhangMS 0:f7f1f0d76dd6 50 {
XinZhangMS 0:f7f1f0d76dd6 51 size_t numQueries;
XinZhangMS 0:f7f1f0d76dd6 52 const char** queryNames;
XinZhangMS 0:f7f1f0d76dd6 53 double* results;
XinZhangMS 0:f7f1f0d76dd6 54 } IOTHUB_DEVICE_CONFIGURATION_METRICS_RESULT;
XinZhangMS 0:f7f1f0d76dd6 55
XinZhangMS 0:f7f1f0d76dd6 56 typedef struct IOTHUB_DEVICE_CONFIGURATION_METRICS_DEFINITION_TAG
XinZhangMS 0:f7f1f0d76dd6 57 {
XinZhangMS 0:f7f1f0d76dd6 58 size_t numQueries;
XinZhangMS 0:f7f1f0d76dd6 59 const char** queryNames;
XinZhangMS 0:f7f1f0d76dd6 60 const char** queryStrings;
XinZhangMS 0:f7f1f0d76dd6 61 } IOTHUB_DEVICE_CONFIGURATION_METRICS_DEFINITION;
XinZhangMS 0:f7f1f0d76dd6 62
XinZhangMS 0:f7f1f0d76dd6 63 typedef struct IOTHUB_DEVICE_CONFIGURATION_LABEL_TAG
XinZhangMS 0:f7f1f0d76dd6 64 {
XinZhangMS 0:f7f1f0d76dd6 65 size_t numLabels;
XinZhangMS 0:f7f1f0d76dd6 66 const char** labelNames;
XinZhangMS 0:f7f1f0d76dd6 67 const char** labelValues;
XinZhangMS 0:f7f1f0d76dd6 68 } IOTHUB_DEVICE_CONFIGURATION_LABELS;
XinZhangMS 0:f7f1f0d76dd6 69
XinZhangMS 0:f7f1f0d76dd6 70 #define IOTHUB_DEVICE_CONFIGURATION_SCHEMA_VERSION_1 "1.0"
XinZhangMS 0:f7f1f0d76dd6 71 #define IOTHUB_DEVICE_CONFIGURATION_VERSION_1 1
XinZhangMS 0:f7f1f0d76dd6 72 typedef struct IOTHUB_DEVICE_CONFIGURATION_TAG
XinZhangMS 0:f7f1f0d76dd6 73 {
XinZhangMS 0:f7f1f0d76dd6 74 int version;
XinZhangMS 0:f7f1f0d76dd6 75 const char* schemaVersion; //version 1+
XinZhangMS 0:f7f1f0d76dd6 76 const char* configurationId; //version 1+
XinZhangMS 0:f7f1f0d76dd6 77 const char* targetCondition; //version 1+
XinZhangMS 0:f7f1f0d76dd6 78 const char* eTag; //version 1+
XinZhangMS 0:f7f1f0d76dd6 79 const char* createdTimeUtc; //version 1+
XinZhangMS 0:f7f1f0d76dd6 80 const char* lastUpdatedTimeUtc; //version 1+
XinZhangMS 0:f7f1f0d76dd6 81 int priority; //version 1+
XinZhangMS 0:f7f1f0d76dd6 82
XinZhangMS 0:f7f1f0d76dd6 83 IOTHUB_DEVICE_CONFIGURATION_CONTENT content; //version 1+
XinZhangMS 0:f7f1f0d76dd6 84 IOTHUB_DEVICE_CONFIGURATION_LABELS labels; //version 1+
XinZhangMS 0:f7f1f0d76dd6 85
XinZhangMS 0:f7f1f0d76dd6 86 IOTHUB_DEVICE_CONFIGURATION_METRICS_RESULT systemMetricsResult; //version 1+
XinZhangMS 0:f7f1f0d76dd6 87 IOTHUB_DEVICE_CONFIGURATION_METRICS_DEFINITION systemMetricsDefinition; //version 1+
XinZhangMS 0:f7f1f0d76dd6 88
XinZhangMS 0:f7f1f0d76dd6 89 IOTHUB_DEVICE_CONFIGURATION_METRICS_RESULT metricResult; //version 1+
XinZhangMS 0:f7f1f0d76dd6 90 IOTHUB_DEVICE_CONFIGURATION_METRICS_DEFINITION metricsDefinition; //version 1+
XinZhangMS 0:f7f1f0d76dd6 91 } IOTHUB_DEVICE_CONFIGURATION;
XinZhangMS 0:f7f1f0d76dd6 92
XinZhangMS 0:f7f1f0d76dd6 93 #define IOTHUB_DEVICE_CONFIGURATION_ADD_VERSION_1 1
XinZhangMS 0:f7f1f0d76dd6 94 typedef struct IOTHUB_DEVICE_CONFIGURATION_ADD_TAG
XinZhangMS 0:f7f1f0d76dd6 95 {
XinZhangMS 0:f7f1f0d76dd6 96 int version;
XinZhangMS 0:f7f1f0d76dd6 97 const char* configurationId; //version 1+
XinZhangMS 0:f7f1f0d76dd6 98 const char* targetCondition; //version 1+
XinZhangMS 0:f7f1f0d76dd6 99 int priority; //version 1+
XinZhangMS 0:f7f1f0d76dd6 100
XinZhangMS 0:f7f1f0d76dd6 101 IOTHUB_DEVICE_CONFIGURATION_CONTENT content; //version 1+
XinZhangMS 0:f7f1f0d76dd6 102 IOTHUB_DEVICE_CONFIGURATION_LABELS labels; //version 1+
XinZhangMS 0:f7f1f0d76dd6 103 IOTHUB_DEVICE_CONFIGURATION_METRICS_DEFINITION metrics; //version 1+
XinZhangMS 0:f7f1f0d76dd6 104 } IOTHUB_DEVICE_CONFIGURATION_ADD;
XinZhangMS 0:f7f1f0d76dd6 105
XinZhangMS 0:f7f1f0d76dd6 106 /** @brief Handle to hide struct and use it in consequent APIs
XinZhangMS 0:f7f1f0d76dd6 107 */
XinZhangMS 0:f7f1f0d76dd6 108 typedef struct IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_TAG* IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE;
XinZhangMS 0:f7f1f0d76dd6 109
XinZhangMS 0:f7f1f0d76dd6 110
XinZhangMS 0:f7f1f0d76dd6 111 /** @brief Creates a IoT Hub Service Client DeviceConfiguration handle for use it in consequent APIs.
XinZhangMS 0:f7f1f0d76dd6 112 *
XinZhangMS 0:f7f1f0d76dd6 113 * @param serviceClientHandle Service client handle.
XinZhangMS 0:f7f1f0d76dd6 114 *
XinZhangMS 0:f7f1f0d76dd6 115 * @return A non-NULL @c IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE value that is used when
XinZhangMS 0:f7f1f0d76dd6 116 * invoking other functions for IoT Hub DeviceConfiguration and @c NULL on failure.
XinZhangMS 0:f7f1f0d76dd6 117 */
XinZhangMS 0:f7f1f0d76dd6 118 MOCKABLE_FUNCTION(, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, IoTHubDeviceConfiguration_Create, IOTHUB_SERVICE_CLIENT_AUTH_HANDLE, serviceClientHandle);
XinZhangMS 0:f7f1f0d76dd6 119
XinZhangMS 0:f7f1f0d76dd6 120 /** @brief Disposes of resources allocated by the IoT Hub IoTHubDeviceConfiguration_Create.
XinZhangMS 0:f7f1f0d76dd6 121 *
XinZhangMS 0:f7f1f0d76dd6 122 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 123 */
XinZhangMS 0:f7f1f0d76dd6 124 MOCKABLE_FUNCTION(, void, IoTHubDeviceConfiguration_Destroy, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle);
XinZhangMS 0:f7f1f0d76dd6 125
XinZhangMS 0:f7f1f0d76dd6 126 /** @brief Retrieves the Configuration info for multiple configurations from IoT Hub.
XinZhangMS 0:f7f1f0d76dd6 127 *
XinZhangMS 0:f7f1f0d76dd6 128 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 129 * @param maxConfigurationsCount Maximum number of configurations requested
XinZhangMS 0:f7f1f0d76dd6 130 * @param configurations Output parameter, if it is not NULL will contain the requested configurations
XinZhangMS 0:f7f1f0d76dd6 131 *
XinZhangMS 0:f7f1f0d76dd6 132 * @return IOTHUB_DEVICE_CONFIGURATION_RESULT upon success or an error code upon failure.
XinZhangMS 0:f7f1f0d76dd6 133 */
XinZhangMS 0:f7f1f0d76dd6 134 MOCKABLE_FUNCTION(, IOTHUB_DEVICE_CONFIGURATION_RESULT, IoTHubDeviceConfiguration_GetConfigurations, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle, size_t, maxConfigurationsCount, SINGLYLINKEDLIST_HANDLE, configurationsList);
XinZhangMS 0:f7f1f0d76dd6 135
XinZhangMS 0:f7f1f0d76dd6 136 /** @brief Retrieves the Configuration info for specified configurationId from IoT Hub.
XinZhangMS 0:f7f1f0d76dd6 137 *
XinZhangMS 0:f7f1f0d76dd6 138 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 139 * @param configurationId The configuration name (id) to retrieve Configuration info for.
XinZhangMS 0:f7f1f0d76dd6 140 * @param configuration Output parameter, if it is not NULL will contain the requested configuration info structure
XinZhangMS 0:f7f1f0d76dd6 141 *
XinZhangMS 0:f7f1f0d76dd6 142 * @return IOTHUB_DEVICE_CONFIGURATION_RESULT upon success or an error code upon failure.
XinZhangMS 0:f7f1f0d76dd6 143 */
XinZhangMS 0:f7f1f0d76dd6 144 MOCKABLE_FUNCTION(, IOTHUB_DEVICE_CONFIGURATION_RESULT, IoTHubDeviceConfiguration_GetConfiguration, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle, const char*, configurationId, IOTHUB_DEVICE_CONFIGURATION*, configuration);
XinZhangMS 0:f7f1f0d76dd6 145
XinZhangMS 0:f7f1f0d76dd6 146 /** @brief Adds the Configuration info to IoT Hub.
XinZhangMS 0:f7f1f0d76dd6 147 *
XinZhangMS 0:f7f1f0d76dd6 148 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 149 * @param configurationAdd IOTHUB_DEVICE_CONFIGURATION_ADD structure containing
XinZhangMS 0:f7f1f0d76dd6 150 * the new configuration Id and other optional parameters
XinZhangMS 0:f7f1f0d76dd6 151 * @param configuration Output parameter, if it is not NULL will contain the created configuration info structure
XinZhangMS 0:f7f1f0d76dd6 152 *
XinZhangMS 0:f7f1f0d76dd6 153 * @return IOTHUB_DEVICE_CONFIGURATION_RESULT upon success or an error code upon failure.
XinZhangMS 0:f7f1f0d76dd6 154 */
XinZhangMS 0:f7f1f0d76dd6 155 MOCKABLE_FUNCTION(, IOTHUB_DEVICE_CONFIGURATION_RESULT, IoTHubDeviceConfiguration_AddConfiguration, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle, const IOTHUB_DEVICE_CONFIGURATION_ADD*, configurationAdd, IOTHUB_DEVICE_CONFIGURATION*, configuration);
XinZhangMS 0:f7f1f0d76dd6 156
XinZhangMS 0:f7f1f0d76dd6 157 /** @brief Updates the given Configuration in IoT Hub.
XinZhangMS 0:f7f1f0d76dd6 158 *
XinZhangMS 0:f7f1f0d76dd6 159 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 160 * @param configuration IOTHUB_DEVICE_CONFIGURATION structure containing the new configuration info.
XinZhangMS 0:f7f1f0d76dd6 161 *
XinZhangMS 0:f7f1f0d76dd6 162 * @return IOTHUB_DEVICE_CONFIGURATION_RESULT upon success or an error code upon failure.
XinZhangMS 0:f7f1f0d76dd6 163 */
XinZhangMS 0:f7f1f0d76dd6 164 MOCKABLE_FUNCTION(, IOTHUB_DEVICE_CONFIGURATION_RESULT, IoTHubDeviceConfiguration_UpdateConfiguration, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle, const IOTHUB_DEVICE_CONFIGURATION*, configuration);
XinZhangMS 0:f7f1f0d76dd6 165
XinZhangMS 0:f7f1f0d76dd6 166 /** @brief Deletes the given Configuration from IoT Hub.
XinZhangMS 0:f7f1f0d76dd6 167 *
XinZhangMS 0:f7f1f0d76dd6 168 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 169 * @param configurationId The configuration name (id) to delete Configuration info for.
XinZhangMS 0:f7f1f0d76dd6 170 *
XinZhangMS 0:f7f1f0d76dd6 171 * @return IOTHUB_DEVICE_CONFIGURATION_RESULT upon success or an error code upon failure.
XinZhangMS 0:f7f1f0d76dd6 172 */
XinZhangMS 0:f7f1f0d76dd6 173 MOCKABLE_FUNCTION(, IOTHUB_DEVICE_CONFIGURATION_RESULT, IoTHubDeviceConfiguration_DeleteConfiguration, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle, const char*, configurationId);
XinZhangMS 0:f7f1f0d76dd6 174
XinZhangMS 0:f7f1f0d76dd6 175 /** @brief Deletes the given Configuration from IoT Hub.
XinZhangMS 0:f7f1f0d76dd6 176 *
XinZhangMS 0:f7f1f0d76dd6 177 * @param serviceClientDeviceConfigurationHandle The handle created by a call to the create function.
XinZhangMS 0:f7f1f0d76dd6 178 * @param deviceOrModuleId The target device or module id for the Configuration content.
XinZhangMS 0:f7f1f0d76dd6 179 * @param configurationContent The configuration content to be applied.
XinZhangMS 0:f7f1f0d76dd6 180 *
XinZhangMS 0:f7f1f0d76dd6 181 * @return IOTHUB_DEVICE_CONFIGURATION_RESULT upon success or an error code upon failure.
XinZhangMS 0:f7f1f0d76dd6 182 */
XinZhangMS 0:f7f1f0d76dd6 183 MOCKABLE_FUNCTION(, IOTHUB_DEVICE_CONFIGURATION_RESULT, IoTHubDeviceConfiguration_ApplyConfigurationContentToDeviceOrModule, IOTHUB_SERVICE_CLIENT_DEVICE_CONFIGURATION_HANDLE, serviceClientDeviceConfigurationHandle, const char*, deviceOrModuleId, const IOTHUB_DEVICE_CONFIGURATION_CONTENT*, configurationContent);
XinZhangMS 0:f7f1f0d76dd6 184
XinZhangMS 0:f7f1f0d76dd6 185
XinZhangMS 0:f7f1f0d76dd6 186 /**
XinZhangMS 0:f7f1f0d76dd6 187 * @brief Free members of the IOTHUB_DEVICE_CONFIGURATION structure (NOT the structure itself)
XinZhangMS 0:f7f1f0d76dd6 188 *
XinZhangMS 0:f7f1f0d76dd6 189 * @param configuration The structure to have its members freed.
XinZhangMS 0:f7f1f0d76dd6 190 */
XinZhangMS 0:f7f1f0d76dd6 191 extern void IoTHubDeviceConfiguration_FreeConfigurationMembers(IOTHUB_DEVICE_CONFIGURATION* configuration);
XinZhangMS 0:f7f1f0d76dd6 192
XinZhangMS 0:f7f1f0d76dd6 193 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 194 }
XinZhangMS 0:f7f1f0d76dd6 195 #endif
XinZhangMS 0:f7f1f0d76dd6 196
XinZhangMS 0:f7f1f0d76dd6 197 #endif // IOTHUB_DEVICECONFIGURATION_H