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
Diff: codefirst.h
- Revision:
- 18:58b667752399
- Parent:
- 17:fa1bba4c6053
- Child:
- 26:7c0e6f86d034
--- a/codefirst.h Wed Nov 16 21:38:26 2016 -0800 +++ b/codefirst.h Wed Dec 14 16:00:39 2016 -0800 @@ -4,12 +4,15 @@ #ifndef CODEFIRST_H #define CODEFIRST_H +#include "methodreturn.h" #include "agenttypesystem.h" #include "schema.h" #include "azure_c_shared_utility/macro_utils.h" #include "azure_c_shared_utility/strings.h" #include "iotdevice.h" + + #ifdef __cplusplus #include <cstddef> #include <cstdarg> @@ -24,6 +27,7 @@ typedef enum REFLECTION_TYPE_TAG { + REFLECTION_METHOD_TYPE, REFLECTION_DESIRED_PROPERTY_TYPE, REFLECTION_REPORTED_PROPERTY_TYPE, REFLECTION_STRUCT_TYPE, @@ -36,6 +40,8 @@ typedef EXECUTE_COMMAND_RESULT (*actionWrapper)(void* device, size_t ParameterCount, const AGENT_DATA_TYPE* values); +typedef METHODRETURN_HANDLE (*methodWrapper)(void* device, size_t ParameterCount, const AGENT_DATA_TYPE* values); + typedef struct REFLECTION_STRUCT_TAG { const char* name; @@ -56,6 +62,15 @@ const char* modelName; }REFLECTION_ACTION; +typedef struct REFLECTION_METHOD_TAG +{ + const char* name; + size_t nArguments; + const WRAPPER_ARGUMENT* arguments; + methodWrapper wrapper; + const char* modelName; +}REFLECTION_METHOD; + typedef struct REFLECTION_FIELD_TAG { const char* fieldName; @@ -108,6 +123,7 @@ const struct REFLECTED_SOMETHING_TAG* next; struct what { + REFLECTION_METHOD method; REFLECTION_DESIRED_PROPERTY desiredProperty; REFLECTION_REPORTED_PROPERTY reportedProperty; REFLECTION_STRUCT structure; @@ -153,8 +169,12 @@ MOCKABLE_FUNCTION(, EXECUTE_COMMAND_RESULT, CodeFirst_InvokeAction, DEVICE_HANDLE, deviceHandle, void*, callbackUserContext, const char*, relativeActionPath, const char*, actionName, size_t, parameterCount, const AGENT_DATA_TYPE*, parameterValues); +MOCKABLE_FUNCTION(, METHODRETURN_HANDLE, CodeFirst_InvokeMethod, DEVICE_HANDLE, deviceHandle, void*, callbackUserContext, const char*, relativeMethodPath, const char*, methodName, size_t, parameterCount, const AGENT_DATA_TYPE*, parameterValues); + MOCKABLE_FUNCTION(, EXECUTE_COMMAND_RESULT, CodeFirst_ExecuteCommand, void*, device, const char*, command); +MOCKABLE_FUNCTION(, METHODRETURN_HANDLE, CodeFirst_ExecuteMethod, void*, device, const char*, methodName, const char*, methodPayload); + MOCKABLE_FUNCTION(, void*, CodeFirst_CreateDevice, SCHEMA_MODEL_TYPE_HANDLE, model, const REFLECTED_DATA_FROM_DATAPROVIDER*, metadata, size_t, dataSize, bool, includePropertyPath); MOCKABLE_FUNCTION(, void, CodeFirst_DestroyDevice, void*, device);