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

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);