Simple sample that demonstrates reading the FXOS8700CQ accelerometer, convert the data to JSON and send to an Azure IoT Hub.

Dependencies:   azure_umqtt_c iothub_mqtt_transport mbed-rtos mbed wolfSSL Socket lwip-eth lwip-sys lwip

Committer:
markrad
Date:
Tue Apr 25 01:33:13 2017 +0000
Revision:
7:2564d95cbf81
Parent:
3:c0556ff7b8e3
Fix bug in NTP library. Clean up code some.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markrad 3:c0556ff7b8e3 1 // Copyright (c) Microsoft. All rights reserved.
markrad 3:c0556ff7b8e3 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
markrad 3:c0556ff7b8e3 3
markrad 3:c0556ff7b8e3 4 /** @file iothub_message.h
markrad 3:c0556ff7b8e3 5 * @brief The @c IoTHub_Message component encapsulates one message that
markrad 3:c0556ff7b8e3 6 * can be transferred by an IoT hub client.
markrad 3:c0556ff7b8e3 7 */
markrad 3:c0556ff7b8e3 8
markrad 3:c0556ff7b8e3 9 #ifndef IOTHUB_MESSAGE_H
markrad 3:c0556ff7b8e3 10 #define IOTHUB_MESSAGE_H
markrad 3:c0556ff7b8e3 11
markrad 3:c0556ff7b8e3 12 #include "azure_c_shared_utility/macro_utils.h"
markrad 3:c0556ff7b8e3 13 #include "azure_c_shared_utility/map.h"
markrad 3:c0556ff7b8e3 14 #include "azure_c_shared_utility/umock_c_prod.h"
markrad 3:c0556ff7b8e3 15
markrad 3:c0556ff7b8e3 16 #ifdef __cplusplus
markrad 3:c0556ff7b8e3 17 #include <cstddef>
markrad 3:c0556ff7b8e3 18 extern "C"
markrad 3:c0556ff7b8e3 19 {
markrad 3:c0556ff7b8e3 20 #else
markrad 3:c0556ff7b8e3 21 #include <stddef.h>
markrad 3:c0556ff7b8e3 22 #endif
markrad 3:c0556ff7b8e3 23
markrad 3:c0556ff7b8e3 24 #define IOTHUB_MESSAGE_RESULT_VALUES \
markrad 3:c0556ff7b8e3 25 IOTHUB_MESSAGE_OK, \
markrad 3:c0556ff7b8e3 26 IOTHUB_MESSAGE_INVALID_ARG, \
markrad 3:c0556ff7b8e3 27 IOTHUB_MESSAGE_INVALID_TYPE, \
markrad 3:c0556ff7b8e3 28 IOTHUB_MESSAGE_ERROR \
markrad 3:c0556ff7b8e3 29
markrad 3:c0556ff7b8e3 30 /** @brief Enumeration specifying the status of calls to various
markrad 3:c0556ff7b8e3 31 * APIs in this module.
markrad 3:c0556ff7b8e3 32 */
markrad 3:c0556ff7b8e3 33 DEFINE_ENUM(IOTHUB_MESSAGE_RESULT, IOTHUB_MESSAGE_RESULT_VALUES);
markrad 3:c0556ff7b8e3 34
markrad 3:c0556ff7b8e3 35 #define IOTHUBMESSAGE_CONTENT_TYPE_VALUES \
markrad 3:c0556ff7b8e3 36 IOTHUBMESSAGE_BYTEARRAY, \
markrad 3:c0556ff7b8e3 37 IOTHUBMESSAGE_STRING, \
markrad 3:c0556ff7b8e3 38 IOTHUBMESSAGE_UNKNOWN \
markrad 3:c0556ff7b8e3 39
markrad 3:c0556ff7b8e3 40 /** @brief Enumeration specifying the content type of the a given
markrad 3:c0556ff7b8e3 41 * message.
markrad 3:c0556ff7b8e3 42 */
markrad 3:c0556ff7b8e3 43 DEFINE_ENUM(IOTHUBMESSAGE_CONTENT_TYPE, IOTHUBMESSAGE_CONTENT_TYPE_VALUES);
markrad 3:c0556ff7b8e3 44
markrad 3:c0556ff7b8e3 45 typedef struct IOTHUB_MESSAGE_HANDLE_DATA_TAG* IOTHUB_MESSAGE_HANDLE;
markrad 3:c0556ff7b8e3 46
markrad 3:c0556ff7b8e3 47 /**
markrad 3:c0556ff7b8e3 48 * @brief Creates a new IoT hub message from a byte array. The type of the
markrad 3:c0556ff7b8e3 49 * message will be set to @c IOTHUBMESSAGE_BYTEARRAY.
markrad 3:c0556ff7b8e3 50 *
markrad 3:c0556ff7b8e3 51 * @param byteArray The byte array from which the message is to be created.
markrad 3:c0556ff7b8e3 52 * @param size The size of the byte array.
markrad 3:c0556ff7b8e3 53 *
markrad 3:c0556ff7b8e3 54 * @return A valid @c IOTHUB_MESSAGE_HANDLE if the message was successfully
markrad 3:c0556ff7b8e3 55 * created or @c NULL in case an error occurs.
markrad 3:c0556ff7b8e3 56 */
markrad 3:c0556ff7b8e3 57 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_HANDLE, IoTHubMessage_CreateFromByteArray, const unsigned char*, byteArray, size_t, size);
markrad 3:c0556ff7b8e3 58
markrad 3:c0556ff7b8e3 59 /**
markrad 3:c0556ff7b8e3 60 * @brief Creates a new IoT hub message from a null terminated string. The
markrad 3:c0556ff7b8e3 61 * type of the message will be set to @c IOTHUBMESSAGE_STRING.
markrad 3:c0556ff7b8e3 62 *
markrad 3:c0556ff7b8e3 63 * @param source The null terminated string from which the message is to be
markrad 3:c0556ff7b8e3 64 * created.
markrad 3:c0556ff7b8e3 65 *
markrad 3:c0556ff7b8e3 66 * @return A valid @c IOTHUB_MESSAGE_HANDLE if the message was successfully
markrad 3:c0556ff7b8e3 67 * created or @c NULL in case an error occurs.
markrad 3:c0556ff7b8e3 68 */
markrad 3:c0556ff7b8e3 69 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_HANDLE, IoTHubMessage_CreateFromString, const char*, source);
markrad 3:c0556ff7b8e3 70
markrad 3:c0556ff7b8e3 71 /**
markrad 3:c0556ff7b8e3 72 * @brief Creates a new IoT hub message with the content identical to that
markrad 3:c0556ff7b8e3 73 * of the @p iotHubMessageHandle parameter.
markrad 3:c0556ff7b8e3 74 *
markrad 3:c0556ff7b8e3 75 * @param iotHubMessageHandle Handle to the message that is to be cloned.
markrad 3:c0556ff7b8e3 76 *
markrad 3:c0556ff7b8e3 77 * @return A valid @c IOTHUB_MESSAGE_HANDLE if the message was successfully
markrad 3:c0556ff7b8e3 78 * cloned or @c NULL in case an error occurs.
markrad 3:c0556ff7b8e3 79 */
markrad 3:c0556ff7b8e3 80 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_HANDLE, IoTHubMessage_Clone, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 81
markrad 3:c0556ff7b8e3 82 /**
markrad 3:c0556ff7b8e3 83 * @brief Fetches a pointer and size for the data associated with the IoT
markrad 3:c0556ff7b8e3 84 * hub message handle. If the content type of the message is not
markrad 3:c0556ff7b8e3 85 * @c IOTHUBMESSAGE_BYTEARRAY then the function returns
markrad 3:c0556ff7b8e3 86 * @c IOTHUB_MESSAGE_INVALID_ARG.
markrad 3:c0556ff7b8e3 87 *
markrad 3:c0556ff7b8e3 88 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 89 * @param buffer Pointer to the memory location where the
markrad 3:c0556ff7b8e3 90 * pointer to the buffer will be written.
markrad 3:c0556ff7b8e3 91 * @param size The size of the buffer will be written to
markrad 3:c0556ff7b8e3 92 * this address.
markrad 3:c0556ff7b8e3 93 *
markrad 3:c0556ff7b8e3 94 * @return Returns IOTHUB_MESSAGE_OK if the byte array was fetched successfully
markrad 3:c0556ff7b8e3 95 * or an error code otherwise.
markrad 3:c0556ff7b8e3 96 */
markrad 3:c0556ff7b8e3 97 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_GetByteArray, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const unsigned char**, buffer, size_t*, size);
markrad 3:c0556ff7b8e3 98
markrad 3:c0556ff7b8e3 99 /**
markrad 3:c0556ff7b8e3 100 * @brief Returns the null terminated string stored in the message.
markrad 3:c0556ff7b8e3 101 * If the content type of the message is not @c IOTHUBMESSAGE_STRING
markrad 3:c0556ff7b8e3 102 * then the function returns @c NULL.
markrad 3:c0556ff7b8e3 103 *
markrad 3:c0556ff7b8e3 104 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 105 *
markrad 3:c0556ff7b8e3 106 * @return @c NULL if an error occurs or a pointer to the stored null
markrad 3:c0556ff7b8e3 107 * terminated string otherwise.
markrad 3:c0556ff7b8e3 108 */
markrad 3:c0556ff7b8e3 109 MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetString, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 110
markrad 3:c0556ff7b8e3 111 /**
markrad 3:c0556ff7b8e3 112 * @brief Returns the content type of the message given by parameter
markrad 3:c0556ff7b8e3 113 * @c iotHubMessageHandle.
markrad 3:c0556ff7b8e3 114 *
markrad 3:c0556ff7b8e3 115 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 116 *
markrad 3:c0556ff7b8e3 117 * @return An @c IOTHUBMESSAGE_CONTENT_TYPE value.
markrad 3:c0556ff7b8e3 118 */
markrad 3:c0556ff7b8e3 119 MOCKABLE_FUNCTION(, IOTHUBMESSAGE_CONTENT_TYPE, IoTHubMessage_GetContentType, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 120
markrad 3:c0556ff7b8e3 121 /**
markrad 3:c0556ff7b8e3 122 * @brief Gets a handle to the message's properties map.
markrad 3:c0556ff7b8e3 123 *
markrad 3:c0556ff7b8e3 124 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 125 *
markrad 3:c0556ff7b8e3 126 * @return A @c MAP_HANDLE pointing to the properties map for this message.
markrad 3:c0556ff7b8e3 127 */
markrad 3:c0556ff7b8e3 128 MOCKABLE_FUNCTION(, MAP_HANDLE, IoTHubMessage_Properties, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 129
markrad 3:c0556ff7b8e3 130 /**
markrad 3:c0556ff7b8e3 131 * @brief Gets the MessageId from the IOTHUB_MESSAGE_HANDLE.
markrad 3:c0556ff7b8e3 132 *
markrad 3:c0556ff7b8e3 133 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 134 *
markrad 3:c0556ff7b8e3 135 * @return A const char* pointing to the Message Id.
markrad 3:c0556ff7b8e3 136 */
markrad 3:c0556ff7b8e3 137 MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetMessageId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 138
markrad 3:c0556ff7b8e3 139 /**
markrad 3:c0556ff7b8e3 140 * @brief Sets the MessageId for the IOTHUB_MESSAGE_HANDLE.
markrad 3:c0556ff7b8e3 141 *
markrad 3:c0556ff7b8e3 142 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 143 * @param messageId Pointer to the memory location of the messageId
markrad 3:c0556ff7b8e3 144 *
markrad 3:c0556ff7b8e3 145 * @return Returns IOTHUB_MESSAGE_OK if the messageId was set successfully
markrad 3:c0556ff7b8e3 146 * or an error code otherwise.
markrad 3:c0556ff7b8e3 147 */
markrad 3:c0556ff7b8e3 148 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetMessageId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, messageId);
markrad 3:c0556ff7b8e3 149
markrad 3:c0556ff7b8e3 150 /**
markrad 3:c0556ff7b8e3 151 * @brief Gets the CorrelationId from the IOTHUB_MESSAGE_HANDLE.
markrad 3:c0556ff7b8e3 152 *
markrad 3:c0556ff7b8e3 153 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 154 *
markrad 3:c0556ff7b8e3 155 * @return A const char* pointing to the Correlation Id.
markrad 3:c0556ff7b8e3 156 */
markrad 3:c0556ff7b8e3 157 MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetCorrelationId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 158
markrad 3:c0556ff7b8e3 159 /**
markrad 3:c0556ff7b8e3 160 * @brief Sets the CorrelationId for the IOTHUB_MESSAGE_HANDLE.
markrad 3:c0556ff7b8e3 161 *
markrad 3:c0556ff7b8e3 162 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 163 * @param correlationId Pointer to the memory location of the messageId
markrad 3:c0556ff7b8e3 164 *
markrad 3:c0556ff7b8e3 165 * @return Returns IOTHUB_MESSAGE_OK if the messageId was set successfully
markrad 3:c0556ff7b8e3 166 * or an error code otherwise.
markrad 3:c0556ff7b8e3 167 */
markrad 3:c0556ff7b8e3 168 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetCorrelationId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, correlationId);
markrad 3:c0556ff7b8e3 169
markrad 3:c0556ff7b8e3 170 /**
markrad 3:c0556ff7b8e3 171 * @brief Frees all resources associated with the given message handle.
markrad 3:c0556ff7b8e3 172 *
markrad 3:c0556ff7b8e3 173 * @param iotHubMessageHandle Handle to the message.
markrad 3:c0556ff7b8e3 174 */
markrad 3:c0556ff7b8e3 175 MOCKABLE_FUNCTION(, void, IoTHubMessage_Destroy, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
markrad 3:c0556ff7b8e3 176
markrad 3:c0556ff7b8e3 177 #ifdef __cplusplus
markrad 3:c0556ff7b8e3 178 }
markrad 3:c0556ff7b8e3 179 #endif
markrad 3:c0556ff7b8e3 180
markrad 3:c0556ff7b8e3 181 #endif /* IOTHUB_MESSAGE_H */