Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

Committer:
XinZhangMS
Date:
Thu Aug 23 06:52:14 2018 +0000
Revision:
0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XinZhangMS 0:f7f1f0d76dd6 1 // Copyright (c) Microsoft. All rights reserved.
XinZhangMS 0:f7f1f0d76dd6 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
XinZhangMS 0:f7f1f0d76dd6 3
XinZhangMS 0:f7f1f0d76dd6 4 #ifndef LINK_H
XinZhangMS 0:f7f1f0d76dd6 5 #define LINK_H
XinZhangMS 0:f7f1f0d76dd6 6
XinZhangMS 0:f7f1f0d76dd6 7 #include <stddef.h>
XinZhangMS 0:f7f1f0d76dd6 8 #include "azure_c_shared_utility/tickcounter.h"
XinZhangMS 0:f7f1f0d76dd6 9 #include "azure_c_shared_utility/macro_utils.h"
XinZhangMS 0:f7f1f0d76dd6 10 #include "azure_uamqp_c/session.h"
XinZhangMS 0:f7f1f0d76dd6 11 #include "azure_uamqp_c/amqpvalue.h"
XinZhangMS 0:f7f1f0d76dd6 12 #include "azure_uamqp_c/async_operation.h"
XinZhangMS 0:f7f1f0d76dd6 13 #include "azure_uamqp_c/amqp_definitions_sender_settle_mode.h"
XinZhangMS 0:f7f1f0d76dd6 14 #include "azure_uamqp_c/amqp_definitions_receiver_settle_mode.h"
XinZhangMS 0:f7f1f0d76dd6 15 #include "azure_uamqp_c/amqp_definitions_fields.h"
XinZhangMS 0:f7f1f0d76dd6 16
XinZhangMS 0:f7f1f0d76dd6 17 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 18 extern "C" {
XinZhangMS 0:f7f1f0d76dd6 19 #endif /* __cplusplus */
XinZhangMS 0:f7f1f0d76dd6 20
XinZhangMS 0:f7f1f0d76dd6 21 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 22
XinZhangMS 0:f7f1f0d76dd6 23 typedef struct LINK_INSTANCE_TAG* LINK_HANDLE;
XinZhangMS 0:f7f1f0d76dd6 24
XinZhangMS 0:f7f1f0d76dd6 25 #define LINK_STATE_VALUES \
XinZhangMS 0:f7f1f0d76dd6 26 LINK_STATE_DETACHED, \
XinZhangMS 0:f7f1f0d76dd6 27 LINK_STATE_HALF_ATTACHED_ATTACH_SENT, \
XinZhangMS 0:f7f1f0d76dd6 28 LINK_STATE_HALF_ATTACHED_ATTACH_RECEIVED, \
XinZhangMS 0:f7f1f0d76dd6 29 LINK_STATE_ATTACHED, \
XinZhangMS 0:f7f1f0d76dd6 30 LINK_STATE_ERROR
XinZhangMS 0:f7f1f0d76dd6 31
XinZhangMS 0:f7f1f0d76dd6 32 DEFINE_ENUM(LINK_STATE, LINK_STATE_VALUES)
XinZhangMS 0:f7f1f0d76dd6 33
XinZhangMS 0:f7f1f0d76dd6 34 #define LINK_TRANSFER_RESULT_VALUES \
XinZhangMS 0:f7f1f0d76dd6 35 LINK_TRANSFER_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 36 LINK_TRANSFER_BUSY
XinZhangMS 0:f7f1f0d76dd6 37
XinZhangMS 0:f7f1f0d76dd6 38 DEFINE_ENUM(LINK_TRANSFER_RESULT, LINK_TRANSFER_RESULT_VALUES)
XinZhangMS 0:f7f1f0d76dd6 39
XinZhangMS 0:f7f1f0d76dd6 40 #define LINK_DELIVERY_SETTLE_REASON_VALUES \
XinZhangMS 0:f7f1f0d76dd6 41 LINK_DELIVERY_SETTLE_REASON_DISPOSITION_RECEIVED, \
XinZhangMS 0:f7f1f0d76dd6 42 LINK_DELIVERY_SETTLE_REASON_SETTLED, \
XinZhangMS 0:f7f1f0d76dd6 43 LINK_DELIVERY_SETTLE_REASON_NOT_DELIVERED, \
XinZhangMS 0:f7f1f0d76dd6 44 LINK_DELIVERY_SETTLE_REASON_TIMEOUT, \
XinZhangMS 0:f7f1f0d76dd6 45 LINK_DELIVERY_SETTLE_REASON_CANCELLED
XinZhangMS 0:f7f1f0d76dd6 46
XinZhangMS 0:f7f1f0d76dd6 47 DEFINE_ENUM(LINK_DELIVERY_SETTLE_REASON, LINK_DELIVERY_SETTLE_REASON_VALUES)
XinZhangMS 0:f7f1f0d76dd6 48
XinZhangMS 0:f7f1f0d76dd6 49 typedef struct ON_LINK_DETACH_EVENT_SUBSCRIPTION_TAG* ON_LINK_DETACH_EVENT_SUBSCRIPTION_HANDLE;
XinZhangMS 0:f7f1f0d76dd6 50
XinZhangMS 0:f7f1f0d76dd6 51 typedef void(*ON_DELIVERY_SETTLED)(void* context, delivery_number delivery_no, LINK_DELIVERY_SETTLE_REASON reason, AMQP_VALUE delivery_state);
XinZhangMS 0:f7f1f0d76dd6 52 typedef AMQP_VALUE(*ON_TRANSFER_RECEIVED)(void* context, TRANSFER_HANDLE transfer, uint32_t payload_size, const unsigned char* payload_bytes);
XinZhangMS 0:f7f1f0d76dd6 53 typedef void(*ON_LINK_STATE_CHANGED)(void* context, LINK_STATE new_link_state, LINK_STATE previous_link_state);
XinZhangMS 0:f7f1f0d76dd6 54 typedef void(*ON_LINK_FLOW_ON)(void* context);
XinZhangMS 0:f7f1f0d76dd6 55 typedef void(*ON_LINK_DETACH_RECEIVED)(void* context, ERROR_HANDLE error);
XinZhangMS 0:f7f1f0d76dd6 56
XinZhangMS 0:f7f1f0d76dd6 57 MOCKABLE_FUNCTION(, LINK_HANDLE, link_create, SESSION_HANDLE, session, const char*, name, role, role, AMQP_VALUE, source, AMQP_VALUE, target);
XinZhangMS 0:f7f1f0d76dd6 58 MOCKABLE_FUNCTION(, LINK_HANDLE, link_create_from_endpoint, SESSION_HANDLE, session, LINK_ENDPOINT_HANDLE, link_endpoint, const char*, name, role, role, AMQP_VALUE, source, AMQP_VALUE, target);
XinZhangMS 0:f7f1f0d76dd6 59 MOCKABLE_FUNCTION(, void, link_destroy, LINK_HANDLE, handle);
XinZhangMS 0:f7f1f0d76dd6 60 MOCKABLE_FUNCTION(, int, link_set_snd_settle_mode, LINK_HANDLE, link, sender_settle_mode, snd_settle_mode);
XinZhangMS 0:f7f1f0d76dd6 61 MOCKABLE_FUNCTION(, int, link_get_snd_settle_mode, LINK_HANDLE, link, sender_settle_mode*, snd_settle_mode);
XinZhangMS 0:f7f1f0d76dd6 62 MOCKABLE_FUNCTION(, int, link_set_rcv_settle_mode, LINK_HANDLE, link, receiver_settle_mode, rcv_settle_mode);
XinZhangMS 0:f7f1f0d76dd6 63 MOCKABLE_FUNCTION(, int, link_get_rcv_settle_mode, LINK_HANDLE, link, receiver_settle_mode*, rcv_settle_mode);
XinZhangMS 0:f7f1f0d76dd6 64 MOCKABLE_FUNCTION(, int, link_set_initial_delivery_count, LINK_HANDLE, link, sequence_no, initial_delivery_count);
XinZhangMS 0:f7f1f0d76dd6 65 MOCKABLE_FUNCTION(, int, link_get_initial_delivery_count, LINK_HANDLE, link, sequence_no*, initial_delivery_count);
XinZhangMS 0:f7f1f0d76dd6 66 MOCKABLE_FUNCTION(, int, link_set_max_message_size, LINK_HANDLE, link, uint64_t, max_message_size);
XinZhangMS 0:f7f1f0d76dd6 67 MOCKABLE_FUNCTION(, int, link_get_max_message_size, LINK_HANDLE, link, uint64_t*, max_message_size);
XinZhangMS 0:f7f1f0d76dd6 68 MOCKABLE_FUNCTION(, int, link_get_peer_max_message_size, LINK_HANDLE, link, uint64_t*, peer_max_message_size);
XinZhangMS 0:f7f1f0d76dd6 69 MOCKABLE_FUNCTION(, int, link_set_attach_properties, LINK_HANDLE, link, fields, attach_properties);
XinZhangMS 0:f7f1f0d76dd6 70 MOCKABLE_FUNCTION(, int, link_set_max_link_credit, LINK_HANDLE, link, uint32_t, max_link_credit);
XinZhangMS 0:f7f1f0d76dd6 71 MOCKABLE_FUNCTION(, int, link_get_name, LINK_HANDLE, link, const char**, link_name);
XinZhangMS 0:f7f1f0d76dd6 72 MOCKABLE_FUNCTION(, int, link_get_received_message_id, LINK_HANDLE, link, delivery_number*, message_id);
XinZhangMS 0:f7f1f0d76dd6 73 MOCKABLE_FUNCTION(, int, link_send_disposition, LINK_HANDLE, link, delivery_number, message_number, AMQP_VALUE, delivery_state);
XinZhangMS 0:f7f1f0d76dd6 74 MOCKABLE_FUNCTION(, int, link_attach, LINK_HANDLE, link, ON_TRANSFER_RECEIVED, on_transfer_received, ON_LINK_STATE_CHANGED, on_link_state_changed, ON_LINK_FLOW_ON, on_link_flow_on, void*, callback_context);
XinZhangMS 0:f7f1f0d76dd6 75 MOCKABLE_FUNCTION(, int, link_detach, LINK_HANDLE, link, bool, close, const char*, error_condition, const char*, error_description, AMQP_VALUE, info);
XinZhangMS 0:f7f1f0d76dd6 76 MOCKABLE_FUNCTION(, ASYNC_OPERATION_HANDLE, link_transfer_async, LINK_HANDLE, handle, message_format, message_format, PAYLOAD*, payloads, size_t, payload_count, ON_DELIVERY_SETTLED, on_delivery_settled, void*, callback_context, LINK_TRANSFER_RESULT*, link_transfer_result,tickcounter_ms_t, timeout);
XinZhangMS 0:f7f1f0d76dd6 77 MOCKABLE_FUNCTION(, void, link_dowork, LINK_HANDLE, link);
XinZhangMS 0:f7f1f0d76dd6 78
XinZhangMS 0:f7f1f0d76dd6 79 MOCKABLE_FUNCTION(, ON_LINK_DETACH_EVENT_SUBSCRIPTION_HANDLE, link_subscribe_on_link_detach_received, LINK_HANDLE, link, ON_LINK_DETACH_RECEIVED, on_link_detach_received, void*, context);
XinZhangMS 0:f7f1f0d76dd6 80 MOCKABLE_FUNCTION(, void, link_unsubscribe_on_link_detach_received, ON_LINK_DETACH_EVENT_SUBSCRIPTION_HANDLE, event_subscription);
XinZhangMS 0:f7f1f0d76dd6 81
XinZhangMS 0:f7f1f0d76dd6 82 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 83 }
XinZhangMS 0:f7f1f0d76dd6 84 #endif /* __cplusplus */
XinZhangMS 0:f7f1f0d76dd6 85
XinZhangMS 0:f7f1f0d76dd6 86 #endif /* LINK_H */