Azure IoT / iothub_amqp_transport

Dependents:   sht15_remote_monitoring RobotArmDemo iothub_client_sample_amqp iothub_client_sample_amqp ... more

Revision:
39:e98d5df6dc74
Parent:
34:51d158b409d2
Child:
51:269e65571b39
--- a/iothubtransport_amqp_device.h	Fri Jul 28 09:51:42 2017 -0700
+++ b/iothubtransport_amqp_device.h	Fri Aug 11 14:01:56 2017 -0700
@@ -24,46 +24,58 @@
 static const char* DEVICE_OPTION_SAS_TOKEN_REFRESH_TIME_SECS = "sas_token_refresh_time_secs";
 static const char* DEVICE_OPTION_SAS_TOKEN_LIFETIME_SECS = "sas_token_lifetime_secs";
 
-typedef enum DEVICE_STATE_TAG
-{
-    DEVICE_STATE_STOPPED,
-    DEVICE_STATE_STOPPING,
-    DEVICE_STATE_STARTING,
-    DEVICE_STATE_STARTED,
-    DEVICE_STATE_ERROR_AUTH,
-    DEVICE_STATE_ERROR_AUTH_TIMEOUT,
+#define DEVICE_STATE_VALUES \
+    DEVICE_STATE_STOPPED, \
+    DEVICE_STATE_STOPPING, \
+    DEVICE_STATE_STARTING, \
+    DEVICE_STATE_STARTED, \
+    DEVICE_STATE_ERROR_AUTH, \
+    DEVICE_STATE_ERROR_AUTH_TIMEOUT, \
     DEVICE_STATE_ERROR_MSG
-} DEVICE_STATE;
+
+DEFINE_ENUM(DEVICE_STATE, DEVICE_STATE_VALUES);
+
+#define DEVICE_AUTH_MODE_VALUES \
+    DEVICE_AUTH_MODE_CBS, \
+    DEVICE_AUTH_MODE_X509
 
-typedef enum DEVICE_AUTH_MODE_TAG
-{
-    DEVICE_AUTH_MODE_CBS,
-    DEVICE_AUTH_MODE_X509
-} DEVICE_AUTH_MODE;
+DEFINE_ENUM(DEVICE_AUTH_MODE, DEVICE_AUTH_MODE_VALUES);
+
+#define DEVICE_SEND_STATUS_VALUES \
+    DEVICE_SEND_STATUS_IDLE, \
+    DEVICE_SEND_STATUS_BUSY
+
+DEFINE_ENUM(DEVICE_SEND_STATUS, DEVICE_SEND_STATUS_VALUES);
 
-typedef enum DEVICE_SEND_STATUS_TAG
-{
-    DEVICE_SEND_STATUS_IDLE,
-    DEVICE_SEND_STATUS_BUSY
-} DEVICE_SEND_STATUS;
+#define D2C_EVENT_SEND_RESULT_VALUES \
+    D2C_EVENT_SEND_COMPLETE_RESULT_OK, \
+    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_CANNOT_PARSE, \
+    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_FAIL_SENDING, \
+    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_TIMEOUT, \
+    D2C_EVENT_SEND_COMPLETE_RESULT_DEVICE_DESTROYED, \
+    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_UNKNOWN
+
+DEFINE_ENUM(D2C_EVENT_SEND_RESULT, D2C_EVENT_SEND_RESULT_VALUES);
 
-typedef enum D2C_EVENT_SEND_RESULT_TAG
-{
-    D2C_EVENT_SEND_COMPLETE_RESULT_OK,
-    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_CANNOT_PARSE,
-    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_FAIL_SENDING,
-    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_TIMEOUT,
-    D2C_EVENT_SEND_COMPLETE_RESULT_DEVICE_DESTROYED,
-    D2C_EVENT_SEND_COMPLETE_RESULT_ERROR_UNKNOWN
-} D2C_EVENT_SEND_RESULT;
+#define DEVICE_MESSAGE_DISPOSITION_RESULT_VALUES \
+    DEVICE_MESSAGE_DISPOSITION_RESULT_NONE, \
+    DEVICE_MESSAGE_DISPOSITION_RESULT_ACCEPTED, \
+    DEVICE_MESSAGE_DISPOSITION_RESULT_REJECTED, \
+    DEVICE_MESSAGE_DISPOSITION_RESULT_RELEASED
+
+DEFINE_ENUM(DEVICE_MESSAGE_DISPOSITION_RESULT, DEVICE_MESSAGE_DISPOSITION_RESULT_VALUES);
 
-typedef enum DEVICE_MESSAGE_DISPOSITION_RESULT_TAG
-{
-    DEVICE_MESSAGE_DISPOSITION_RESULT_NONE,
-    DEVICE_MESSAGE_DISPOSITION_RESULT_ACCEPTED,
-    DEVICE_MESSAGE_DISPOSITION_RESULT_REJECTED,
-    DEVICE_MESSAGE_DISPOSITION_RESULT_RELEASED
-} DEVICE_MESSAGE_DISPOSITION_RESULT;
+#define DEVICE_TWIN_UPDATE_RESULT_STRINGS \
+    DEVICE_TWIN_UPDATE_RESULT_OK, \
+    DEVICE_TWIN_UPDATE_RESULT_ERROR
+
+DEFINE_ENUM(DEVICE_TWIN_UPDATE_RESULT, DEVICE_TWIN_UPDATE_RESULT_STRINGS);
+
+#define DEVICE_TWIN_UPDATE_TYPE_STRINGS \
+    DEVICE_TWIN_UPDATE_TYPE_PARTIAL, \
+    DEVICE_TWIN_UPDATE_TYPE_COMPLETE
+
+DEFINE_ENUM(DEVICE_TWIN_UPDATE_TYPE, DEVICE_TWIN_UPDATE_TYPE_STRINGS)
 
 typedef struct DEVICE_MESSAGE_DISPOSITION_INFO_TAG
 {
@@ -74,6 +86,8 @@
 typedef void(*ON_DEVICE_STATE_CHANGED)(void* context, DEVICE_STATE previous_state, DEVICE_STATE new_state);
 typedef DEVICE_MESSAGE_DISPOSITION_RESULT(*ON_DEVICE_C2D_MESSAGE_RECEIVED)(IOTHUB_MESSAGE_HANDLE message, DEVICE_MESSAGE_DISPOSITION_INFO* disposition_info, void* context);
 typedef void(*ON_DEVICE_D2C_EVENT_SEND_COMPLETE)(IOTHUB_MESSAGE_LIST* message, D2C_EVENT_SEND_RESULT result, void* context);
+typedef void(*DEVICE_SEND_TWIN_UPDATE_COMPLETE_CALLBACK)(DEVICE_TWIN_UPDATE_RESULT result, int status_code, void* context);
+typedef void(*DEVICE_TWIN_UPDATE_RECEIVED_CALLBACK)(DEVICE_TWIN_UPDATE_TYPE update_type, const unsigned char* message, size_t length, void* context);
 
 typedef struct DEVICE_CONFIG_TAG
 {
@@ -97,6 +111,9 @@
 MOCKABLE_FUNCTION(, int, device_stop, DEVICE_HANDLE, handle);
 MOCKABLE_FUNCTION(, void, device_do_work, DEVICE_HANDLE, handle);
 MOCKABLE_FUNCTION(, int, device_send_event_async, DEVICE_HANDLE, handle, IOTHUB_MESSAGE_LIST*, message, ON_DEVICE_D2C_EVENT_SEND_COMPLETE, on_device_d2c_event_send_complete_callback, void*, context);
+MOCKABLE_FUNCTION(, int, device_send_twin_update_async, DEVICE_HANDLE, handle, CONSTBUFFER_HANDLE, data, DEVICE_SEND_TWIN_UPDATE_COMPLETE_CALLBACK, on_send_twin_update_complete_callback, void*, context);
+MOCKABLE_FUNCTION(, int, device_subscribe_for_twin_updates, DEVICE_HANDLE, handle, DEVICE_TWIN_UPDATE_RECEIVED_CALLBACK, on_device_twin_update_received_callback, void*, context);
+MOCKABLE_FUNCTION(, int, device_unsubscribe_for_twin_updates, DEVICE_HANDLE, handle);
 MOCKABLE_FUNCTION(, int, device_get_send_status, DEVICE_HANDLE, handle, DEVICE_SEND_STATUS*, send_status);
 MOCKABLE_FUNCTION(, int, device_subscribe_message, DEVICE_HANDLE, handle, ON_DEVICE_C2D_MESSAGE_RECEIVED, on_message_received_callback, void*, context);
 MOCKABLE_FUNCTION(, int, device_unsubscribe_message, DEVICE_HANDLE, handle);