4.1.8.6.2 MQTT System Service Interface
This section describes the MQTT System Service Interface
MQTT Service Status EnumStates involved in the operation of the MQTT state
machine.
typedefenum
{
SYS_WINCS_MQTT_CONFIG, /**<Configure the MQTT Broker parameters*/
SYS_WINCS_MQTT_USER_PROP_SET, /* Set user property*/
SYS_WINCS_MQTT_LWT_CONFIG, /**<Configure the MQTT Broker parameters*/
SYS_WINCS_MQTT_CONNECT, /**<Connect to the MQTT Broker */
SYS_WINCS_MQTT_RECONNECT, /**<Request reconnect to the MQTT Cloud*/
SYS_WINCS_MQTT_DISCONNECT, /**<Trigger Disconnect from MQTT Broker*/
SYS_WINCS_MQTT_SUBS_TOPIC, /**<Subscribe to QOS Topics **/
SYS_WINCS_MQTT_PUBLISH, /**<Publis to MQTT Broker*/
SYS_WINCS_MQTT_SET_CALLBACK, /**<Configure the MQTT Application Callback*/
SYS_WINCS_MQTT_UNSUBSCRIBE, /**<UNSubscribe to Topic */
SYS_WINCS_MQTT_SET_SRVC_CALLBACK, /**<Configure the MQTT Application Callback*/
SYS_WINCS_MQTT_GET_CALLBACK, /*< Get Callback Function data*/
}SYS_WINCS_MQTT_SERVICE_t;MQTT Event Enum Events involved in the operation of the MQTT state
machine
typedefenum
{
SYS_WINCS_MQTT_CONNECTED, /**<Connected to MQTT broker event */
SYS_WINCS_MQTT_DISCONNECTED, /**<Disconnected from MQTT broker event*/
SYS_WINCS_MQTT_SUBCRIBE_MSG, /**<Event to report received MQTT message*/
SYS_WINCS_MQTT_SUBCRIBE_ACK, /*Subscribe MQTT ACK*/
SYS_WINCS_MQTT_PUBLISH_ACK, /*MQTT Publish ACK*/
SYS_WINCS_MQTT_PUBLISH_MSG_RECV, /*MQTT Publish acknowledgement and completion received. */
SYS_WINCS_MQTT_UNSUBSCRIBED, /*MQTT A topic has been un-subscribed.*/
SYS_WINCS_MQTT_DPS_STATUS, /*MQTT DPS Status*/
SYS_WINCS_MQTT_ERROR, /*MQTT ERROR*/
}SYS_WINCS_MQTT_EVENT_t;MQTT Message Configuration Struct Defines the configuration parameters required to
establish connection with MQTT Broker
typedef struct
{
/**< MQTT Broker/Server URL */
const char *url;
/**< MQTT Service client ID */
const char *clientId;
/**< MQTT User Name Credential */
const char *username;
/**< MQTT Password Credential */
const char *password;
/**< MQTT Broker/Server Port */
uint16_t port;
/**< MQTT TLS Enable */
bool tlsIdx;
/**< Azure DPS */
uint8_t azureDps;
/**< TLS Configuration */
SYS_WINCS_NET_TLS_SOC_PARAMS *tlsConf;
/**< Protocol version */
SYS_WINCS_MQTT_PROTO_VER protoVer;
/**< MQTT Clean session flag */
bool cleanSession;
/**< MQTT keep alive time */
uint16_t keepAliveTime;
/**< MQTT connection session expiry interval */
uint16_t sessionExpiryInterval;
/**< TLS handle */
uint8_t tlsHandle;
} SYS_WINCS_MQTT_CFG_t;MQTT_LWT_CFG_t structure
typedef struct
{
/* Topic name for the LWT message. */
const char *topicName;
/* Content of the LWT message. */
const char *message;
/* Message is a duplicate of a previous one. */
bool isDuplicate;
/* QoS level of message. */
SYS_WINCS_MQTT_QOS_t qos;
/* Flag indicating if message is to be, or has been, retained. */
bool retain;
<#if SYS_WINCS_MQTT_PUBLISH == true>
/* MQTT publish properties */
SYS_WINCS_MQTT_PUB_PROP publishProp;
</#if>
/* Protocol version */
SYS_WINCS_MQTT_PROTO_VER protoVer;
} SYS_WINCS_MQTT_LWT_CFG_t;MQTT QoS
Enum
typedef enum
{
SYS_WINCS_MQTT_QOS0 = WDRV_WINC_MQTT_QOS_0, /**<No-Ack, Best effort delivery(No Guarantee)*/
SYS_WINCS_MQTT_QOS1 = WDRV_WINC_MQTT_QOS_1, /**<Pub-Ack, sent untill PUBACK from broker(possible duplicates) */
SYS_WINCS_MQTT_QOS2 = WDRV_WINC_MQTT_QOS_2, /**<Highest service, no duplicate with guarantee */
}SYS_WINCS_MQTT_QOS_t;MQTT Frame
Struct
typedef struct
{
SYS_WINCS_MQTT_PROTO_VER protoVer; /* Protocol version */
bool isNew; /**<Indicates message is new or duplicate */
SYS_WINCS_MQTT_QOS_t qos; /**<QoS type for the message ::WINCS_MQTT_QOS_t */
bool isRetain; /**<Retain flag for the publish message */
char *topic; /**<Publish topic for the message */
const char *message; /**<Indicates message is new or duplicate */
SYS_WINCS_MQTT_SUB_PROP subscribeProp; /* Subscription Identifier*/
SYS_WINCS_MQTT_PUB_PROP publishProp; /* MQTT publish properties*/
}SYS_WINCS_MQTT_FRAME_t;MQTT_CONN_ACK_PROP structure
typedef struct
{
/* Session expiry interval. */
uint32_t sessionExpiryInterval;
/* Maximum packet size. */
uint32_t maxPacketSize;
/* Receive maximum. */
uint16_t receiveMax;
/* Topic alias max. */
uint16_t topicAliasMax;
/* Flag indicating retain available property. */
bool retainAvailable;
/* Flag indicating if wildcard subscriptions are supported. */
bool wildcardSubsAvailable;
/* Flag indicating if subscription IDs are available. */
bool subIDsAvailable;
/* Flag indicating if shared subscriptions are supported. */
bool sharedSubsAvailable;
/* Max QoS settings. */
uint8_t maxQoS;
/* Assigned client ID. */
uint8_t assignedClientId[SYS_WINCS_MQTT_CONN_MAX_ASSIGNED_CLIENT_ID+1];
} SYS_WINC_MQTT_CONN_ACK_PROP;
