in source/MutualAuthMQTTExample.c [947:1001]
static void prvMQTTProcessResponse( MQTTPacketInfo_t * pxIncomingPacket,
uint16_t usPacketId )
{
uint32_t ulTopicCount = 0U;
switch( pxIncomingPacket->type )
{
case MQTT_PACKET_TYPE_PUBACK:
LogInfo( ( "PUBACK received for packet Id %u.\r\n", usPacketId ) );
/* Make sure ACK packet identifier matches with Request packet identifier. */
configASSERT( usPublishPacketIdentifier == usPacketId );
break;
case MQTT_PACKET_TYPE_SUBACK:
/* A SUBACK from the broker, containing the server response to our subscription request, has been received.
* It contains the status code indicating server approval/rejection for the subscription to the single topic
* requested. The SUBACK will be parsed to obtain the status code, and this status code will be stored in global
* variable #xTopicFilterContext. */
prvUpdateSubAckStatus( pxIncomingPacket );
for( ulTopicCount = 0; ulTopicCount < mqttexampleTOPIC_COUNT; ulTopicCount++ )
{
if( xTopicFilterContext[ ulTopicCount ].xSubAckStatus != MQTTSubAckFailure )
{
LogInfo( ( "Subscribed to the topic %s with maximum QoS %u.\r\n",
xTopicFilterContext[ ulTopicCount ].pcTopicFilter,
xTopicFilterContext[ ulTopicCount ].xSubAckStatus ) );
}
}
/* Make sure ACK packet identifier matches with Request packet identifier. */
configASSERT( usSubscribePacketIdentifier == usPacketId );
break;
case MQTT_PACKET_TYPE_UNSUBACK:
LogInfo( ( "Unsubscribed from the topic %s.\r\n", pExampleTopic ) );
/* Make sure ACK packet identifier matches with Request packet identifier. */
configASSERT( usUnsubscribePacketIdentifier == usPacketId );
break;
case MQTT_PACKET_TYPE_PINGRESP:
/* Nothing to be done from application as library handles
* PINGRESP with the use of MQTT_ProcessLoop API function. */
LogWarn( ( "PINGRESP should not be handled by the application "
"callback when using MQTT_ProcessLoop.\n" ) );
break;
/* Any other packet type is invalid. */
default:
LogWarn( ( "prvMQTTProcessResponse() called with unknown packet type:(%02X).\r\n",
pxIncomingPacket->type ) );
}
}