in source/core_mqtt_agent.c [946:992]
MQTTStatus_t MQTTAgent_Init( MQTTAgentContext_t * pMqttAgentContext,
const MQTTAgentMessageInterface_t * pMsgInterface,
const MQTTFixedBuffer_t * pNetworkBuffer,
const TransportInterface_t * pTransportInterface,
MQTTGetCurrentTimeFunc_t getCurrentTimeMs,
MQTTAgentIncomingPublishCallback_t incomingCallback,
void * pIncomingPacketContext )
{
MQTTStatus_t returnStatus;
if( ( pMqttAgentContext == NULL ) ||
( pMsgInterface == NULL ) ||
( pTransportInterface == NULL ) ||
( getCurrentTimeMs == NULL ) ||
( incomingCallback == NULL ) )
{
returnStatus = MQTTBadParameter;
}
else if( ( pMsgInterface->pMsgCtx == NULL ) ||
( pMsgInterface->send == NULL ) ||
( pMsgInterface->recv == NULL ) ||
( pMsgInterface->getCommand == NULL ) ||
( pMsgInterface->releaseCommand == NULL ) )
{
LogError( ( "Invalid parameter: pMsgInterface must set all members." ) );
returnStatus = MQTTBadParameter;
}
else
{
( void ) memset( pMqttAgentContext, 0x00, sizeof( MQTTAgentContext_t ) );
returnStatus = MQTT_Init( &( pMqttAgentContext->mqttContext ),
pTransportInterface,
getCurrentTimeMs,
mqttEventCallback,
pNetworkBuffer );
if( returnStatus == MQTTSuccess )
{
pMqttAgentContext->pIncomingCallback = incomingCallback;
pMqttAgentContext->pIncomingCallbackContext = pIncomingPacketContext;
pMqttAgentContext->agentInterface = *pMsgInterface;
}
}
return returnStatus;
}