Microsoft Azure IoTHub client libraries

Dependents:   sht15_remote_monitoring RobotArmDemo iothub_client_sample_amqp f767zi_mqtt ... more

This library implements the Microsoft Azure IoTHub client library. The code is replicated from https://github.com/Azure/azure-iot-sdks

Revision:
88:248736be106e
Parent:
66:a419827cb051
Child:
89:a2ed767a532e
--- a/iothub_transport_ll.h	Fri May 04 13:24:17 2018 -0700
+++ b/iothub_transport_ll.h	Mon Jun 11 15:39:23 2018 -0700
@@ -4,96 +4,34 @@
 #ifndef IOTHUB_TRANSPORT_LL_H
 #define IOTHUB_TRANSPORT_LL_H
 
+#ifdef __cplusplus
+#include <cstddef>
+#include <cstdint>
+extern "C"
+{
+#else
+#include <stddef.h>
+#include <stdint.h>
+#endif
+
+#include "azure_c_shared_utility/umock_c_prod.h"
 
 typedef void* TRANSPORT_LL_HANDLE;
 typedef void* IOTHUB_DEVICE_HANDLE;
 
+struct TRANSPORT_HANDLE_DATA_TAG;
+typedef struct TRANSPORT_HANDLE_DATA_TAG* TRANSPORT_HANDLE;
+
+typedef void* METHOD_HANDLE;
+
 struct TRANSPORT_PROVIDER_TAG;
 typedef struct TRANSPORT_PROVIDER_TAG TRANSPORT_PROVIDER;
 
-union IOTHUB_IDENTITY_INFO_TAG;
-typedef union IOTHUB_IDENTITY_INFO_TAG IOTHUB_IDENTITY_INFO;
-
-typedef void* METHOD_HANDLE;
-
-#include "azure_c_shared_utility/doublylinkedlist.h"
-#include "azure_c_shared_utility/strings.h"
-#include "iothub_message.h"
-#include "iothub_client_authorization.h"
-
-struct MESSAGE_DISPOSITION_CONTEXT_TAG;
-typedef struct MESSAGE_DISPOSITION_CONTEXT_TAG* MESSAGE_DISPOSITION_CONTEXT_HANDLE;
-typedef struct MESSAGE_CALLBACK_INFO_TAG
-{
-    IOTHUB_MESSAGE_HANDLE messageHandle;
-    MESSAGE_DISPOSITION_CONTEXT_HANDLE transportContext;
-}MESSAGE_CALLBACK_INFO;
-
-#include "iothub_client_ll.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-    /** @brief	This struct captures device configuration. */
-    typedef struct IOTHUB_DEVICE_CONFIG_TAG
-    {
-        /** @brief	A string that identifies the device. */
-        const char* deviceId;
-
-        /** @brief	The device key used to authenticate the device. */
-        const char* deviceKey;
-
-        /** @brief	The device SAS used to authenticate the device in place of using the device key. */
-        const char* deviceSasToken;
-
-        IOTHUB_AUTHORIZATION_HANDLE authorization_module; // with either SAS Token, x509 Certs, and Device SAS Token
-    } IOTHUB_DEVICE_CONFIG;
+typedef const TRANSPORT_PROVIDER*(*IOTHUB_CLIENT_TRANSPORT_PROVIDER)(void);
 
-    typedef STRING_HANDLE (*pfIoTHubTransport_GetHostname)(TRANSPORT_LL_HANDLE handle);
-    typedef IOTHUB_CLIENT_RESULT(*pfIoTHubTransport_SetOption)(TRANSPORT_LL_HANDLE handle, const char *optionName, const void* value);
-    typedef TRANSPORT_LL_HANDLE(*pfIoTHubTransport_Create)(const IOTHUBTRANSPORT_CONFIG* config);
-    typedef void (*pfIoTHubTransport_Destroy)(TRANSPORT_LL_HANDLE handle);
-    typedef IOTHUB_DEVICE_HANDLE(*pfIotHubTransport_Register)(TRANSPORT_LL_HANDLE handle, const IOTHUB_DEVICE_CONFIG* device, IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, PDLIST_ENTRY waitingToSend);
-    typedef void(*pfIotHubTransport_Unregister)(IOTHUB_DEVICE_HANDLE deviceHandle);
-    typedef int (*pfIoTHubTransport_Subscribe)(IOTHUB_DEVICE_HANDLE handle);
-    typedef void (*pfIoTHubTransport_Unsubscribe)(IOTHUB_DEVICE_HANDLE handle);
-    typedef void (*pfIoTHubTransport_DoWork)(TRANSPORT_LL_HANDLE handle, IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle);
-    typedef int(*pfIoTHubTransport_SetRetryPolicy)(TRANSPORT_LL_HANDLE handle, IOTHUB_CLIENT_RETRY_POLICY retryPolicy, size_t retryTimeoutLimitInSeconds);
-    typedef IOTHUB_CLIENT_RESULT(*pfIoTHubTransport_GetSendStatus)(IOTHUB_DEVICE_HANDLE handle, IOTHUB_CLIENT_STATUS *iotHubClientStatus);
-    typedef int (*pfIoTHubTransport_Subscribe_DeviceTwin)(IOTHUB_DEVICE_HANDLE handle);
-    typedef void (*pfIoTHubTransport_Unsubscribe_DeviceTwin)(IOTHUB_DEVICE_HANDLE handle);
-    typedef IOTHUB_CLIENT_RESULT(*pfIotHubTransport_SendMessageDisposition)(MESSAGE_CALLBACK_INFO* messageData, IOTHUBMESSAGE_DISPOSITION_RESULT disposition);
-    typedef IOTHUB_PROCESS_ITEM_RESULT(*pfIoTHubTransport_ProcessItem)(TRANSPORT_LL_HANDLE handle, IOTHUB_IDENTITY_TYPE item_type, IOTHUB_IDENTITY_INFO* iothub_item);
-    typedef int(*pfIoTHubTransport_Subscribe_DeviceMethod)(IOTHUB_DEVICE_HANDLE handle);
-    typedef void(*pfIoTHubTransport_Unsubscribe_DeviceMethod)(IOTHUB_DEVICE_HANDLE handle);
-    typedef int(*pfIoTHubTransport_DeviceMethod_Response)(IOTHUB_DEVICE_HANDLE handle, METHOD_HANDLE methodId, const unsigned char* response, size_t response_size, int status_response);
-
-#define TRANSPORT_PROVIDER_FIELDS                                                   \
-pfIotHubTransport_SendMessageDisposition IoTHubTransport_SendMessageDisposition;  \
-pfIoTHubTransport_Subscribe_DeviceMethod IoTHubTransport_Subscribe_DeviceMethod;    \
-pfIoTHubTransport_Unsubscribe_DeviceMethod IoTHubTransport_Unsubscribe_DeviceMethod;\
-pfIoTHubTransport_DeviceMethod_Response IoTHubTransport_DeviceMethod_Response;      \
-pfIoTHubTransport_Subscribe_DeviceTwin IoTHubTransport_Subscribe_DeviceTwin;        \
-pfIoTHubTransport_Unsubscribe_DeviceTwin IoTHubTransport_Unsubscribe_DeviceTwin;    \
-pfIoTHubTransport_ProcessItem IoTHubTransport_ProcessItem;                          \
-pfIoTHubTransport_GetHostname IoTHubTransport_GetHostname;                          \
-pfIoTHubTransport_SetOption IoTHubTransport_SetOption;                              \
-pfIoTHubTransport_Create IoTHubTransport_Create;                                    \
-pfIoTHubTransport_Destroy IoTHubTransport_Destroy;                                  \
-pfIotHubTransport_Register IoTHubTransport_Register;                                \
-pfIotHubTransport_Unregister IoTHubTransport_Unregister;                            \
-pfIoTHubTransport_Subscribe IoTHubTransport_Subscribe;                              \
-pfIoTHubTransport_Unsubscribe IoTHubTransport_Unsubscribe;                          \
-pfIoTHubTransport_DoWork IoTHubTransport_DoWork;                                    \
-pfIoTHubTransport_SetRetryPolicy IoTHubTransport_SetRetryPolicy;                    \
-pfIoTHubTransport_GetSendStatus IoTHubTransport_GetSendStatus  /*there's an intentional missing ; on this line*/
-
-    struct TRANSPORT_PROVIDER_TAG
-    {
-        TRANSPORT_PROVIDER_FIELDS;
-    };
+MOCKABLE_FUNCTION(, TRANSPORT_HANDLE, IoTHubTransport_Create, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol, const char*, iotHubName, const char*, iotHubSuffix);
+MOCKABLE_FUNCTION(, void, IoTHubTransport_Destroy, TRANSPORT_HANDLE, transportHandle);
+MOCKABLE_FUNCTION(, TRANSPORT_LL_HANDLE, IoTHubTransport_GetLLTransport, TRANSPORT_HANDLE, transportHandle);
 
 #ifdef __cplusplus
 }