coreMQTT v2.0.0
MQTT 3.1.1 Client Library
Callback Types

Callback function pointer types of the MQTT library. More...

Typedefs

typedef uint32_t(* MQTTGetCurrentTimeFunc_t) (void)
 Application provided function to query the time elapsed since a given epoch in milliseconds. More...
 
typedef void(* MQTTEventCallback_t) (struct MQTTContext *pContext, struct MQTTPacketInfo *pPacketInfo, struct MQTTDeserializedInfo *pDeserializedInfo)
 Application callback for receiving incoming publishes and incoming acks. More...
 
typedef int32_t(* TransportRecv_t) (NetworkContext_t *pNetworkContext, void *pBuffer, size_t bytesToRecv)
 Transport interface for receiving data on the network. More...
 
typedef int32_t(* TransportSend_t) (NetworkContext_t *pNetworkContext, const void *pBuffer, size_t bytesToSend)
 Transport interface for sending data over the network. More...
 
typedef int32_t(* TransportWritev_t) (NetworkContext_t *pNetworkContext, TransportOutVector_t *pIoVec, size_t ioVecCount)
 Transport interface function for "vectored" / scatter-gather based writes. This function is expected to iterate over the list of vectors pIoVec having ioVecCount entries containing portions of one MQTT message at a maximum. If the proper functionality is available, then the data in the list should be copied to the underlying TCP buffer before flushing the buffer. Implementing it in this fashion will lead to sending of fewer TCP packets for all the values in the list. More...
 

Detailed Description

Callback function pointer types of the MQTT library.

Typedef Documentation

◆ MQTTGetCurrentTimeFunc_t

typedef uint32_t(* MQTTGetCurrentTimeFunc_t) (void)

Application provided function to query the time elapsed since a given epoch in milliseconds.

Note
The timer should be a monotonic timer. It just needs to provide an incrementing count of milliseconds elapsed since a given epoch.
Returns
The time elapsed in milliseconds.

◆ MQTTEventCallback_t

typedef void(* MQTTEventCallback_t) (struct MQTTContext *pContext, struct MQTTPacketInfo *pPacketInfo, struct MQTTDeserializedInfo *pDeserializedInfo)

Application callback for receiving incoming publishes and incoming acks.

Note
This callback will be called only if packets are deserialized with a result of MQTTSuccess or MQTTServerRefused. The latter can be obtained when deserializing a SUBACK, indicating a broker's rejection of a subscribe.
Parameters
[in]pContextInitialized MQTT context.
[in]pPacketInfoInformation on the type of incoming MQTT packet.
[in]pDeserializedInfoDeserialized information from incoming packet.

◆ TransportRecv_t

typedef int32_t(* TransportRecv_t) (NetworkContext_t *pNetworkContext, void *pBuffer, size_t bytesToRecv)

Transport interface for receiving data on the network.

Note
It is RECOMMENDED that the transport receive implementation does NOT block when requested to read a single byte. A single byte read request can be made by the caller to check whether there is a new frame available on the network for reading. However, the receive implementation MAY block for a timeout period when it is requested to read more than 1 byte. This is because once the caller is aware that a new frame is available to read on the network, then the likelihood of reading more than one byte over the network becomes high.
Parameters
[in]pNetworkContextImplementation-defined network context.
[in]pBufferBuffer to receive the data into.
[in]bytesToRecvNumber of bytes requested from the network.
Returns
The number of bytes received or a negative value to indicate error.
Note
If no data is available on the network to read and no error has occurred, zero MUST be the return value. A zero return value SHOULD represent that the read operation can be retried by calling the API function. Zero MUST NOT be returned if a network disconnection has occurred.

◆ TransportSend_t

typedef int32_t(* TransportSend_t) (NetworkContext_t *pNetworkContext, const void *pBuffer, size_t bytesToSend)

Transport interface for sending data over the network.

Parameters
[in]pNetworkContextImplementation-defined network context.
[in]pBufferBuffer containing the bytes to send over the network stack.
[in]bytesToSendNumber of bytes to send over the network.
Returns
The number of bytes sent or a negative value to indicate error.
Note
If no data is transmitted over the network due to a full TX buffer and no network error has occurred, this MUST return zero as the return value. A zero return value SHOULD represent that the send operation can be retried by calling the API function. Zero MUST NOT be returned if a network disconnection has occurred.

◆ TransportWritev_t

typedef int32_t(* TransportWritev_t) (NetworkContext_t *pNetworkContext, TransportOutVector_t *pIoVec, size_t ioVecCount)

Transport interface function for "vectored" / scatter-gather based writes. This function is expected to iterate over the list of vectors pIoVec having ioVecCount entries containing portions of one MQTT message at a maximum. If the proper functionality is available, then the data in the list should be copied to the underlying TCP buffer before flushing the buffer. Implementing it in this fashion will lead to sending of fewer TCP packets for all the values in the list.

Note
If the proper write functionality is not present for a given device/IP-stack, then there is no strict requirement to implement write. Only the send and recv interfaces must be defined for the application to work properly.
Parameters
[in]pNetworkContextImplementation-defined network context.
[in]pIoVecAn array of TransportIoVector_t structs.
[in]ioVecCountNumber of TransportIoVector_t in pIoVec.
Returns
The number of bytes written or a negative value to indicate error.
Note
If no data is written to the buffer due to the buffer being full this MUST return zero as the return value. A zero return value SHOULD represent that the write operation can be retried by calling the API function. Zero MUST NOT be returned if a network disconnection has occurred.