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
Diff: iothub_client_ll.h
- Revision:
- 0:e393db310d89
- Child:
- 9:3ec7e2695f98
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iothub_client_ll.h Tue Sep 15 21:47:12 2015 -0700 @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#ifndef IOTHUB_CLIENT_LL_H +#define IOTHUB_CLIENT_LL_H + +#include "agenttime.h" + +#include "macro_utils.h" + +#include "iothub_message.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define IOTHUB_CLIENT_RESULT_VALUES \ + IOTHUB_CLIENT_OK, \ + IOTHUB_CLIENT_INVALID_ARG, \ + IOTHUB_CLIENT_ERROR, \ + IOTHUB_CLIENT_INVALID_SIZE, \ + IOTHUB_CLIENT_INDEFINITE_TIME \ + +DEFINE_ENUM(IOTHUB_CLIENT_RESULT, IOTHUB_CLIENT_RESULT_VALUES); + +#define IOTHUB_CLIENT_CONFIRMATION_RESULT_VALUES \ + IOTHUB_CLIENT_CONFIRMATION_OK, \ + IOTHUB_CLIENT_CONFIRMATION_BECAUSE_DESTROY, \ + IOTHUB_CLIENT_CONFIRMATION_ERROR \ + +DEFINE_ENUM(IOTHUB_CLIENT_CONFIRMATION_RESULT, IOTHUB_CLIENT_CONFIRMATION_RESULT_VALUES); + +#define IOTHUB_CLIENT_STATUS_VALUES \ + IOTHUB_CLIENT_SEND_STATUS_IDLE, \ + IOTHUB_CLIENT_SEND_STATUS_BUSY \ + +DEFINE_ENUM(IOTHUB_CLIENT_STATUS, IOTHUB_CLIENT_STATUS_VALUES); + +#define TRANSPORT_TYPE_VALUES \ + TRANSPORT_LL, /*LL comes from "LowLevel" */ \ + TRANSPORT_THREADED + +DEFINE_ENUM(TRANSPORT_TYPE, TRANSPORT_TYPE_VALUES); + +#define IOTHUBMESSAGE_DISPOSITION_RESULT_VALUES \ + IOTHUBMESSAGE_ACCEPTED, \ + IOTHUBMESSAGE_REJECTED, \ + IOTHUBMESSAGE_ABANDONED + +DEFINE_ENUM(IOTHUBMESSAGE_DISPOSITION_RESULT, IOTHUBMESSAGE_DISPOSITION_RESULT_VALUES); + +typedef void* IOTHUB_CLIENT_LL_HANDLE; +typedef void(*IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK)(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void* userContextCallback); +typedef IOTHUBMESSAGE_DISPOSITION_RESULT (*IOTHUB_CLIENT_NOTIFICATION_CALLBACK_ASYNC)(IOTHUB_MESSAGE_HANDLE notificationMessage, void* userContextCallback); +typedef const void*(*IOTHUB_CLIENT_TRANSPORT_PROVIDER)(void); + +typedef struct IOTHUB_CLIENT_CONFIG_TAG +{ + IOTHUB_CLIENT_TRANSPORT_PROVIDER protocol; + const char* deviceId; + const char* deviceKey; + const char* iotHubName; + const char* iotHubSuffix; + const char* protocolGatewayHostName; +} IOTHUB_CLIENT_CONFIG; + +extern IOTHUB_CLIENT_LL_HANDLE IoTHubClient_LL_CreateFromConnectionString(const char* connectionString, IOTHUB_CLIENT_TRANSPORT_PROVIDER protocol); +extern IOTHUB_CLIENT_LL_HANDLE IoTHubClient_LL_Create(const IOTHUB_CLIENT_CONFIG* config); +extern void IoTHubClient_LL_Destroy(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle); + +extern IOTHUB_CLIENT_RESULT IoTHubClient_LL_SendEventAsync(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, IOTHUB_MESSAGE_HANDLE eventMessageHandle, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK eventConfirmationCallback, void* userContextCallback); +extern IOTHUB_CLIENT_RESULT IoTHubClient_LL_GetSendStatus(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, IOTHUB_CLIENT_STATUS *iotHubClientStatus); +extern IOTHUB_CLIENT_RESULT IoTHubClient_LL_SetNotificationCallback(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, IOTHUB_CLIENT_NOTIFICATION_CALLBACK_ASYNC notificationCallback, void* userContextCallback); +extern IOTHUB_CLIENT_RESULT IoTHubClient_LL_GetLastNotificationReceiveTime(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, time_t* lastNotificationReceiveTime); +extern void IoTHubClient_LL_DoWork(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle); +extern IOTHUB_CLIENT_RESULT IoTHubClient_LL_SetOption(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, const char* optionName, const void* value); + +#ifdef __cplusplus +} +#endif + +#endif /* IOTHUB_CLIENT_LL_H */