A modelling and serializer library for Microsoft Azure IoTHub client applications

Dependents:   sht15_remote_monitoring f767zi_mqtt remote_monitoring simplesample_amqp ... more

This library implements a serializer library to be used in projects involving Microsoft Azure IoT Hub connectivity. The code is replicated from https://github.com/Azure/azure-iot-sdks

Committer:
AzureIoTClient
Date:
Tue Sep 11 11:14:37 2018 -0700
Revision:
36:7d12a5386197
Parent:
10:c2aee3965a83
1.2.9

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AzureIoTClient 4:233dd7616d73 1 // Copyright (c) Microsoft. All rights reserved.
AzureIoTClient 4:233dd7616d73 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
AzureIoTClient 4:233dd7616d73 3
AzureIoTClient 4:233dd7616d73 4 /** @file schemalib.h
AzureIoTClient 36:7d12a5386197 5 * @brief The IoT Hub Serializer APIs allows developers to define models for
AzureIoTClient 36:7d12a5386197 6 * their devices
AzureIoTClient 4:233dd7616d73 7 */
AzureIoTClient 4:233dd7616d73 8
AzureIoTClient 4:233dd7616d73 9 #ifndef SCHEMALIB_H
AzureIoTClient 4:233dd7616d73 10 #define SCHEMALIB_H
AzureIoTClient 4:233dd7616d73 11
Azure.IoT Build 10:c2aee3965a83 12 #include "azure_c_shared_utility/macro_utils.h"
Azure.IoT Build 10:c2aee3965a83 13 #include "azure_c_shared_utility/strings.h"
AzureIoTClient 4:233dd7616d73 14 #include "iotdevice.h"
AzureIoTClient 4:233dd7616d73 15
AzureIoTClient 4:233dd7616d73 16 #ifdef __cplusplus
AzureIoTClient 4:233dd7616d73 17 extern "C" {
AzureIoTClient 4:233dd7616d73 18 #endif
AzureIoTClient 4:233dd7616d73 19
AzureIoTClient 4:233dd7616d73 20 /* Codes_SRS_SCHEMALIB__99_001:[ IoTHubSchema_Client shall expose the following API: ... ] */
AzureIoTClient 4:233dd7616d73 21 #define SERIALIZER_RESULT_VALUES \
AzureIoTClient 4:233dd7616d73 22 SERIALIZER_OK, \
AzureIoTClient 4:233dd7616d73 23 SERIALIZER_INVALID_ARG, \
AzureIoTClient 4:233dd7616d73 24 SERIALIZER_CODEFIRST_INIT_FAILED, \
AzureIoTClient 4:233dd7616d73 25 SERIALIZER_SCHEMA_FAILED, \
AzureIoTClient 4:233dd7616d73 26 SERIALIZER_HTTP_API_INIT_FAILED, \
AzureIoTClient 4:233dd7616d73 27 SERIALIZER_ALREADY_INIT, \
AzureIoTClient 4:233dd7616d73 28 SERIALIZER_ERROR, \
AzureIoTClient 4:233dd7616d73 29 SERIALIZER_NOT_INITIALIZED, \
AzureIoTClient 4:233dd7616d73 30 SERIALIZER_ALREADY_STARTED, \
AzureIoTClient 4:233dd7616d73 31 SERIALIZER_DEVICE_CREATE_FAILED, \
AzureIoTClient 4:233dd7616d73 32 SERIALIZER_GET_MODEL_HANDLE_FAILED, \
AzureIoTClient 4:233dd7616d73 33 SERIALIZER_SERVICEBUS_FAILED
AzureIoTClient 4:233dd7616d73 34
AzureIoTClient 36:7d12a5386197 35 /** @brief Enumeration specifying the status of calls to various APIs in this
AzureIoTClient 4:233dd7616d73 36 * module.
AzureIoTClient 4:233dd7616d73 37 */
AzureIoTClient 4:233dd7616d73 38 DEFINE_ENUM(SERIALIZER_RESULT, SERIALIZER_RESULT_VALUES);
AzureIoTClient 4:233dd7616d73 39
AzureIoTClient 4:233dd7616d73 40 #define SERIALIZER_CONFIG_VALUES \
AzureIoTClient 4:233dd7616d73 41 CommandPollingInterval, \
AzureIoTClient 4:233dd7616d73 42 SerializeDelayedBufferMaxSize
AzureIoTClient 4:233dd7616d73 43
AzureIoTClient 36:7d12a5386197 44 /** @brief Enumeration specifying the option to set on the serializer when
AzureIoTClient 4:233dd7616d73 45 * calling ::serializer_setconfig.
AzureIoTClient 4:233dd7616d73 46 */
AzureIoTClient 4:233dd7616d73 47 DEFINE_ENUM(SERIALIZER_CONFIG, SERIALIZER_CONFIG_VALUES);
AzureIoTClient 4:233dd7616d73 48
AzureIoTClient 4:233dd7616d73 49 /**
AzureIoTClient 4:233dd7616d73 50 * @brief Initializes the library.
AzureIoTClient 4:233dd7616d73 51 *
AzureIoTClient 4:233dd7616d73 52 * @param overrideSchemaNamespace An override schema namespace to use for all
AzureIoTClient 4:233dd7616d73 53 * models. Optional, can be @c NULL.
AzureIoTClient 4:233dd7616d73 54 *
AzureIoTClient 4:233dd7616d73 55 * If @p schemaNamespace is not @c NULL, its value shall be used
AzureIoTClient 4:233dd7616d73 56 * instead of the namespace defined for each model by using the
AzureIoTClient 4:233dd7616d73 57 * @c DECLARE_XXX macro.
AzureIoTClient 36:7d12a5386197 58 *
AzureIoTClient 4:233dd7616d73 59 * @return @c SERIALIZER_OK on success and any other error on failure.
AzureIoTClient 4:233dd7616d73 60 */
AzureIoTClient 4:233dd7616d73 61 extern SERIALIZER_RESULT serializer_init(const char* overrideSchemaNamespace);
AzureIoTClient 4:233dd7616d73 62
AzureIoTClient 36:7d12a5386197 63 /** @brief Shuts down the IOT library.
AzureIoTClient 36:7d12a5386197 64 *
AzureIoTClient 4:233dd7616d73 65 * The library will track all created devices and upon a call to
AzureIoTClient 4:233dd7616d73 66 * ::serializer_deinit it will de-initialize all devices.
AzureIoTClient 4:233dd7616d73 67 */
AzureIoTClient 4:233dd7616d73 68 extern void serializer_deinit(void);
AzureIoTClient 4:233dd7616d73 69
AzureIoTClient 4:233dd7616d73 70 /**
AzureIoTClient 4:233dd7616d73 71 * @brief Set serializer options.
AzureIoTClient 4:233dd7616d73 72 *
AzureIoTClient 4:233dd7616d73 73 * @param which The option to be set.
AzureIoTClient 4:233dd7616d73 74 * @param value The value to set for the given option.
AzureIoTClient 4:233dd7616d73 75 *
AzureIoTClient 4:233dd7616d73 76 * @return @c SERIALIZER_OK on success and any other error on failure.
AzureIoTClient 4:233dd7616d73 77 */
AzureIoTClient 4:233dd7616d73 78 extern SERIALIZER_RESULT serializer_setconfig(SERIALIZER_CONFIG which, void* value);
AzureIoTClient 4:233dd7616d73 79
AzureIoTClient 4:233dd7616d73 80 #ifdef __cplusplus
AzureIoTClient 4:233dd7616d73 81 }
AzureIoTClient 4:233dd7616d73 82 #endif
AzureIoTClient 4:233dd7616d73 83
AzureIoTClient 4:233dd7616d73 84 #endif /* SCHEMALIB_H */