// Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #ifndef MQTTCONST_H #define MQTTCONST_H #include "azure_c_shared_utility/crt_abstractions.h" #include "azure_c_shared_utility/macro_utils.h" #ifdef __cplusplus #include #include extern "C" { #else #include #include #endif /* __cplusplus */ #define CONTROL_PACKET_TYPE_VALUES \ CONNECT_TYPE = 0x10, \ CONNACK_TYPE = 0x20, \ PUBLISH_TYPE = 0x30, \ PUBACK_TYPE = 0x40, \ PUBREC_TYPE = 0x50, \ PUBREL_TYPE = 0x60, \ PUBCOMP_TYPE = 0x70, \ SUBSCRIBE_TYPE = 0x80, \ SUBACK_TYPE = 0x90, \ UNSUBSCRIBE_TYPE = 0xA0, \ UNSUBACK_TYPE = 0xB0, \ PINGREQ_TYPE = 0xC0, \ PINGRESP_TYPE = 0xD0, \ DISCONNECT_TYPE = 0xE0, \ PACKET_TYPE_ERROR, \ UNKNOWN_TYPE MU_DEFINE_ENUM(CONTROL_PACKET_TYPE, CONTROL_PACKET_TYPE_VALUES) #define QOS_VALUE_VALUES \ DELIVER_AT_MOST_ONCE = 0x00, \ DELIVER_AT_LEAST_ONCE = 0x01, \ DELIVER_EXACTLY_ONCE = 0x02, \ DELIVER_FAILURE = 0x80 MU_DEFINE_ENUM(QOS_VALUE, QOS_VALUE_VALUES) typedef struct APP_PAYLOAD_TAG { uint8_t* message; size_t length; } APP_PAYLOAD; typedef struct MQTT_CLIENT_OPTIONS_TAG { char* clientId; char* willTopic; char* willMessage; char* username; char* password; uint16_t keepAliveInterval; bool messageRetain; bool useCleanSession; QOS_VALUE qualityOfServiceValue; bool log_trace; } MQTT_CLIENT_OPTIONS; typedef enum CONNECT_RETURN_CODE_TAG { CONNECTION_ACCEPTED = 0x00, CONN_REFUSED_UNACCEPTABLE_VERSION = 0x01, CONN_REFUSED_ID_REJECTED = 0x02, CONN_REFUSED_SERVER_UNAVAIL = 0x03, CONN_REFUSED_BAD_USERNAME_PASSWORD = 0x04, CONN_REFUSED_NOT_AUTHORIZED = 0x05, CONN_REFUSED_UNKNOWN } CONNECT_RETURN_CODE; typedef struct CONNECT_ACK_TAG { bool isSessionPresent; CONNECT_RETURN_CODE returnCode; } CONNECT_ACK; typedef struct SUBSCRIBE_PAYLOAD_TAG { const char* subscribeTopic; QOS_VALUE qosReturn; } SUBSCRIBE_PAYLOAD; typedef struct SUBSCRIBE_ACK_TAG { uint16_t packetId; QOS_VALUE* qosReturn; size_t qosCount; } SUBSCRIBE_ACK; typedef struct UNSUBSCRIBE_ACK_TAG { uint16_t packetId; } UNSUBSCRIBE_ACK; typedef struct PUBLISH_ACK_TAG { uint16_t packetId; } PUBLISH_ACK; #ifdef __cplusplus } #endif /* __cplusplus */ #endif // MQTTCONST_H