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 15 21:57:26 2015 -0700
Revision:
0:1f9b2707ec7d
Child:
10:c2aee3965a83
New release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AzureIoTClient 0:1f9b2707ec7d 1 // Copyright (c) Microsoft. All rights reserved.
AzureIoTClient 0:1f9b2707ec7d 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
AzureIoTClient 0:1f9b2707ec7d 3
AzureIoTClient 0:1f9b2707ec7d 4 #ifndef SCHEMA_H
AzureIoTClient 0:1f9b2707ec7d 5 #define SCHEMA_H
AzureIoTClient 0:1f9b2707ec7d 6
AzureIoTClient 0:1f9b2707ec7d 7 #include "macro_utils.h"
AzureIoTClient 0:1f9b2707ec7d 8 #include "crt_abstractions.h"
AzureIoTClient 0:1f9b2707ec7d 9
AzureIoTClient 0:1f9b2707ec7d 10 #ifdef __cplusplus
AzureIoTClient 0:1f9b2707ec7d 11 #include <cstddef>
AzureIoTClient 0:1f9b2707ec7d 12 extern "C" {
AzureIoTClient 0:1f9b2707ec7d 13 #else
AzureIoTClient 0:1f9b2707ec7d 14 #include <stddef.h>
AzureIoTClient 0:1f9b2707ec7d 15 #endif
AzureIoTClient 0:1f9b2707ec7d 16
AzureIoTClient 0:1f9b2707ec7d 17 /* Codes_SRS_SCHEMA_99_095: [Schema shall expose the following API:] */
AzureIoTClient 0:1f9b2707ec7d 18
AzureIoTClient 0:1f9b2707ec7d 19 typedef void* SCHEMA_HANDLE;
AzureIoTClient 0:1f9b2707ec7d 20 typedef void* SCHEMA_MODEL_TYPE_HANDLE;
AzureIoTClient 0:1f9b2707ec7d 21 typedef void* SCHEMA_STRUCT_TYPE_HANDLE;
AzureIoTClient 0:1f9b2707ec7d 22 typedef void* SCHEMA_PROPERTY_HANDLE;
AzureIoTClient 0:1f9b2707ec7d 23 typedef void* SCHEMA_ACTION_HANDLE;
AzureIoTClient 0:1f9b2707ec7d 24 typedef void* SCHEMA_ACTION_ARGUMENT_HANDLE;
AzureIoTClient 0:1f9b2707ec7d 25
AzureIoTClient 0:1f9b2707ec7d 26 #define SCHEMA_RESULT_VALUES \
AzureIoTClient 0:1f9b2707ec7d 27 SCHEMA_OK, \
AzureIoTClient 0:1f9b2707ec7d 28 SCHEMA_INVALID_ARG, \
AzureIoTClient 0:1f9b2707ec7d 29 SCHEMA_DUPLICATE_ELEMENT, \
AzureIoTClient 0:1f9b2707ec7d 30 SCHEMA_ELEMENT_NOT_FOUND, \
AzureIoTClient 0:1f9b2707ec7d 31 SCHEMA_MODEL_IN_USE, \
AzureIoTClient 0:1f9b2707ec7d 32 SCHEMA_DEVICE_COUNT_ZERO, \
AzureIoTClient 0:1f9b2707ec7d 33 SCHEMA_ERROR
AzureIoTClient 0:1f9b2707ec7d 34
AzureIoTClient 0:1f9b2707ec7d 35 DEFINE_ENUM(SCHEMA_RESULT, SCHEMA_RESULT_VALUES)
AzureIoTClient 0:1f9b2707ec7d 36
AzureIoTClient 0:1f9b2707ec7d 37 extern SCHEMA_HANDLE Schema_Create(const char* schemaNamespace);
AzureIoTClient 0:1f9b2707ec7d 38 extern size_t Schema_GetSchemaCount(void);
AzureIoTClient 0:1f9b2707ec7d 39 extern SCHEMA_HANDLE Schema_GetSchemaByNamespace(const char* schemaNamespace);
AzureIoTClient 0:1f9b2707ec7d 40 extern const char* Schema_GetSchemaNamespace(SCHEMA_HANDLE schemaHandle);
AzureIoTClient 0:1f9b2707ec7d 41 extern SCHEMA_RESULT Schema_AddDeviceRef(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle);
AzureIoTClient 0:1f9b2707ec7d 42 extern SCHEMA_RESULT Schema_ReleaseDeviceRef(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle);
AzureIoTClient 0:1f9b2707ec7d 43
AzureIoTClient 0:1f9b2707ec7d 44 extern SCHEMA_MODEL_TYPE_HANDLE Schema_CreateModelType(SCHEMA_HANDLE schemaHandle, const char* modelName);
AzureIoTClient 0:1f9b2707ec7d 45 extern SCHEMA_HANDLE Schema_GetSchemaForModelType(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle);
AzureIoTClient 0:1f9b2707ec7d 46 extern const char* Schema_GetModelName(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle);
AzureIoTClient 0:1f9b2707ec7d 47
AzureIoTClient 0:1f9b2707ec7d 48 extern SCHEMA_STRUCT_TYPE_HANDLE Schema_CreateStructType(SCHEMA_HANDLE schemaHandle, const char* structTypeName);
AzureIoTClient 0:1f9b2707ec7d 49
AzureIoTClient 0:1f9b2707ec7d 50 extern const char* Schema_GetStructTypeName(SCHEMA_STRUCT_TYPE_HANDLE structTypeHandle);
AzureIoTClient 0:1f9b2707ec7d 51
AzureIoTClient 0:1f9b2707ec7d 52 extern SCHEMA_RESULT Schema_AddStructTypeProperty(SCHEMA_STRUCT_TYPE_HANDLE structTypeHandle, const char* propertyName, const char* propertyType);
AzureIoTClient 0:1f9b2707ec7d 53
AzureIoTClient 0:1f9b2707ec7d 54 extern SCHEMA_RESULT Schema_AddModelProperty(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* propertyName, const char* propertyType);
AzureIoTClient 0:1f9b2707ec7d 55 extern SCHEMA_RESULT Schema_AddModelModel(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* propertyName, SCHEMA_MODEL_TYPE_HANDLE modelType);
AzureIoTClient 0:1f9b2707ec7d 56 extern SCHEMA_ACTION_HANDLE Schema_CreateModelAction(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* actionName);
AzureIoTClient 0:1f9b2707ec7d 57 extern SCHEMA_RESULT Schema_AddModelActionArgument(SCHEMA_ACTION_HANDLE actionHandle, const char* argumentName, const char* argumentType);
AzureIoTClient 0:1f9b2707ec7d 58
AzureIoTClient 0:1f9b2707ec7d 59 extern SCHEMA_RESULT Schema_GetModelCount(SCHEMA_HANDLE schemaHandle, size_t* modelCount);
AzureIoTClient 0:1f9b2707ec7d 60 extern SCHEMA_MODEL_TYPE_HANDLE Schema_GetModelByName(SCHEMA_HANDLE schemaHandle, const char* modelName);
AzureIoTClient 0:1f9b2707ec7d 61 extern SCHEMA_MODEL_TYPE_HANDLE Schema_GetModelByIndex(SCHEMA_HANDLE schemaHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 62
AzureIoTClient 0:1f9b2707ec7d 63 extern SCHEMA_RESULT Schema_GetModelPropertyCount(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t* propertyCount);
AzureIoTClient 0:1f9b2707ec7d 64 extern SCHEMA_PROPERTY_HANDLE Schema_GetModelPropertyByName(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* propertyName);
AzureIoTClient 0:1f9b2707ec7d 65 extern SCHEMA_PROPERTY_HANDLE Schema_GetModelPropertyByIndex(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 66
AzureIoTClient 0:1f9b2707ec7d 67 extern SCHEMA_RESULT Schema_GetModelModelCount(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t* modelCount);
AzureIoTClient 0:1f9b2707ec7d 68 extern SCHEMA_MODEL_TYPE_HANDLE Schema_GetModelModelByName(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* propertyName);
AzureIoTClient 0:1f9b2707ec7d 69 extern SCHEMA_MODEL_TYPE_HANDLE Schema_GetModelModelyByIndex(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 70 extern const char* Schema_GetModelModelPropertyNameByIndex(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 71
AzureIoTClient 0:1f9b2707ec7d 72 extern bool Schema_ModelPropertyByPathExists(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* propertyPath);
AzureIoTClient 0:1f9b2707ec7d 73
AzureIoTClient 0:1f9b2707ec7d 74 extern SCHEMA_RESULT Schema_GetModelActionCount(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t* actionCount);
AzureIoTClient 0:1f9b2707ec7d 75 extern SCHEMA_ACTION_HANDLE Schema_GetModelActionByName(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, const char* actionName);
AzureIoTClient 0:1f9b2707ec7d 76 extern SCHEMA_ACTION_HANDLE Schema_GetModelActionByIndex(SCHEMA_MODEL_TYPE_HANDLE modelTypeHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 77
AzureIoTClient 0:1f9b2707ec7d 78 extern SCHEMA_RESULT Schema_GetModelActionArgumentCount(SCHEMA_ACTION_HANDLE actionHandle, size_t* argumentCount);
AzureIoTClient 0:1f9b2707ec7d 79 extern const char* Schema_GetModelActionName(SCHEMA_ACTION_HANDLE actionHandle);
AzureIoTClient 0:1f9b2707ec7d 80
AzureIoTClient 0:1f9b2707ec7d 81 extern SCHEMA_ACTION_ARGUMENT_HANDLE Schema_GetModelActionArgumentByName(SCHEMA_ACTION_HANDLE actionHandle, const char* actionArgumentName);
AzureIoTClient 0:1f9b2707ec7d 82 extern SCHEMA_ACTION_ARGUMENT_HANDLE Schema_GetModelActionArgumentByIndex(SCHEMA_ACTION_HANDLE actionHandle, size_t argumentIndex);
AzureIoTClient 0:1f9b2707ec7d 83 extern const char* Schema_GetActionArgumentName(SCHEMA_ACTION_ARGUMENT_HANDLE actionArgumentHandle);
AzureIoTClient 0:1f9b2707ec7d 84 extern const char* Schema_GetActionArgumentType(SCHEMA_ACTION_ARGUMENT_HANDLE actionArgumentHandle);
AzureIoTClient 0:1f9b2707ec7d 85
AzureIoTClient 0:1f9b2707ec7d 86 extern SCHEMA_RESULT Schema_GetStructTypeCount(SCHEMA_HANDLE schemaHandle, size_t* structTypeCount);
AzureIoTClient 0:1f9b2707ec7d 87 extern SCHEMA_STRUCT_TYPE_HANDLE Schema_GetStructTypeByName(SCHEMA_HANDLE schemaHandle, const char* structTypeName);
AzureIoTClient 0:1f9b2707ec7d 88 extern SCHEMA_STRUCT_TYPE_HANDLE Schema_GetStructTypeByIndex(SCHEMA_HANDLE schemaHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 89
AzureIoTClient 0:1f9b2707ec7d 90 extern SCHEMA_RESULT Schema_GetStructTypePropertyCount(SCHEMA_STRUCT_TYPE_HANDLE structTypeHandle, size_t* propertyCount);
AzureIoTClient 0:1f9b2707ec7d 91 extern SCHEMA_PROPERTY_HANDLE Schema_GetStructTypePropertyByName(SCHEMA_STRUCT_TYPE_HANDLE structTypeHandle, const char* propertyName);
AzureIoTClient 0:1f9b2707ec7d 92 extern SCHEMA_PROPERTY_HANDLE Schema_GetStructTypePropertyByIndex(SCHEMA_STRUCT_TYPE_HANDLE structTypeHandle, size_t index);
AzureIoTClient 0:1f9b2707ec7d 93 extern const char* Schema_GetPropertyName(SCHEMA_PROPERTY_HANDLE propertyHandle);
AzureIoTClient 0:1f9b2707ec7d 94 extern const char* Schema_GetPropertyType(SCHEMA_PROPERTY_HANDLE propertyHandle);
AzureIoTClient 0:1f9b2707ec7d 95
AzureIoTClient 0:1f9b2707ec7d 96 extern void Schema_Destroy(SCHEMA_HANDLE schemaHandle);
AzureIoTClient 0:1f9b2707ec7d 97 extern SCHEMA_RESULT Schema_DestroyIfUnused(SCHEMA_MODEL_TYPE_HANDLE modelHandle);
AzureIoTClient 0:1f9b2707ec7d 98
AzureIoTClient 0:1f9b2707ec7d 99 #ifdef __cplusplus
AzureIoTClient 0:1f9b2707ec7d 100 }
AzureIoTClient 0:1f9b2707ec7d 101 #endif
AzureIoTClient 0:1f9b2707ec7d 102
AzureIoTClient 0:1f9b2707ec7d 103 #endif /* SCHEMA_H */