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.
Diff: iothub_service_client/inc/iothub_registrymanager.h
- Revision:
- 0:f7f1f0d76dd6
diff -r 000000000000 -r f7f1f0d76dd6 iothub_service_client/inc/iothub_registrymanager.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iothub_service_client/inc/iothub_registrymanager.h Thu Aug 23 06:52:14 2018 +0000
@@ -0,0 +1,413 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// This file is under development and it is subject to change
+
+#ifndef IOTHUB_REGISTRYMANAGER_H
+#define IOTHUB_REGISTRYMANAGER_H
+
+#include "azure_c_shared_utility/macro_utils.h"
+#include "azure_c_shared_utility/umock_c_prod.h"
+#include "azure_c_shared_utility/crt_abstractions.h"
+#include "azure_c_shared_utility/singlylinkedlist.h"
+#include "azure_c_shared_utility/map.h"
+#include "iothub_service_client_auth.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define IOTHUB_REGISTRYMANAGER_RESULT_VALUES \
+ IOTHUB_REGISTRYMANAGER_OK, \
+ IOTHUB_REGISTRYMANAGER_INVALID_ARG, \
+ IOTHUB_REGISTRYMANAGER_ERROR, \
+ IOTHUB_REGISTRYMANAGER_JSON_ERROR, \
+ IOTHUB_REGISTRYMANAGER_HTTPAPI_ERROR, \
+ IOTHUB_REGISTRYMANAGER_HTTP_STATUS_ERROR, \
+ IOTHUB_REGISTRYMANAGER_DEVICE_EXIST, \
+ IOTHUB_REGISTRYMANAGER_DEVICE_NOT_EXIST, \
+ IOTHUB_REGISTRYMANAGER_CALLBACK_NOT_SET, \
+ IOTHUB_REGISTRYMANAGER_INVALID_VERSION \
+
+DEFINE_ENUM(IOTHUB_REGISTRYMANAGER_RESULT, IOTHUB_REGISTRYMANAGER_RESULT_VALUES);
+
+#define IOTHUB_REGISTRYMANAGER_AUTH_METHOD_VALUES \
+ IOTHUB_REGISTRYMANAGER_AUTH_SPK, \
+ IOTHUB_REGISTRYMANAGER_AUTH_X509_THUMBPRINT, \
+ IOTHUB_REGISTRYMANAGER_AUTH_X509_CERTIFICATE_AUTHORITY, \
+ IOTHUB_REGISTRYMANAGER_AUTH_NONE, \
+ IOTHUB_REGISTRYMANAGER_AUTH_UNKNOWN \
+
+
+DEFINE_ENUM(IOTHUB_REGISTRYMANAGER_AUTH_METHOD, IOTHUB_REGISTRYMANAGER_AUTH_METHOD_VALUES);
+
+#define IOTHUB_DEVICE_EX_VERSION_1 1
+typedef struct IOTHUB_DEVICE_EX_TAG
+{
+ int version;
+ const char* deviceId; //version 1+
+ const char* primaryKey; //version 1+
+ const char* secondaryKey; //version 1+
+ const char* generationId; //version 1+
+ const char* eTag; //version 1+
+ IOTHUB_DEVICE_CONNECTION_STATE connectionState; //version 1+
+ const char* connectionStateUpdatedTime; //version 1+
+ IOTHUB_DEVICE_STATUS status; //version 1+
+ const char* statusReason; //version 1+
+ const char* statusUpdatedTime; //version 1+
+ const char* lastActivityTime; //version 1+
+ size_t cloudToDeviceMessageCount; //version 1+
+
+ bool isManaged; //version 1+
+ const char* configuration; //version 1+
+ const char* deviceProperties; //version 1+
+ const char* serviceProperties; //version 1+
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod; //version 1+
+
+ bool iotEdge_capable; //version 1+
+} IOTHUB_DEVICE_EX;
+
+/**
+* @brief Free members of the IOTHUB_DEVICE_EX structure (NOT the structure itself)
+*
+* @param deviceInfo The structure to have its members freed.
+*/
+extern void IoTHubRegistryManager_FreeDeviceExMembers(IOTHUB_DEVICE_EX* deviceInfo);
+
+#define IOTHUB_REGISTRY_DEVICE_CREATE_EX_VERSION_1 1
+typedef struct IOTHUB_REGISTRY_DEVICE_CREATE_EX_TAG
+{
+ int version;
+ const char* deviceId; //version 1+
+ const char* primaryKey; //version 1+
+ const char* secondaryKey; //version 1+
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod; //version 1+
+ bool iotEdge_capable; //version 1+
+} IOTHUB_REGISTRY_DEVICE_CREATE_EX;
+
+#define IOTHUB_REGISTRY_DEVICE_UPDATE_EX_VERSION_1 1
+typedef struct IOTHUB_REGISTRY_DEVICE_UPDATE_EX_TAG
+{
+ int version;
+ const char* deviceId; //version 1+
+ const char* primaryKey; //version 1+
+ const char* secondaryKey; //version 1+
+ IOTHUB_DEVICE_STATUS status; //version 1+
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod; //version 1+
+ bool iotEdge_capable; //version 1+
+} IOTHUB_REGISTRY_DEVICE_UPDATE_EX;
+
+typedef struct IOTHUB_REGISTRY_STATISTIC_TAG
+{
+ size_t totalDeviceCount;
+ size_t enabledDeviceCount;
+ size_t disabledDeviceCount;
+} IOTHUB_REGISTRY_STATISTICS;
+
+#define IOTHUB_MODULE_VERSION_1 1
+typedef struct IOTHUB_MODULE_TAG
+{
+ int version;
+ const char* deviceId; //version 1+
+ const char* primaryKey; //version 1+
+ const char* secondaryKey; //version 1+
+ const char* generationId; //version 1+
+ const char* eTag; //version 1+
+ IOTHUB_DEVICE_CONNECTION_STATE connectionState; //version 1+
+ const char* connectionStateUpdatedTime; //version 1+
+ IOTHUB_DEVICE_STATUS status; //version 1+
+ const char* statusReason; //version 1+
+ const char* statusUpdatedTime; //version 1+
+ const char* lastActivityTime; //version 1+
+ size_t cloudToDeviceMessageCount; //version 1+
+
+ bool isManaged; //version 1+
+ const char* configuration; //version 1+
+ const char* deviceProperties; //version 1+
+ const char* serviceProperties; //version 1+
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod; //version 1+
+
+ const char* moduleId; //version 1+
+ const char* managedBy; //version 1+
+} IOTHUB_MODULE;
+
+/**
+* @brief Free members of the IOTHUB_MODULE structure (NOT the structure itself)
+*
+* @param moduleInfo The structure to have its members freed.
+*/
+extern void IoTHubRegistryManager_FreeModuleMembers(IOTHUB_MODULE* moduleInfo);
+
+
+#define IOTHUB_REGISTRY_MODULE_CREATE_VERSION_1 1
+typedef struct IOTHUB_REGISTRY_MODULE_CREATE_TAG
+{
+ int version;
+ const char* deviceId; //version 1+
+ const char* primaryKey; //version 1+
+ const char* secondaryKey; //version 1+
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod; //version 1+
+ const char* moduleId; //version 1+
+ const char* managedBy; //version 1+
+} IOTHUB_REGISTRY_MODULE_CREATE;
+
+#define IOTHUB_REGISTRY_MODULE_UPDATE_VERSION_1 1
+typedef struct IOTHUB_REGISTRY_MODULE_UPDATE_TAG
+{
+ int version;
+ const char* deviceId; //version 1+
+ const char* primaryKey; //version 1+
+ const char* secondaryKey; //version 1+
+ IOTHUB_DEVICE_STATUS status; //version 1+
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod; //version 1+
+ const char* moduleId; //version 1+
+ const char* managedBy; //version 1+
+} IOTHUB_REGISTRY_MODULE_UPDATE;
+
+/** @brief Structure to store IoTHub authentication information
+*/
+typedef struct IOTHUB_REGISTRYMANAGER_TAG
+{
+ char* hostname;
+ char* iothubName;
+ char* iothubSuffix;
+ char* sharedAccessKey;
+ char* keyName;
+ char* deviceId;
+} IOTHUB_REGISTRYMANAGER;
+
+/** @brief Handle to hide struct and use it in consequent APIs
+*/
+typedef struct IOTHUB_REGISTRYMANAGER_TAG* IOTHUB_REGISTRYMANAGER_HANDLE;
+
+/**
+* @brief Creates a IoT Hub Registry Manager handle for use it
+* in consequent APIs.
+*
+* @param serviceClientHandle Service client handle.
+*
+* @return A non-NULL @c IOTHUB_REGISTRYMANAGER_HANDLE value that is used when
+* invoking other functions for IoT Hub REgistry Manager and @c NULL on failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_HANDLE IoTHubRegistryManager_Create(IOTHUB_SERVICE_CLIENT_AUTH_HANDLE serviceClientHandle);
+
+/**
+* @brief Disposes of resources allocated by the IoT Hub Registry Manager.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+*/
+extern void IoTHubRegistryManager_Destroy(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle);
+
+/**
+* @brief Creates a device on IoT Hub.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceCreate IOTHUB_REGISTRY_DEVICE_CREATE_EX structure containing
+* the new device Id, primaryKey (optional) and secondaryKey (optional)
+* @param device Input parameter, if it is not NULL will contain the created device info structure
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_CreateDevice_Ex(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const IOTHUB_REGISTRY_DEVICE_CREATE_EX* deviceCreate, IOTHUB_DEVICE_EX* device);
+
+/**
+* @brief Gets device info for a given device.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceId The Id of the requested device.
+* @param device Input parameter, if it is not NULL will contain the requested device info structure
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_GetDevice_Ex(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const char* deviceId, IOTHUB_DEVICE_EX* device);
+
+/**
+* @brief Updates a device on IoT Hub.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceUpdate IOTHUB_REGISTRY_DEVICE_UPDATE_EX structure containing
+* the new device Id, primaryKey (optional), secondaryKey (optional),
+* authentication method, and status
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_UpdateDevice_Ex(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, IOTHUB_REGISTRY_DEVICE_UPDATE_EX* deviceUpdate);
+
+/**
+* @brief Deletes a given device.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceId The Id of the device to delete.
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_DeleteDevice(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const char* deviceId);
+
+/**
+* @brief Gets the registry statistic info.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param registryStatistics Input parameter, if it is not NULL will contain the requested registry info.
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_GetStatistics(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, IOTHUB_REGISTRY_STATISTICS* registryStatistics);
+
+/**
+* @brief Creates a module on IoT Hub.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param moduleCreate IOTHUB_REGISTRY_MODULE_CREATE structure containing
+* the existing deviceID, new module Id, primaryKey (optional) and secondaryKey (optional)
+* @param module Input parameter, if it is not NULL will contain the created module info structure
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_CreateModule(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const IOTHUB_REGISTRY_MODULE_CREATE* moduleCreate, IOTHUB_MODULE* module);
+
+/**
+* @brief Gets module info for a given module.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceId The Id of the requested device.
+* @param moduleId The Id of the requested module.
+* @param module Input parameter, if it is not NULL will contain the requested module info structure
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_GetModule(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const char* deviceId, const char* moduleId, IOTHUB_MODULE* module);
+
+/**
+* @brief Updates a module on IoT Hub.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param moduleUpdate IOTHUB_REGISTRY_MODULE_UPDATE structure containing
+* the new module Id, primaryKey (optional), secondaryKey (optional),
+* authentication method, and status
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_UpdateModule(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, IOTHUB_REGISTRY_MODULE_UPDATE* moduleUpdate);
+
+/**
+* @brief Deletes a given module.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceId The Id of the device containing module to delete.
+* @param moduleId The Id of the module to delete.
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_DeleteModule(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const char* deviceId, const char* moduleId);
+
+/**
+* @brief Gets a list of modules registered on the specified device.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceId The device to get a list of modules from
+* @param moduleList The linked list structure to hold the returned modules
+* @param module_version The version of the module structure to return
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_GetModuleList(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const char* deviceId, SINGLYLINKEDLIST_HANDLE moduleList, int module_version);
+
+
+/* DEPRECATED: THE FOLLOWING APIS ARE DEPRECATED, AND ARE ONLY BEING KEPT FOR BACK COMPAT. PLEASE USE _EX EQUIVALENT ABOVE */
+/* DEPRECATED: THE FOLLOWING APIS ARE DEPRECATED, AND ARE ONLY BEING KEPT FOR BACK COMPAT. PLEASE USE _EX EQUIVALENT ABOVE */
+/* DEPRECATED: THE FOLLOWING APIS ARE DEPRECATED, AND ARE ONLY BEING KEPT FOR BACK COMPAT. PLEASE USE _EX EQUIVALENT ABOVE */
+
+/* Please use IOTHUB_DEVICE_EX instead */
+typedef struct IOTHUB_DEVICE_TAG
+{
+ const char* deviceId;
+ const char* primaryKey;
+ const char* secondaryKey;
+ const char* generationId;
+ const char* eTag;
+ IOTHUB_DEVICE_CONNECTION_STATE connectionState;
+ const char* connectionStateUpdatedTime;
+ IOTHUB_DEVICE_STATUS status;
+ const char* statusReason;
+ const char* statusUpdatedTime;
+ const char* lastActivityTime;
+ size_t cloudToDeviceMessageCount;
+
+ bool isManaged;
+ const char* configuration;
+ const char* deviceProperties;
+ const char* serviceProperties;
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod;
+} IOTHUB_DEVICE;
+
+/* Please use IOTHUB_REGISTRY_DEVICE_CREATE_EX instead */
+typedef struct IOTHUB_REGISTRY_DEVICE_CREATE_TAG
+{
+ const char* deviceId;
+ const char* primaryKey;
+ const char* secondaryKey;
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod;
+} IOTHUB_REGISTRY_DEVICE_CREATE;
+
+/* Please use IOTHUB_REGISTRY_DEVICE_UPDATED_EX instead */
+typedef struct IOTHUB_REGISTRY_DEVICE_UPDATE_TAG
+{
+ const char* deviceId;
+ const char* primaryKey;
+ const char* secondaryKey;
+ IOTHUB_DEVICE_STATUS status;
+ IOTHUB_REGISTRYMANAGER_AUTH_METHOD authMethod;
+} IOTHUB_REGISTRY_DEVICE_UPDATE;
+
+/** DEPRECATED:: Use IoTHubRegistryManager_CreateDevice_Ex instead
+* @brief Creates a device on IoT Hub.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceCreate IOTHUB_REGISTRY_DEVICE_CREATE structure containing
+* the new device Id, primaryKey (optional) and secondaryKey (optional)
+* @param device Input parameter, if it is not NULL will contain the created device info structure
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_CreateDevice(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const IOTHUB_REGISTRY_DEVICE_CREATE* deviceCreate, IOTHUB_DEVICE* device);
+
+/** DEPRECATED:: Use IoTHubRegistryManager_GetDevice_Ex instead
+* @brief Gets device info for a given device.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceId The Id of the requested device.
+* @param device Input parameter, if it is not NULL will contain the requested device info structure
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_GetDevice(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, const char* deviceId, IOTHUB_DEVICE* device);
+
+/** DEPRECATED:: Use IoTHubRegistryManager_UpdateDevice_Ex instead
+* @brief Updates a device on IoT Hub.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param deviceUpdate IOTHUB_REGISTRY_DEVICE_UPDATE structure containing
+* the new device Id, primaryKey (optional), secondaryKey (optional),
+* authentication method, and status
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_UpdateDevice(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, IOTHUB_REGISTRY_DEVICE_UPDATE* deviceUpdate);
+
+/* *DEPRECATED:: IoTHubRegistryManager_GetDeviceList is deprecated and may be removed from a future release.
+* @brief Gets device a list of devices registered on the IoTHUb.
+*
+* @param registryManagerHandle The handle created by a call to the create function.
+* @param numberOfDevices Number of devices requested.
+* @param deviceList Input parameter, if it is not NULL will contain the requested list of devices.
+*
+* @return IOTHUB_REGISTRYMANAGER_RESULT_OK upon success or an error code upon failure.
+*/
+extern IOTHUB_REGISTRYMANAGER_RESULT IoTHubRegistryManager_GetDeviceList(IOTHUB_REGISTRYMANAGER_HANDLE registryManagerHandle, size_t numberOfDevices, SINGLYLINKEDLIST_HANDLE deviceList);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // IOTHUB_REGISTRYMANAGER_H